Rabop API
ข้อมูลภาครัฐไทยจากแหล่งทางการ สำหรับ AI agent — API แบบ task เดียว: ตรวจสอบบริษัท ดึงงบการเงิน แผนผังกรรมการ ค้นงานจัดซื้อภาครัฐและใบอนุญาต และติดตามการเปลี่ยนแปลง ทุก field มีที่มา (provenance) ทุกคำตอบเซ็นรับรอง — หน้านี้ generate จาก registry เดียวกับที่ขับ REST และ MCP จึงไม่มีทางคลาดเคลื่อน
การยืนยันตัวตน
ส่ง key ผ่านเฮดเดอร์ Authorization: Bearer rb_live_… — key ทดสอบ (rb_test_…) ใช้ฟรีและไม่คืนข้อมูลส่วนบุคคล แต่ละ key มี scope กำกับ และแต่ละ task ประกาศ scope กับระดับ (tier) ขั้นต่ำที่ต้องใช้
curl -s https://api.rabops.com/v1/me -H "Authorization: Bearer $RABOP_API_KEY"
โครงสร้างคำตอบ (Envelope)
ทุก task ตอบด้วยโครงสร้างเดียวกัน ฟิลด์ที่มีคุณค่าทางธุรกิจเป็นอ็อบเจกต์ {value, provenance} โดย provenance บอกว่ามาจากแหล่งใด เอกสารต้นฉบับใด วันที่ที่แหล่งรายงาน และเวลาที่เราดึงมา
{
"task": "verify_company", "task_version": "1.0.0", "request_id": "req_…",
"result": {
"entity_id": "org:th:0105551012343",
"status": { "value": "active",
"provenance": { "source_id": "dbd_gdx", "raw_id": "raw_…", "data_as_of": "2026-08-30",
"retrieved_at": "2026-09-01T02:14:33Z", "extraction": { "method": "api", "confidence": 1 } } }
},
"confidence": 1,
"freshness": { "oldest_data_as_of": "2026-08-30", "degraded": false },
"usage": { "credits_charged": 1, "credits_remaining": 842 },
"warnings": [],
"signature": { "alg": "Ed25519", "key_id": "2026-09", "canonicalization": "JCS", "value": "…" }
}ส่ง as_of: "YYYY-MM-DD" ใน body เพื่อขอข้อมูลตามสภาพ ณ วันนั้น (bitemporal) ส่วน warnings บอก agent ว่าอะไรที่ไม่ได้รับและเพราะอะไร (เช่น FIELD_RESTRICTED เมื่อฟิลด์ข้อมูลส่วนบุคคลต้องใช้ tier สูงกว่า)
ข้อผิดพลาด
อ่านได้ด้วยเครื่อง: {"error": {"code": "ENTITY_NOT_FOUND", "retryable": false, "detail": "…"}} รหัส: INVALID_INPUT (400), UNAUTHENTICATED (401), INSUFFICIENT_CREDITS (402), INSUFFICIENT_SCOPE / TIER_REQUIRED / FORBIDDEN (403), ENTITY_NOT_FOUND / NO_FINANCIALS / LICENSE_NOT_FOUND (404), SOURCE_DEGRADED / GRAPH_UNAVAILABLE / SEARCH_UNAVAILABLE (503, ลองใหม่ได้) — task ที่ล้มเหลวจะไม่ถูกหักเครดิต
คำตอบที่เซ็นรับรอง
Envelope (ยกเว้นฟิลด์ signature) ถูกทำ canonical ด้วย JCS (RFC 8785) แล้วเซ็นด้วย Ed25519 กุญแจสาธารณะเผยแพร่ที่ https://api.rabops.com/.well-known/rabop-keys.json ใครก็ตรวจสอบคำตอบที่คุณส่งต่อให้ได้เอง
งานแบบ Async
Task ที่เป็น async จะตอบ 202 {task_id, poll} ให้ poll GET /v1/tasks/status/{task_id} หรือ subscribe อีเวนต์ task.completed ส่ง Idempotency-Key เพื่อให้การ retry คืนงานเดิมโดยไม่หักซ้ำ; task แบบคิดราคาต่อรายการหักเป็น ราคา × จำนวนรายการ ตอนส่ง และคืนเมื่อล้มเหลว
Webhook และ events
monitor_company เฝ้าติดตามบริษัท; POST /v1/subscriptions (ไม่ระบุ entity) รับอีเวนต์ระดับบัญชี การส่งแนบ X-Rabop-Signature: t=<unix>,v1=<hmac-sha256(secret, t + "." + body)> และ X-Rabop-Notification-Id สำหรับกันซ้ำ; retry แบบ backoff ตั้งแต่ 1 นาทีถึง 24 ชั่วโมง หากอยากใช้ polling: GET /v1/events?since=<cursor>
ประเภทอีเวนต์: company.created, company.status_changed, company.capital_changed, company.address_changed, company.name_changed, director.appointed, director.resigned, director.role_changed, director.count_changed, company.updated, shareholder.changed, financials.filed, financials.restated, gov_contract.won, gov_contract.updated, license.issued, license.expired, license.status_changed, license.updated, task.completed
ราคาและระดับ (tier)
เครดิตแบบเติมล่วงหน้า 1 เครดิต = 1 บาท คิดต่อ task (ดูราคาแต่ละ task) ระดับ: free (ตรวจสอบพื้นฐาน, ค้นหา), paid (งบการเงิน, สัญญา, batch), kyc_verified (แผนผังกรรมการและข้อมูลส่วนบุคคลอื่นหลังยืนยันตัวตนธุรกิจ), enterprise (SLA, SSO, ออกใบกำกับภาษี) — เติมเงินอัตโนมัติช่วยให้ agent ทำงานต่อเมื่อเครดิตใกล้หมด
SDK (TypeScript / Python)
SDK ทางการ generate จาก Task Registry เดียวกับ REST/MCP — query แบบ typed, ตรวจลายเซ็น Ed25519 ทุก envelope, retry ตาม Retry-After, ใส่ Idempotency-Key อัตโนมัติ และ poll งาน async ให้เอง
TypeScript · @rabop/sdk
npm install @rabop/sdk
import { Rabop } from "@rabop/sdk";
const rabop = new Rabop({ apiKey: process.env.RABOP_API_KEY! });
// ทุกเมธอด typed จาก Task Registry และคืน envelope ที่เซ็นแล้ว
const v = await rabop.verifyCompany({ juristic_id: "0107544000108" });
v.result.status?.value; // "active"
v.verified; // true — ตรวจลายเซ็น Ed25519 อัตโนมัติ
v.result.registered_capital?.value;
// อ่านย้อนเวลา (bitemporal) + retry ปลอดภัยด้วย Idempotency-Key
await rabop.getCompanyProfile({ juristic_id: "0107544000108" }, { asOf: "2025-12-31" });
// งาน async: submit → poll → คืน envelope ที่เซ็นให้เอง
const batch = await rabop.verifyCompanyBatch({ items: [{ ref: "a", juristic_id: "0107544000108" }] });Python · rabop
pip install "rabop[verify]"
from rabop import Rabop
rabop = Rabop(api_key="rb_live_...")
env = rabop.verify_company({"juristic_id": "0107544000108"})
env.value("status") # "active"
env.verified # True — ตรวจลายเซ็นอัตโนมัติ (pip install "rabop[verify]")
# async: poll จนเสร็จ
batch = rabop.verify_company_batch({"items": [{"ref": "a", "juristic_id": "0107544000108"}]})เชื่อมผ่าน MCP
ทุก task ใช้เป็น MCP tool ได้ในตัว เพิ่ม Rabop เข้า Claude Code ด้วยคำสั่งเดียว หรือวาง config นี้ในไคลเอนต์ MCP ใดก็ได้ (Claude Desktop, Cursor, …):
claude mcp add rabop -e RABOP_API_KEY=rb_live_… -- rabop mcp
{
"mcpServers": {
"rabop": {
"command": "rabop",
"args": ["mcp"],
"env": { "RABOP_API_KEY": "rb_live_…" }
}
}
}งาน async โปร่งใสต่อ agent: ตัว MCP adapter จะ submit → poll → คืน envelope ที่เซ็นแล้วให้เอง คำอธิบาย tool แนบราคาและข้อจำกัดข้อมูล เพื่อให้โมเดลรู้ว่าเมื่อไรควร (หรือไม่ควร) เรียก
check_director_network
จับคู่เครือข่ายความเป็นเจ้าของและการควบคุมรอบนิติบุคคลไทย: กรรมการปัจจุบัน (พร้อมตำแหน่งกรรมการในบริษัทอื่น), ผู้ถือหุ้นปัจจุบัน (บุคคลและนิติบุคคล พร้อมสัดส่วน %) และบริษัทที่เกี่ยวข้องซึ่งเชื่อมถึงกันผ่านกรรมการร่วมหรือผู้ถือหุ้นนิติบุคคล ภายใน depth ที่กำหนด (1–3, ค่าเริ่มต้น 1) ราคา 20 เครดิต ต้องเป็น tier kyc_verified หรือ enterprise เพราะคืนข้อมูลส่วนบุคคล ตัวตนบุคคลข้ามบริษัทจะเชื่อมกันหลังผ่านการตรวจ entity-resolution เท่านั้น ชื่อซ้ำที่ยังไม่ตรวจจะไม่ถูกเชื่อม (ดู match_confidence)
อินพุต · query
| entity_id | string | ^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | ^[0-9]{13}$ |
| depth | integer | จำนวน hop ของบริษัทที่จะไล่หา related_companiesdefault 1 |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/check_director_network \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"depth":1,"juristic_id":"0105551012343"}}'check_healthcare_license
ตรวจใบอนุญาตด้านสาธารณสุขจาก สบส. (สถานพยาบาล, ผู้ประกอบวิชาชีพ) และ อย. (ทะเบียนยาและเครื่องมือแพทย์) ค้นด้วยเลขใบอนุญาต, บริษัทผู้ถือ (entity_id / juristic_id) หรือชื่อผู้ถือ คืนใบอนุญาตแต่ละใบพร้อมสถานะ (active / expired / suspended / revoked — ใบที่ active แต่เลยวันหมดอายุจะรายงานเป็น expired), วันมีผล และที่มา ราคา 3 เครดิต ใบอนุญาตผู้ประกอบวิชาชีพเป็นข้อมูลส่วนบุคคล ต้องใช้ tier kyc_verified
อินพุต · query
| license_no | string | |
| entity_id | string | ^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | ^[0-9]{13}$ |
| holder_name | string | |
| license_type | string | healthcare_facility | drug | medical_device | practitioner |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/check_healthcare_license \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"juristic_id":"0107537001234"}}'get_company_profile
ดึงโปรไฟล์ทะเบียนเต็มของนิติบุคคลไทย: ชื่อทางกฎหมาย สถานะ รูปแบบนิติบุคคล ทุนจดทะเบียน วัตถุประสงค์ (TSIC) ที่อยู่จดทะเบียน และจำนวนกรรมการ ใช้ verify_company ก่อนหากต้องการรู้แค่ว่าบริษัทมีอยู่หรือไม่ ราคา 2 เครดิต ชื่อกรรมการจะคืนเฉพาะ tier kyc_verified เท่านั้น (มิฉะนั้นจะถูกปิดพร้อมคำเตือน)
อินพุต · query
| entity_id | string | ^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | ^[0-9]{13}$ |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/get_company_profile \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"juristic_id":"0105551012343"}}'get_financials
ดึงงบการเงินรายปีแบบ structured (รายการในงบดุลและงบกำไรขาดทุน หน่วยบาท) ที่ยื่นต่อ DBD ของนิติบุคคลไทย เรียงใหม่สุดก่อน ราคา 10 เครดิต จำกัดปีบัญชีได้ ทุกงบมีที่มารวมถึงวิธีสกัดข้อมูลและค่าความเชื่อมั่น (api / ocr / llm)
อินพุต · query
| entity_id | string | ^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | ^[0-9]{13}$ |
| fiscal_years | array | ปีบัญชี (ค.ศ.) ที่ต้องการ; ค่าเริ่มต้น = 5 ปีล่าสุด |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/get_financials \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"fiscal_years":[2025,2024],"juristic_id":"0105551012343"}}'monitor_company
ติดตามการเปลี่ยนแปลงของนิติบุคคลไทย เมื่อ Rabop ตรวจพบการเปลี่ยนแปลงที่แหล่งข้อมูล (สถานะ ทุนจดทะเบียน ที่อยู่ ชื่อ จำนวนกรรมการ งบการเงินใหม่หรือปรับปรุง) คุณจะได้รับ webhook ที่เซ็นด้วย HMAC (X-Rabop-Signature) และ/หรือ poll GET /v1/events?since=<cursor> ได้ ราคา 5 เครดิตต่อการสร้าง event_types รับ '*', 'company.*', 'financials.*' หรือระบุชนิดตรง ๆ รหัสลับสำหรับเซ็นจะคืนให้เพียงครั้งเดียว
อินพุต · query
| entity_id | string | ^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | ^[0-9]{13}$ |
| event_types | array | default ["*"] |
| webhook_url | string (uri) | ปลายทาง HTTPS สำหรับ POST การแจ้งเตือน เว้นว่างเพื่อใช้ polling อย่างเดียว |
| secret | string | รหัสลับ HMAC (ไม่ระบุจะสร้างให้อัตโนมัติ) |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/monitor_company \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"event_types":["company.*","director.*"],"juristic_id":"0105551012343","webhook_url":"https://example.com/rabop"}}'search_entities
ค้นหานิติบุคคลไทยเมื่อมีแค่ชื่อ (ไทยหรืออังกฤษ สะกด/ย่ออย่างไรก็ได้ เช่น บจก.) หรือเลขทะเบียน 13 หลัก คืนรายชื่อผู้สมัครจัดอันดับพร้อม entity_id ไปใช้กับ verify_company / get_company_profile ราคา 1 เครดิต ใช้ตัวกรอง (สถานะ จังหวัด) เพื่อจำกัดผล match_type บอกว่าผลมาจากการตรงเลขทะเบียน ตรงชื่อ normalize คำสำคัญ หรือความหมาย
อินพุต · query
| q* | string | ชื่อบริษัท (ไทย/อังกฤษ) หรือเลขทะเบียน 13 หลัก |
| status | string | active | dissolved | liquidating | struck_off | bankrupt |
| province | string | |
| limit | integer | default 10 |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/search_entities \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"q":"บจก.เอบีซี เทรดดิ้ง"}}'search_gov_contracts
ค้นงานจัดซื้อจัดจ้างภาครัฐ (e-GP): ใครชนะสัญญาใด จากหน่วยงานใด มูลค่าเท่าใด กรองตามบริษัทผู้ชนะ (entity_id / juristic_id), ชื่อหน่วยงาน, ช่วงวันประกาศ, มูลค่าขั้นต่ำ หรือข้อความอิสระในชื่อโครงการ/หน่วยงาน/ผู้ชนะ ราคา 5 เครดิต ผู้ชนะจะเชื่อมกับ entity_id เฉพาะเมื่อแหล่งข้อมูลเผยเลขผู้เสียภาษี มิฉะนั้นคืน winner_name โดยไม่เชื่อม (ไม่เดาจากชื่อ)
อินพุต · query
| q | string | ข้อความอิสระในชื่อโครงการ หน่วยงาน ชื่อผู้ชนะ หรือรหัสโครงการที่ตรงตัว |
| entity_id | string | บริษัทผู้ชนะ^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | ^[0-9]{13}$ |
| agency | string | |
| from | string (date) | |
| to | string (date) | |
| min_value | number | |
| limit | integer | default 20 |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/search_gov_contracts \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"juristic_id":"0403559004566"}}'verify_company
ตรวจสอบว่านิติบุคคลไทย (บริษัท/ห้างหุ้นส่วน) มีอยู่จริงและยังดำเนินกิจการหรือไม่ ใช้ตัวนี้ก่อนสำหรับการตรวจ KYB ใด ๆ ก่อนดึงข้อมูลเชิงลึก ราคา 1 เครดิต คืนชื่อทางกฎหมาย สถานะ รูปแบบนิติบุคคล วันจดทะเบียน และทุนจดทะเบียน แต่ละรายการมีที่มา (แหล่ง, data_as_of)
อินพุต · query
| entity_id | string | Rabop entity id เช่น org:th:0105551012343^org:[a-z]{2}:[A-Za-z0-9-]+$ |
| juristic_id | string | เลขทะเบียนนิติบุคคล DBD 13 หลัก (ใช้แทน entity_id สำหรับ TH)^[0-9]{13}$ |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/verify_company \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"juristic_id":"0105551012343"}}'verify_company_batch
ตรวจสอบนิติบุคคลไทยได้ถึง 1,000 รายในงานแบบ async เดียว (เช่น รายชื่อซัพพลายเออร์หรือพอร์ตสินเชื่อ) เมื่อส่งจะได้ 202 พร้อม task_id; poll /v1/tasks/status/{task_id} หรือ subscribe task.completed ราคา 1 เครดิตต่อรายการ หักตอนส่ง (คืนหากงานล้มเหลว) แต่ละรายการได้ผลเหมือน verify_company หรือ error รายรายการเช่น ENTITY_NOT_FOUND
อินพุต · query
| items* | array |
ฟิลด์ผลลัพธ์
ตัวอย่าง
curl -s -X POST https://api.rabops.com/v1/tasks/verify_company_batch \
-H "Authorization: Bearer $RABOP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":{"items":[{"juristic_id":"0105551012343","ref":"a"},{"juristic_id":"0107537001234","ref":"b"}]}}'