API referenca

API REST za AY-Robots je dosegljiv na https://www.ay-robots.com/api in v obe smeri govori JSON. Ta stran dokumentira avtentikacijo, konvencije odgovorov in vsako končno točko, s popolno dokumentacijo parametrov za poti, ki jih boste najverjetneje klicali programsko.

Nazadnje posodobljeno 2026-08-09

Avtentikacija

Vsaka končna točka zahteva avtentikacijo, razen če je navedena v razdelku Javno. API sprejema dve obliki poveril, obe pa prispeta na enak način: bodisi kot piškotek seje, ki ga nadzorna plošča tako ali tako pošlje, bodisi kot glava Authorization z žetonom Bearer.

MetodaKako delujeUporabite za
Seja brskalnikaŽeton seje Supabase vašega prijavljenega računa, poslan kot piškotek ali kot žeton BearerSamo nadzorno ploščo in hitre poskuse iz avtenticiranega konteksta brskalnika
API ključKljuč s predpono ayr_live_, ustvarjen v /dashboard/settings in poslan kot žeton BearerSkripte, strežnike, CI in vse, kar ne sme biti odvisno od prijave v brskalniku
MCPGostovani strežnik MCP na https://www.ay-robots.com/api/mcp (Streamable HTTP)Agente LLM in orodja, ki govorijo Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Avtentikacija z API ključem

API ključi se ustvarjajo in prekličejo v /dashboard/settings. Obravnavajte jih kot gesla: hranite jih na strani strežnika, rotirajte pa tako, da najprej ustvarite nadomestni ključ, preden prekličete starega. Če uporabljate namizni CLI, lahko ta platformo izpostavi tudi kot lokalni strežnik MCP z ukazom: ay-robots mcp.

Odgovori so v obliki JSON. Napake imajo dosledno obliko: objekt JSON z enim poljem error, ki vsebuje berljivo sporočilo, dostavljeno z ustrezno statusno kodo 4xx ali 5xx. Uspešni odgovori vrnejo vir neposredno; nekaj končnih točk sezname zavije v poimenovano polje, kar spodnji primeri prikažejo, kjer je to pomembno.

Končne točke Auth

Infrastruktura računa in profila. Te končne točke uporablja predvsem sama nadzorna plošča, delujejo pa s katerim koli veljavnim poverilom.

GET/api/auth/profileŽeton seje Bearer ali API ključ

Vrne profil avtenticiranega uporabnika.

POST/api/auth/profileŽeton seje Bearer ali API ključ

Posodobi polja profila, kot sta prikazano ime in nastavitve obvestil.

POST/api/auth/syncŽeton seje Bearer

Uskladi uporabnika Supabase auth z zapisom uporabnika platforme.

GET/api/auth/check-onboardingŽeton seje Bearer

Sporoči, ali je avtenticirani uporabnik zaključil onboarding.

POST/api/auth/avatarŽeton seje Bearer

Naloži novo sliko avatarja za avtenticiranega uporabnika.

Končne točke za stranke

Vse, kar upravlja lastnik robota: registrirani roboti, profil stranke, dataseti, računi in statistika nadzorne plošče.

GET/api/client/robotsŽeton seje Bearer ali API ključ (vloga stranke)

Navede robote, ki jih je registrirala avtenticirana stranka, najnovejši najprej, do 50 vnosov. Časovni žigi so ISO 8601; last_online in last_heartbeat sta null, dokler se robot vsaj enkrat 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/robotsŽeton seje Bearer ali API ključ (vloga stranke)

Registrira novega robota in vrne njegov id. Strojni id plošče motorja lahko pripada le enemu robotu; konflikt je zavrnjen s statusom 409.

GET/api/client/profileŽeton seje Bearer ali API ključ (vloga stranke)

Vrne profil stranke avtenticiranega uporabnika.

PATCH/api/client/profileŽeton seje Bearer ali API ključ (vloga stranke)

Posodobi polja profila stranke.

