ข้ามไปยังเนื้อหา

API เอกสาร

API เอกสารจะนำข้อมูลที่คุณส่งเป็น JSON (จาก ERP ฟอร์มบนเว็บ หรือสคริปต์) มากรอกลงในเทมเพลต โดยไม่ต้องมีระเบียนใดอยู่เบื้องหลัง คุณจะได้รับลิงก์ไปยังเอกสารที่เสร็จแล้วกลับมา ในรูปแบบผลลัพธ์ของเทมเพลต หรือรูปแบบที่คุณระบุ

ใช้ได้กับเทมเพลตทุกประเภท แหล่งข้อมูลเดิมของเทมเพลตจะไม่ถูกใช้: JSON ที่คุณส่งมาคือระเบียน

ส่งคีย์ API ใน header X-Webhook-API-Key ใช้คีย์ได้สองแบบ:

  • คีย์ของเทมเพลตเอง: อยู่ในแท็บ เทมเพลต ที่ส่วน API เอกสาร (เป็นคีย์เดียวกับของ HTTP Trigger) ใช้เปิดได้เฉพาะเทมเพลตนั้น
  • คีย์ API ของบริษัท: ผู้ดูแลสร้างได้ในพอร์ทัลบริษัท (สำหรับบริษัทที่ใช้ Lark คือผู้ดูแลแอป Lark) ที่ บริษัท → คีย์ API ใช้เปิดได้ทุกเทมเพลตของบริษัทคุณ คีย์จะแสดงเพียงครั้งเดียวตอนสร้าง โปรดเก็บรักษาเหมือนรหัสผ่าน เทมเพลตการอนุมัติไม่มีคีย์ของตัวเอง จึงต้องใช้คีย์ของบริษัท

การเพิกถอนคีย์ของบริษัท หรือการรีเซ็ตคีย์ของเทมเพลต จะทำให้คีย์นั้นใช้ไม่ได้ทันที

POST https://api.automadoc.cc/api/v1/templates/{templateId}/documents

รหัสเทมเพลตอยู่ใน URL ปลายทาง ที่แสดงบนการ์ด API เอกสาร ของเทมเพลต

ฟิลด์ จำเป็น หน้าที่
data ใช่ ระเบียน: คีย์ของออบเจกต์คือตัวแทนค่า หากส่งเป็นรายการของออบเจกต์ จะได้เอกสารหนึ่งฉบับต่อหนึ่งรายการ หรือสำหรับเทมเพลตที่สร้างเอกสารฉบับเดียวจากหลายระเบียน จะได้เอกสารฉบับเดียวจากทุกรายการ (ดูหลายเอกสารในคำขอเดียว)
format ไม่ "pdf", "png" (หน้าแรกเป็นรูปภาพ) หรือ "native" (ไฟล์ตามรูปแบบของเทมเพลตเอง เช่น .docx) ค่าเริ่มต้นคือการตั้งค่าของเทมเพลต
filename ไม่ รูปแบบชื่อไฟล์สำหรับคำขอนี้ ใช้ตัวแทนค่า {Field} ได้ โดยใช้แทนรูปแบบของเทมเพลต
recordId ไม่ ค่าที่ {Record_ID} จะแสดง สำหรับเอกสารฉบับเดียว ค่าเริ่มต้นคือรหัสของเอกสาร
mode ไม่ "separate", "list", "continuous" หรือ "labels": สิ่งที่เทมเพลตสร้าง ส่งมาเพื่อตรวจสอบ หากไม่ส่ง เทมเพลตจะเป็นตัวกำหนด (ดูหลายเอกสารในคำขอเดียว)

เพิ่ม ?wait=20 (สูงสุด 25 วินาที) เพื่อให้ระบบรอส่งคำตอบจนกว่าเอกสารจะพร้อม จึงใช้คำขอเพียงครั้งเดียวก็พอ หากไม่ใส่ คำตอบจะกลับมาทันที และคุณต้องตรวจสอบสถานะเป็นระยะจาก URL สถานะ

