API referenca

AY-Robots REST API živi pod https://www.ay-robots.com/api i govori JSON u oba smjera. Ova stranica dokumentuje autentikaciju, konvencije odgovora i svaki endpoint, sa punom dokumentacijom parametara za rute koje ćete najvjerovatnije pozivati programski.

Zadnje ažurirano 2026-08-09

Autentikacija

Svaki endpoint zahtijeva autentikaciju osim ako nije naveden u odjeljku Public. API prihvata dva oblika kredencijala, i oba stižu na isti način: bilo kao sesijski cookie koji kontrolna tabla već šalje, ili kao Authorization header sa Bearer tokenom.

MetodaKako funkcionišeKoristite je za
Sesija browseraSupabase sesijski token vašeg prijavljenog računa, poslat kao cookie ili kao Bearer tokenSamu kontrolnu tablu i brze eksperimente iz autentikovanog konteksta browsera
API ključKljuč sa prefiksom ayr_live_, kreiran u /dashboard/settings i poslat kao Bearer tokenSkripte, servere, CI i sve što ne smije zavisiti od prijave putem browsera
MCPHostovani MCP server na https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM agente i alate koji govore Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Autentikacija sa API ključem

API ključevi se kreiraju i opozivaju u /dashboard/settings. Tretirajte ih kao lozinke: čuvajte ih samo na serveru i rotirajte tako što prvo kreirate zamjenski ključ prije nego što opozovete stari. Ako koristite desktop CLI, on takođe može izložiti platformu kao lokalni MCP server komandom: ay-robots mcp.

Odgovori su JSON. Greške koriste dosljedan oblik: JSON objekat sa jednim poljem error koje sadrži poruku čitljivu ljudima, isporučenu sa odgovarajućim 4xx ili 5xx statusnim kodom. Uspješni odgovori vraćaju resurs direktno; nekoliko endpoint-a umata liste u imenovano polje, što primjeri ispod pokazuju gdje je važno.

Endpoint-i za autentikaciju

Infrastruktura računa i profila. Ove uglavnom koristi sama kontrolna tabla, ali funkcionišu sa bilo kojim validnim kredencijalom.

GET/api/auth/profileBearer sesijski token ili API ključ

Vraća profil autentikovanog korisnika.

POST/api/auth/profileBearer sesijski token ili API ključ

Ažurira polja profila poput prikazanog imena i preferenci obavještenja.

POST/api/auth/syncBearer sesijski token

Sinhronizuje Supabase auth korisnika sa zapisom korisnika platforme.

GET/api/auth/check-onboardingBearer sesijski token

Izvještava da li je autentikovani korisnik završio onboarding.

POST/api/auth/avatarBearer sesijski token

Otprema novu sliku avatara za autentikovanog korisnika.

Endpoint-i za klijente

Sve čime upravlja vlasnik robota: registrovani roboti, profil klijenta, dataset-ovi, fakture i statistika kontrolne table.

GET/api/client/robotsBearer sesijski token ili API ključ (uloga klijent)

Navodi robote registrovane od strane autentikovanog klijenta, najnovije prvo, do 50 unosa. Vremenske oznake su ISO 8601; last_online i last_heartbeat su null dok se robot barem jednom ne poveže.

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 sesijski token ili API ključ (uloga klijent)

Registruje novog robota i vraća njegov id. Hardware id ploče motora može pripadati samo jednom robotu; sukob se odbija sa statusom 409.

GET/api/client/profileBearer sesijski token ili API ključ (uloga klijent)

Vraća profil klijenta autentikovanog korisnika.

PATCH/api/client/profileBearer sesijski token ili API ključ (uloga klijent)

Ažurira polja profila klijenta.

GET/api/client/datasetsBearer sesijski token ili API ključ (uloga klijent)

Navodi cloud dataset-ove klijenta sa brojem epizoda i veličinama.

GET/api/client/invoicesBearer sesijski token ili API ključ (uloga klijent)

Navodi mjesečne fakture klijenta.

GET/api/client/statsBearer sesijski token ili API ključ (uloga klijent)

Vraća statistiku korištenja za kontrolnu tablu klijenta.

Endpoint-i za operatere

Strana operatera: profil i dostupnost, certifikacije, raspored i statistika zarade.

GET/api/operator/profileBearer sesijski token ili API ključ (uloga operater)

Vraća profil operatera autentikovanog korisnika.

POST/api/operator/profileBearer sesijski token ili API ključ (uloga operater)

Kreira ili ažurira profil operatera.

GET/api/operator/available-robotsBearer sesijski token ili API ključ (uloga operater)

Navodi robote koji su trenutno dostupni i odgovaraju certifikacijama operatera.

GET/api/operator/certificationsBearer sesijski token ili API ključ (uloga operater)

Navodi zahtjeve za certifikaciju operatera i njihov status.

POST/api/operator/certificationsBearer sesijski token ili API ključ (uloga operater)

Traži certifikaciju za tip robota.

GET/api/operator/scheduleBearer sesijski token ili API ključ (uloga operater)

Vraća sedmični raspored dostupnosti operatera.

POST/api/operator/scheduleBearer sesijski token ili API ključ (uloga operater)

Ažurira sedmični raspored dostupnosti.

GET/api/operator/availabilityBearer sesijski token ili API ključ (uloga operater)

Vraća trenutnu dostupnost operatera.

GET/api/operator/statsBearer sesijski token ili API ključ (uloga operater)

Vraća statistiku zarade i sesija za kontrolnu tablu operatera.

Sesije

