Tài liệu API
REST API của AY-Robots nằm tại https://www.ay-robots.com/api và nói JSON theo cả hai chiều. Trang này ghi lại việc xác thực, các quy ước phản hồi, và mọi endpoint, với tài liệu tham số đầy đủ cho các route bạn có khả năng gọi theo chương trình nhất.
Cập nhật lần cuối 2026-08-09
Xác thực
Mọi endpoint đều yêu cầu xác thực trừ khi nó được liệt kê trong phần Công khai. API chấp nhận hai hình thức thông tin xác thực, và cả hai đến theo cùng một cách: hoặc dưới dạng cookie phiên mà trang tổng quan đã gửi sẵn, hoặc dưới dạng tiêu đề Authorization với một Bearer token.
| Phương thức | Cách hoạt động | Dùng cho |
|---|---|---|
| Phiên trình duyệt | Session token Supabase của tài khoản đã đăng nhập của bạn, gửi dưới dạng cookie hoặc dưới dạng Bearer token | Chính trang tổng quan và các thử nghiệm nhanh từ một ngữ cảnh trình duyệt đã xác thực |
| Khóa API | Một khóa với tiền tố ayr_live_, được tạo tại /dashboard/settings và gửi dưới dạng Bearer token | Script, server, CI, và bất cứ thứ gì không được phụ thuộc vào đăng nhập trình duyệt |
| MCP | MCP server hosted tại https://www.ay-robots.com/api/mcp (Streamable HTTP) | LLM agent và công cụ nói Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'Khóa API được tạo và thu hồi tại /dashboard/settings. Hãy đối xử với chúng như mật khẩu: giữ chúng ở phía server, và luân chuyển bằng cách tạo một khóa thay thế trước khi thu hồi khóa cũ. Nếu bạn sử dụng CLI desktop, nó cũng có thể hiển thị nền tảng như một MCP server cục bộ bằng lệnh: ay-robots mcp.
Các phản hồi là JSON. Lỗi sử dụng một cấu trúc nhất quán: một đối tượng JSON với một trường error duy nhất chứa một thông báo dễ đọc, được gửi cùng mã trạng thái 4xx hoặc 5xx phù hợp. Các phản hồi thành công trả về tài nguyên trực tiếp; một số endpoint bọc danh sách trong một trường có tên, điều mà các ví dụ dưới đây cho thấy khi có liên quan.
Endpoint xác thực
Các thao tác nền tảng cho tài khoản và hồ sơ. Những endpoint này chủ yếu được chính trang tổng quan sử dụng, nhưng chúng hoạt động với bất kỳ thông tin xác thực hợp lệ nào.
/api/auth/profileBearer session token hoặc khóa APITrả về hồ sơ của người dùng đã xác thực.
/api/auth/profileBearer session token hoặc khóa APICập nhật các trường hồ sơ như tên hiển thị và tùy chọn thông báo.
/api/auth/syncBearer session tokenĐồng bộ người dùng xác thực Supabase với bản ghi người dùng của nền tảng.
/api/auth/check-onboardingBearer session tokenBáo cáo liệu người dùng đã xác thực đã hoàn thành onboarding hay chưa.
/api/auth/avatarBearer session tokenTải lên một hình ảnh avatar mới cho người dùng đã xác thực.
Endpoint khách hàng
Mọi thứ mà một chủ sở hữu robot quản lý: robot đã đăng ký, hồ sơ khách hàng, dataset, hóa đơn, và thống kê trang tổng quan.
/api/client/robotsBearer session token hoặc khóa API (vai trò khách hàng)Liệt kê các robot mà khách hàng đã xác thực đã đăng ký, mới nhất trước, tối đa 50 mục. Dấu thời gian theo ISO 8601; last_online và last_heartbeat là null cho đến khi robot đã kết nối một lần.
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 hoặc khóa API (vai trò khách hàng)Đăng ký một robot mới và trả về id của nó. Một hardware id của bo mạch động cơ chỉ có thể thuộc về một robot; một xung đột sẽ bị từ chối với trạng thái 409.
/api/client/profileBearer session token hoặc khóa API (vai trò khách hàng)Trả về hồ sơ khách hàng của người dùng đã xác thực.
/api/client/profileBearer session token hoặc khóa API (vai trò khách hàng)Cập nhật các trường hồ sơ khách hàng.
/api/client/datasetsBearer session token hoặc khóa API (vai trò khách hàng)Liệt kê các dataset cloud của khách hàng với số lượng episode và kích thước.
/api/client/invoicesBearer session token hoặc khóa API (vai trò khách hàng)Liệt kê các hóa đơn hàng tháng của khách hàng.
/api/client/statsBearer session token hoặc khóa API (vai trò khách hàng)Trả về thống kê sử dụng cho trang tổng quan khách hàng.
Endpoint người vận hành
Phía người vận hành: hồ sơ và tính sẵn sàng, chứng nhận, lịch trình, và thống kê thu nhập.
/api/operator/profileBearer session token hoặc khóa API (vai trò người vận hành)Trả về hồ sơ người vận hành của người dùng đã xác thực.
/api/operator/profileBearer session token hoặc khóa API (vai trò người vận hành)Tạo hoặc cập nhật hồ sơ người vận hành.
/api/operator/available-robotsBearer session token hoặc khóa API (vai trò người vận hành)Liệt kê các robot hiện đang sẵn có và khớp với các chứng nhận của người vận hành.
/api/operator/certificationsBearer session token hoặc khóa API (vai trò người vận hành)Liệt kê các yêu cầu chứng nhận của người vận hành và trạng thái của chúng.
/api/operator/certificationsBearer session token hoặc khóa API (vai trò người vận hành)Yêu cầu chứng nhận cho một loại robot.
/api/operator/scheduleBearer session token hoặc khóa API (vai trò người vận hành)Trả về lịch trình sẵn sàng hàng tuần của người vận hành.
/api/operator/scheduleBearer session token hoặc khóa API (vai trò người vận hành)Cập nhật lịch trình sẵn sàng hàng tuần.
/api/operator/availabilityBearer session token hoặc khóa API (vai trò người vận hành)Trả về tính sẵn sàng hiện tại của người vận hành.
/api/operator/statsBearer session token hoặc khóa API (vai trò người vận hành)Trả về thống kê thu nhập và phiên cho trang tổng quan người vận hành.
Phiên
Phiên là tài nguyên cốt lõi của nền tảng: một phiên là một cam kết điều khiển từ xa liên tục giữa một người vận hành và một robot. Trạng thái phiên di chuyển qua PENDING, ACTIVE, PAUSED, COMPLETED, và CANCELLED.
/api/sessionsBearer session token hoặc khóa APILiệt kê các phiên cho người dùng đã xác thực. Người vận hành thấy các phiên họ đã vận hành; khách hàng thấy các phiên trên robot của họ. Tập trường khác nhau đôi chút giữa hai chế độ xem: chế độ xem khách hàng bao gồm episodes_collected và data_collected_mb, chế độ xem người vận hành bao gồm operator_earnings_cents.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Tùy chọn. Lọc theo trạng thái phiên, ví dụ ACTIVE hoặc COMPLETED. Bỏ qua để liệt kê tất cả. |
| limit | query | number | Tùy chọn. Kích thước trang, mặc định 50, tối đa 100. |
| offset | query | number | Tùy chọn. Độ lệch phân trang, mặc định 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 hoặc khóa API (vai trò người vận hành)Bắt đầu một phiên điều khiển từ xa trên một robot sẵn có. Yêu cầu vai trò người vận hành: khách hàng không thể bắt đầu phiên. Một người vận hành có thể giữ nhiều nhất một phiên ACTIVE hoặc PAUSED tại một thời điểm, và robot hiện tại phải có trạng thái AVAILABLE. Khi bắt đầu ngay lập tức, robot chuyển sang IN_SESSION và khách hàng được thông báo.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Bắt buộc. Id của robot cần vận hành. Robot phải là AVAILABLE. |
| operatorId | body | string | Tùy chọn. Id người vận hành rõ ràng; mặc định là người vận hành đã xác thực. |
| scheduledFor | body | string (ISO 8601) | Tùy chọn. Lên lịch phiên cho một thời điểm trong tương lai thay vì bắt đầu ngay lập tức. |
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 hoặc khóa APITrả về một phiên đơn lẻ với các chi tiết của nó.
/api/sessions/[id]Bearer session token hoặc khóa APICập nhật vòng đời của phiên: tạm dừng, tiếp tục, kết thúc, và các hành động liên quan.
/api/sessions/[id]/extendBearer session token hoặc khóa API (khách hàng, chủ sở hữu phiên)Yêu cầu gia hạn phiên. Chỉ khách hàng sở hữu phiên mới có thể gọi endpoint này, và phiên phải là ACTIVE. Yêu cầu được ghi lại như một sự kiện phiên và người vận hành nhận được thông báo; việc gia hạn thực sự xảy ra khi người vận hành hành động trên đó.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Id của phiên. |
| additionalMinutes | body | number | Độ dài gia hạn được yêu cầu tính bằng phút. |
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 hoặc khóa APILiệt kê các tin nhắn chat của một phiên.
/api/sessions/[id]/messagesBearer session token hoặc khóa APIGửi một tin nhắn chat trong một phiên.
/api/sessions/[id]/rateBearer session token hoặc khóa API (khách hàng)Đánh giá một phiên đã hoàn thành trên thang điểm 1 đến 5 sao, kèm bình luận tùy chọn.
/api/sessions/exportBearer session token hoặc khóa APIXuất dữ liệu phiên.
Thanh toán
Mọi giao dịch tiền tệ đều đi qua Stripe. Thanh toán khách hàng sử dụng một khách hàng Stripe với một phương thức thanh toán đã lưu; chi trả cho người vận hành sử dụng Stripe Connect. Chính nền tảng không bao giờ lưu trữ dữ liệu thẻ hoặc ngân hàng.
/api/stripe/customerBearer session token (vai trò khách hàng)Tạo hoặc trả về khách hàng Stripe được sử dụng cho thanh toán khách hàng.
/api/stripe/connectBearer session token (vai trò người vận hành)Trả về trạng thái tài khoản Stripe Connect của người vận hành.
/api/stripe/connectBearer session token (vai trò người vận hành)Bắt đầu onboarding Stripe Connect cho chi trả người vận hành.
/api/stripe/setup-intentBearer session token (vai trò khách hàng)Tạo một Stripe SetupIntent để lưu một phương thức thanh toán.
/api/stripe/portalBearer session token (vai trò khách hàng)Tạo một phiên cổng thanh toán Stripe để quản lý phương thức thanh toán và hóa đơn.
/api/stripe/payoutBearer session token (vai trò người vận hành)Trả về thông tin chi trả cho người vận hành đã xác thực.
/api/stripe/payoutBearer session token (vai trò người vận hành)Yêu cầu một khoản chi trả từ thu nhập đã tích lũy. Khoản chi trả tối thiểu là 10,00 EUR.
/api/stripe/webhookChữ ký webhook StripeNhận các sự kiện webhook của Stripe. Được gọi bởi Stripe, không phải bởi các API client.
Endpoint công khai
Các endpoint này không yêu cầu xác thực nào. Chúng an toàn để gọi từ monitoring, các trang marketing, hoặc một status probe.
/api/healthKiểm tra sức khỏe cho API và kết nối cơ sở dữ liệu của nó. Trả về 200 khi cả hai đều ổn; nếu kiểm tra cơ sở dữ liệu thất bại, cùng cấu trúc được trả về với status và db được đặt thành error và trạng thái HTTP 503.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Trả về thông tin công khai về một mẫu robot được hỗ trợ.
/api/public/pricingTrả về các gói giá công khai hiện tại.
/api/contactGửi một tin nhắn biểu mẫu liên hệ. Tin nhắn được lưu trữ trước rồi mới được gửi qua email, vì vậy một sự cố mail tạm thời sẽ không làm mất nó: trong trường hợp đó phản hồi báo cáo stored true và delivered false, và việc gửi được thử lại về mặt vận hành.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Bắt buộc. Tên của bạn. |
| body | string | Bắt buộc. Một địa chỉ email hợp lệ để trả lời. | |
| category | body | string | Bắt buộc. Một trong: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Bắt buộc. Dòng tiêu đề ngắn gọn. |
| message | body | string | Bắt buộc. Nội dung tin nhắn. |
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-requestYêu cầu hỗ trợ cho một loại robot chưa có trên nền tảng.
/api/statsTrả về thống kê công khai của nền tảng.
Cách AY-Robots bảo mật tài khoản và điều khiển robot trực tiếp: xác thực Supabase, mô hình vai trò, khóa API, cơ chế bảo vệ phiên, nhật ký kiểm toán, và mã hóa.
Cách phiên AY-Robots hoạt động: vòng đời từ PENDING đến COMPLETED, mọi sự kiện hoạt động được giải thích, chat phiên, đánh giá, gia hạn, và dữ liệu huấn luyện.