API-reference
AY-Robots REST API ligger under https://www.ay-robots.com/api og taler JSON begge veje. Denne side dokumenterer autentificering, svarkonventionerne og hver endpoint, med fuld parameterdokumentation for de ruter, du mest sandsynligt vil kalde programmatisk.
Sidst opdateret 2026-08-09
Autentificering
Hver endpoint kræver autentificering, medmindre den er listet under afsnittet Offentlig. API'et accepterer to former for legitimationsoplysninger, og begge ankommer på samme måde: enten som den sessionscookie, dashboardet allerede sender, eller som en Authorization-header med en Bearer-token.
| Metode | Sådan fungerer det | Brug den til |
|---|---|---|
| Browsersession | Supabase-sessionstokenet for din indloggede konto, sendt som en cookie eller som en Bearer-token | Selve dashboardet og hurtige eksperimenter fra en autentificeret browserkontekst |
| API-nøgle | En nøgle med præfikset ayr_live_, oprettet i /dashboard/settings og sendt som en Bearer-token | Scripts, servere, CI og alt, der ikke må afhænge af et browserlogin |
| MCP | Den hostede MCP-server på https://www.ay-robots.com/api/mcp (Streamable HTTP) | LLM-agenter og værktøjer, der taler Model Context Protocol |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'API-nøgler oprettes og tilbagekaldes i /dashboard/settings. Behandl dem som adgangskoder: hold dem serverside, og roter ved at oprette en erstatningsnøgle, før du tilbagekalder den gamle. Bruger du desktop-CLI'et, kan det også eksponere platformen som en lokal MCP-server med kommandoen: ay-robots mcp.
Svar er JSON. Fejl bruger en konsistent form: et JSON-objekt med et enkelt error-felt, der indeholder en læsbar meddelelse, leveret med en passende 4xx- eller 5xx-statuskode. Succesfulde svar returnerer ressourcen direkte; nogle få endpoints pakker lister ind i et navngivet felt, hvilket eksemplerne nedenfor viser, hvor det betyder noget.
Auth-endpoints
Konto- og profil-VVS. Disse bruges primært af selve dashboardet, men fungerer med enhver gyldig legitimation.
/api/auth/profileBearer-sessionstoken eller API-nøgleReturnerer profilen for den autentificerede bruger.
/api/auth/profileBearer-sessionstoken eller API-nøgleOpdaterer profilfelter som visningsnavnet og notifikationspræferencer.
/api/auth/syncBearer-sessionstokenSynkroniserer Supabase auth-brugeren med platformens brugerpost.
/api/auth/check-onboardingBearer-sessionstokenRapporterer, om den autentificerede bruger har gennemført onboarding.
/api/auth/avatarBearer-sessionstokenUploader et nyt avatarbillede til den autentificerede bruger.
Kunde-endpoints
Alt, en robotejer administrerer: registrerede robotter, kundeprofilen, datasæt, fakturaer og dashboard-statistik.
/api/client/robotsBearer-sessionstoken eller API-nøgle (kunderolle)Lister robotterne registreret af den autentificerede kunde, nyeste først, op til 50 poster. Tidsstempler er ISO 8601; last_online og last_heartbeat er null, indtil robotten har forbundet én gang.
curl https://www.ay-robots.com/api/client/robots \
-H 'Authorization: Bearer ayr_live_your_key_here'[
{
"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"
}
]/api/client/robotsBearer-sessionstoken eller API-nøgle (kunderolle)Registrerer en ny robot og returnerer dens id. Et motorkorts hardware-id kan kun tilhøre én robot; en kollision afvises med status 409.
/api/client/profileBearer-sessionstoken eller API-nøgle (kunderolle)Returnerer kundeprofilen for den autentificerede bruger.
/api/client/profileBearer-sessionstoken eller API-nøgle (kunderolle)Opdaterer kundeprofilfelter.
/api/client/datasetsBearer-sessionstoken eller API-nøgle (kunderolle)Lister kundens skydatasæt med episodeantal og størrelser.
/api/client/invoicesBearer-sessionstoken eller API-nøgle (kunderolle)Lister kundens månedlige fakturaer.
/api/client/statsBearer-sessionstoken eller API-nøgle (kunderolle)Returnerer forbrugsstatistik til kundens dashboard.
Operatør-endpoints
Operatørsiden: profil og tilgængelighed, certificeringer, planlægning og indtjeningsstatistik.
/api/operator/profileBearer-sessionstoken eller API-nøgle (operatørrolle)Returnerer operatørprofilen for den autentificerede bruger.
/api/operator/profileBearer-sessionstoken eller API-nøgle (operatørrolle)Opretter eller opdaterer operatørprofilen.
/api/operator/available-robotsBearer-sessionstoken eller API-nøgle (operatørrolle)Lister robotter, der aktuelt er tilgængelige og matcher operatørens certificeringer.
/api/operator/certificationsBearer-sessionstoken eller API-nøgle (operatørrolle)Lister operatørens certificeringsanmodninger og deres status.
/api/operator/certificationsBearer-sessionstoken eller API-nøgle (operatørrolle)Anmoder om certificering til en robottype.
/api/operator/scheduleBearer-sessionstoken eller API-nøgle (operatørrolle)Returnerer operatørens ugentlige tilgængelighedsskema.
/api/operator/scheduleBearer-sessionstoken eller API-nøgle (operatørrolle)Opdaterer det ugentlige tilgængelighedsskema.
/api/operator/availabilityBearer-sessionstoken eller API-nøgle (operatørrolle)Returnerer operatørens aktuelle tilgængelighed.
/api/operator/statsBearer-sessionstoken eller API-nøgle (operatørrolle)Returnerer indtjenings- og sessionsstatistik til operatørens dashboard.
Sessioner
Sessioner er platformens kerneressource: én session er ét sammenhængende teleoperationsengagement mellem en operatør og en robot. Sessionsstatus bevæger sig gennem PENDING, ACTIVE, PAUSED, COMPLETED og CANCELLED.
/api/sessionsBearer-sessionstoken eller API-nøgleLister sessioner for den autentificerede bruger. Operatører ser sessioner, de har opereret; kunder ser sessioner på deres robotter. Feltsættet adskiller sig en smule mellem de to visninger: kundevisningen inkluderer episodes_collected og data_collected_mb, operatørvisningen inkluderer operator_earnings_cents.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | Valgfrit. Filtrer efter sessionsstatus, for eksempel ACTIVE eller COMPLETED. Udelad for at liste alle. |
| limit | query | number | Valgfrit. Sidestørrelse, standard 50, maksimalt 100. |
| offset | query | number | Valgfrit. Pagineringsoffset, standard 0. |
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
-H 'Authorization: Bearer ayr_live_your_key_here'{
"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."
}
]
}/api/sessionsBearer-sessionstoken eller API-nøgle (operatørrolle)Starter en teleoperationssession på en tilgængelig robot. Kræver operatørrollen: kunder kan ikke starte sessioner. En operatør kan højst holde én ACTIVE eller PAUSED session ad gangen, og robotten skal aktuelt have status AVAILABLE. Ved en øjeblikkelig start skifter robotten til IN_SESSION, og kunden underrettes.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | Påkrævet. Id for den robot, der skal betjenes. Robotten skal være AVAILABLE. |
| operatorId | body | string | Valgfrit. Eksplicit operatør-id; standard er den autentificerede operatør. |
| scheduledFor | body | string (ISO 8601) | Valgfrit. Planlægger sessionen til et fremtidigt tidspunkt i stedet for at starte den øjeblikkeligt. |
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"}'{
"sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "ACTIVE"
}/api/sessions/[id]Bearer-sessionstoken eller API-nøgleReturnerer en enkelt session med dens detaljer.
/api/sessions/[id]Bearer-sessionstoken eller API-nøgleOpdaterer sessionens livscyklus: pause, genoptag, afslut og relaterede handlinger.
/api/sessions/[id]/extendBearer-sessionstoken eller API-nøgle (kunde, sessionsejer)Anmoder om en sessionsforlængelse. Kun kunden, der ejer sessionen, kan kalde dette, og sessionen skal være ACTIVE. Anmodningen logges som en sessionshændelse, og operatøren modtager en notifikation; selve forlængelsen sker, når operatøren handler på den.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | Session-id'et. |
| additionalMinutes | body | number | Ønsket forlængelseslængde i minutter. |
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}'{
"message": "Extension request sent to operator"
}/api/sessions/[id]/messagesBearer-sessionstoken eller API-nøgleLister chatbeskederne for en session.
/api/sessions/[id]/messagesBearer-sessionstoken eller API-nøgleSender en chatbesked i en session.
/api/sessions/[id]/rateBearer-sessionstoken eller API-nøgle (kunde)Bedømmer en gennemført session på en skala fra 1 til 5 stjerner, med en valgfri kommentar.
/api/sessions/exportBearer-sessionstoken eller API-nøgleEksporterer sessionsdata.
Betalinger
Al pengebevægelse går gennem Stripe. Kundefakturering bruger en Stripe-kunde med en gemt betalingsmetode; operatørudbetalinger bruger Stripe Connect. Platformen selv gemmer aldrig kort- eller bankdata.
/api/stripe/customerBearer-sessionstoken (kunderolle)Opretter eller returnerer den Stripe-kunde, der bruges til kundefakturering.
/api/stripe/connectBearer-sessionstoken (operatørrolle)Returnerer status for operatørens Stripe Connect-konto.
/api/stripe/connectBearer-sessionstoken (operatørrolle)Starter Stripe Connect-onboarding til operatørudbetalinger.
/api/stripe/setup-intentBearer-sessionstoken (kunderolle)Opretter en Stripe SetupIntent til at gemme en betalingsmetode.
/api/stripe/portalBearer-sessionstoken (kunderolle)Opretter en Stripe-faktureringsportalsession til håndtering af betalingsmetoder og fakturaer.
/api/stripe/payoutBearer-sessionstoken (operatørrolle)Returnerer udbetalingsoplysninger for den autentificerede operatør.
/api/stripe/payoutBearer-sessionstoken (operatørrolle)Anmoder om en udbetaling af ophobet indtjening. Minimumsudbetalingen er 10,00 EUR.
/api/stripe/webhookStripe webhook-signaturModtager Stripe webhook-hændelser. Kaldes af Stripe, ikke af API-klienter.
Offentlige endpoints
Disse endpoints kræver ingen autentificering. De er sikre at kalde fra overvågning, marketingsider eller en statusprobe.
/api/healthSundhedstjek for API'et og dets databaseforbindelse. Returnerer 200, når begge er fine; hvis databasetjekket fejler, returneres samme form med status og db sat til error og HTTP-status 503.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]Returnerer offentlig information om en understøttet robotmodel.
/api/public/pricingReturnerer de aktuelle offentlige prisplaner.
/api/contactIndsender en kontaktformularbesked. Beskeden gemmes først og leveres derefter via e-mail, så et midlertidigt mailudfald ikke mister den: i så fald rapporterer svaret stored true og delivered false, og levering forsøges igen operationelt.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | Påkrævet. Dit navn. |
| body | string | Påkrævet. En gyldig e-mailadresse til svaret. | |
| category | body | string | Påkrævet. Én af: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | Påkrævet. Kort emnelinje. |
| message | body | string | Påkrævet. Selve beskeden. |
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."
}'{
"success": true,
"message": "Message sent successfully",
"id": "b1f2c3d4-0000-0000-0000-000000000000",
"stored": true,
"delivered": true
}/api/robot-requestAnmoder om understøttelse af en robottype, der endnu ikke findes på platformen.
/api/statsReturnerer offentlig platformsstatistik.
Sådan sikrer AY-Robots konti og live robotstyring: Supabase-autentificering, rollemodel, API-nøgler, sessionssikring, revisionsspor og kryptering.
Sådan fungerer AY-Robots-sessioner: livscyklussen fra PENDING til COMPLETED, aktivitetshændelser, sessionschat, bedømmelser, forlængelser og træningsdata.