Referencja API

REST API AY-Robots znajduje się pod adresem https://www.ay-robots.com/api i mówi w obie strony w JSON. Ta strona dokumentuje uwierzytelnianie, konwencje odpowiedzi i każdy endpoint, z pełną dokumentacją parametrów dla tras, które najprawdopodobniej wywołasz programistycznie.

Ostatnia aktualizacja 2026-08-09

Uwierzytelnianie

Każdy endpoint wymaga uwierzytelnienia, chyba że jest wymieniony w sekcji Endpointy publiczne. API akceptuje dwie formy danych uwierzytelniających i obie docierają w ten sam sposób: albo jako ciasteczko sesji, które panel i tak wysyła, albo jako nagłówek Authorization z tokenem Bearer.

MetodaJak działaDo czego jej użyć
Sesja przeglądarkiToken sesji Supabase Twojego zalogowanego konta, wysyłany jako ciasteczko albo jako token BearerSam panel oraz szybkie eksperymenty z uwierzytelnionego kontekstu przeglądarki
Klucz APIKlucz z prefiksem ayr_live_, tworzony w /dashboard/settings i wysyłany jako token BearerSkrypty, serwery, CI i wszystko, co nie może zależeć od logowania w przeglądarce
MCPHostowany serwer MCP pod adresem https://www.ay-robots.com/api/mcp (Streamable HTTP)Agenci LLM i narzędzia mówiące w Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Uwierzytelnianie kluczem API

Klucze API są tworzone i unieważniane w /dashboard/settings. Traktuj je jak hasła: trzymaj po stronie serwera i rotuj, tworząc najpierw klucz zastępczy, zanim unieważnisz stary. Jeśli używasz CLI desktopowego, może ono również udostępnić platformę jako lokalny serwer MCP poleceniem: ay-robots mcp.

Odpowiedzi są w formacie JSON. Błędy mają spójną formę: obiekt JSON z pojedynczym polem error zawierającym czytelną wiadomość, dostarczany z odpowiednim kodem statusu 4xx lub 5xx. Odpowiedzi sukcesu zwracają zasób bezpośrednio; kilka endpointów opakowuje listy w nazwane pole, co poniższe przykłady pokazują tam, gdzie ma to znaczenie.

Endpointy Auth

Obsługa konta i profilu. Te endpointy wykorzystuje przede wszystkim sam panel, ale działają z każdymi ważnymi danymi uwierzytelniającymi.

GET/api/auth/profileToken sesji Bearer albo klucz API

Zwraca profil uwierzytelnionego użytkownika.

POST/api/auth/profileToken sesji Bearer albo klucz API

Aktualizuje pola profilu, takie jak nazwa wyświetlana i preferencje powiadomień.

POST/api/auth/syncToken sesji Bearer

Synchronizuje użytkownika auth Supabase z rekordem użytkownika platformy.

GET/api/auth/check-onboardingToken sesji Bearer

Zgłasza, czy uwierzytelniony użytkownik ukończył onboarding.

POST/api/auth/avatarToken sesji Bearer

Przesyła nowy obraz awatara dla uwierzytelnionego użytkownika.

Endpointy klienta

Wszystko, czym zarządza właściciel robota: zarejestrowane roboty, profil klienta, datasety, faktury i statystyki panelu.

GET/api/client/robotsToken sesji Bearer albo klucz API (rola klienta)

Wyświetla roboty zarejestrowane przez uwierzytelnionego klienta, najnowsze najpierw, do 50 wpisów. Znaczniki czasu są w formacie ISO 8601; last_online i last_heartbeat są null, dopóki robot nie połączył się choć raz.

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/robotsToken sesji Bearer albo klucz API (rola klienta)

Rejestruje nowego robota i zwraca jego id. Identyfikator sprzętowy płytki silnikowej może należeć tylko do jednego robota; kolizja jest odrzucana ze statusem 409.

GET/api/client/profileToken sesji Bearer albo klucz API (rola klienta)

Zwraca profil klienta uwierzytelnionego użytkownika.

PATCH/api/client/profileToken sesji Bearer albo klucz API (rola klienta)