GET/api/client/datasetsŽeton seje Bearer ali API ključ (vloga stranke)

Navede datasete stranke v oblaku s številom epizod in velikostmi.

GET/api/client/invoicesŽeton seje Bearer ali API ključ (vloga stranke)

Navede mesečne račune stranke.

GET/api/client/statsŽeton seje Bearer ali API ključ (vloga stranke)

Vrne statistiko uporabe za nadzorno ploščo stranke.

Končne točke za operaterje

Stran operaterja: profil in razpoložljivost, certifikati, razporejanje in statistika zaslužka.

GET/api/operator/profileŽeton seje Bearer ali API ključ (vloga operaterja)

Vrne profil operaterja avtenticiranega uporabnika.

POST/api/operator/profileŽeton seje Bearer ali API ključ (vloga operaterja)

Ustvari ali posodobi profil operaterja.

GET/api/operator/available-robotsŽeton seje Bearer ali API ključ (vloga operaterja)

Navede robote, ki so trenutno na voljo in ustrezajo certifikatom operaterja.

GET/api/operator/certificationsŽeton seje Bearer ali API ključ (vloga operaterja)

Navede zahteve operaterja za certifikate in njihovo stanje.

POST/api/operator/certificationsŽeton seje Bearer ali API ključ (vloga operaterja)

Zahteva certifikat za tip robota.

GET/api/operator/scheduleŽeton seje Bearer ali API ključ (vloga operaterja)

Vrne tedenski urnik razpoložljivosti operaterja.

POST/api/operator/scheduleŽeton seje Bearer ali API ključ (vloga operaterja)

Posodobi tedenski urnik razpoložljivosti.

GET/api/operator/availabilityŽeton seje Bearer ali API ključ (vloga operaterja)

Vrne trenutno razpoložljivost operaterja.

GET/api/operator/statsŽeton seje Bearer ali API ključ (vloga operaterja)

Vrne statistiko zaslužka in sej za nadzorno ploščo operaterja.

Seje

Seje so osrednji vir platforme: ena seja je ena neprekinjena angažiranost teleoperacije med operaterjem in robotom. Stanje seje prehaja skozi PENDING, ACTIVE, PAUSED, COMPLETED in CANCELLED.

GET/api/sessionsŽeton seje Bearer ali API ključ

Navede seje avtenticiranega uporabnika. Operaterji vidijo seje, ki so jih upravljali; stranke vidijo seje na svojih robotih. Nabor polj se med pogledoma nekoliko razlikuje: pogled stranke vključuje episodes_collected in data_collected_mb, pogled operaterja pa operator_earnings_cents.

NameInTypeDescription
statusquerystringNeobvezno. Filtrira po stanju seje, na primer ACTIVE ali COMPLETED. Izpustite za seznam vseh.
limitquerynumberNeobvezno. Velikost strani, privzeto 50, največ 100.
offsetquerynumberNeobvezno. Odmik za straničenje, privzeto 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/sessionsŽeton seje Bearer ali API ključ (vloga operaterja)

Zažene sejo teleoperacije na razpoložljivem robotu. Zahteva vlogo operaterja: stranke ne morejo zaganjati sej. Operater lahko hkrati drži največ eno sejo ACTIVE ali PAUSED, robot pa mora trenutno imeti stanje AVAILABLE. Ob takojšnjem zagonu robot preklopi na IN_SESSION in stranka je obveščena.

NameInTypeDescription
robotIdbodystringObvezno. Id robota, ki naj se upravlja. Robot mora biti AVAILABLE.
operatorIdbodystringNeobvezno. Izrecen id operaterja; privzeto je avtenticirani operater.
scheduledForbodystring (ISO 8601)Neobvezno. Sejo razporedi za prihodnji čas namesto takojšnjega zagona.
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]Žeton seje Bearer ali API ključ

Vrne posamezno sejo z njenimi podrobnostmi.

PATCH/api/sessions/[id]Žeton seje Bearer ali API ključ