Sesije su osnovni resurs platforme: jedna sesija je jedno kontinuirano angažovanje teleoperacije između operatera i robota. Status sesije prolazi kroz PENDING, ACTIVE, PAUSED, COMPLETED i CANCELLED.

GET/api/sessionsBearer sesijski token ili API ključ

Navodi sesije za autentikovanog korisnika. Operateri vide sesije kojima su upravljali; klijenti vide sesije na svojim robotima. Skup polja se malo razlikuje između dva prikaza: prikaz klijenta uključuje episodes_collected i data_collected_mb, prikaz operatera uključuje operator_earnings_cents.

NameInTypeDescription
statusquerystringOpciono. Filtrirajte po statusu sesije, na primjer ACTIVE ili COMPLETED. Izostavite da navedete sve.
limitquerynumberOpciono. Veličina stranice, podrazumijevano 50, maksimalno 100.
offsetquerynumberOpciono. Pomak za paginaciju, podrazumijevano 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 sesijski token ili API ključ (uloga operater)

Pokreće sesiju teleoperacije na dostupnom robotu. Zahtijeva ulogu operater: klijenti ne mogu pokretati sesije. Operater može držati najviše jednu ACTIVE ili PAUSED sesiju u isto vrijeme, a robot mora trenutno imati status AVAILABLE. Pri trenutnom pokretanju robot prelazi u IN_SESSION i klijent biva obaviješten.

NameInTypeDescription
robotIdbodystringObavezno. Id robota koji će se upravljati. Robot mora biti AVAILABLE.
operatorIdbodystringOpciono. Eksplicitan id operatera; podrazumijevano je autentikovani operater.
scheduledForbodystring (ISO 8601)Opciono. Zakazuje sesiju za buduće vrijeme umjesto da je odmah pokrene.
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 sesijski token ili API ključ

Vraća pojedinačnu sesiju sa njenim detaljima.

PATCH/api/sessions/[id]Bearer sesijski token ili API ključ

Ažurira životni ciklus sesije: pauzu, nastavak, kraj i povezane akcije.

POST/api/sessions/[id]/extendBearer sesijski token ili API ključ (klijent, vlasnik sesije)

Traži produženje sesije. Samo klijent koji je vlasnik sesije može ovo pozvati, a sesija mora biti ACTIVE. Zahtjev se bilježi kao aktivnost sesije i operater dobija obavještenje; samo produženje se dešava kada operater postupi po njemu.

NameInTypeDescription
idpathstringId sesije.
additionalMinutesbodynumberTraženo trajanje produženja u minutama.
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 sesijski token ili API ključ

Navodi poruke chata sesije.

POST/api/sessions/[id]/messagesBearer sesijski token ili API ključ

Šalje poruku u chatu sesije.

POST/api/sessions/[id]/rateBearer sesijski token ili API ključ (klijent)

Ocjenjuje završenu sesiju na skali od 1 do 5 zvjezdica, sa opcionim komentarom.

POST/api/sessions/exportBearer sesijski token ili API ključ

Izvozi podatke sesije.

Plaćanja

Svako kretanje novca ide preko Stripe-a. Naplata klijenata koristi Stripe kupca sa sačuvanim načinom plaćanja; isplate operatera koriste Stripe Connect. Sama platforma nikada ne čuva podatke o karticama ili bankovnim računima.

POST/api/stripe/customerBearer sesijski token (uloga klijent)

Kreira ili vraća Stripe kupca koji se koristi za naplatu klijenta.

GET/api/stripe/connectBearer sesijski token (uloga operater)

Vraća status Stripe Connect računa operatera.

POST/api/stripe/connectBearer sesijski token (uloga operater)

Pokreće Stripe Connect onboarding za isplate operatera.

POST/api/stripe/setup-intentBearer sesijski token (uloga klijent)

Kreira Stripe SetupIntent za čuvanje načina plaćanja.

POST/api/stripe/portalBearer sesijski token (uloga klijent)

Kreira Stripe billing portal sesiju za upravljanje načinima plaćanja i fakturama.

GET/api/stripe/payoutBearer sesijski token (uloga operater)

Vraća informacije o isplati za autentikovanog operatera.

POST/api/stripe/payoutBearer sesijski token (uloga operater)

Traži isplatu akumulirane zarade. Minimalna isplata je 10,00 EUR.

POST/api/stripe/webhookStripe webhook potpis

Prima Stripe webhook događaje. Poziva ga Stripe, ne API klijenti.

Javni endpoint-i

Ovi endpoint-i ne zahtijevaju autentikaciju. Bezbjedni su za pozivanje iz monitoringa, marketinških stranica ili sonde statusa.

GET/api/health

Provjera zdravlja za API i njegovu vezu sa bazom podataka. Vraća 200 kada je oboje u redu; ako provjera baze podataka ne uspije, vraća se isti oblik sa status i db postavljenim na error i HTTP statusom 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]

Vraća javne informacije o podržanom modelu robota.

GET/api/public/pricing

Vraća trenutne javne planove cijena.

POST/api/contact

Šalje poruku putem kontakt obrasca. Poruka se prvo čuva, a zatim isporučuje putem emaila, tako da privremeni prekid pošte ne izgubi poruku: u tom slučaju odgovor prijavljuje stored true i delivered false, a isporuka se operativno ponavlja.

NameInTypeDescription
namebodystringObavezno. Vaše ime.
emailbodystringObavezno. Validna email adresa za odgovor.
categorybodystringObavezno. Jedno od: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringObavezno. Kratak naslov.
messagebodystringObavezno. Tijelo poruke.
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

Traži podršku za tip robota koji još nije na platformi.

GET/api/stats

Vraća javnu statistiku platforme.