สร้างมาเพื่อเอเจนต์ AI ไม่ใช่แค่เบราว์เซอร์: API ทำงานอย่างไร
ทุกเครื่องมือในแคตตาล็อกเป็นเอนด์พอยต์ REST ใต้ /api/v1/ พร้อม MCP ที่ /mcp เรียกได้โดยไม่ต้องมีบัญชีหรือคีย์ ส่วนความล้มเหลวคืน problem+json ตาม RFC 7807

เบราว์เซอร์ยังใช้ได้ เลือกเครื่องมือ อัปโหลด แล้วดาวน์โหลดผล ส่วนเอเจนต์และสคริปต์เรียกการดำเนินการชุดเดียวกันได้โดยไม่เปิด UI ทั้งสองเส้นทางวิ่งเข้าแคตตาล็อกเดียวกัน
ทุกหน้าเครื่องมือเป็นเอนด์พอยต์ในตัว
Merge แยกหน้า บีบอัด OCR แปลงไฟล์ ทุกเครื่องมือในแคตตาล็อกแมปกับ /api/v1/… เพราะหน้าเครื่องมือขับเคลื่อนจากแคตตาล็อกเดียวกัน ในหน้าเครื่องมือ Call this from code แสดงตัวอย่าง curl ที่สร้างจากพารามิเตอร์จริงของเครื่องมือนั้น ไม่ใช่เทมเพลตสำเร็จรูป การเรียกแบบไม่ระบุตัวตนบนไซต์สาธารณะไม่ต้องมีบัญชีหรือคีย์ พรีฟิกซ์ที่อนุญาตคือ /api/v1/general/, /api/v1/misc/, /api/v1/security/, /api/v1/convert/ และ /api/v1/filter/
ตัวอย่างการรวม:
curl -fsS -X POST "$API_BASE/api/v1/general/merge-pdfs" \
-F "[email protected]" \
-F "[email protected]" \
-o merged.pdf
OpenAPI อยู่ที่ /v1/openapi.json งานหลายขั้นใช้ POST /api/v1/pipeline พร้อมรายการ steps ที่เรียงลำดับ ส่ง Idempotency-Key เมื่อการลองใหม่ต้องไม่รันงานที่เปลี่ยนสถานะซ้ำ การตอบกลับบนโฮสต์ประกาศ X-RateLimit-Limit, X-RateLimit-Remaining และ X-RateLimit-Reset เมื่อเจอ 429 อ่าน Retry-After (การจำกัดอัตราแบบไม่ระบุตัวตน)
OCR ผ่านแคตตาล็อกเดียวกันคืน Markdown (text/markdown) จาก /api/v1/misc/ocr-pdf ไม่ใช่ PDF ที่มีเลเยอร์ซ่อน เอเจนต์ที่คาดว่าจะได้ PDF ค้นหาได้จะจัดการไฟล์ผิด เพราะสัญญาปลายทางคือดึงข้อความไปใช้ในไปป์ไลน์ ไม่ใช่สร้าง PDF ใหม่แบบ OCRmyPDF
MCP สำหรับไคลเอนต์ที่พูดภาษาเดียวกัน
MCP (Model Context Protocol) ให้ไคลเอนต์เอเจนต์ค้นพบและเรียกเครื่องมือเป็นฟังก์ชัน แทนการไล่อ่านเอกสารเอง ไซต์นี้เปิดเซิร์ฟเวอร์ MCP ที่ /mcp เคียงกับ REST API ไคลเอนต์ที่รองรับจึงเชื่อมครั้งเดียวแล้วได้ทั้งแคตตาล็อก
MCP กับ REST มีความคาดหวังเรื่องการยืนยันตัวตนเหมือนกัน ทั้งการเรียกแบบไม่ระบุตัวตนเมื่อพรีฟิกซ์อนุญาต และการใช้คีย์ API สำหรับงานอัตโนมัติหรือเซิร์ฟเวอร์ที่โฮสต์เองที่มีการควบคุม การชี้เอเจนต์ไปที่ /mcp จึงไม่ใช่ผลิตภัณฑ์คนละตัวกับการชี้ curl ไปที่ /api/v1/… เอกสาร: Developers MCP
ข้อผิดพลาดมีโครงสร้าง ไม่ใช่ข้อความบรรยาย
เมื่อล้มเหลว ระบบคืน application/problem+json (RFC 7807) ไม่ใช่ 500 เปล่า ๆ หรือ “something went wrong” เพย์โหลดมีรหัสคงที่ (rate_limited, bad_request, invalid_document, missing_dependency และอื่น ๆ) พร้อมคำอธิบายที่อ่านรู้เรื่อง และมักมีขั้นถัดไป คนอ่านผ่าน ๆ ได้ เอเจนต์ตัดสินใจได้เองว่าจะลองใหม่ เปลี่ยนไฟล์ หรือหยุด โดยไม่แกะ stack trace
เมื่อผู้เรียกเป็นสคริปต์ โครงสร้างนี้สำคัญกว่าหน้า HTML ที่ดูเป็นมิตร อ้างอิง: Developers errors
llms.txt มีไว้ให้เครื่องมือ ไม่ใช่เพื่อการจัดอันดับ
/llms.txt เป็นดัชนีข้อความล้วนของทุกเครื่องมือ (ชื่อ คำอธิบายสั้น URL) สร้างจากแคตตาล็อกเดียวกับที่ขับเคลื่อนไซต์ เอเจนต์อ่านได้เหมือน README มันไม่ใช่คันโยกจัดอันดับของ Google เพราะ Search ไม่สนใจ /llms.txt (แหล่งอ้างอิง: คู่มือ Google ด้านการปรับแต่งสำหรับ AI) และเพราะสร้างอัตโนมัติจึงไม่เน่าแบบไฟล์ที่แก้มือ
CLI กับสกิลใช้รูปทรงเดียวกัน
pdfx รัน pdf-core บนเครื่องหรือใช้ --cloud ยิงไปที่ base URL สกิลที่ dist/skills/pdf-toolbox/SKILL.md อธิบายรูปทรง curl ของการรวมไฟล์และ pipeline เอเจนต์จึงไม่ต้องคิดสัญญาขึ้นอีกชุด สี่ไคลเอนต์ หนึ่งแคตตาล็อก: ปฏิบัติการเดียวกัน สี่ไคลเอนต์
เส้นทางเบราว์เซอร์ยังเหมือนเดิม
ลากไฟล์ไปวางในแท็บยังเหมือนเดิม สิ่งที่เพิ่มคือปลายทางชุดเดียวกันสำหรับเอเจนต์ สคริปต์ หรือ CI ซึ่งประมวลผลแบบเดียวกันโดยไม่มีคนคั่นกลาง การโฮสต์เองเก็บพื้นผิวนั้นไว้ในเครือข่ายคุณ (Self-host) ส่วนแบบโฮสต์ยังเป็นเส้นทางทดลองแบบไม่ระบุตัวตน
อ้างอิง API: Swagger พื้นฐาน: Help และ Developers