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 browserTokenul de sesiune Supabase al contului dumneavoastră autentificat, trimis ca cookie sau ca token BearerPanoul de control în sine și experimente rapide dintr-un context de browser autentificat
Cheie APIO cheie cu prefixul ayr_live_, creată în /dashboard/settings și trimisă ca token BearerScripturi, servere, CI și orice nu trebuie să depindă de o autentificare prin browser
MCPServerul MCP găzduit la https://www.ay-robots.com/api/mcp (Streamable HTTP)Agenți LLM și instrumente care vorbesc Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Autentificare cu o cheie API

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.

GET/api/auth/profileToken de sesiune Bearer sau cheie API

Returnează profilul utilizatorului autentificat.

POST/api/auth/profileToken de sesiune Bearer sau cheie API

Actualizează câmpurile profilului, precum numele afișat și preferințele de notificare.

POST/api/auth/syncToken de sesiune Bearer

Sincronizează utilizatorul Supabase Auth cu înregistrarea de utilizator de pe platformă.

GET/api/auth/check-onboardingToken de sesiune Bearer

Raportează dacă utilizatorul autentificat a finalizat onboardingul.

POST/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.

GET/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ă.

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 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.

GET/api/client/profileToken de sesiune Bearer sau cheie API (rol client)

Returnează profilul de client al utilizatorului autentificat.

PATCH/api/client/profileToken de sesiune Bearer sau cheie API (rol client)

Actualizează câmpurile profilului de client.

GET/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.

GET/api/client/invoicesToken de sesiune Bearer sau cheie API (rol client)

Listează facturile lunare ale clientului.

GET/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.

GET/api/operator/profileToken de sesiune Bearer sau cheie API (rol operator)

Returnează profilul de operator al utilizatorului autentificat.

POST/api/operator/profileToken de sesiune Bearer sau cheie API (rol operator)

Creează sau actualizează profilul de operator.

GET/api/operator/available-robotsToken de sesiune Bearer sau cheie API (rol operator)

Listează roboții disponibili în prezent și care corespund certificărilor operatorului.

GET/api/operator/certificationsToken de sesiune Bearer sau cheie API (rol operator)

Listează cererile de certificare ale operatorului și starea lor.

POST/api/operator/certificationsToken de sesiune Bearer sau cheie API (rol operator)

Solicită certificarea pentru un tip de robot.

GET/api/operator/scheduleToken de sesiune Bearer sau cheie API (rol operator)

Returnează programul săptămânal de disponibilitate al operatorului.

POST/api/operator/scheduleToken de sesiune Bearer sau cheie API (rol operator)

Actualizează programul săptămânal de disponibilitate.

GET/api/operator/availabilityToken de sesiune Bearer sau cheie API (rol operator)

Returnează disponibilitatea curentă a operatorului.

GET/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.

GET/api/sessionsToken de sesiune Bearer sau cheie API

Listează 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.

NameInTypeDescription
statusquerystringOpțional. Filtrează după starea sesiunii, de exemplu ACTIVE sau COMPLETED. Omiteți pentru a le lista pe toate.
limitquerynumberOpțional. Dimensiunea paginii, implicit 50, maximum 100.
offsetquerynumberOpțional. Decalajul de paginare, implicit 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 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.

NameInTypeDescription
robotIdbodystringObligatoriu. Id-ul robotului de operat. Robotul trebuie să fie AVAILABLE.
operatorIdbodystringOpțional. Id explicit de operator; implicit este operatorul autentificat.
scheduledForbodystring (ISO 8601)Opțional. Programează sesiunea pentru un moment viitor în loc să o pornească imediat.
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 de sesiune Bearer sau cheie API

Returnează o singură sesiune cu detaliile sale.

PATCH/api/sessions/[id]Token de sesiune Bearer sau cheie API

Actualizează ciclul de viață al sesiunii: pauză, reluare, încheiere și acțiuni conexe.

POST/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.

NameInTypeDescription
idpathstringId-ul sesiunii.
additionalMinutesbodynumberDurata prelungirii solicitate, în minute.
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 de sesiune Bearer sau cheie API

Listează mesajele de chat ale unei sesiuni.

POST/api/sessions/[id]/messagesToken de sesiune Bearer sau cheie API

Trimite un mesaj de chat într-o sesiune.

POST/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.

POST/api/sessions/exportToken de sesiune Bearer sau cheie API

Exportă 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.

POST/api/stripe/customerToken de sesiune Bearer (rol client)

Creează sau returnează clientul Stripe folosit pentru facturarea clientului.

GET/api/stripe/connectToken de sesiune Bearer (rol operator)

Returnează starea contului Stripe Connect al operatorului.

POST/api/stripe/connectToken de sesiune Bearer (rol operator)

Pornește onboardingul Stripe Connect pentru plățile către operator.

POST/api/stripe/setup-intentToken de sesiune Bearer (rol client)

Creează un SetupIntent Stripe pentru salvarea unei metode de plată.

POST/api/stripe/portalToken de sesiune Bearer (rol client)

Creează o sesiune de portal de facturare Stripe pentru gestionarea metodelor de plată și a facturilor.

GET/api/stripe/payoutToken de sesiune Bearer (rol operator)

Returnează informațiile de plată pentru operatorul autentificat.

POST/api/stripe/payoutToken de sesiune Bearer (rol operator)

Solicită o plată din câștigurile acumulate. Plata minimă este 10,00 EUR.

POST/api/stripe/webhookSemnătură webhook Stripe

Primeș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.

GET/api/health

Verificare 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.

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]

Returnează informații publice despre un model de robot suportat.

GET/api/public/pricing

Returnează planurile de preț publice curente.

POST/api/contact

Trimite 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.

NameInTypeDescription
namebodystringObligatoriu. Numele dumneavoastră.
emailbodystringObligatoriu. O adresă de e-mail validă pentru răspuns.
categorybodystringObligatoriu. Una dintre: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringObligatoriu. Subiect scurt.
messagebodystringObligatoriu. Conținutul mesajului.
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

Solicită suport pentru un tip de robot care nu se află încă pe platformă.

GET/api/stats

Returnează statisticile publice ale platformei.