Posodobi življenjski cikel seje: premor, nadaljevanje, konec in povezana dejanja.

POST/api/sessions/[id]/extendŽeton seje Bearer ali API ključ (stranka, lastnica seje)

Zahteva podaljšanje seje. To lahko pokliče le stranka, ki je lastnica seje, seja pa mora biti ACTIVE. Zahteva se zabeleži kot dogodek seje, operater pa prejme obvestilo; do samega podaljšanja pride, ko operater na to odgovori.

NameInTypeDescription
idpathstringId seje.
additionalMinutesbodynumberZahtevana dolžina podaljšanja v minutah.
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]/messagesŽeton seje Bearer ali API ključ

Navede sporočila klepeta seje.

POST/api/sessions/[id]/messagesŽeton seje Bearer ali API ključ

Pošlje sporočilo klepeta znotraj seje.

POST/api/sessions/[id]/rateŽeton seje Bearer ali API ključ (stranka)

Oceni zaključeno sejo na lestvici od 1 do 5 zvezdic, z neobveznim komentarjem.

POST/api/sessions/exportŽeton seje Bearer ali API ključ

Izvozi podatke seje.

Plačila

Ves pretok denarja poteka prek Stripe. Obračunavanje strank uporablja uporabnika Stripe s shranjenim načinom plačila; izplačila operaterjem uporabljajo Stripe Connect. Platforma sama nikoli ne shranjuje podatkov o karticah ali bančnih podatkov.

POST/api/stripe/customerŽeton seje Bearer (vloga stranke)

Ustvari ali vrne uporabnika Stripe, ki se uporablja za obračunavanje stranke.

GET/api/stripe/connectŽeton seje Bearer (vloga operaterja)

Vrne stanje računa Stripe Connect operaterja.

POST/api/stripe/connectŽeton seje Bearer (vloga operaterja)

Sproži onboarding za Stripe Connect za izplačila operaterju.

POST/api/stripe/setup-intentŽeton seje Bearer (vloga stranke)

Ustvari Stripe SetupIntent za shranjevanje načina plačila.

POST/api/stripe/portalŽeton seje Bearer (vloga stranke)

Ustvari sejo portala Stripe za obračunavanje za upravljanje načinov plačila in računov.

GET/api/stripe/payoutŽeton seje Bearer (vloga operaterja)

Vrne podatke o izplačilu za avtenticiranega operaterja.

POST/api/stripe/payoutŽeton seje Bearer (vloga operaterja)

Zahteva izplačilo nabranega zaslužka. Najnižje izplačilo znaša 10,00 EUR.

POST/api/stripe/webhookPodpis webhook Stripe

Prejme dogodke webhook Stripe. Pokliče ga Stripe, ne odjemalci API.

Javne končne točke

Te končne točke ne zahtevajo avtentikacije. Varno jih je klicati iz nadzora, trženjskih strani ali preverjanja stanja.

GET/api/health

Preverjanje delovanja za API in njegovo povezavo z bazo podatkov. Vrne 200, ko sta oba v redu; če preverjanje baze podatkov spodleti, se vrne enaka oblika s status in db nastavljenima na error ter statusom 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]

Vrne javne podatke o podprtem modelu robota.

GET/api/public/pricing

Vrne trenutne javne cenovne pakete.

POST/api/contact

Odda sporočilo kontaktnega obrazca. Sporočilo se najprej shrani, nato dostavi po e-pošti, zato začasen izpad pošte ne pomeni izgube: v tem primeru odgovor sporoči stored true in delivered false, dostava pa se operativno ponovi.

NameInTypeDescription
namebodystringObvezno. Vaše ime.
emailbodystringObvezno. Veljaven e-poštni naslov za odgovor.
categorybodystringObvezno. Ena od: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringObvezno. Kratka zadeva.
messagebodystringObvezno. Vsebina sporočila.
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 podporo za tip robota, ki ga na platformi še ni.

GET/api/stats

Vrne javno statistiko platforme.