API референца

REST API на AY-Robots живее под https://www.ay-robots.com/api и зборува JSON во двете насоки. Оваа страница ги документира автентикацијата, конвенциите за одговори и секоја крајна точка, со целосна документација на параметри за патеките што најверојатно ќе ги повикате програмски.

Последно ажурирано 2026-08-09

Автентикација

Секоја крајна точка бара автентикација освен ако не е наведена во делот Public. 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
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Автентикација со API-клуч

API-клучевите се создаваат и повлекуваат во /dashboard/settings. Третирајте ги како лозинки: чувајте ги на страна на серверот и ротирајте ги така што прво создавате заменски клуч, па дури потоа го повлекувате стариот. Ако го користите desktop CLI-то, тоа исто така може да ја изложи платформата како локален MCP сервер со командата: ay-robots mcp.

Одговорите се JSON. Грешките користат конзистентна форма: JSON објект со едно поле error кое содржи порака читлива за луѓе, испратена со соодветен 4xx или 5xx статус код. Успешните одговори го враќаат ресурсот директно; неколку крајни точки ги завиткуваат листите во именувано поле, што примерите подолу го покажуваат каде е важно.

Крајни точки за автентикација

Инфраструктура за сметка и профил. Овие првенствено ги користи самата контролна табла, но функционираат со кој било валиден акредитив.

GET/api/auth/profileBearer сесиски токен или API-клуч

Го враќа профилот на автентицираниот корисник.

POST/api/auth/profileBearer сесиски токен или API-клуч

Ги ажурира полињата на профилот, како прикажаното име и преференциите за известувања.

POST/api/auth/syncBearer сесиски токен

Го синхронизира Supabase auth корисникот со записот на корисникот на платформата.

GET/api/auth/check-onboardingBearer сесиски токен

Известува дали автентицираниот корисник го завршил onboarding.

POST/api/auth/avatarBearer сесиски токен

Прикачува нова слика за аватар на автентицираниот корисник.

Крајни точки за клиенти

Сѐ што управува сопственик на робот: регистрирани роботи, профилот на клиентот, dataset-и, фактури и статистики за контролната табла.

GET/api/client/robotsBearer сесиски токен или API-клуч (улога клиент)

Ги наведува роботите регистрирани од автентицираниот клиент, најнови прво, до 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 сесиски токен или API-клуч (улога клиент)

Регистрира нов робот и го враќа неговиот id. Hardware id на плоча со мотор може да припаѓа само на еден робот; судир се одбива со статус 409.

GET/api/client/profileBearer сесиски токен или API-клуч (улога клиент)

Го враќа профилот на клиентот на автентицираниот корисник.

PATCH/api/client/profileBearer сесиски токен или API-клуч (улога клиент)

Ги ажурира полињата на профилот на клиентот.

GET/api/client/datasetsBearer сесиски токен или API-клуч (улога клиент)

Ги наведува dataset-ите во облак на клиентот со број на епизоди и големини.

GET/api/client/invoicesBearer сесиски токен или API-клуч (улога клиент)

Ги наведува месечните фактури на клиентот.

GET/api/client/statsBearer сесиски токен или API-клуч (улога клиент)

Враќа статистики за користење за контролната табла на клиентот.

Крајни точки за оператори

Страната на операторот: профил и достапност, сертификации, распоред и статистики за заработка.

GET/api/operator/profileBearer сесиски токен или API-клуч (улога оператор)

Го враќа профилот на операторот на автентицираниот корисник.

POST/api/operator/profileBearer сесиски токен или API-клуч (улога оператор)

Создава или ажурира профил на оператор.

GET/api/operator/available-robotsBearer сесиски токен или API-клуч (улога оператор)

Ги наведува роботите кои се тековно достапни и се совпаѓаат со сертификациите на операторот.

GET/api/operator/certificationsBearer сесиски токен или API-клуч (улога оператор)

Ги наведува барањата за сертификација на операторот и нивниот статус.

