เอกสารอ้างอิง 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 และสิ่งใดก็ตามที่ต้องไม่พึ่งพาการเข้าสู่ระบบเบราว์เซอร์
MCPMCP server แบบ hosted ที่ https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM agent และเครื่องมือที่สื่อสารด้วย Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
การยืนยันตัวตนด้วย API key

API key ถูกสร้างและเพิกถอนที่ /dashboard/settings ปฏิบัติกับมันเหมือนรหัสผ่าน: เก็บไว้ฝั่งเซิร์ฟเวอร์ และหมุนเวียนโดยการสร้างคีย์ทดแทนก่อนที่จะเพิกถอนคีย์เก่า หากคุณใช้ CLI ของเดสก์ท็อป มันยังสามารถเปิดให้แพลตฟอร์มทำงานเป็น MCP server ในเครื่องได้ด้วยคำสั่ง: ay-robots mcp

การตอบกลับเป็น JSON ข้อผิดพลาดใช้โครงสร้างที่สอดคล้องกัน: อ็อบเจกต์ JSON ที่มีฟิลด์ error เดียวซึ่งมีข้อความที่มนุษย์อ่านได้ ส่งมาพร้อมรหัสสถานะ 4xx หรือ 5xx ที่เหมาะสม การตอบกลับที่สำเร็จจะส่งคืนทรัพยากรโดยตรง endpoint บางตัวห่อรายการไว้ในฟิลด์ที่มีชื่อ ซึ่งตัวอย่างด้านล่างจะแสดงให้เห็นในจุดที่มีความสำคัญ

Endpoint การยืนยันตัวตน

ระบบพื้นฐานของบัญชีและโปรไฟล์ สิ่งเหล่านี้ถูกใช้โดยตัวแดชบอร์ดเองเป็นหลัก แต่ก็ทำงานได้กับข้อมูลยืนยันตัวตนที่ถูกต้องใด ๆ

GET/api/auth/profileBearer session token หรือ API key

ส่งคืนโปรไฟล์ของผู้ใช้ที่ยืนยันตัวตนแล้ว

POST/api/auth/profileBearer session token หรือ API key

อัปเดตฟิลด์โปรไฟล์ เช่น ชื่อที่แสดงและการตั้งค่าการแจ้งเตือน

POST/api/auth/syncBearer session token

ซิงค์ผู้ใช้ auth ของ Supabase กับระเบียนผู้ใช้ของแพลตฟอร์ม

GET/api/auth/check-onboardingBearer session token

รายงานว่าผู้ใช้ที่ยืนยันตัวตนแล้วทำ onboarding เสร็จหรือยัง

POST/api/auth/avatarBearer session token

อัปโหลดรูปภาพ avatar ใหม่สำหรับผู้ใช้ที่ยืนยันตัวตนแล้ว

Endpoint สำหรับลูกค้า

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

GET/api/client/robotsBearer session token หรือ API key (บทบาทลูกค้า)

แสดงรายการหุ่นยนต์ที่ลูกค้าที่ยืนยันตัวตนแล้วลงทะเบียนไว้ ใหม่สุดก่อน สูงสุด 50 รายการ การประทับเวลาเป็น ISO 8601 last_online และ last_heartbeat เป็น null จนกว่าหุ่นยนต์จะเชื่อมต่อครั้งหนึ่ง

Request
curl https://www.ay-robots.com/api/client/robots \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Response
[
  {
    "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"
  }
]
POST/api/client/robotsBearer session token หรือ API key (บทบาทลูกค้า)

ลงทะเบียนหุ่นยนต์ใหม่และส่งคืน id ของมัน hardware id ของบอร์ดมอเตอร์หนึ่งตัวสามารถเป็นของหุ่นยนต์ได้เพียงตัวเดียว ความขัดแย้งจะถูกปฏิเสธด้วยสถานะ 409

GET/api/client/profileBearer session token หรือ API key (บทบาทลูกค้า)

ส่งคืนโปรไฟล์ลูกค้าของผู้ใช้ที่ยืนยันตัวตนแล้ว