Aktualizuje pola profilu klienta.

GET/api/client/datasetsToken sesji Bearer albo klucz API (rola klienta)

Wyświetla datasety klienta w chmurze wraz z liczbą epizodów i rozmiarami.

GET/api/client/invoicesToken sesji Bearer albo klucz API (rola klienta)

Wyświetla miesięczne faktury klienta.

GET/api/client/statsToken sesji Bearer albo klucz API (rola klienta)

Zwraca statystyki użycia dla panelu klienta.

Endpointy operatora

Strona operatora: profil i dostępność, certyfikaty, harmonogram i statystyki zarobków.

GET/api/operator/profileToken sesji Bearer albo klucz API (rola operatora)

Zwraca profil operatora uwierzytelnionego użytkownika.

POST/api/operator/profileToken sesji Bearer albo klucz API (rola operatora)

Tworzy albo aktualizuje profil operatora.

GET/api/operator/available-robotsToken sesji Bearer albo klucz API (rola operatora)

Wyświetla roboty, które są aktualnie dostępne i pasują do certyfikatów operatora.

GET/api/operator/certificationsToken sesji Bearer albo klucz API (rola operatora)

Wyświetla wnioski certyfikacyjne operatora i ich status.

POST/api/operator/certificationsToken sesji Bearer albo klucz API (rola operatora)

Składa wniosek o certyfikat dla typu robota.

GET/api/operator/scheduleToken sesji Bearer albo klucz API (rola operatora)

Zwraca tygodniowy harmonogram dostępności operatora.

POST/api/operator/scheduleToken sesji Bearer albo klucz API (rola operatora)

Aktualizuje tygodniowy harmonogram dostępności.

GET/api/operator/availabilityToken sesji Bearer albo klucz API (rola operatora)

Zwraca bieżącą dostępność operatora.

GET/api/operator/statsToken sesji Bearer albo klucz API (rola operatora)

Zwraca statystyki zarobków i sesji dla panelu operatora.

Sesje

Sesje są centralnym zasobem platformy: jedna sesja to jedno ciągłe zaangażowanie teleoperacyjne między operatorem a robotem. Status sesji przechodzi przez PENDING, ACTIVE, PAUSED, COMPLETED i CANCELLED.

GET/api/sessionsToken sesji Bearer albo klucz API

Wyświetla sesje uwierzytelnionego użytkownika. Operatorzy widzą sesje, które prowadzili; klienci widzą sesje na swoich robotach. Zestaw pól nieznacznie różni się między dwoma widokami: widok klienta zawiera episodes_collected i data_collected_mb, widok operatora zawiera operator_earnings_cents.

NameInTypeDescription
statusquerystringOpcjonalne. Filtruje według statusu sesji, na przykład ACTIVE albo COMPLETED. Pomiń, aby wyświetlić wszystkie.
limitquerynumberOpcjonalne. Rozmiar strony, domyślnie 50, maksymalnie 100.
offsetquerynumberOpcjonalne. Przesunięcie paginacji, domyślnie 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/sessionsToken sesji Bearer albo klucz API (rola operatora)

Rozpoczyna sesję teleoperacji na dostępnym robocie. Wymaga roli operatora: klienci nie mogą rozpoczynać sesji. Operator może jednocześnie dzierżyć co najwyżej jedną sesję ACTIVE lub PAUSED, a robot musi mieć aktualnie status AVAILABLE. Przy natychmiastowym starcie robot przełącza się na IN_SESSION, a klient zostaje powiadomiony.

NameInTypeDescription
robotIdbodystringWymagane. Id robota do obsługi. Robot musi być AVAILABLE.
operatorIdbodystringOpcjonalne. Jawny id operatora; domyślnie uwierzytelniony operator.
scheduledForbodystring (ISO 8601)Opcjonalne. Planuje sesję na przyszły moment zamiast rozpoczynać ją od razu.
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]Token sesji Bearer albo klucz API

Zwraca pojedynczą sesję wraz z jej szczegółami.

PATCH/api/sessions/[id]Token sesji Bearer albo klucz API

Aktualizuje cykl życia sesji: wstrzymanie, wznowienie, zakończenie i powiązane akcje.

