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.

MetodeSådan fungerer detBrug den til
BrowsersessionSupabase-sessionstokenet for din indloggede konto, sendt som en cookie eller som en Bearer-tokenSelve dashboardet og hurtige eksperimenter fra en autentificeret browserkontekst
API-nøgleEn nøgle med præfikset ayr_live_, oprettet i /dashboard/settings og sendt som en Bearer-tokenScripts, servere, CI og alt, der ikke må afhænge af et browserlogin
MCPDen hostede MCP-server på https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM-agenter og værktøjer, der taler Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Autentificering med en API-nøgle

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.

GET/api/auth/profileBearer-sessionstoken eller API-nøgle

Returnerer profilen for den autentificerede bruger.

POST/api/auth/profileBearer-sessionstoken eller API-nøgle

Opdaterer profilfelter som visningsnavnet og notifikationspræferencer.

POST/api/auth/syncBearer-sessionstoken

Synkroniserer Supabase auth-brugeren med platformens brugerpost.

GET/api/auth/check-onboardingBearer-sessionstoken

Rapporterer, om den autentificerede bruger har gennemført onboarding.

POST/api/auth/avatarBearer-sessionstoken

Uploader et nyt avatarbillede til den autentificerede bruger.

Kunde-endpoints

Alt, en robotejer administrerer: registrerede robotter, kundeprofilen, datasæt, fakturaer og dashboard-statistik.

GET/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.

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-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.

GET/api/client/profileBearer-sessionstoken eller API-nøgle (kunderolle)

Returnerer kundeprofilen for den autentificerede bruger.

PATCH/api/client/profileBearer-sessionstoken eller API-nøgle (kunderolle)

Opdaterer kundeprofilfelter.

GET/api/client/datasetsBearer-sessionstoken eller API-nøgle (kunderolle)

Lister kundens skydatasæt med episodeantal og størrelser.

GET/api/client/invoicesBearer-sessionstoken eller API-nøgle (kunderolle)

Lister kundens månedlige fakturaer.

GET/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.

GET/api/operator/profileBearer-sessionstoken eller API-nøgle (operatørrolle)

Returnerer operatørprofilen for den autentificerede bruger.

POST/api/operator/profileBearer-sessionstoken eller API-nøgle (operatørrolle)

Opretter eller opdaterer operatørprofilen.

GET/api/operator/available-robotsBearer-sessionstoken eller API-nøgle (operatørrolle)

Lister robotter, der aktuelt er tilgængelige og matcher operatørens certificeringer.

GET/api/operator/certificationsBearer-sessionstoken eller API-nøgle (operatørrolle)

Lister operatørens certificeringsanmodninger og deres status.

POST/api/operator/certificationsBearer-sessionstoken eller API-nøgle (operatørrolle)

Anmoder om certificering til en robottype.

GET/api/operator/scheduleBearer-sessionstoken eller API-nøgle (operatørrolle)

Returnerer operatørens ugentlige tilgængelighedsskema.

POST/api/operator/scheduleBearer-sessionstoken eller API-nøgle (operatørrolle)

Opdaterer det ugentlige tilgængelighedsskema.

GET/api/operator/availabilityBearer-sessionstoken eller API-nøgle (operatørrolle)

Returnerer operatørens aktuelle tilgængelighed.

GET/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.

GET/api/sessionsBearer-sessionstoken eller API-nøgle

Lister 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.

NameInTypeDescription
statusquerystringValgfrit. Filtrer efter sessionsstatus, for eksempel ACTIVE eller COMPLETED. Udelad for at liste alle.
limitquerynumberValgfrit. Sidestørrelse, standard 50, maksimalt 100.
offsetquerynumberValgfrit. Pagineringsoffset, standard 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-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.

NameInTypeDescription
robotIdbodystringPåkrævet. Id for den robot, der skal betjenes. Robotten skal være AVAILABLE.
operatorIdbodystringValgfrit. Eksplicit operatør-id; standard er den autentificerede operatør.
scheduledForbodystring (ISO 8601)Valgfrit. Planlægger sessionen til et fremtidigt tidspunkt i stedet for at starte den øjeblikkeligt.
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-sessionstoken eller API-nøgle

Returnerer en enkelt session med dens detaljer.

PATCH/api/sessions/[id]Bearer-sessionstoken eller API-nøgle

Opdaterer sessionens livscyklus: pause, genoptag, afslut og relaterede handlinger.

POST/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.

NameInTypeDescription
idpathstringSession-id'et.
additionalMinutesbodynumberØnsket forlængelseslængde i minutter.
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-sessionstoken eller API-nøgle

Lister chatbeskederne for en session.

POST/api/sessions/[id]/messagesBearer-sessionstoken eller API-nøgle

Sender en chatbesked i en session.

POST/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.

POST/api/sessions/exportBearer-sessionstoken eller API-nøgle

Eksporterer 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.

POST/api/stripe/customerBearer-sessionstoken (kunderolle)

Opretter eller returnerer den Stripe-kunde, der bruges til kundefakturering.

GET/api/stripe/connectBearer-sessionstoken (operatørrolle)

Returnerer status for operatørens Stripe Connect-konto.

POST/api/stripe/connectBearer-sessionstoken (operatørrolle)

Starter Stripe Connect-onboarding til operatørudbetalinger.

POST/api/stripe/setup-intentBearer-sessionstoken (kunderolle)

Opretter en Stripe SetupIntent til at gemme en betalingsmetode.

POST/api/stripe/portalBearer-sessionstoken (kunderolle)

Opretter en Stripe-faktureringsportalsession til håndtering af betalingsmetoder og fakturaer.

GET/api/stripe/payoutBearer-sessionstoken (operatørrolle)

Returnerer udbetalingsoplysninger for den autentificerede operatør.

POST/api/stripe/payoutBearer-sessionstoken (operatørrolle)

Anmoder om en udbetaling af ophobet indtjening. Minimumsudbetalingen er 10,00 EUR.

POST/api/stripe/webhookStripe webhook-signatur

Modtager 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.

GET/api/health

Sundhedstjek 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.

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]

Returnerer offentlig information om en understøttet robotmodel.

GET/api/public/pricing

Returnerer de aktuelle offentlige prisplaner.

POST/api/contact

Indsender 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.

NameInTypeDescription
namebodystringPåkrævet. Dit navn.
emailbodystringPåkrævet. En gyldig e-mailadresse til svaret.
categorybodystringPåkrævet. Én af: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringPåkrævet. Kort emnelinje.
messagebodystringPåkrævet. Selve beskeden.
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

Anmoder om understøttelse af en robottype, der endnu ikke findes på platformen.

GET/api/stats

Returnerer offentlig platformsstatistik.