เอกสารอ้างอิง API
REST API ของ AY-Robots อยู่ที่ https://www.ay-robots.com/api และสื่อสารด้วย JSON ทั้งสองทิศทาง หน้านี้บันทึกการยืนยันตัวตน ข้อกำหนดของการตอบกลับ และทุก endpoint พร้อมเอกสารพารามิเตอร์แบบเต็มสำหรับ route ที่คุณมีแนวโน้มจะเรียกใช้ผ่านโปรแกรมมากที่สุด
อัปเดตล่าสุด 2026-08-09
การยืนยันตัวตน
ทุก endpoint ต้องการการยืนยันตัวตน เว้นแต่จะระบุไว้ในส่วนสาธารณะ API ยอมรับข้อมูลยืนยันตัวตนสองรูปแบบ และทั้งสองมาถึงในวิธีเดียวกัน คือ เป็นคุกกี้เซสชันที่แดชบอร์ดส่งอยู่แล้ว หรือเป็นส่วนหัว Authorization พร้อม Bearer token
| วิธี | ทำงานอย่างไร | ใช้สำหรับ |
|---|---|---|
| เซสชันเบราว์เซอร์ | Session token ของ Supabase จากบัญชีที่เข้าสู่ระบบของคุณ ส่งเป็นคุกกี้หรือเป็น Bearer token | ตัวแดชบอร์ดเองและการทดลองอย่างรวดเร็วจากบริบทเบราว์เซอร์ที่ยืนยันตัวตนแล้ว |
| API key | คีย์ที่มีคำนำหน้า ayr_live_ สร้างที่ /dashboard/settings และส่งเป็น Bearer token | สคริปต์ เซิร์ฟเวอร์ CI และสิ่งใดก็ตามที่ต้องไม่พึ่งพาการเข้าสู่ระบบเบราว์เซอร์ |
| MCP | MCP server แบบ hosted ที่ https://www.ay-robots.com/api/mcp (Streamable HTTP) | LLM agent และเครื่องมือที่สื่อสารด้วย Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'API key ถูกสร้างและเพิกถอนที่ /dashboard/settings ปฏิบัติกับมันเหมือนรหัสผ่าน: เก็บไว้ฝั่งเซิร์ฟเวอร์ และหมุนเวียนโดยการสร้างคีย์ทดแทนก่อนที่จะเพิกถอนคีย์เก่า หากคุณใช้ CLI ของเดสก์ท็อป มันยังสามารถเปิดให้แพลตฟอร์มทำงานเป็น MCP server ในเครื่องได้ด้วยคำสั่ง: ay-robots mcp
การตอบกลับเป็น JSON ข้อผิดพลาดใช้โครงสร้างที่สอดคล้องกัน: อ็อบเจกต์ JSON ที่มีฟิลด์ error เดียวซึ่งมีข้อความที่มนุษย์อ่านได้ ส่งมาพร้อมรหัสสถานะ 4xx หรือ 5xx ที่เหมาะสม การตอบกลับที่สำเร็จจะส่งคืนทรัพยากรโดยตรง endpoint บางตัวห่อรายการไว้ในฟิลด์ที่มีชื่อ ซึ่งตัวอย่างด้านล่างจะแสดงให้เห็นในจุดที่มีความสำคัญ
Endpoint การยืนยันตัวตน
ระบบพื้นฐานของบัญชีและโปรไฟล์ สิ่งเหล่านี้ถูกใช้โดยตัวแดชบอร์ดเองเป็นหลัก แต่ก็ทำงานได้กับข้อมูลยืนยันตัวตนที่ถูกต้องใด ๆ
/api/auth/profileBearer session token หรือ API keyส่งคืนโปรไฟล์ของผู้ใช้ที่ยืนยันตัวตนแล้ว
/api/auth/profileBearer session token หรือ API keyอัปเดตฟิลด์โปรไฟล์ เช่น ชื่อที่แสดงและการตั้งค่าการแจ้งเตือน
/api/auth/syncBearer session tokenซิงค์ผู้ใช้ auth ของ Supabase กับระเบียนผู้ใช้ของแพลตฟอร์ม
/api/auth/check-onboardingBearer session tokenรายงานว่าผู้ใช้ที่ยืนยันตัวตนแล้วทำ onboarding เสร็จหรือยัง
/api/auth/avatarBearer session tokenอัปโหลดรูปภาพ avatar ใหม่สำหรับผู้ใช้ที่ยืนยันตัวตนแล้ว
Endpoint สำหรับลูกค้า
ทุกสิ่งที่เจ้าของหุ่นยนต์จัดการ: หุ่นยนต์ที่ลงทะเบียน โปรไฟล์ลูกค้า ชุดข้อมูล ใบแจ้งหนี้ และสถิติแดชบอร์ด
/api/client/robotsBearer session token หรือ API key (บทบาทลูกค้า)แสดงรายการหุ่นยนต์ที่ลูกค้าที่ยืนยันตัวตนแล้วลงทะเบียนไว้ ใหม่สุดก่อน สูงสุด 50 รายการ การประทับเวลาเป็น ISO 8601 last_online และ last_heartbeat เป็น null จนกว่าหุ่นยนต์จะเชื่อมต่อครั้งหนึ่ง
curl https://www.ay-robots.com/api/client/robots \
-H 'Authorization: Bearer ayr_live_your_key_here'[
{
"id": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11",
"name": "Lab SO-100",
"robot_type": "SO-100",
"status": "AVAILABLE",
"control_url": "wss://robots.example.com/so100/control",
"stream_url": "https://robots.example.com/so100/stream",
"hardware_id": "board:local:usb-1",
"last_online": "2026-08-09T10:12:00.000Z",
"last_heartbeat": "2026-08-09T10:12:00.000Z",
"total_hours": 12.5,
"tags": ["lab"],
"notes": null,
"created_at": "2026-07-01T09:00:00.000Z"
}
]/api/client/robotsBearer session token หรือ API key (บทบาทลูกค้า)ลงทะเบียนหุ่นยนต์ใหม่และส่งคืน id ของมัน hardware id ของบอร์ดมอเตอร์หนึ่งตัวสามารถเป็นของหุ่นยนต์ได้เพียงตัวเดียว ความขัดแย้งจะถูกปฏิเสธด้วยสถานะ 409
/api/client/profileBearer session token หรือ API key (บทบาทลูกค้า)ส่งคืนโปรไฟล์ลูกค้าของผู้ใช้ที่ยืนยันตัวตนแล้ว
/api/client/profileBearer session token หรือ API key (บทบาทลูกค้า)อัปเดตฟิลด์โปรไฟล์ลูกค้า
/api/client/datasetsBearer session token หรือ API key (บทบาทลูกค้า)แสดงรายการชุดข้อมูลคลาวด์ของลูกค้าพร้อมจำนวนเอปิโสดและขนาด
/api/client/invoicesBearer session token หรือ API key (บทบาทลูกค้า)แสดงรายการใบแจ้งหนี้รายเดือนของลูกค้า
/api/client/statsBearer session token หรือ API key (บทบาทลูกค้า)ส่งคืนสถิติการใช้งานสำหรับแดชบอร์ดลูกค้า
Endpoint สำหรับผู้ควบคุม
ฝั่งผู้ควบคุม: โปรไฟล์และความพร้อมใช้งาน การรับรอง ตารางเวลา และสถิติรายได้
/api/operator/profileBearer session token หรือ API key (บทบาทผู้ควบคุม)ส่งคืนโปรไฟล์ผู้ควบคุมของผู้ใช้ที่ยืนยันตัวตนแล้ว
/api/operator/profileBearer session token หรือ API key (บทบาทผู้ควบคุม)สร้างหรืออัปเดตโปรไฟล์ผู้ควบคุม
/api/operator/available-robotsBearer session token หรือ API key (บทบาทผู้ควบคุม)แสดงรายการหุ่นยนต์ที่พร้อมใช้งานในขณะนี้และตรงกับการรับรองของผู้ควบคุม
/api/operator/certificationsBearer session token หรือ API key (บทบาทผู้ควบคุม)แสดงรายการคำขอการรับรองของผู้ควบคุมและสถานะของแต่ละรายการ
/api/operator/certificationsBearer session token หรือ API key (บทบาทผู้ควบคุม)ขอการรับรองสำหรับประเภทหุ่นยนต์หนึ่งประเภท
/api/operator/scheduleBearer session token หรือ API key (บทบาทผู้ควบคุม)ส่งคืนตารางความพร้อมใช้งานรายสัปดาห์ของผู้ควบคุม
/api/operator/scheduleBearer session token หรือ API key (บทบาทผู้ควบคุม)อัปเดตตารางความพร้อมใช้งานรายสัปดาห์
/api/operator/availabilityBearer session token หรือ API key (บทบาทผู้ควบคุม)ส่งคืนความพร้อมใช้งานปัจจุบันของผู้ควบคุม
/api/operator/statsBearer session token หรือ API key (บทบาทผู้ควบคุม)ส่งคืนสถิติรายได้และเซสชันสำหรับแดชบอร์ดผู้ควบคุม
เซสชัน
เซสชันคือทรัพยากรหลักของแพลตฟอร์ม หนึ่งเซสชันคือหนึ่งการควบคุมทางไกลต่อเนื่องระหว่างผู้ควบคุมกับหุ่นยนต์ สถานะเซสชันเคลื่อนผ่าน PENDING, ACTIVE, PAUSED, COMPLETED และ CANCELLED
/api/sessionsBearer session token หรือ API keyแสดงรายการเซสชันสำหรับผู้ใช้ที่ยืนยันตัวตนแล้ว ผู้ควบคุมจะเห็นเซสชันที่พวกเขาควบคุม ลูกค้าจะเห็นเซสชันบนหุ่นยนต์ของพวกเขา ชุดฟิลด์แตกต่างกันเล็กน้อยระหว่างสองมุมมอง: มุมมองลูกค้ารวม episodes_collected และ data_collected_mb มุมมองผู้ควบคุมรวม operator_earnings_cents
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | ไม่บังคับ กรองตามสถานะเซสชัน เช่น ACTIVE หรือ COMPLETED ละไว้เพื่อแสดงรายการทั้งหมด |
| limit | query | number | ไม่บังคับ ขนาดหน้า ค่าเริ่มต้น 50 สูงสุด 100 |
| offset | query | number | ไม่บังคับ ออฟเซ็ตการแบ่งหน้า ค่าเริ่มต้น 0 |
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
-H 'Authorization: Bearer ayr_live_your_key_here'{
"sessions": [
{
"id": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "COMPLETED",
"started_at": "2026-08-08T14:00:12.000Z",
"ended_at": "2026-08-08T14:47:31.000Z",
"duration_minutes": 47,
"client_charge_cents": 1175,
"episodes_collected": 23,
"data_collected_mb": 210.4,
"rating": 5,
"created_at": "2026-08-08T13:59:58.000Z",
"robot_id": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11",
"robot_name": "Lab SO-100",
"robot_type": "SO-100",
"operator_name": "Jane D."
}
]
}/api/sessionsBearer session token หรือ API key (บทบาทผู้ควบคุม)เริ่มเซสชันควบคุมทางไกลบนหุ่นยนต์ที่พร้อมใช้งาน ต้องการบทบาทผู้ควบคุม ลูกค้าไม่สามารถเริ่มเซสชันได้ ผู้ควบคุมสามารถถือเซสชัน ACTIVE หรือ PAUSED ได้มากที่สุดหนึ่งเซสชันในเวลาเดียวกัน และหุ่นยนต์ต้องมีสถานะ AVAILABLE ในขณะนั้น เมื่อเริ่มทันที หุ่นยนต์จะเปลี่ยนเป็น IN_SESSION และลูกค้าจะได้รับการแจ้งเตือน
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | บังคับ Id ของหุ่นยนต์ที่จะควบคุม หุ่นยนต์ต้องเป็น AVAILABLE |
| operatorId | body | string | ไม่บังคับ Id ผู้ควบคุมอย่างชัดเจน ค่าเริ่มต้นคือผู้ควบคุมที่ยืนยันตัวตนแล้ว |
| scheduledFor | body | string (ISO 8601) | ไม่บังคับ จัดตารางเซสชันสำหรับเวลาในอนาคตแทนที่จะเริ่มทันที |
curl -X POST https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"robotId": "1f9f4c1e-7f2a-4b7e-9a45-0f4d2b6c8a11"}'{
"sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "ACTIVE"
}/api/sessions/[id]Bearer session token หรือ API keyส่งคืนเซสชันเดียวพร้อมรายละเอียดของมัน
/api/sessions/[id]Bearer session token หรือ API keyอัปเดตวงจรชีวิตของเซสชัน: หยุดชั่วคราว ดำเนินการต่อ สิ้นสุด และการกระทำที่เกี่ยวข้อง
/api/sessions/[id]/extendBearer session token หรือ API key (ลูกค้า เจ้าของเซสชัน)ขอขยายเวลาเซสชัน มีเพียงลูกค้าที่เป็นเจ้าของเซสชันเท่านั้นที่เรียกใช้ได้ และเซสชันต้องเป็น ACTIVE คำขอจะถูกบันทึกเป็นเหตุการณ์ของเซสชันและผู้ควบคุมจะได้รับการแจ้งเตือน การขยายเวลาจริงจะเกิดขึ้นเมื่อผู้ควบคุมดำเนินการตอบรับ
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Id ของเซสชัน |
| additionalMinutes | body | number | ระยะเวลาการขยายที่ขอ เป็นนาที |
curl -X POST https://www.ay-robots.com/api/sessions/6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30/extend \
-H 'Authorization: Bearer ayr_live_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"additionalMinutes": 30}'{
"message": "Extension request sent to operator"
}/api/sessions/[id]/messagesBearer session token หรือ API keyแสดงรายการข้อความแชทของเซสชันหนึ่ง
/api/sessions/[id]/messagesBearer session token หรือ API keyส่งข้อความแชทในเซสชันหนึ่ง
/api/sessions/[id]/rateBearer session token หรือ API key (ลูกค้า)ให้คะแนนเซสชันที่เสร็จสมบูรณ์แล้วในระดับ 1 ถึง 5 ดาว พร้อมความคิดเห็นแบบไม่บังคับ
/api/sessions/exportBearer session token หรือ API keyส่งออกข้อมูลเซสชัน
การชำระเงิน
การเคลื่อนย้ายเงินทั้งหมดผ่าน Stripe การเรียกเก็บเงินของลูกค้าใช้ลูกค้า Stripe พร้อมวิธีการชำระเงินที่บันทึกไว้ การจ่ายเงินให้ผู้ควบคุมใช้ Stripe Connect ตัวแพลตฟอร์มเองไม่เคยจัดเก็บข้อมูลบัตรหรือธนาคารเลย
/api/stripe/customerBearer session token (บทบาทลูกค้า)สร้างหรือส่งคืนลูกค้า Stripe ที่ใช้สำหรับการเรียกเก็บเงินของลูกค้า
/api/stripe/connectBearer session token (บทบาทผู้ควบคุม)ส่งคืนสถานะบัญชี Stripe Connect ของผู้ควบคุม
/api/stripe/connectBearer session token (บทบาทผู้ควบคุม)เริ่ม onboarding ของ Stripe Connect สำหรับการจ่ายเงินให้ผู้ควบคุม
/api/stripe/setup-intentBearer session token (บทบาทลูกค้า)สร้าง Stripe SetupIntent สำหรับการบันทึกวิธีการชำระเงิน
/api/stripe/portalBearer session token (บทบาทลูกค้า)สร้างเซสชันพอร์ทัลการเรียกเก็บเงินของ Stripe สำหรับจัดการวิธีการชำระเงินและใบแจ้งหนี้
/api/stripe/payoutBearer session token (บทบาทผู้ควบคุม)ส่งคืนข้อมูลการจ่ายเงินสำหรับผู้ควบคุมที่ยืนยันตัวตนแล้ว
/api/stripe/payoutBearer session token (บทบาทผู้ควบคุม)ขอจ่ายเงินจากรายได้ที่สะสมไว้ การจ่ายเงินขั้นต่ำคือ 10.00 EUR
/api/stripe/webhookลายเซ็น webhook ของ Stripeรับเหตุการณ์ webhook ของ Stripe เรียกโดย Stripe ไม่ใช่โดย API client
Endpoint สาธารณะ
Endpoint เหล่านี้ไม่ต้องการการยืนยันตัวตนเลย ปลอดภัยที่จะเรียกจากการมอนิเตอร์ หน้าการตลาด หรือ status probe
/api/healthการตรวจสอบสุขภาพสำหรับ API และการเชื่อมต่อฐานข้อมูลของมัน ส่งคืน 200 เมื่อทั้งสองอย่างปกติ หากการตรวจสอบฐานข้อมูลล้มเหลว จะส่งคืนโครงสร้างเดียวกันโดย status และ db ถูกตั้งเป็น error และสถานะ HTTP 503
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]ส่งคืนข้อมูลสาธารณะเกี่ยวกับรุ่นหุ่นยนต์ที่รองรับรุ่นหนึ่ง
/api/public/pricingส่งคืนแผนราคาสาธารณะปัจจุบัน
/api/contactส่งข้อความจากแบบฟอร์มติดต่อ ข้อความจะถูกจัดเก็บก่อนแล้วจึงส่งผ่านอีเมล ดังนั้นการหยุดชะงักของเมลชั่วคราวจะไม่ทำให้สูญหาย ในกรณีนั้นการตอบกลับจะรายงาน stored true และ delivered false และการส่งจะถูกลองใหม่ในเชิงปฏิบัติการ
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | บังคับ ชื่อของคุณ |
| body | string | บังคับ ที่อยู่อีเมลที่ถูกต้องสำหรับการตอบกลับ | |
| category | body | string | บังคับ หนึ่งใน: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other |
| subject | body | string | บังคับ หัวข้อสั้น ๆ |
| message | body | string | บังคับ เนื้อหาข้อความ |
curl -X POST https://www.ay-robots.com/api/contact \
-H 'Content-Type: application/json' \
-d '{
"name": "Jane Doe",
"email": "jane@example.com",
"category": "Technical Support",
"subject": "SO-100 pairing question",
"message": "My arm shows as offline after pairing."
}'{
"success": true,
"message": "Message sent successfully",
"id": "b1f2c3d4-0000-0000-0000-000000000000",
"stored": true,
"delivered": true
}/api/robot-requestขอรองรับประเภทหุ่นยนต์ที่ยังไม่มีบนแพลตฟอร์ม
/api/statsส่งคืนสถิติสาธารณะของแพลตฟอร์ม
AY-Robots รักษาความปลอดภัยบัญชีและการควบคุมหุ่นยนต์แบบสดอย่างไร: การยืนยันตัวตน Supabase โมเดลบทบาท API key กลไกป้องกันเซสชัน บันทึกการตรวจสอบ และการเข้ารหัส
เซสชัน AY-Robots ทำงานอย่างไร: วงจรชีวิตตั้งแต่ PENDING ถึง COMPLETED ทุกเหตุการณ์กิจกรรมที่อธิบาย แชทเซสชัน การให้คะแนน การขยายเวลา และข้อมูลฝึกฝน