POST/api/operator/certificationsBearer сесиски токен или API-клуч (улога оператор)

Бара сертификација за тип робот.

GET/api/operator/scheduleBearer сесиски токен или API-клуч (улога оператор)

Го враќа неделниот распоред на достапност на операторот.

POST/api/operator/scheduleBearer сесиски токен или API-клуч (улога оператор)

Го ажурира неделниот распоред на достапност.

GET/api/operator/availabilityBearer сесиски токен или API-клуч (улога оператор)

Ја враќа тековната достапност на операторот.

GET/api/operator/statsBearer сесиски токен или API-клуч (улога оператор)

Враќа статистики за заработка и сесии за контролната табла на операторот.

Сесии

Сесиите се основниот ресурс на платформата: една сесија е едно непрекинато ангажирање во телеоперација меѓу оператор и робот. Статусот на сесијата поминува низ PENDING, ACTIVE, PAUSED, COMPLETED и CANCELLED.

GET/api/sessionsBearer сесиски токен или API-клуч

Ги наведува сесиите за автентицираниот корисник. Операторите гледаат сесии со кои управувале; клиентите гледаат сесии на нивните роботи. Множеството полиња малку се разликува меѓу двата приказа: приказот за клиент вклучува 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 сесиски токен или API-клуч (улога оператор)

Стартува сесија за телеоперација на достапен робот. Бара улога оператор: клиентите не можат да стартуваат сесии. Оператор може да држи најмногу една 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 сесиски токен или API-клуч

Враќа една сесија со нејзините детали.

PATCH/api/sessions/[id]Bearer сесиски токен или API-клуч

Го ажурира животниот циклус на сесијата: пауза, продолжување, крај и поврзани дејства.

POST/api/sessions/[id]/extendBearer сесиски токен или API-клуч (клиент, сопственик на сесијата)

Бара продолжување на сесија. Само клиентот кој е сопственик на сесијата може да го повика ова, а сесијата мора да е 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 сесиски токен или API-клуч

Ги наведува пораките во разговорот на сесија.

POST/api/sessions/[id]/messagesBearer сесиски токен или API-клуч

Испраќа порака во разговорот на сесија.

POST/api/sessions/[id]/rateBearer сесиски токен или API-клуч (клиент)

Оценува завршена сесија на скала од 1 до 5 ѕвездички, со опционален коментар.

POST/api/sessions/exportBearer сесиски токен или API-клуч

Извезува податоци од сесија.

Плаќања

Секое движење на пари оди преку Stripe. Наплатата на клиентите користи Stripe клиент со зачуван начин на плаќање; исплатите на операторите користат Stripe Connect. Самата платформа никогаш не чува податоци за картички или банкарски сметки.

POST/api/stripe/customerBearer сесиски токен (улога клиент)

Создава или враќа Stripe клиент кој се користи за наплата кон клиентот.

GET/api/stripe/connectBearer сесиски токен (улога оператор)

Го враќа статусот на Stripe Connect сметката на операторот.

POST/api/stripe/connectBearer сесиски токен (улога оператор)

Стартува Stripe Connect onboarding за исплати на операторот.

POST/api/stripe/setup-intentBearer сесиски токен (улога клиент)

Создава Stripe SetupIntent за зачувување начин на плаќање.

POST/api/stripe/portalBearer сесиски токен (улога клиент)

Создава Stripe billing portal сесија за управување со начини на плаќање и фактури.

GET/api/stripe/payoutBearer сесиски токен (улога оператор)

Враќа информации за исплата на автентицираниот оператор.

POST/api/stripe/payoutBearer сесиски токен (улога оператор)

Бара исплата на акумулираната заработка. Минималната исплата е 10,00 EUR.

POST/api/stripe/webhookПотпис на Stripe webhook

Прима настани од Stripe webhook. Ги повикува Stripe, не API клиенти.

Јавни крајни точки

Овие крајни точки не бараат автентикација. Безбедни се за повикување од следење, маркетинг страници или проба на статус.

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

Враќа јавни статистики на платформата.