เครื่องมือเวิร์กโฟลว์ที่ทำตามรูปแบบการตรวจสอบเป็นระยะแบบ 202 + Location (Power Automate, Logic Apps และเครื่องมือที่คล้ายกัน) สามารถเพิ่ม ?async=true แทนได้: ระหว่างที่กำลังสร้างเอกสาร คำตอบ 202 จะมีเฮดเดอร์ Location สำหรับตรวจสอบสถานะ และเฮดเดอร์ Retry-After (5 วินาที) ตำแหน่งนั้นจะตอบ 202 จนกว่าเอกสารจะเสร็จสมบูรณ์ (200) หรือล้มเหลว (422 พร้อม "code": "DOCUMENT_FAILED" และเหตุผลใน error) เอกสารที่ล้มเหลวไปแล้วตั้งแต่ตอนตอบคำขอจะได้รับ 422 นั้นทันที endpoint สถานะก็รับ ?async=true ได้เช่นกัน async ติดตามเอกสารได้ทีละหนึ่งฉบับ จึงใช้กับรายการใน data ของเทมเพลตที่สร้างเอกสารหนึ่งฉบับต่อหนึ่งรายการไม่ได้ (INVALID_ASYNC) ตัวเชื่อมต่อ Power Automate ใช้วิธีนี้

คำตอบ: 202 Accepted ระหว่างที่กำลังสร้างเอกสาร หรือ 200 OK เมื่อ wait เห็นว่าเอกสารเสร็จแล้ว:

{
"generationId": "5d2f0c1e-6a1b-4c7e-9f0a-2b8c3d4e5f60",
"templateId": "9b1c…",
"status": "processing",
"statusUrl": "https://api.automadoc.cc/api/v1/documents/5d2f0c1e-6a1b-4c7e-9f0a-2b8c3d4e5f60",
"createdAt": 1791878400000
}
GET https://api.automadoc.cc/api/v1/documents/{generationId}

ใช้คีย์เดียวกับที่ใช้ส่งคำขอ status มีค่าเป็น processing, completed หรือ failed:

{
"generationId": "5d2f0c1e-6a1b-4c7e-9f0a-2b8c3d4e5f60",
"status": "completed",
"filename": "Invoice-INV-2026-001.pdf",
"downloadUrl": "https://api.automadoc.cc/api/generations/…/download?expires=…&signature=…",
"downloadUrlExpiresAt": 1792137600000
}

downloadUrl ไม่ต้องใช้คีย์ ลิงก์จะใช้ได้ตราบเท่าที่บริษัทของคุณยังเก็บเอกสารที่สร้างไว้ (ตามแผนของคุณ) หรือ 30 วันหากเก็บเอกสารไว้ไม่มีกำหนด และจะใช้ไม่ได้เมื่อเอกสารถูกลบ การอ่านสถานะแต่ละครั้งจะได้ลิงก์ใหม่ เอกสารที่มีสถานะ failed จะมี error ที่ระบุสาเหตุ เอกสารที่เสร็จแล้วอาจมี warnings ซึ่งบอกสิ่งที่ไม่ได้ใส่ลงในเอกสาร เช่น รูปภาพที่ดึงจาก URL ไม่ได้ โดยระบุชื่อฟิลด์และโฮสต์ของ URL ส่วนตัวยึดตำแหน่งที่ข้อมูลของคุณไม่มีค่าจะแสดงรวมกันในบรรทัดเดียว (“3 fields had no value in the data: …”) ต่อจากคำเตือนอื่น ๆ

endpoint นี้ยังรายงานเอกสารที่เริ่มสร้างจาก HTTP Trigger ได้ด้วย: คำตอบของ HTTP Trigger จะระบุ generationIds ของเอกสารเหล่านั้น

คีย์หนึ่งจะเห็นเฉพาะเอกสารของเทมเพลตที่คีย์นั้นเปิดได้ เอกสารที่สร้างด้วยตนเองในส่วนขยายจะไม่แสดงผ่าน API

