API referenca

REST API AY-Robotsa nalazi se pod https://www.ay-robots.com/api i govori JSON u oba smjera. Ova stranica dokumentira autentifikaciju, konvencije odgovora i svaku krajnju točku, s potpunom dokumentacijom parametara za rute koje ćete najvjerojatnije pozivati programski.

Zadnje ažurirano 2026-08-09

Autentifikacija

Svaka krajnja točka zahtijeva autentifikaciju osim ako je navedena u odjeljku Javno. API prihvaća dva oblika vjerodajnica, i oba stižu na isti način: bilo kao kolačić sesije koji nadzorna ploča i inače šalje, ili kao Authorization zaglavlje s Bearer tokenom.

MetodaKako funkcioniraKoristite za
Sesija preglednikaSupabase token sesije vašeg prijavljenog računa, poslan kao kolačić ili kao Bearer tokenSamu nadzornu ploču i brze eksperimente iz autentificiranog konteksta preglednika
API ključKljuč s prefiksom ayr_live_, izrađen u /dashboard/settings i poslan kao Bearer tokenSkripte, servere, CI i sve što ne smije ovisiti o prijavi preglednikom
MCPHostirani 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 izrađuju se i opozivaju u /dashboard/settings. Tretirajte ih kao lozinke: čuvajte ih na strani servera, a rotirajte tako da prvo izradite zamjenski ključ prije opoziva starog. Ako koristite desktop CLI, on također može izložiti platformu kao lokalni MCP server naredbom: ay-robots mcp.

Odgovori su u JSON-u. Greške imaju dosljedan oblik: JSON objekt s jednim poljem error koje sadrži čitljivu poruku, isporučen s odgovarajućim 4xx ili 5xx statusnim kodom. Uspješni odgovori vraćaju resurs izravno; nekoliko krajnjih točaka omata popise u imenovano polje, što primjeri niže pokazuju gdje je to bitno.

Auth krajnje točke

Infrastruktura računa i profila. Ove krajnje točke prvenstveno koristi sama nadzorna ploča, ali rade s bilo kojom valjanom vjerodajnicom.

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

Vraća profil autentificiranog korisnika.

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

Ažurira polja profila poput prikaznog imena i postavki obavijesti.

POST/api/auth/syncBearer token sesije

Sinkronizira Supabase auth korisnika sa zapisom korisnika platforme.

GET/api/auth/check-onboardingBearer token sesije

Javlja je li autentificirani korisnik dovršio onboarding.

POST/api/auth/avatarBearer token sesije

Prenosi novu sliku avatara za autentificiranog korisnika.

Krajnje točke za klijente

Sve čime upravlja vlasnik robota: registrirani roboti, profil klijenta, datasetovi, računi i statistika nadzorne ploče.

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

Navodi robote registrirane od strane autentificiranog klijenta, najnoviji prvi, do 50 unosa. Vremenske oznake su ISO 8601; last_online i last_heartbeat su null dok se robot barem jednom ne spoji.

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)

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

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

Vraća profil klijenta autentificiranog 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 datasetove klijenta s brojem epizoda i veličinama.

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

Navodi mjesečne račune klijenta.

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

Vraća statistiku korištenja za nadzornu ploču klijenta.

Krajnje točke za operatere

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

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

Vraća profil operatera autentificiranog korisnika.

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

Izrađuje 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 certifikacijama operatera.

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

Navodi zahtjeve za certifikaciju operatera i njihov status.

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

Zahtijeva certifikaciju za tip robota.

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

Vraća tjedni raspored dostupnosti operatera.

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

Ažurira tjedni 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 nadzornu ploču operatera.

Sesije

Sesije su temeljni resurs platforme: jedna sesija jedna je neprekinuta 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 autentificiranog korisnika. Operateri vide sesije kojima su upravljali; klijenti vide sesije na svojim robotima. Skup polja neznatno se razlikuje između dva prikaza: prikaz klijenta uključuje episodes_collected i data_collected_mb, prikaz operatera uključuje operator_earnings_cents.

NameInTypeDescription
statusquerystringOpcionalno. Filtrira po statusu sesije, primjerice ACTIVE ili COMPLETED. Izostavite za popis svih.
limitquerynumberOpcionalno. Veličina stranice, zadano 50, najviše 100.
offsetquerynumberOpcionalno. Pomak za straničenje, zadano 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. Zahtijeva ulogu operatera: klijenti ne mogu pokretati sesije. Operater može istovremeno držati najviše jednu ACTIVE ili PAUSED sesiju, a robot trenutno mora imati status AVAILABLE. Pri trenutnom pokretanju robot prelazi u IN_SESSION i klijent se obavještava.

NameInTypeDescription
robotIdbodystringObavezno. Id robota kojim se upravlja. Robot mora biti AVAILABLE.
operatorIdbodystringOpcionalno. Izričit id operatera; zadano je autentificirani operater.
scheduledForbodystring (ISO 8601)Opcionalno. Zakazuje sesiju za budući trenutak umjesto 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 s njezinim 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)

Zahtijeva produljenje sesije. Samo klijent koji je vlasnik sesije može ovo pozvati, a sesija mora biti ACTIVE. Zahtjev se bilježi kao događaj sesije, a operater prima obavijest; samo produljenje događa se kad operater postupi po njemu.

NameInTypeDescription
idpathstringId sesije.
additionalMinutesbodynumberZatražena duljina produljenja 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 token sesije ili API ključ

Navodi poruke chata sesije.

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

Šalje poruku chata unutar sesije.

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

Ocjenjuje dovršenu sesiju na skali od 1 do 5 zvjezdica, uz opcionalni komentar.

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

Izvozi podatke sesije.

Plaćanja

Sve kretanje novca odvija se preko Stripea. Naplata klijenta koristi Stripe korisnika sa spremljenim načinom plaćanja; isplate operaterima koriste Stripe Connect. Platforma sama nikad ne pohranjuje podatke o kartici ili banci.

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

Izrađuje ili vraća Stripe korisnika koji se koristi za naplatu klijenta.

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

Vraća status Stripe Connect računa 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)

Izrađuje Stripe SetupIntent za spremanje načina plaćanja.

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

Izrađuje sesiju Stripe portala za naplatu radi upravljanja načinima plaćanja i računima.

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

Vraća podatke o isplati za autentificiranog operatera.

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

Zahtijeva isplatu nakupljene zarade. Minimalna isplata iznosi 10,00 EUR.

POST/api/stripe/webhookStripe webhook potpis

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

Javne krajnje točke

Ove krajnje točke ne zahtijevaju autentifikaciju. Sigurno ih je pozivati iz nadzora, marketinških stranica ili probe statusa.

GET/api/health

Provjera zdravlja za API i njegovu vezu s bazom podataka. Vraća 200 kad su oboje u redu; ako provjera baze podataka ne uspije, vraća se isti oblik sa status i db postavljenima 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 cjenovne planove.

POST/api/contact

Šalje poruku kontakt obrasca. Poruka se prvo pohranjuje, a zatim isporučuje e-mailom, pa privremeni ispad pošte ne uzrokuje njezin gubitak: u tom slučaju odgovor prijavljuje stored true i delivered false, a isporuka se operativno ponovno pokušava.

NameInTypeDescription
namebodystringObavezno. Vaše ime.
emailbodystringObavezno. Valjana e-mail 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. 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

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

GET/api/stats

Vraća javnu statistiku platforme.