Reference API

REST API AY-Robots žije na https://www.ay-robots.com/api a mluví JSON oběma směry. Tato stránka dokumentuje autentizaci, konvence odpovědí a každý endpoint, s úplnou dokumentací parametrů pro routy, které nejspíš budete volat programově.

Naposledy aktualizováno 2026-08-09

Autentizace

Každý endpoint vyžaduje autentizaci, pokud není uvedený v sekci Veřejné endpointy. API přijímá dvě formy přihlašovacích údajů a obě přichází stejnou cestou: buď jako session cookie, kterou dashboard stejně posílá, nebo jako hlavička Authorization s Bearer tokenem.

MetodaJak fungujePoužití
Browser sessionSupabase session token vašeho přihlášeného účtu, poslaný jako cookie nebo jako Bearer tokenSamotný dashboard a rychlé experimenty z autentizovaného kontextu prohlížeče
API klíčKlíč s prefixem ayr_live_, vytvořený v /dashboard/settings a poslaný jako Bearer tokenSkripty, servery, CI a vše, co nesmí záviset na přihlášení v prohlížeči
MCPHostovaný MCP server na https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM agenti a nástroje, které mluví Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Autentizace pomocí API klíče

API klíče se vytváří a odvolávají v /dashboard/settings. Zacházejte s nimi jako s hesly: uchovávejte je na straně serveru a rotujte je tak, že nejdřív vytvoříte náhradní klíč a pak odvoláte starý. Pokud používáte desktopové CLI, může platformu vystavit i jako lokální MCP server příkazem: ay-robots mcp.

Odpovědi jsou JSON. Chyby mají jednotný tvar: JSON objekt s jediným polem error obsahujícím čitelnou zprávu, doručený s odpovídajícím stavovým kódem 4xx nebo 5xx. Úspěšné odpovědi vrací zdroj přímo; pár endpointů balí seznamy do pojmenovaného pole, což příklady níže ukazují tam, kde na tom záleží.

Endpointy pro autentizaci

Základní správa účtu a profilu. Tyto endpointy primárně používá samotný dashboard, ale fungují s jakýmkoli platným přihlašovacím údajem.

GET/api/auth/profileBearer session token nebo API klíč

Vrátí profil autentizovaného uživatele.

POST/api/auth/profileBearer session token nebo API klíč

Aktualizuje pole profilu, jako je zobrazované jméno a nastavení notifikací.

POST/api/auth/syncBearer session token

Synchronizuje uživatele Supabase Auth se záznamem uživatele na platformě.

GET/api/auth/check-onboardingBearer session token

Hlásí, zda autentizovaný uživatel dokončil onboarding.

POST/api/auth/avatarBearer session token

Nahraje nový obrázek avataru pro autentizovaného uživatele.

Endpointy pro klienty

Vše, co spravuje majitel robota: registrovaní roboti, klientský profil, datasety, faktury a statistiky dashboardu.

GET/api/client/robotsBearer session token nebo API klíč (role klienta)

Vypíše roboty registrované autentizovaným klientem, od nejnovějších, až do 50 záznamů. Časové značky jsou ve formátu ISO 8601; last_online a last_heartbeat jsou null, dokud se robot alespoň jednou nepřipojil.

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 nebo API klíč (role klienta)

Zaregistruje nového robota a vrátí jeho id. Hardwarové id motorové desky může patřit jen jednomu robotu; kolize je odmítnuta se stavem 409.

GET/api/client/profileBearer session token nebo API klíč (role klienta)

Vrátí klientský profil autentizovaného uživatele.

PATCH/api/client/profileBearer session token nebo API klíč (role klienta)

Aktualizuje pole klientského profilu.

GET/api/client/datasetsBearer session token nebo API klíč (role klienta)

Vypíše cloudové datasety klienta s počty epizod a velikostmi.

GET/api/client/invoicesBearer session token nebo API klíč (role klienta)

Vypíše měsíční faktury klienta.

GET/api/client/statsBearer session token nebo API klíč (role klienta)

Vrátí statistiky využití pro dashboard klienta.

Endpointy pro operátory

Strana operátora: profil a dostupnost, certifikace, plánování a statistiky výdělků.

GET/api/operator/profileBearer session token nebo API klíč (role operátora)

Vrátí operátorský profil autentizovaného uživatele.

POST/api/operator/profileBearer session token nebo API klíč (role operátora)

Vytvoří nebo aktualizuje operátorský profil.

GET/api/operator/available-robotsBearer session token nebo API klíč (role operátora)

Vypíše roboty, kteří jsou aktuálně dostupní a odpovídají certifikacím operátora.

GET/api/operator/certificationsBearer session token nebo API klíč (role operátora)

Vypíše žádosti o certifikaci operátora a jejich stav.

POST/api/operator/certificationsBearer session token nebo API klíč (role operátora)

Vyžádá certifikaci pro typ robota.

GET/api/operator/scheduleBearer session token nebo API klíč (role operátora)

Vrátí týdenní plán dostupnosti operátora.

POST/api/operator/scheduleBearer session token nebo API klíč (role operátora)

Aktualizuje týdenní plán dostupnosti.

GET/api/operator/availabilityBearer session token nebo API klíč (role operátora)

Vrátí aktuální dostupnost operátora.

GET/api/operator/statsBearer session token nebo API klíč (role operátora)

Vrátí statistiky výdělků a session pro dashboard operátora.