GET https://api.automadoc.cc/api/v1/documents/{generationId}/file

ตัวไฟล์ที่เสร็จแล้ว โดยใช้คีย์เดียวกัน สำหรับเครื่องมือที่รับไฟล์แทนลิงก์ endpoint นี้ตอบ 409 พร้อม DOCUMENT_NOT_READY ระหว่างที่กำลังสร้างเอกสาร ตอบ 422 พร้อม DOCUMENT_FAILED และเหตุผลใน error หากเอกสารล้มเหลว และตอบ 404 พร้อม DOCUMENT_FILE_MISSING เมื่อระยะเวลาเก็บรักษาของบริษัทคุณลบไฟล์ไปแล้ว Content-Type และ Content-Disposition (ชื่อไฟล์) บอกรายละเอียดของไฟล์

GET https://api.automadoc.cc/api/v1/templates
GET https://api.automadoc.cc/api/v1/templates/{templateId}

รายการแรกแสดงทุกเทมเพลตของบริษัทคุณ ได้แก่ id, name, source (base หรือ approval), templateFormat, mode (สิ่งที่คำขอสร้าง ดังในหลายเอกสารในคำขอเดียว), outputFormat และ ready (เป็น false ขณะที่เทมเพลตยังไม่มีไฟล์ หรือมีข้อผิดพลาดที่ต้องแก้) ต้องใช้คีย์ API ของบริษัท หากใช้คีย์ของเทมเพลตเองจะถูกปฏิเสธด้วย COMPANY_KEY_REQUIRED

รายการที่สองอธิบายเทมเพลตหนึ่งรายการ (ใช้คีย์แบบใดก็ได้) และเพิ่ม dataSchema ซึ่งเป็น JSON schema ของ data ที่เทมเพลตรับ (หนึ่งพร็อพเพอร์ตีต่อหนึ่งตัวแทนค่า: ข้อความ ตัวเลข หรือ URL รูปภาพ ใช่/ไม่ใช่สำหรับเงื่อนไข และรายการสำหรับลูป) รวมถึง sampleData และ documentsUrl เครื่องมือเวิร์กโฟลว์ใช้ข้อมูลนี้เพื่อแสดงช่องกรอกหนึ่งช่องต่อหนึ่งตัวแทนค่า

คำอธิบายฉบับเต็มของเส้นทางเหล่านี้เป็นเอกสาร OpenAPI ที่ https://api.automadoc.cc/api/v1/openapi.json

ชื่อ แต่ละคีย์จะถูกแปลงเป็นชื่อตัวแทนค่าแบบเดียวกับชื่อฟิลด์ของ Base ทุกประการ: ช่องว่าง จุด และสัญลักษณ์อื่น ๆ จะกลายเป็น _ ตัวอักษรและตัวเลขของทุกภาษาจะคงไว้ และตัวพิมพ์ใหญ่-เล็กมีผล

คีย์ที่คุณส่ง ตัวแทนค่าที่ถูกเติม
"Customer" {Customer}
"Invoice No." {Invoice_No_}
"Unit price" {Unit_price}
"客户名称" {客户名称}

หากออบเจกต์เดียวกันมีสองคีย์ที่แปลงแล้วได้ชื่อเดียวกัน (เช่น "Unit price" และ "Unit-price") คำขอจะถูกปฏิเสธด้วย DATA_NAME_COLLISION แทนที่จะปล่อยให้คีย์ใดคีย์หนึ่งชนะไปโดยไม่แจ้ง

