API referenca

REST API AY-Robots-a se nalazi pod https://www.ay-robots.com/api i govori JSON u oba smera. Ova stranica dokumentuje autentifikaciju, konvencije odgovora i svaku krajnju tačku, sa kompletnom dokumentacijom parametara za rute koje ćete najverovatnije pozivati programski.

Poslednje ažurirano 2026-08-09

Autentifikacija

Svaka krajnja tačka zahteva autentifikaciju osim ako je navedena u odeljku Javno. API prihvata dva oblika kredencijala, i oba stižu na isti način: bilo kao kolačić sesije koji kontrolna tabla i inače šalje, ili kao Authorization zaglavlje sa Bearer token-om.

MetodKako funkcionišeKoristite za
Sesija pregledačaSupabase token sesije vašeg prijavljenog naloga, poslat kao kolačić ili kao Bearer tokenSamu kontrolnu tablu i brze eksperimente iz autentifikovanog konteksta pregledača
API ključKljuč sa prefiksom ayr_live_, kreiran u /dashboard/settings i poslat kao Bearer tokenSkripte, servere, CI i sve što ne sme da zavisi od prijave preko pregledača
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'
Autentifikacija API ključem

API ključevi se kreiraju i opozivaju u /dashboard/settings. Tretirajte ih kao lozinke: čuvajte ih na strani servera, a rotirajte tako što ćete prvo da kreirate zamenski ključ pre opoziva starog. Ako koristite desktop CLI, on takođe može da izloži platformu kao lokalni MCP server komandom: ay-robots mcp.

Odgovori su u JSON-u. Greške imaju dosledan oblik: JSON objekat sa jednim poljem error koje sadrži čitljivu poruku, isporučen sa odgovarajućim 4xx ili 5xx statusnim kodom. Uspešni odgovori vraćaju resurs direktno; nekoliko krajnjih tačaka omotava liste u imenovano polje, što primeri ispod pokazuju tamo gde je to bitno.

Auth krajnje tačke

Infrastruktura naloga i profila. Ove krajnje tačke prvenstveno koristi sama kontrolna tabla, ali rade sa bilo kojim validnim kredencijalom.

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

Vraća profil autentifikovanog korisnika.

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

Ažurira polja profila poput prikaznog imena i podešavanja obaveštenja.

POST/api/auth/syncBearer token sesije

Sinhronizuje Supabase auth korisnika sa zapisom korisnika platforme.

GET/api/auth/check-onboardingBearer token sesije

Javlja da li je autentifikovani korisnik završio onboarding.

POST/api/auth/avatarBearer token sesije

Otprema novu sliku avatara za autentifikovanog korisnika.

Krajnje tačke za klijente

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

GET/api/client/robotsBearer token sesije ili API ključ (uloga klijenta)

Navodi robote registrovane od strane autentifikovanog klijenta, najnoviji prvi, do 50 unosa. Vremenske oznake su ISO 8601; last_online i last_heartbeat su null dok se robot bar 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 token sesije ili API ključ (uloga klijenta)

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

GET/api/client/profileBearer token sesije ili API ključ (uloga klijenta)

Vraća profil klijenta autentifikovanog korisnika.

PATCH/api/client/profileBearer token sesije ili API ključ (uloga klijenta)

Ažurira polja profila klijenta.

GET/api/client/datasetsBearer token sesije ili API ključ (uloga klijenta)

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

GET/api/client/invoicesBearer token sesije ili API ključ (uloga klijenta)

Navodi mesečne fakture klijenta.

GET/api/client/statsBearer token sesije ili API ključ (uloga klijenta)

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

Krajnje tačke za operatere

Strana operatera: profil i dostupnost, sertifikacije, raspoređivanje i statistika zarade.

GET/api/operator/profileBearer token sesije ili API ključ (uloga operatera)

Vraća profil operatera autentifikovanog korisnika.

POST/api/operator/profileBearer token sesije ili API ključ (uloga operatera)

Kreira ili ažurira profil operatera.

GET/api/operator/available-robotsBearer token sesije ili API ključ (uloga operatera)

Navodi robote koji su trenutno dostupni i odgovaraju sertifikacijama operatera.

GET/api/operator/certificationsBearer token sesije ili API ključ (uloga operatera)

Navodi zahteve za sertifikaciju operatera i njihov status.

POST/api/operator/certificationsBearer token sesije ili API ključ (uloga operatera)

Zahteva sertifikaciju za tip robota.

GET/api/operator/scheduleBearer token sesije ili API ključ (uloga operatera)

