Referință API
API-ul REST al AY-Robots se află la https://www.ay-robots.com/api și vorbește JSON în ambele direcții. Această pagină documentează autentificarea, convențiile de răspuns și fiecare endpoint, cu documentație completă a parametrilor pentru rutele pe care este cel mai probabil să le apelați programatic.
Ultima actualizare 2026-08-09
Autentificare
Fiecare endpoint necesită autentificare, cu excepția cazului în care este listat în secțiunea Endpoint-uri publice. API-ul acceptă două forme de credențiale, iar ambele sosesc în același mod: fie ca cookie de sesiune, pe care panoul de control îl trimite oricum, fie ca un header Authorization cu un token Bearer.
| Metodă | Cum funcționează | Utilizare |
|---|---|---|
| Sesiune de browser | Tokenul de sesiune Supabase al contului dumneavoastră autentificat, trimis ca cookie sau ca token Bearer | Panoul de control în sine și experimente rapide dintr-un context de browser autentificat |
| Cheie API | O cheie cu prefixul ayr_live_, creată în /dashboard/settings și trimisă ca token Bearer | Scripturi, servere, CI și orice nu trebuie să depindă de o autentificare prin browser |
| MCP | Serverul MCP găzduit la https://www.ay-robots.com/api/mcp (Streamable HTTP) | Agenți LLM și instrumente care vorbesc Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'Cheile API se creează și se revocă în /dashboard/settings. Tratați-le ca pe parole: păstrați-le pe partea de server și rotiți-le creând mai întâi o cheie de înlocuire, înainte de a o revoca pe cea veche. Dacă folosiți CLI-ul desktop, acesta poate expune și platforma ca server MCP local, cu comanda: ay-robots mcp.
Răspunsurile sunt în format JSON. Erorile au o formă consistentă: un obiect JSON cu un singur câmp error, care conține un mesaj lizibil pentru oameni, livrat cu un cod de stare 4xx sau 5xx corespunzător. Răspunsurile de succes returnează direct resursa; câteva endpoint-uri împachetează listele într-un câmp numit, ceea ce exemplele de mai jos arată acolo unde contează.
Endpoint-uri de autentificare
Gestionarea contului și a profilului. Aceste endpoint-uri sunt folosite în principal de panoul de control în sine, dar funcționează cu orice credențial valid.
/api/auth/profileToken de sesiune Bearer sau cheie APIReturnează profilul utilizatorului autentificat.
/api/auth/profileToken de sesiune Bearer sau cheie APIActualizează câmpurile profilului, precum numele afișat și preferințele de notificare.
/api/auth/syncToken de sesiune BearerSincronizează utilizatorul Supabase Auth cu înregistrarea de utilizator de pe platformă.
/api/auth/check-onboardingToken de sesiune BearerRaportează dacă utilizatorul autentificat a finalizat onboardingul.
/api/auth/avatarToken de sesiune BearerÎncarcă o nouă imagine de avatar pentru utilizatorul autentificat.
Endpoint-uri pentru clienți
Tot ce gestionează un proprietar de robot: roboți înregistrați, profilul clientului, seturile de date, facturile și statisticile panoului de control.
/api/client/robotsToken de sesiune Bearer sau cheie API (rol client)Listează roboții înregistrați de clientul autentificat, cei mai noi primii, până la 50 de intrări. Marcajele temporale sunt în format ISO 8601; last_online și last_heartbeat sunt null până când robotul s-a conectat cel puțin o dată.
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 de sesiune Bearer sau cheie API (rol client)Înregistrează un robot nou și returnează id-ul său. Un id de hardware al plăcii de motoare poate aparține unui singur robot; o coliziune este respinsă cu statusul 409.
/api/client/profileToken de sesiune Bearer sau cheie API (rol client)Returnează profilul de client al utilizatorului autentificat.
/api/client/profileToken de sesiune Bearer sau cheie API (rol client)Actualizează câmpurile profilului de client.
/api/client/datasetsToken de sesiune Bearer sau cheie API (rol client)Listează seturile de date din cloud ale clientului, cu numărul de episoade și dimensiuni.
/api/client/invoicesToken de sesiune Bearer sau cheie API (rol client)Listează facturile lunare ale clientului.
/api/client/statsToken de sesiune Bearer sau cheie API (rol client)Returnează statisticile de utilizare pentru panoul de control al clientului.
Endpoint-uri pentru operatori
Partea de operator: profil și disponibilitate, certificări, programare și statistici de câștiguri.
/api/operator/profileToken de sesiune Bearer sau cheie API (rol operator)Returnează profilul de operator al utilizatorului autentificat.
/api/operator/profileToken de sesiune Bearer sau cheie API (rol operator)Creează sau actualizează profilul de operator.
/api/operator/available-robotsToken de sesiune Bearer sau cheie API (rol operator)Listează roboții disponibili în prezent și care corespund certificărilor operatorului.
/api/operator/certificationsToken de sesiune Bearer sau cheie API (rol operator)Listează cererile de certificare ale operatorului și starea lor.
/api/operator/certificationsToken de sesiune Bearer sau cheie API (rol operator)Solicită certificarea pentru un tip de robot.
/api/operator/scheduleToken de sesiune Bearer sau cheie API (rol operator)Returnează programul săptămânal de disponibilitate al operatorului.
/api/operator/scheduleToken de sesiune Bearer sau cheie API (rol operator)Actualizează programul săptămânal de disponibilitate.
/api/operator/availabilityToken de sesiune Bearer sau cheie API (rol operator)Returnează disponibilitatea curentă a operatorului.
/api/operator/statsToken de sesiune Bearer sau cheie API (rol operator)Returnează statisticile de câștiguri și sesiuni pentru panoul de control al operatorului.
Sesiuni
Sesiunile sunt resursa centrală a platformei: o sesiune este un angajament continuu de teleoperare între un operator și un robot. Starea sesiunii trece prin PENDING, ACTIVE, PAUSED, COMPLETED și CANCELLED.
/api/sessionsToken de sesiune Bearer sau cheie APIListează sesiunile utilizatorului autentificat. Operatorii văd sesiunile pe care le-au operat; clienții văd sesiunile de pe roboții lor. Setul de câmpuri diferă ușor între cele două vizualizări: vizualizarea clientului include episodes_collected și data_collected_mb, vizualizarea operatorului include operator_earnings_cents.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Opțional. Filtrează după starea sesiunii, de exemplu ACTIVE sau COMPLETED. Omiteți pentru a le lista pe toate. |
| limit | query | number | Opțional. Dimensiunea paginii, implicit 50, maximum 100. |
| offset | query | number | Opțional. Decalajul de paginare, implicit 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 de sesiune Bearer sau cheie API (rol operator)Pornește o sesiune de teleoperare pe un robot disponibil. Necesită rolul de operator: clienții nu pot porni sesiuni. Un operator poate deține cel mult o sesiune ACTIVE sau PAUSED la un moment dat, iar robotul trebuie să aibă în prezent starea AVAILABLE. La o pornire imediată, robotul trece la IN_SESSION, iar clientul este notificat.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Obligatoriu. Id-ul robotului de operat. Robotul trebuie să fie AVAILABLE. |
| operatorId | body | string | Opțional. Id explicit de operator; implicit este operatorul autentificat. |
| scheduledFor | body | string (ISO 8601) | Opțional. Programează sesiunea pentru un moment viitor în loc să o pornească imediat. |
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 de sesiune Bearer sau cheie APIReturnează o singură sesiune cu detaliile sale.
/api/sessions/[id]Token de sesiune Bearer sau cheie APIActualizează ciclul de viață al sesiunii: pauză, reluare, încheiere și acțiuni conexe.
/api/sessions/[id]/extendToken de sesiune Bearer sau cheie API (client, proprietarul sesiunii)Solicită o prelungire a sesiunii. Poate fi apelat doar de clientul căruia îi aparține sesiunea, iar sesiunea trebuie să fie ACTIVE. Cererea este înregistrată ca eveniment de sesiune, iar operatorul primește o notificare; prelungirea în sine are loc atunci când operatorul reacționează la ea.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Id-ul sesiunii. |
| additionalMinutes | body | number | Durata prelungirii solicitate, în minute. |
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 de sesiune Bearer sau cheie APIListează mesajele de chat ale unei sesiuni.
/api/sessions/[id]/messagesToken de sesiune Bearer sau cheie APITrimite un mesaj de chat într-o sesiune.
/api/sessions/[id]/rateToken de sesiune Bearer sau cheie API (client)Evaluează o sesiune finalizată pe o scală de la 1 la 5 stele, cu un comentariu opțional.
/api/sessions/exportToken de sesiune Bearer sau cheie APIExportă datele sesiunii.
Plăți
Toate mișcările de bani trec prin Stripe. Facturarea clienților folosește un client Stripe cu o metodă de plată salvată; plățile către operatori folosesc Stripe Connect. Platforma în sine nu stochează niciodată date de card sau bancare.
/api/stripe/customerToken de sesiune Bearer (rol client)Creează sau returnează clientul Stripe folosit pentru facturarea clientului.
/api/stripe/connectToken de sesiune Bearer (rol operator)Returnează starea contului Stripe Connect al operatorului.
/api/stripe/connectToken de sesiune Bearer (rol operator)Pornește onboardingul Stripe Connect pentru plățile către operator.
/api/stripe/setup-intentToken de sesiune Bearer (rol client)Creează un SetupIntent Stripe pentru salvarea unei metode de plată.
/api/stripe/portalToken de sesiune Bearer (rol client)Creează o sesiune de portal de facturare Stripe pentru gestionarea metodelor de plată și a facturilor.
/api/stripe/payoutToken de sesiune Bearer (rol operator)Returnează informațiile de plată pentru operatorul autentificat.
/api/stripe/payoutToken de sesiune Bearer (rol operator)Solicită o plată din câștigurile acumulate. Plata minimă este 10,00 EUR.
/api/stripe/webhookSemnătură webhook StripePrimește evenimentele webhook de la Stripe. Apelat de Stripe, nu de clienții API.
Endpoint-uri publice
Aceste endpoint-uri nu necesită nicio autentificare. Pot fi apelate în siguranță din monitorizare, pagini de marketing sau un sondaj de stare.
/api/healthVerificare a stării API-ului și a conexiunii sale la baza de date. Returnează 200 când ambele sunt în regulă; dacă verificarea bazei de date eșuează, se returnează aceeași structură, cu status și db setate pe error și cod de stare HTTP 503.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Returnează informații publice despre un model de robot suportat.
/api/public/pricingReturnează planurile de preț publice curente.
/api/contactTrimite un mesaj din formularul de contact. Mesajul este mai întâi stocat și apoi livrat prin e-mail, astfel încât o întrerupere temporară a poștei nu îl pierde: în acest caz, răspunsul raportează stored true și delivered false, iar livrarea este reîncercată operațional.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Obligatoriu. Numele dumneavoastră. |
| body | string | Obligatoriu. O adresă de e-mail validă pentru răspuns. | |
| category | body | string | Obligatoriu. Una dintre: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Obligatoriu. Subiect scurt. |
| message | body | string | Obligatoriu. Conținutul mesajului. |
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-requestSolicită suport pentru un tip de robot care nu se află încă pe platformă.
/api/statsReturnează statisticile publice ale platformei.
Cum securizează AY-Robots conturile și controlul live al roboților: autentificare, roluri, chei API, audit trail și criptarea completă a datelor.
Cum funcționează sesiunile AY-Robots: ciclul de viață de la PENDING la COMPLETED, evenimente de activitate, chatul sesiunii, evaluări și date de antrenare.