PATCH/api/client/profileBearer session token หรือ API key (บทบาทลูกค้า)

อัปเดตฟิลด์โปรไฟล์ลูกค้า

GET/api/client/datasetsBearer session token หรือ API key (บทบาทลูกค้า)

แสดงรายการชุดข้อมูลคลาวด์ของลูกค้าพร้อมจำนวนเอปิโสดและขนาด

GET/api/client/invoicesBearer session token หรือ API key (บทบาทลูกค้า)

แสดงรายการใบแจ้งหนี้รายเดือนของลูกค้า

GET/api/client/statsBearer session token หรือ API key (บทบาทลูกค้า)

ส่งคืนสถิติการใช้งานสำหรับแดชบอร์ดลูกค้า

Endpoint สำหรับผู้ควบคุม

ฝั่งผู้ควบคุม: โปรไฟล์และความพร้อมใช้งาน การรับรอง ตารางเวลา และสถิติรายได้

GET/api/operator/profileBearer session token หรือ API key (บทบาทผู้ควบคุม)

ส่งคืนโปรไฟล์ผู้ควบคุมของผู้ใช้ที่ยืนยันตัวตนแล้ว

POST/api/operator/profileBearer session token หรือ API key (บทบาทผู้ควบคุม)

สร้างหรืออัปเดตโปรไฟล์ผู้ควบคุม

GET/api/operator/available-robotsBearer session token หรือ API key (บทบาทผู้ควบคุม)

แสดงรายการหุ่นยนต์ที่พร้อมใช้งานในขณะนี้และตรงกับการรับรองของผู้ควบคุม

GET/api/operator/certificationsBearer session token หรือ API key (บทบาทผู้ควบคุม)

แสดงรายการคำขอการรับรองของผู้ควบคุมและสถานะของแต่ละรายการ

POST/api/operator/certificationsBearer session token หรือ API key (บทบาทผู้ควบคุม)

ขอการรับรองสำหรับประเภทหุ่นยนต์หนึ่งประเภท

GET/api/operator/scheduleBearer session token หรือ API key (บทบาทผู้ควบคุม)

ส่งคืนตารางความพร้อมใช้งานรายสัปดาห์ของผู้ควบคุม

POST/api/operator/scheduleBearer session token หรือ API key (บทบาทผู้ควบคุม)

อัปเดตตารางความพร้อมใช้งานรายสัปดาห์

GET/api/operator/availabilityBearer session token หรือ API key (บทบาทผู้ควบคุม)

ส่งคืนความพร้อมใช้งานปัจจุบันของผู้ควบคุม

GET/api/operator/statsBearer session token หรือ API key (บทบาทผู้ควบคุม)

ส่งคืนสถิติรายได้และเซสชันสำหรับแดชบอร์ดผู้ควบคุม

เซสชัน

เซสชันคือทรัพยากรหลักของแพลตฟอร์ม หนึ่งเซสชันคือหนึ่งการควบคุมทางไกลต่อเนื่องระหว่างผู้ควบคุมกับหุ่นยนต์ สถานะเซสชันเคลื่อนผ่าน PENDING, ACTIVE, PAUSED, COMPLETED และ CANCELLED

GET/api/sessionsBearer session token หรือ API key

แสดงรายการเซสชันสำหรับผู้ใช้ที่ยืนยันตัวตนแล้ว ผู้ควบคุมจะเห็นเซสชันที่พวกเขาควบคุม ลูกค้าจะเห็นเซสชันบนหุ่นยนต์ของพวกเขา ชุดฟิลด์แตกต่างกันเล็กน้อยระหว่างสองมุมมอง: มุมมองลูกค้ารวม episodes_collected และ data_collected_mb มุมมองผู้ควบคุมรวม operator_earnings_cents