Vraća nedeljni raspored dostupnosti operatera.

POST/api/operator/scheduleBearer token sesije ili API ključ (uloga operatera)

Ažurira nedeljni raspored dostupnosti.

GET/api/operator/availabilityBearer token sesije ili API ključ (uloga operatera)

Vraća trenutnu dostupnost operatera.

GET/api/operator/statsBearer token sesije ili API ključ (uloga operatera)

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

Sesije

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

GET/api/sessionsBearer token sesije ili API ključ

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

NameInTypeDescription
statusquerystringOpciono. Filtrira po statusu sesije, na primer ACTIVE ili COMPLETED. Izostavite za listu svih.
limitquerynumberOpciono. Veličina stranice, podrazumevano 50, najviše 100.
offsetquerynumberOpciono. Pomak za straničenje, podrazumevano 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 token sesije ili API ključ (uloga operatera)

Pokreće sesiju teleoperacije na dostupnom robotu. Zahteva ulogu operatera: klijenti ne mogu da pokreću sesije. Operater može istovremeno da drži najviše jednu ACTIVE ili PAUSED sesiju, a robot trenutno mora da ima status AVAILABLE. Pri trenutnom pokretanju robot prelazi u IN_SESSION i klijent se obaveštava.

NameInTypeDescription
robotIdbodystringObavezno. Id robota kojim se upravlja. Robot mora da bude AVAILABLE.
operatorIdbodystringOpciono. Eksplicitan id operatera; podrazumevano je autentifikovani operater.
scheduledForbodystring (ISO 8601)Opciono. Zakazuje sesiju za budući trenutak umesto trenutnog pokretanja.
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 token sesije ili API ključ

Vraća jednu sesiju sa njenim detaljima.

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

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

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

Zahteva produženje sesije. Samo klijent koji je vlasnik sesije može ovo da pozove, a sesija mora da bude ACTIVE. Zahtev se beleži kao događaj sesije, a operater dobija obaveštenje; samo produženje se dešava kada operater postupi po njemu.

NameInTypeDescription
idpathstringId sesije.
additionalMinutesbodynumberZatražena dužina produženja u minutima.
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 token sesije ili API ključ

Navodi poruke četa sesije.

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

Šalje poruku četa unutar sesije.

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

Ocenjuje završenu sesiju na skali od 1 do 5 zvezdica, uz opcioni komentar.

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

Izvozi podatke sesije.

Plaćanja

Sve kretanje novca odvija se preko Stripe-a. Naplata klijenta koristi Stripe korisnika sa sačuvanim načinom plaćanja; isplate operaterima koriste Stripe Connect. Platforma sama nikada ne čuva podatke o kartici ili banci.

POST/api/stripe/customerBearer token sesije (uloga klijenta)

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

GET/api/stripe/connectBearer token sesije (uloga operatera)

Vraća status Stripe Connect naloga operatera.

POST/api/stripe/connectBearer token sesije (uloga operatera)

Pokreće onboarding za Stripe Connect radi isplata operateru.

POST/api/stripe/setup-intentBearer token sesije (uloga klijenta)

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

POST/api/stripe/portalBearer token sesije (uloga klijenta)

Kreira sesiju Stripe portala za naplatu radi upravljanja načinima plaćanja i fakturama.

GET/api/stripe/payoutBearer token sesije (uloga operatera)

Vraća podatke o isplati za autentifikovanog operatera.

POST/api/stripe/payoutBearer token sesije (uloga operatera)

Zahteva isplatu nagomilane zarade. Minimalna isplata iznosi 10,00 EUR.

POST/api/stripe/webhookStripe webhook potpis

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

Javne krajnje tačke

Ove krajnje tačke ne zahtevaju autentifikaciju. Bezbedno ih je pozivati iz monitoringa, marketinških stranica ili probe statusa.

GET/api/health

Provera zdravlja za API i njegovu vezu sa bazom podataka. Vraća 200 kada su oboje u redu; ako provera baze podataka ne uspe, 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 podatke o podržanom modelu robota.

GET/api/public/pricing

Vraća trenutne javne planove cena.

POST/api/contact

Šalje poruku kontakt forme. Poruka se prvo čuva, a zatim isporučuje putem i-mejla, pa privremeni ispad pošte ne dovodi do njenog gubitka: u tom slučaju odgovor prijavljuje stored true i delivered false, a isporuka se operativno ponovo pokušava.

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

Zahteva podršku za tip robota koji još nije na platformi.

GET/api/stats

Vraća javnu statistiku platforme.