Session

Session jsou hlavním zdrojem platformy: jedna session je jedno souvislé teleoperační zapojení mezi operátorem a robotem. Stav session prochází PENDING, ACTIVE, PAUSED, COMPLETED a CANCELLED.

GET/api/sessionsBearer session token nebo API klíč

Vypíše session pro autentizovaného uživatele. Operátoři vidí session, které řídili; klienti vidí session na svých robotech. Sada polí se mezi oběma pohledy mírně liší: klientský pohled obsahuje episodes_collected a data_collected_mb, pohled operátora obsahuje operator_earnings_cents.

NameInTypeDescription
statusquerystringVolitelné. Filtruje podle stavu session, například ACTIVE nebo COMPLETED. Vynechte pro výpis všech.
limitquerynumberVolitelné. Velikost stránky, výchozí 50, maximum 100.
offsetquerynumberVolitelné. Offset stránkování, výchozí 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 nebo API klíč (role operátora)

Spustí teleoperační session na dostupném robotu. Vyžaduje roli operátora: klienti session spouštět nemohou. Operátor může naráz držet nejvýš jednu session ve stavu ACTIVE nebo PAUSED a robot musí mít v danou chvíli stav AVAILABLE. Při okamžitém spuštění se robot přepne na IN_SESSION a klient je upozorněn.

NameInTypeDescription
robotIdbodystringPovinné. Id robota, který se má ovládat. Robot musí být AVAILABLE.
operatorIdbodystringVolitelné. Explicitní id operátora; výchozí je autentizovaný operátor.
scheduledForbodystring (ISO 8601)Volitelné. Naplánuje session na budoucí čas místo okamžitého spuštění.
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 nebo API klíč

Vrátí jednu session s jejími detaily.

PATCH/api/sessions/[id]Bearer session token nebo API klíč

Aktualizuje životní cyklus session: pozastavení, obnovení, ukončení a související akce.

POST/api/sessions/[id]/extendBearer session token nebo API klíč (klient, vlastník session)

Vyžádá prodloužení session. Volat to může jen klient, kterému session patří, a session musí být ACTIVE. Žádost se zaznamená jako událost session a operátor dostane notifikaci; samotné prodloužení proběhne, až na ni operátor zareaguje.

NameInTypeDescription
idpathstringId session.
additionalMinutesbodynumberPožadovaná délka prodloužení v minutách.
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 nebo API klíč

Vypíše chatové zprávy session.

POST/api/sessions/[id]/messagesBearer session token nebo API klíč

Pošle chatovou zprávu v session.

POST/api/sessions/[id]/rateBearer session token nebo API klíč (klient)

Ohodnotí dokončenou session na škále 1 až 5 hvězdiček, s volitelným komentářem.

POST/api/sessions/exportBearer session token nebo API klíč

Exportuje data session.

Platby

Veškerý pohyb peněz probíhá přes Stripe. Fakturace klientů používá Stripe zákazníka s uloženou platební metodou; výplaty operátorům používají Stripe Connect. Samotná platforma nikdy neukládá data karet ani bankovní údaje.

POST/api/stripe/customerBearer session token (role klienta)

Vytvoří nebo vrátí Stripe zákazníka použitého pro fakturaci klienta.

GET/api/stripe/connectBearer session token (role operátora)

Vrátí stav Stripe Connect účtu operátora.

POST/api/stripe/connectBearer session token (role operátora)

Spustí onboarding Stripe Connect pro výplaty operátorovi.

POST/api/stripe/setup-intentBearer session token (role klienta)

Vytvoří Stripe SetupIntent pro uložení platební metody.

POST/api/stripe/portalBearer session token (role klienta)

Vytvoří session Stripe billing portálu pro správu platebních metod a faktur.

GET/api/stripe/payoutBearer session token (role operátora)

Vrátí informace o výplatě pro autentizovaného operátora.

POST/api/stripe/payoutBearer session token (role operátora)

Vyžádá výplatu nashromážděných výdělků. Minimální výplata je 10,00 EUR.

POST/api/stripe/webhookPodpis webhooku Stripe

Přijímá webhook události Stripe. Volá ho Stripe, ne klienti API.

Veřejné endpointy

Tyto endpointy nevyžadují žádnou autentizaci. Lze je bezpečně volat z monitoringu, marketingových stránek nebo sondy stavu.

GET/api/health

Kontrola stavu API a jeho připojení k databázi. Vrací 200, když je vše v pořádku; pokud kontrola databáze selže, vrátí se stejný tvar se status a db nastavenými na error a HTTP stavem 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]

Vrátí veřejné informace o podporovaném modelu robota.

GET/api/public/pricing

Vrátí aktuální veřejné cenové plány.

POST/api/contact

Odešle zprávu z kontaktního formuláře. Zpráva se nejdřív uloží a poté doručí e-mailem, takže dočasný výpadek pošty ji neztratí: v takovém případě odpověď hlásí stored true a delivered false a doručení se provozně opakuje.

NameInTypeDescription
namebodystringPovinné. Vaše jméno.
emailbodystringPovinné. Platná e-mailová adresa pro odpověď.
categorybodystringPovinné. Jedna z: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringPovinné. Krátký předmět.
messagebodystringPovinné. Text zprávy.
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

Vyžádá podporu pro typ robota, který zatím na platformě není.

GET/api/stats

Vrátí veřejné statistiky platformy.