Справочник на API
REST API на AY-Robots се намира под https://www.ay-robots.com/api и говори JSON в двете посоки. Тази страница документира автентикацията, конвенциите за отговори и всеки endpoint, с пълна документация на параметрите за маршрутите, които най-вероятно ще извиквате програмно.
Последна актуализация 2026-08-09
Автентикация
Всеки endpoint изисква автентикация, освен ако не е изброен в раздела Публични endpoints. API-то приема две форми на данни за достъп и двете пристигат по един и същ начин: или като бисквитката на сесията, която таблото и без друго изпраща, или като заглавие Authorization с Bearer токен.
| Метод | Как работи | Използвайте го за |
|---|---|---|
| Сесия в браузъра | Токенът на Supabase сесията на влезлия ви акаунт, изпратен като бисквитка или като Bearer токен | Самото табло и бързи експерименти от автентикиран контекст в браузъра |
| API ключ | Ключ с представка ayr_live_, създаден в /dashboard/settings и изпратен като Bearer токен | Скриптове, сървъри, CI и всичко, което не трябва да зависи от вход в браузъра |
| MCP | Хостваният MCP сървър на https://www.ay-robots.com/api/mcp (Streamable HTTP) | LLM агенти и инструменти, които говорят Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'API ключовете се създават и анулират в /dashboard/settings. Третирайте ги като пароли: пазете ги от страна на сървъра и ги ротирайте, като създадете заместващ ключ, преди да анулирате стария. Ако използвате настолното CLI, то може също да изложи платформата като локален MCP сървър с командата: ay-robots mcp.
Отговорите са във формат JSON. Грешките имат последователна форма: JSON обект с едно поле error, съдържащо съобщение, разбираемо за човек, доставено с подходящ статус код 4xx или 5xx. Успешните отговори връщат ресурса директно; малко на брой endpoints опаковат списъци в наименувано поле, което примерите по-долу показват там, където има значение.
Endpoints за автентикация
Основна работа с акаунти и профили. Те се използват предимно от самото табло, но работят с всякакви валидни данни за достъп.
/api/auth/profileBearer токен на сесия или API ключВръща профила на автентикирания потребител.
/api/auth/profileBearer токен на сесия или API ключАктуализира полета на профила, като показваното име и предпочитанията за известия.
/api/auth/syncBearer токен на сесияСинхронизира потребителя от Supabase auth с потребителския запис на платформата.
/api/auth/check-onboardingBearer токен на сесияСъобщава дали автентикираният потребител е завършил onboarding.
/api/auth/avatarBearer токен на сесияКачва ново изображение за аватар на автентикирания потребител.
Endpoints за клиенти
Всичко, което управлява собственик на робот: регистрирани роботи, клиентският профил, дейтасети, фактури и статистики за таблото.
/api/client/robotsBearer токен на сесия или API ключ (роля клиент)Показва списък с роботите, регистрирани от автентикирания клиент, най-новите първи, до 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 токен на сесия или API ключ (роля клиент)Регистрира нов робот и връща неговото id. Хардуерен идентификатор на двигателна платка може да принадлежи само на един робот; сблъсък се отхвърля със статус 409.
/api/client/profileBearer токен на сесия или API ключ (роля клиент)Връща клиентския профил на автентикирания потребител.
/api/client/profileBearer токен на сесия или API ключ (роля клиент)Актуализира полета на клиентския профил.
/api/client/datasetsBearer токен на сесия или API ключ (роля клиент)Показва списък с облачните дейтасети на клиента с брой епизоди и размери.
/api/client/invoicesBearer токен на сесия или API ключ (роля клиент)Показва списък с месечните фактури на клиента.
/api/client/statsBearer токен на сесия или API ключ (роля клиент)Връща статистики за използване за таблото на клиента.
Endpoints за оператори
Страната на оператора: профил и наличност, сертификации, планиране и статистики за приходи.
/api/operator/profileBearer токен на сесия или API ключ (роля оператор)Връща профила на оператора на автентикирания потребител.
/api/operator/profileBearer токен на сесия или API ключ (роля оператор)Създава или актуализира профила на оператора.
/api/operator/available-robotsBearer токен на сесия или API ключ (роля оператор)Показва списък с роботите, които в момента са налични и отговарят на сертификациите на оператора.
/api/operator/certificationsBearer токен на сесия или API ключ (роля оператор)Показва списък със заявките на оператора за сертификация и техния статус.
/api/operator/certificationsBearer токен на сесия или API ключ (роля оператор)Заявява сертификация за тип робот.
/api/operator/scheduleBearer токен на сесия или API ключ (роля оператор)Връща седмичния график за наличност на оператора.
/api/operator/scheduleBearer токен на сесия или API ключ (роля оператор)Актуализира седмичния график за наличност.
/api/operator/availabilityBearer токен на сесия или API ключ (роля оператор)Връща текущата наличност на оператора.
/api/operator/statsBearer токен на сесия или API ключ (роля оператор)Връща статистики за приходи и сесии за таблото на оператора.
Сесии
Сесиите са централният ресурс на платформата: една сесия е едно непрекъснато ангажиране за телеоперация между оператор и робот. Статусът на сесията преминава през PENDING, ACTIVE, PAUSED, COMPLETED и CANCELLED.
/api/sessionsBearer токен на сесия или API ключПоказва списък със сесии за автентикирания потребител. Операторите виждат сесиите, които са управлявали; клиентите виждат сесиите на своите роботи. Наборът от полета се различава леко между двата изгледа: изгледът на клиента включва 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 токен на сесия или API ключ (роля оператор)Стартира сесия за телеоперация на наличен робот. Изисква роля оператор: клиентите не могат да стартират сесии. Оператор може да държи най-много една сесия 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 токен на сесия или API ключВръща една сесия с нейните детайли.
/api/sessions/[id]Bearer токен на сесия или API ключАктуализира жизнения цикъл на сесията: пауза, възобновяване, приключване и свързани действия.
/api/sessions/[id]/extendBearer токен на сесия или API ключ (клиент, собственик на сесията)Заявява удължаване на сесия. Само клиентът, който притежава сесията, може да извика това, и сесията трябва да е 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 токен на сесия или API ключПоказва списък с чат съобщенията на сесия.
/api/sessions/[id]/messagesBearer токен на сесия или API ключИзпраща чат съобщение в сесия.
/api/sessions/[id]/rateBearer токен на сесия или API ключ (клиент)Оценява завършена сесия по скала от 1 до 5 звезди, с незадължителен коментар.
/api/sessions/exportBearer токен на сесия или API ключИзнася данни за сесия.
Плащания
Цялото движение на пари минава през Stripe. Фактурирането на клиенти използва клиент на Stripe със запазен начин на плащане; изплащанията на оператори използват Stripe Connect. Самата платформа никога не съхранява данни за карти или банкови сметки.
/api/stripe/customerBearer токен на сесия (роля клиент)Създава или връща клиента на Stripe, използван за фактуриране на клиент.
/api/stripe/connectBearer токен на сесия (роля оператор)Връща статуса на акаунта на оператора в Stripe Connect.
/api/stripe/connectBearer токен на сесия (роля оператор)Стартира onboarding в Stripe Connect за изплащания на оператор.
/api/stripe/setup-intentBearer токен на сесия (роля клиент)Създава Stripe SetupIntent за запазване на начин на плащане.
/api/stripe/portalBearer токен на сесия (роля клиент)Създава сесия на портала за фактуриране на Stripe за управление на начини на плащане и фактури.
/api/stripe/payoutBearer токен на сесия (роля оператор)Връща информация за изплащане за автентикирания оператор.
/api/stripe/payoutBearer токен на сесия (роля оператор)Заявява изплащане на натрупаните приходи. Минималното изплащане е 10,00 EUR.
/api/stripe/webhookПодпис на webhook от StripeПолучава webhook събития от Stripe. Извиква се от Stripe, не от клиенти на API.
Публични endpoints
Тези endpoints не изискват автентикация. Безопасно е да се извикват от мониторинг, маркетингови страници или сонда за статус.
/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 ключове, защита на сесии и криптиране.
Как работят сесиите в AY-Robots: цикълът от PENDING до COMPLETED, всяко събитие на активност, чат на сесията, оценки, удължавания и тренировъчни данни.