NameInTypeDescription
statusquerystringไม่บังคับ กรองตามสถานะเซสชัน เช่น ACTIVE หรือ COMPLETED ละไว้เพื่อแสดงรายการทั้งหมด
limitquerynumberไม่บังคับ ขนาดหน้า ค่าเริ่มต้น 50 สูงสุด 100
offsetquerynumberไม่บังคับ ออฟเซ็ตการแบ่งหน้า ค่าเริ่มต้น 0
Request
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Response
{
  "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."
    }
  ]
}
POST/api/sessionsBearer session token หรือ API key (บทบาทผู้ควบคุม)

เริ่มเซสชันควบคุมทางไกลบนหุ่นยนต์ที่พร้อมใช้งาน ต้องการบทบาทผู้ควบคุม ลูกค้าไม่สามารถเริ่มเซสชันได้ ผู้ควบคุมสามารถถือเซสชัน ACTIVE หรือ PAUSED ได้มากที่สุดหนึ่งเซสชันในเวลาเดียวกัน และหุ่นยนต์ต้องมีสถานะ AVAILABLE ในขณะนั้น เมื่อเริ่มทันที หุ่นยนต์จะเปลี่ยนเป็น IN_SESSION และลูกค้าจะได้รับการแจ้งเตือน

NameInTypeDescription
robotIdbodystringบังคับ Id ของหุ่นยนต์ที่จะควบคุม หุ่นยนต์ต้องเป็น AVAILABLE
operatorIdbodystringไม่บังคับ Id ผู้ควบคุมอย่างชัดเจน ค่าเริ่มต้นคือผู้ควบคุมที่ยืนยันตัวตนแล้ว
scheduledForbodystring (ISO 8601)ไม่บังคับ จัดตารางเซสชันสำหรับเวลาในอนาคตแทนที่จะเริ่มทันที
Request
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"}'
Response
{
  "sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
  "status": "ACTIVE"
}
GET/api/sessions/[id]Bearer session token หรือ API key

ส่งคืนเซสชันเดียวพร้อมรายละเอียดของมัน

PATCH/api/sessions/[id]Bearer session token หรือ API key

อัปเดตวงจรชีวิตของเซสชัน: หยุดชั่วคราว ดำเนินการต่อ สิ้นสุด และการกระทำที่เกี่ยวข้อง

POST/api/sessions/[id]/extendBearer session token หรือ API key (ลูกค้า เจ้าของเซสชัน)

ขอขยายเวลาเซสชัน มีเพียงลูกค้าที่เป็นเจ้าของเซสชันเท่านั้นที่เรียกใช้ได้ และเซสชันต้องเป็น ACTIVE คำขอจะถูกบันทึกเป็นเหตุการณ์ของเซสชันและผู้ควบคุมจะได้รับการแจ้งเตือน การขยายเวลาจริงจะเกิดขึ้นเมื่อผู้ควบคุมดำเนินการตอบรับ

NameInTypeDescription
idpathstringId ของเซสชัน
additionalMinutesbodynumberระยะเวลาการขยายที่ขอ เป็นนาที
Request
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}'
Response
{
  "message": "Extension request sent to operator"
}
GET/api/sessions/[id]/messagesBearer session token หรือ API key

แสดงรายการข้อความแชทของเซสชันหนึ่ง

POST/api/sessions/[id]/messagesBearer session token หรือ API key

ส่งข้อความแชทในเซสชันหนึ่ง

POST/api/sessions/[id]/rateBearer session token หรือ API key (ลูกค้า)

ให้คะแนนเซสชันที่เสร็จสมบูรณ์แล้วในระดับ 1 ถึง 5 ดาว พร้อมความคิดเห็นแบบไม่บังคับ

POST/api/sessions/exportBearer session token หรือ API key

ส่งออกข้อมูลเซสชัน

การชำระเงิน

การเคลื่อนย้ายเงินทั้งหมดผ่าน Stripe การเรียกเก็บเงินของลูกค้าใช้ลูกค้า Stripe พร้อมวิธีการชำระเงินที่บันทึกไว้ การจ่ายเงินให้ผู้ควบคุมใช้ Stripe Connect ตัวแพลตฟอร์มเองไม่เคยจัดเก็บข้อมูลบัตรหรือธนาคารเลย