POST/api/sessions/[id]/extendToken sesji Bearer albo klucz API (klient, właściciel sesji)

Zgłasza wniosek o przedłużenie sesji. Tylko klient będący właścicielem sesji może wywołać ten endpoint, a sesja musi być ACTIVE. Wniosek jest rejestrowany jako zdarzenie sesji, a operator otrzymuje powiadomienie; samo przedłużenie następuje, gdy operator na nie zareaguje.

NameInTypeDescription
idpathstringId sesji.
additionalMinutesbodynumberŻądana długość przedłużenia w minutach.
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]/messagesToken sesji Bearer albo klucz API

Wyświetla wiadomości czatu sesji.

POST/api/sessions/[id]/messagesToken sesji Bearer albo klucz API

Wysyła wiadomość czatu w sesji.

POST/api/sessions/[id]/rateToken sesji Bearer albo klucz API (klient)

Ocenia ukończoną sesję w skali od 1 do 5 gwiazdek, z opcjonalnym komentarzem.

POST/api/sessions/exportToken sesji Bearer albo klucz API

Eksportuje dane sesji.

Płatności

Cały przepływ pieniędzy odbywa się przez Stripe. Rozliczenia klienta wykorzystują klienta Stripe z zapisaną metodą płatności; wypłaty dla operatorów wykorzystują Stripe Connect. Sama platforma nigdy nie przechowuje danych karty ani danych bankowych.

POST/api/stripe/customerToken sesji Bearer (rola klienta)

Tworzy albo zwraca klienta Stripe używanego do rozliczeń klienta.

GET/api/stripe/connectToken sesji Bearer (rola operatora)

Zwraca status konta Stripe Connect operatora.

POST/api/stripe/connectToken sesji Bearer (rola operatora)

Rozpoczyna onboarding Stripe Connect dla wypłat operatora.

POST/api/stripe/setup-intentToken sesji Bearer (rola klienta)

Tworzy Stripe SetupIntent do zapisania metody płatności.

POST/api/stripe/portalToken sesji Bearer (rola klienta)

Tworzy sesję portalu rozliczeniowego Stripe do zarządzania metodami płatności i fakturami.

GET/api/stripe/payoutToken sesji Bearer (rola operatora)

Zwraca informacje o wypłacie dla uwierzytelnionego operatora.

POST/api/stripe/payoutToken sesji Bearer (rola operatora)

Zgłasza wniosek o wypłatę zgromadzonych zarobków. Minimalna wypłata wynosi 10,00 EUR.

POST/api/stripe/webhookPodpis webhooka Stripe

Odbiera zdarzenia webhook Stripe. Wywoływane przez Stripe, nie przez klientów API.

Endpointy publiczne

Te endpointy nie wymagają uwierzytelnienia. Można je bezpiecznie wywoływać z monitoringu, stron marketingowych albo sondy statusu.

GET/api/health

Health check dla API i jego połączenia z bazą danych. Zwraca 200, gdy oba są w porządku; jeśli sprawdzenie bazy danych się nie powiedzie, zwracana jest ta sama struktura z status i db ustawionymi na error oraz statusem 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]

Zwraca publiczne informacje o obsługiwanym modelu robota.

GET/api/public/pricing

Zwraca aktualne publiczne plany cenowe.

POST/api/contact

Wysyła wiadomość z formularza kontaktowego. Wiadomość jest najpierw zapisywana, a potem dostarczana e-mailem, więc tymczasowa awaria poczty jej nie gubi: w takim przypadku odpowiedź zgłasza stored true i delivered false, a dostarczenie jest ponawiane operacyjnie.

NameInTypeDescription
namebodystringWymagane. Twoje imię i nazwisko.
emailbodystringWymagane. Prawidłowy adres e-mail do odpowiedzi.
categorybodystringWymagane. Jedna z: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringWymagane. Krótki temat wiadomości.
messagebodystringWymagane. Treść wiadomości.
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

Zgłasza prośbę o obsługę typu robota, którego jeszcze nie ma na platformie.

GET/api/stats

Zwraca publiczne statystyki platformy.