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/templatesGET 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 แทนที่จะส่งไฟล์กลับมาในจำนวนที่สคริปต์ของคุณไม่ได้คาดไว้
ตัวอย่าง: curl
หัวข้อที่มีชื่อว่า “ตัวอย่าง: curl”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 เอกสาร ของเทมเพลตคัดลอกคำขอแบบนี้ให้ได้ โดยสร้างจากตัวแทนค่าของเทมเพลตนั้นเอง
ตัวอย่าง: Node.js
หัวข้อที่มีชื่อว่า “ตัวอย่าง: Node.js”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 |