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.
| Metoda | Jak działa | Do czego jej użyć |
|---|---|---|
| Sesja przeglądarki | Token sesji Supabase Twojego zalogowanego konta, wysyłany jako ciasteczko albo jako token Bearer | Sam panel oraz szybkie eksperymenty z uwierzytelnionego kontekstu przeglądarki |
| Klucz API | Klucz z prefiksem ayr_live_, tworzony w /dashboard/settings i wysyłany jako token Bearer | Skrypty, serwery, CI i wszystko, co nie może zależeć od logowania w przeglądarce |
| MCP | Hostowany 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 |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'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.
/api/auth/profileToken sesji Bearer albo klucz APIZwraca profil uwierzytelnionego użytkownika.
/api/auth/profileToken sesji Bearer albo klucz APIAktualizuje pola profilu, takie jak nazwa wyświetlana i preferencje powiadomień.
/api/auth/syncToken sesji BearerSynchronizuje użytkownika auth Supabase z rekordem użytkownika platformy.
/api/auth/check-onboardingToken sesji BearerZgłasza, czy uwierzytelniony użytkownik ukończył onboarding.
/api/auth/avatarToken sesji BearerPrzesył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.
/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.
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/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.
/api/client/profileToken sesji Bearer albo klucz API (rola klienta)Zwraca profil klienta uwierzytelnionego użytkownika.
/api/client/profileToken sesji Bearer albo klucz API (rola klienta)Aktualizuje pola profilu klienta.
/api/client/datasetsToken sesji Bearer albo klucz API (rola klienta)Wyświetla datasety klienta w chmurze wraz z liczbą epizodów i rozmiarami.
/api/client/invoicesToken sesji Bearer albo klucz API (rola klienta)Wyświetla miesięczne faktury klienta.
/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.
/api/operator/profileToken sesji Bearer albo klucz API (rola operatora)Zwraca profil operatora uwierzytelnionego użytkownika.
/api/operator/profileToken sesji Bearer albo klucz API (rola operatora)Tworzy albo aktualizuje profil operatora.
/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.
/api/operator/certificationsToken sesji Bearer albo klucz API (rola operatora)Wyświetla wnioski certyfikacyjne operatora i ich status.
/api/operator/certificationsToken sesji Bearer albo klucz API (rola operatora)Składa wniosek o certyfikat dla typu robota.
/api/operator/scheduleToken sesji Bearer albo klucz API (rola operatora)Zwraca tygodniowy harmonogram dostępności operatora.
/api/operator/scheduleToken sesji Bearer albo klucz API (rola operatora)Aktualizuje tygodniowy harmonogram dostępności.
/api/operator/availabilityToken sesji Bearer albo klucz API (rola operatora)Zwraca bieżącą dostępność operatora.
/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.
/api/sessionsToken sesji Bearer albo klucz APIWyś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.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Opcjonalne. Filtruje według statusu sesji, na przykład ACTIVE albo COMPLETED. Pomiń, aby wyświetlić wszystkie. |
| limit | query | number | Opcjonalne. Rozmiar strony, domyślnie 50, maksymalnie 100. |
| offset | query | number | Opcjonalne. Przesunięcie paginacji, domyślnie 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/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.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Wymagane. Id robota do obsługi. Robot musi być AVAILABLE. |
| operatorId | body | string | Opcjonalne. Jawny id operatora; domyślnie uwierzytelniony operator. |
| scheduledFor | body | string (ISO 8601) | Opcjonalne. Planuje sesję na przyszły moment zamiast rozpoczynać ją od razu. |
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]Token sesji Bearer albo klucz APIZwraca pojedynczą sesję wraz z jej szczegółami.
/api/sessions/[id]Token sesji Bearer albo klucz APIAktualizuje cykl życia sesji: wstrzymanie, wznowienie, zakończenie i powiązane akcje.
/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.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Id sesji. |
| additionalMinutes | body | number | Żądana długość przedłużenia w minutach. |
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]/messagesToken sesji Bearer albo klucz APIWyświetla wiadomości czatu sesji.
/api/sessions/[id]/messagesToken sesji Bearer albo klucz APIWysyła wiadomość czatu w sesji.
/api/sessions/[id]/rateToken sesji Bearer albo klucz API (klient)Ocenia ukończoną sesję w skali od 1 do 5 gwiazdek, z opcjonalnym komentarzem.
/api/sessions/exportToken sesji Bearer albo klucz APIEksportuje 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.
/api/stripe/customerToken sesji Bearer (rola klienta)Tworzy albo zwraca klienta Stripe używanego do rozliczeń klienta.
/api/stripe/connectToken sesji Bearer (rola operatora)Zwraca status konta Stripe Connect operatora.
/api/stripe/connectToken sesji Bearer (rola operatora)Rozpoczyna onboarding Stripe Connect dla wypłat operatora.
/api/stripe/setup-intentToken sesji Bearer (rola klienta)Tworzy Stripe SetupIntent do zapisania metody płatności.
/api/stripe/portalToken sesji Bearer (rola klienta)Tworzy sesję portalu rozliczeniowego Stripe do zarządzania metodami płatności i fakturami.
/api/stripe/payoutToken sesji Bearer (rola operatora)Zwraca informacje o wypłacie dla uwierzytelnionego operatora.
/api/stripe/payoutToken sesji Bearer (rola operatora)Zgłasza wniosek o wypłatę zgromadzonych zarobków. Minimalna wypłata wynosi 10,00 EUR.
/api/stripe/webhookPodpis webhooka StripeOdbiera 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.
/api/healthHealth 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.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Zwraca publiczne informacje o obsługiwanym modelu robota.
/api/public/pricingZwraca aktualne publiczne plany cenowe.
/api/contactWysył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.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Wymagane. Twoje imię i nazwisko. |
| body | string | Wymagane. Prawidłowy adres e-mail do odpowiedzi. | |
| category | body | string | Wymagane. Jedna z: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Wymagane. Krótki temat wiadomości. |
| message | body | string | Wymagane. Treść wiadomości. |
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-requestZgłasza prośbę o obsługę typu robota, którego jeszcze nie ma na platformie.
/api/statsZwraca publiczne statystyki platformy.
Jak AY-Robots zabezpiecza konta i sterowanie robotem na żywo: uwierzytelnianie Supabase, model ról, klucze API, zabezpieczenia sesji i szyfrowanie.
Jak działają sesje AY-Robots: cykl życia od PENDING do COMPLETED, każde zdarzenie aktywności wyjaśnione, czat sesji, oceny, przedłużenia i dane treningowe.