POST/api/stripe/customerBearer session token (บทบาทลูกค้า)

สร้างหรือส่งคืนลูกค้า Stripe ที่ใช้สำหรับการเรียกเก็บเงินของลูกค้า

GET/api/stripe/connectBearer session token (บทบาทผู้ควบคุม)

ส่งคืนสถานะบัญชี Stripe Connect ของผู้ควบคุม

POST/api/stripe/connectBearer session token (บทบาทผู้ควบคุม)

เริ่ม onboarding ของ Stripe Connect สำหรับการจ่ายเงินให้ผู้ควบคุม

POST/api/stripe/setup-intentBearer session token (บทบาทลูกค้า)

สร้าง Stripe SetupIntent สำหรับการบันทึกวิธีการชำระเงิน

POST/api/stripe/portalBearer session token (บทบาทลูกค้า)

สร้างเซสชันพอร์ทัลการเรียกเก็บเงินของ Stripe สำหรับจัดการวิธีการชำระเงินและใบแจ้งหนี้

GET/api/stripe/payoutBearer session token (บทบาทผู้ควบคุม)

ส่งคืนข้อมูลการจ่ายเงินสำหรับผู้ควบคุมที่ยืนยันตัวตนแล้ว

POST/api/stripe/payoutBearer session token (บทบาทผู้ควบคุม)

ขอจ่ายเงินจากรายได้ที่สะสมไว้ การจ่ายเงินขั้นต่ำคือ 10.00 EUR

POST/api/stripe/webhookลายเซ็น webhook ของ Stripe

รับเหตุการณ์ webhook ของ Stripe เรียกโดย Stripe ไม่ใช่โดย API client

Endpoint สาธารณะ

Endpoint เหล่านี้ไม่ต้องการการยืนยันตัวตนเลย ปลอดภัยที่จะเรียกจากการมอนิเตอร์ หน้าการตลาด หรือ status probe

GET/api/health

การตรวจสอบสุขภาพสำหรับ API และการเชื่อมต่อฐานข้อมูลของมัน ส่งคืน 200 เมื่อทั้งสองอย่างปกติ หากการตรวจสอบฐานข้อมูลล้มเหลว จะส่งคืนโครงสร้างเดียวกันโดย status และ db ถูกตั้งเป็น error และสถานะ HTTP 503

Request
curl https://www.ay-robots.com/api/health
Response
{
  "status": "ok",
  "db": "ok",
  "timestamp": "2026-08-09T10:12:00.000Z"
}
GET/api/robots/[id]

ส่งคืนข้อมูลสาธารณะเกี่ยวกับรุ่นหุ่นยนต์ที่รองรับรุ่นหนึ่ง

GET/api/public/pricing

ส่งคืนแผนราคาสาธารณะปัจจุบัน

POST/api/contact

ส่งข้อความจากแบบฟอร์มติดต่อ ข้อความจะถูกจัดเก็บก่อนแล้วจึงส่งผ่านอีเมล ดังนั้นการหยุดชะงักของเมลชั่วคราวจะไม่ทำให้สูญหาย ในกรณีนั้นการตอบกลับจะรายงาน stored true และ delivered false และการส่งจะถูกลองใหม่ในเชิงปฏิบัติการ

NameInTypeDescription
namebodystringบังคับ ชื่อของคุณ
emailbodystringบังคับ ที่อยู่อีเมลที่ถูกต้องสำหรับการตอบกลับ
categorybodystringบังคับ หนึ่งใน: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other
subjectbodystringบังคับ หัวข้อสั้น ๆ
messagebodystringบังคับ เนื้อหาข้อความ
Request
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."
  }'
Response
{
  "success": true,
  "message": "Message sent successfully",
  "id": "b1f2c3d4-0000-0000-0000-000000000000",
  "stored": true,
  "delivered": true
}
POST/api/robot-request

ขอรองรับประเภทหุ่นยนต์ที่ยังไม่มีบนแพลตฟอร์ม

GET/api/stats

ส่งคืนสถิติสาธารณะของแพลตฟอร์ม