ค่า

  • ข้อความและตัวเลข แสดงตามที่ส่งมา ตัวเลขยังคงเป็นตัวเลข จึงใช้ฟิลเตอร์อย่าง number, currency และ sum ได้
  • true / false ใช้กับเงื่อนไขได้: {#if Paid}…{/if}
  • null และรายการว่าง จะไม่แสดงอะไร และนับเป็นค่าว่างใน {#if}
  • ออบเจกต์ ใช้เติมตัวแทนค่าแบบมีจุด: {"Customer": {"Name": "Acme"}} เติม {Customer.Name}
  • รายการของออบเจกต์ คือลูป: {"Items": [{"Product": "Pen", "Qty": 2}]} เติม {#Items}{Product} × {Qty}{/Items}
  • รายการของค่าธรรมดา จะแสดงต่อกันโดยคั่นด้วยจุลภาค: ["red", "blue"] แสดงเป็น red, blue
  • รูปภาพ: ในตำแหน่งที่เทมเพลตมีตัวแทนค่ารูปภาพ (รูปภาพที่มี Alt Text เป็น {Logo} รวมถึงในแถวของลูป) ให้ส่ง URL แบบ https:// หรือรายการของ URL สำหรับ {Photos[1]}, {Photos[2]} URL ต้องเข้าถึงได้จากอินเทอร์เน็ต ในตำแหน่งอื่น URL เป็นเพียงข้อความ
  • ไฟล์แนบ: {ATTACH:Field} เพิ่มได้เฉพาะไฟล์จากฟิลด์ไฟล์แนบของ Base หรือจากแบบฟอร์มการอนุมัติ API เอกสารส่งไฟล์ให้แท็กนี้ไม่ได้ จึงไม่มีไฟล์ใดถูกเพิ่ม และ URL ที่ส่งมาจะแสดงเป็นข้อความ
  • {QR:Field} และ {BARCODE:Field} จะพิมพ์โค้ดจากข้อความที่คุณส่ง

Record_ID, Template_Name และ Print_Time ถูกกำหนดโดย AutomaDoc หากส่งคีย์ชื่อเหล่านี้มา ค่าจะถูกแทนที่ (คำตอบจะมีคำเตือนแจ้งให้ทราบ)

สำหรับเทมเพลตการอนุมัติ ให้ส่งตามชื่อตัวแปรที่แสดงอยู่ในหน้าของเทมเพลตนั้น ชื่อไฟล์เริ่มต้นของเทมเพลตการอนุมัติอ้างอิงคำขออนุมัติ ซึ่ง JSON ไม่มี ดังนั้นเอกสารที่สร้างผ่าน API จะมีชื่อ {Template_Name}-{Record_ID} เว้นแต่คุณจะส่ง filename มา

ส่ง data เป็นรายการของออบเจกต์ได้สูงสุด 50 รายการ เพื่อสร้างเอกสารหนึ่งฉบับต่อหนึ่งรายการ คำตอบจะแสดงรายการเอกสารเหล่านั้น:

{ "documents": [ { "generationId": "…", "status": "processing", "statusUrl": "…" }, … ] }

หากมีรายการใดถูกปฏิเสธ จะไม่มีเอกสารใดถูกสร้างเลย ใช้ recordId กับรายการไม่ได้

หากตั้งค่าเทมเพลตให้สร้างเอกสารฉบับเดียวจากหลายระเบียน (รายการ หนึ่งหน้าต่อระเบียน หรือฉลาก) รายการใน data จะสร้างเอกสารฉบับเดียว แต่ละรายการจะเป็นหนึ่งระเบียนในลูป {#Records} หนึ่งหน้า หรือฉลากหนึ่งชิ้น ตามลำดับที่ส่ง ได้สูงสุด 500 รายการ หากส่งออบเจกต์เดียวจะได้เอกสารที่มีหนึ่งรายการ คำตอบคือเอกสารฉบับนั้นพร้อม recordCount:

{ "generationId": "…", "status": "processing", "statusUrl": "…", "recordCount": 120 }
  • {Record_ID} แสดงลำดับของแต่ละรายการ ตั้งแต่ 1 ถึงจำนวนรายการ
  • รูปแบบชื่อไฟล์อ่านค่าจากรายการแรก รวมถึง {RecordCount} และ {Date} หากไม่มีรูปแบบ เอกสารจะชื่อ {Template_Name}-{Date}
  • "format": "png" จะได้ไฟล์ PDF เพราะรูปภาพจะมีเพียงหน้าแรก
  • นับเป็นเอกสารหนึ่งฉบับ สำหรับขีดจำกัด 600 เอกสารต่อนาทีของบริษัท แบบหนึ่งหน้าต่อระเบียนจะนับหนึ่งต่อหนึ่งรายการ ส่วนแบบรายการหรือฉลากจะนับหนึ่งต่อทุกสิบรายการ
  • ส่งให้ลงนามไม่ได้ (ESIGN_COMBINED)

การตั้งค่า ระเบียนต่อเอกสาร ของเทมเพลตเป็นตัวกำหนด หากส่ง mode ("separate" สำหรับเอกสารหนึ่งฉบับต่อหนึ่งรายการ หรือ "list", "continuous" สำหรับหนึ่งหน้าต่อระเบียน หรือ "labels") และเทมเพลตตั้งค่าไว้ต่างออกไป คำขอจะถูกปฏิเสธด้วย MODE_MISMATCH แทนที่จะส่งไฟล์กลับมาในจำนวนที่สคริปต์ของคุณไม่ได้คาดไว้

Terminal window
curl -X POST 'https://api.automadoc.cc/api/v1/templates/TEMPLATE_ID/documents?wait=20' \
-H 'X-Webhook-API-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"data": {
"Invoice No.": "INV-2026-001",
"Customer": { "Name": "Acme Corp", "Address": "1 Main St" },
"Items": [
{ "Product": "Consulting", "Qty": 10, "Price": 120 },
{ "Product": "Travel", "Qty": 1, "Price": 340 }
],
"Logo": "https://example.com/logo.png"
},
"format": "pdf"
}'

การ์ด API เอกสาร ของเทมเพลตคัดลอกคำขอแบบนี้ให้ได้ โดยสร้างจากตัวแทนค่าของเทมเพลตนั้นเอง

const API = 'https://api.automadoc.cc'
const headers = { 'X-Webhook-API-Key': process.env.AUTOMADOC_KEY, 'Content-Type': 'application/json' }
async function generate(templateId, data) {
const res = await fetch(`${API}/api/v1/templates/${templateId}/documents?wait=20`, {
method: 'POST',
headers,
body: JSON.stringify({ data, format: 'pdf' }),
})
let doc = await res.json()
if (!res.ok) throw new Error(`${doc.code}: ${doc.error}`)
// Still processing after the wait: poll the status URL.
while (doc.status === 'processing') {
await new Promise((r) => setTimeout(r, 2000))
doc = await (await fetch(doc.statusUrl, { headers })).json()
}
if (doc.status === 'failed') throw new Error(doc.error)
return doc.downloadUrl
}

เพิ่มบล็อก sign เพื่อส่งเอกสารให้ลงนามทันทีที่สร้างเสร็จ โดยไม่มีค่าใช้จ่ายใดเพิ่มเติมนอกจากตัวเอกสาร

sign ใช้ได้กับเทมเพลต Lark Base: เทมเพลต Word ที่มีช่องลายเซ็น (ดูลายเซ็นอิเล็กทรอนิกส์) ซึ่งสร้างเอกสารหนึ่งฉบับต่อหนึ่งระเบียน และส่ง data มาเป็นออบเจกต์เดียว เทมเพลตอื่นทั้งหมดจะปฏิเสธด้วย SIGN_BASE_TEMPLATES_ONLY ได้แก่ เทมเพลตของ Excel, ลิสต์ SharePoint, Dataverse, Google Sheets และเทมเพลตที่ใช้กับ API เท่านั้น รวมถึงเทมเพลต Lark Approval ซึ่งลงนามกันในการอนุมัตินั้นเอง เทมเพลต Lark Base มีเฉพาะในบัญชี Lark ดังนั้นในบัญชี Microsoft, Google หรืออีเมล จึงไม่มีเทมเพลตใดรับ sign

{
"data": { "Customer": "Acme Corp" },
"sign": {
"signers": {
"Customer": { "name": "Budi Santoso", "contact": "budi@acme.example" },
"Supplier": { "larkUserId": "ou_1234…" }
},
"order": "sequential"
}
}
ฟิลด์ หน้าที่
signers ผู้ลงนามหนึ่งคนต่อหนึ่งบทบาทลายเซ็นของเทมเพลต ระบุตามชื่อบทบาท ทุกบทบาทต้องมีผู้ลงนาม เพราะไม่มีระเบียนให้อ่านผู้ลงนามได้ บุคคลภายนอกบริษัทของคุณคือ { "name", "contact"? }: ชื่อ และข้อมูลติดต่อที่เก็บไว้กับคำขอ (ไม่บังคับ) เช่น ที่อยู่อีเมล (ระบบจะไม่ส่งสิ่งใดไปที่อีเมลนั้น) เพื่อนร่วมงานคือ { "larkUserId" }: open_id ใน Lark ของบุคคลในบริษัท Lark ของคุณที่ใช้ AutomaDoc
order "parallel" (ทุกคนลงนามพร้อมกัน) หรือ "sequential" (ตามลำดับของเทมเพลต) ค่าเริ่มต้นคือการตั้งค่าของเทมเพลต
generatePasswords สร้างรหัสผ่านให้บุคคลภายนอกแต่ละคน ค่าเริ่มต้นคือ true
locale ภาษาของข้อความจากบอทและหน้าบันทึกการตรวจสอบ เช่น "en"

คำขอลงนามจะเริ่มเมื่อเอกสารพร้อม เพื่อนร่วมงานจะได้รับข้อความจากบอท AutomaDoc ใน Lark ส่วนลิงก์ของผู้ลงนามภายนอก รวมถึงรหัสผ่านที่ระบบสร้าง จะถูกส่งกลับมาเพียงครั้งเดียว ใน GET /api/v1/documents/{generationId} ครั้งแรกหลังจากคำขอเริ่มแล้ว:

{
"status": "completed",
"signing": {
"status": "started",
"requestId": "…",
"links": [{ "role": "Customer", "displayName": "Budi Santoso", "url": "https://…/sign/…", "password": "K7mQ…" }]
}
}

คุณต้องส่งต่อให้ผู้ลงนามเอง และหากเป็นไปได้ให้ส่งรหัสผ่านแยกจากลิงก์ การดึงข้อมูลครั้งต่อ ๆ ไปจะแสดงรายการเดิม แต่ url และ password จะเป็น null และมี "linksRedacted": true หากลิงก์หาย ให้ออกลิงก์ใหม่จากหน้าลายเซ็น signing.status จะเป็น queued จนกว่าเอกสารจะเสร็จ เป็น starting ชั่วครู่ระหว่างที่คำขอกำลังเปิด จากนั้นจะเป็น started หรือ failed (พร้อมรหัส error)

sign จะถูกปฏิเสธเมื่อ data เป็นรายการ (SIGN_SINGLE_DOCUMENT) และเมื่อใช้กับเทมเพลตที่สร้างเอกสารฉบับเดียวจากหลายระเบียน (ESIGN_COMBINED)

หากเทมเพลตตั้งค่า Webhook Callback ไว้ ระบบจะเรียกใช้สำหรับเอกสารจาก API ด้วย พร้อมลิงก์ดาวน์โหลด เมื่อมี Pro (หรือช่วงทดลองใช้) หรือที่นั่ง Business เช่นเดียวกับเอกสารอัตโนมัติอื่น ๆ

การปฏิเสธทุกครั้งจะมี code และ error เป็นภาษาอังกฤษ:

สถานะ code สาเหตุ
400 INVALID_JSON, DATA_REQUIRED, DATA_NOT_OBJECT เนื้อหาคำขอไม่ใช่ JSON ไม่มี data หรือ data ไม่ใช่ออบเจกต์หรือรายการของออบเจกต์
400 DATA_NAME_COLLISION, DATA_INVALID_NAME มีสองคีย์ที่เติมตัวแทนค่าเดียวกัน หรือคีย์ไม่มีตัวอักษรหรือตัวเลขเลย
400 DATA_MIXED_ARRAY รายการมีทั้งออบเจกต์และค่าธรรมดาปนกัน
400 DATA_TOO_DEEP, DATA_ARRAY_TOO_LONG, DATA_TOO_MANY_KEYS, DATA_STRING_TOO_LONG เกินขีดจำกัด
400 IMAGE_URL_NOT_ALLOWED, TOO_MANY_IMAGES URL ของรูปภาพไม่ใช่ที่อยู่ http(s) สาธารณะ หรือมีรูปภาพมากเกินไป
400 BATCH_EMPTY, BATCH_TOO_LARGE รายการว่าง หรือมีมากกว่า 50 รายการ (500 สำหรับเทมเพลตที่สร้างเอกสารฉบับเดียวจากหลายระเบียน)
400 INVALID_FORMAT, INVALID_FILENAME, INVALID_RECORD_ID, INVALID_WAIT, INVALID_MODE, INVALID_ASYNC ตัวเลือกไม่ถูกต้อง
400 TEMPLATE_VALIDATION_ERRORS ไฟล์เทมเพลตมีข้อผิดพลาดที่ต้องแก้ไขก่อน (แสดงอยู่ใน validationErrors)
400 MODE_MISMATCH mode ไม่ตรงกับสิ่งที่เทมเพลตสร้าง
401 API_KEY_MISSING ไม่มี header X-Webhook-API-Key
403 API_KEY_INVALID คีย์ไม่ถูกต้อง ถูกเพิกถอนแล้ว หรือเปิดเทมเพลตนี้ไม่ได้ (รหัสเทมเพลตที่ไม่มีอยู่จะได้คำตอบนี้เช่นกัน)
403 QUOTA_EXCEEDED ไม่มีเอกสารเหลือในเดือนนี้ ซื้อแพ็กหรือที่นั่งเพิ่ม
403 TEMPLATE_DISABLED เทมเพลตเกินขีดจำกัดเทมเพลตของแผนของคุณ
403 COMPANY_KEY_REQUIRED การแสดงรายการเทมเพลตต้องใช้คีย์ API ของบริษัท ไม่ใช่คีย์ของเทมเพลตเอง
404 TEMPLATE_NOT_FOUND, DOCUMENT_NOT_FOUND ไม่มีเทมเพลตหรือเอกสารนี้สำหรับคีย์นี้
404 DOCUMENT_FILE_MISSING ไฟล์ของเอกสารถูกลบไปตามระยะเวลาเก็บรักษาของบริษัทคุณแล้ว
409 TEMPLATE_FILE_MISSING, TEMPLATE_NO_OWNER เทมเพลตยังไม่มีไฟล์ หรือเทมเพลตไม่มีเจ้าของ (เปิดแล้วบันทึกเทมเพลตหนึ่งครั้ง หรือใช้คีย์ของบริษัท)
409 DOCUMENT_NOT_READY ดาวน์โหลดไฟล์ของเอกสารที่ยังสร้างไม่เสร็จ
413 BODY_TOO_LARGE เนื้อหาคำขอเกิน 1 MB
422 DOCUMENT_FAILED ดาวน์โหลดไฟล์ของเอกสารที่ล้มเหลว หรือส่งคำขอหรืออ่านสถานะด้วย async=true ของเอกสารดังกล่าว error บอกเหตุผล
429 RATE_LIMITED มากกว่า 60 คำขอต่อนาทีสำหรับเทมเพลตเดียว 600 เอกสารต่อนาทีสำหรับบริษัทเดียว อ่านสถานะหรือดาวน์โหลดเกิน 60 ครั้งต่อนาทีสำหรับเอกสารเดียว หรือแสดงรายการเทมเพลตเกิน 60 ครั้งต่อนาทีสำหรับบริษัทเดียว เอกสารจาก HTTP Trigger นับรวมใน 600 ของบริษัท ส่วนคำขอมีขีดจำกัดของตัวเอง 300 ครั้งต่อนาทีต่อเทมเพลต
400 SIGN_INVALID, SIGN_SINGLE_DOCUMENT, SIGN_BASE_TEMPLATES_ONLY บล็อก sign ไม่ถูกต้อง data เป็นรายการ หรือเทมเพลตไม่ใช่เทมเพลต Lark Base เอกสารของเทมเพลตนี้จึงส่งให้ลงนามไม่ได้
400, 409 ESIGN_… ถูกปฏิเสธโดยระบบลายเซ็นอิเล็กทรอนิกส์: ESIGN_ROLES_MISMATCH (มีบทบาทที่ไม่มีผู้ลงนาม หรือบทบาทที่ไม่มีในเทมเพลต), ESIGN_SIGNER_FIELD (ผู้ลงนามถูกตั้งให้อ่านจากฟิลด์), ESIGN_INVALID_SIGNER (larkUserId ที่ไม่ใช่ผู้ใช้ในบริษัทของคุณ), ESIGN_NO_MASTER (เทมเพลตไม่มีช่องลายเซ็น), ESIGN_COMBINED (เทมเพลตสร้างเอกสารฉบับเดียวจากหลายระเบียน), ESIGN_RECORD_UNREADABLE (เทมเพลตไม่มีเจ้าของที่จะใช้ส่งคำขอในนามของ)
502 WORKER_UNAVAILABLE ติดต่อบริการสร้างเอกสารไม่ได้ โปรดลองอีกครั้งในอีกสักครู่
503 TEMPLATE_FORMAT_UNAVAILABLE เทมเพลตเป็นไฟล์ Excel หรือ PowerPoint ที่บริการเอกสารยังเปิดไม่ได้ โปรดลองอีกครั้งภายหลัง
503 COMBINED_UNAVAILABLE ขณะนี้ยังสร้างเอกสารฉบับเดียวจากหลายระเบียนไม่ได้ โปรดลองอีกครั้งภายหลัง
503 ATTACHMENTS_UNAVAILABLE เทมเพลตสร้างเอกสารฉบับเดียวจากหลายระเบียนและเพิ่มไฟล์แนบลงใน PDF ซึ่งยังทำไม่ได้ในขณะนี้ โปรดลองอีกครั้งภายหลัง
เนื้อหาคำขอ 1 MB
เอกสารต่อคำขอ 50 หรือ 500 รายการในเอกสารฉบับเดียวจากหลายระเบียน
ความลึกของออบเจกต์และรายการที่ซ้อนกัน 8 ระดับ
จำนวนรายการในรายการหนึ่ง 1,000
จำนวนคีย์ในออบเจกต์หนึ่ง 500
จำนวนอักขระในค่าหนึ่ง 100,000
รูปภาพต่อเอกสาร 50 หรือรวม 500 จากทุกรายการในเอกสารฉบับเดียวจากหลายระเบียน
wait 25 วินาที
คำขอต่อเทมเพลต 60 ครั้งต่อนาที (HTTP Trigger มีขีดจำกัดของตัวเอง 300 ครั้งต่อนาที)
การอ่านสถานะต่อเอกสาร 60 ครั้งต่อนาที (การดาวน์โหลดไฟล์มีขีดจำกัดของตัวเอง 60 ครั้ง)
รายการเทมเพลต 60 ครั้งต่อนาทีต่อบริษัท (คำอธิบายของเทมเพลตหนึ่งรายการ 60 ครั้งต่อนาที)
เอกสารต่อบริษัท 600 ต่อนาที รวม API เอกสารและ HTTP Trigger