API-referanse

AY-Robots REST-API-et ligger under https://www.ay-robots.com/api og snakker JSON i begge retninger. Denne siden dokumenterer autentisering, svarkonvensjonene, og hvert endepunkt, med full parameterdokumentasjon for rutene du mest sannsynlig kaller programmatisk.

Sist oppdatert 2026-08-09

Autentisering

Hvert endepunkt krever autentisering med mindre det står oppført under Offentlige endepunkter. API-et godtar to former for legitimasjon, og begge kommer inn på samme måte: enten som øktcookien dashbordet uansett sender, eller som en Authorization-header med et Bearer-token.

MetodeSlik fungerer denBruk den til
NettleserøktSupabase-øktens token for din innloggede konto, sendt som cookie eller som Bearer-tokenSelve dashbordet og raske eksperimenter fra en autentisert nettleserkontekst
API-nøkkelEn nøkkel med prefikset ayr_live_, opprettet i /dashboard/settings og sendt som Bearer-tokenSkript, servere, CI, og alt som ikke skal avhenge av en nettleserinnlogging
MCPDen hostede MCP-serveren på https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM-agenter og verktøy som snakker Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Autentisere med en API-nøkkel

API-nøkler opprettes og tilbakekalles i /dashboard/settings. Behandle dem som passord: oppbevar dem serverside, og roter ved å opprette en erstatningsnøkkel før du tilbakekaller den gamle. Bruker du desktop-CLI-en, kan den også eksponere plattformen som en lokal MCP-server med kommandoen: ay-robots mcp.

Svarene er JSON. Feil har en konsistent form: et JSON-objekt med et enkelt error-felt som inneholder en menneskelesbar melding, levert med en passende 4xx- eller 5xx-statuskode. Vellykkede svar returnerer ressursen direkte; noen få endepunkter pakker lister inn i et navngitt felt, noe eksemplene under viser der det betyr noe.

Auth-endepunkter

Konto- og profilrørlegging. Disse brukes primært av selve dashbordet, men de fungerer med enhver gyldig legitimasjon.

GET/api/auth/profileBearer-økt-token eller API-nøkkel

Returnerer profilen til den autentiserte brukeren.

POST/api/auth/profileBearer-økt-token eller API-nøkkel

Oppdaterer profilfelt som visningsnavn og varslingspreferanser.

POST/api/auth/syncBearer-økt-token

Synkroniserer Supabase-auth-brukeren med plattformens brukerregister.

GET/api/auth/check-onboardingBearer-økt-token

Rapporterer om den autentiserte brukeren har fullført onboardingen.

POST/api/auth/avatarBearer-økt-token

Laster opp et nytt avatarbilde for den autentiserte brukeren.

Kunde-endepunkter

Alt en robot­eier forvalter: registrerte roboter, kundeprofilen, datasett, fakturaer og dashbordstatistikk.

GET/api/client/robotsBearer-økt-token eller API-nøkkel (kunderolle)

Lister robotene registrert av den autentiserte kunden, nyeste først, opptil 50 oppføringer. Tidsstempler er ISO 8601; last_online og last_heartbeat er null til roboten har koblet til é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-økt-token eller API-nøkkel (kunderolle)

Registrerer en ny robot og returnerer id-en. En motorkort-maskinvare-ID kan bare tilhøre én robot; en kollisjon avvises med status 409.

GET/api/client/profileBearer-økt-token eller API-nøkkel (kunderolle)

Returnerer kundeprofilen til den autentiserte brukeren.

PATCH/api/client/profileBearer-økt-token eller API-nøkkel (kunderolle)

Oppdaterer felt i kundeprofilen.

GET/api/client/datasetsBearer-økt-token eller API-nøkkel (kunderolle)

Lister kundens skydatasett med episodeantall og størrelser.

GET/api/client/invoicesBearer-økt-token eller API-nøkkel (kunderolle)

Lister kundens månedlige fakturaer.

GET/api/client/statsBearer-økt-token eller API-nøkkel (kunderolle)

Returnerer bruksstatistikk for kundedashbordet.

Operatør-endepunkter

Operatørsiden: profil og tilgjengelighet, sertifiseringer, planlegging og inntektsstatistikk.

GET/api/operator/profileBearer-økt-token eller API-nøkkel (operatørrolle)

Returnerer operatørprofilen til den autentiserte brukeren.

POST/api/operator/profileBearer-økt-token eller API-nøkkel (operatørrolle)

Oppretter eller oppdaterer operatørprofilen.

GET/api/operator/available-robotsBearer-økt-token eller API-nøkkel (operatørrolle)

Lister roboter som er tilgjengelige nå og matcher operatørens sertifiseringer.

GET/api/operator/certificationsBearer-økt-token eller API-nøkkel (operatørrolle)

Lister operatørens sertifiseringsforespørsler og status for dem.

POST/api/operator/certificationsBearer-økt-token eller API-nøkkel (operatørrolle)

Ber om sertifisering for en robottype.

GET/api/operator/scheduleBearer-økt-token eller API-nøkkel (operatørrolle)

Returnerer operatørens ukentlige tilgjengelighetsplan.

POST/api/operator/scheduleBearer-økt-token eller API-nøkkel (operatørrolle)

Oppdaterer den ukentlige tilgjengelighetsplanen.

GET/api/operator/availabilityBearer-økt-token eller API-nøkkel (operatørrolle)

Returnerer operatørens gjeldende tilgjengelighet.

GET/api/operator/statsBearer-økt-token eller API-nøkkel (operatørrolle)

Returnerer inntekts- og øktstatistikk for operatørdashbordet.

Økter

Økter er plattformens sentrale ressurs: én økt er ett sammenhengende teleoperasjonsengasjement mellom en operatør og en robot. Øktstatusen beveger seg gjennom PENDING, ACTIVE, PAUSED, COMPLETED og CANCELLED.

GET/api/sessionsBearer-økt-token eller API-nøkkel

Lister økter for den autentiserte brukeren. Operatører ser økter de styrte; kunder ser økter på sine roboter. Feltsettet er noe forskjellig mellom de to visningene: kundevisningen inkluderer episodes_collected og data_collected_mb, operatørvisningen inkluderer operator_earnings_cents.

NameInTypeDescription
statusquerystringValgfritt. Filtrer etter øktstatus, for eksempel ACTIVE eller COMPLETED. Utelat for å liste alle.
limitquerynumberValgfritt. Sidestørrelse, standard 50, maksimum 100.
offsetquerynumberValgfritt. Pagineringsforskyvning, 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-økt-token eller API-nøkkel (operatørrolle)

Starter en teleoperasjonsøkt på en tilgjengelig robot. Krever operatørrollen: kunder kan ikke starte økter. En operatør kan holde høyst én ACTIVE- eller PAUSED-økt om gangen, og roboten må for øyeblikket ha status AVAILABLE. Ved umiddelbar start bytter roboten til IN_SESSION og kunden varsles.

NameInTypeDescription
robotIdbodystringPåkrevd. Id-en til roboten som skal styres. Roboten må være AVAILABLE.
operatorIdbodystringValgfritt. Eksplisitt operatør-id; standard er den autentiserte operatøren.
scheduledForbodystring (ISO 8601)Valgfritt. Planlegger økten til et fremtidig tidspunkt i stedet for å starte den umiddelbart.
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-økt-token eller API-nøkkel

Returnerer én enkelt økt med detaljene dens.

PATCH/api/sessions/[id]Bearer-økt-token eller API-nøkkel

Oppdaterer øktens livssyklus: pause, gjenoppta, avslutt og relaterte handlinger.

POST/api/sessions/[id]/extendBearer-økt-token eller API-nøkkel (kunde, økteier)

Ber om en øktforlengelse. Bare kunden som eier økten, kan kalle dette, og økten må være ACTIVE. Forespørselen logges som en økthendelse, og operatøren mottar et varsel; selve forlengelsen skjer når operatøren handler på den.

NameInTypeDescription
idpathstringØkt-id-en.
additionalMinutesbodynumberØnsket forlengelseslengde 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-økt-token eller API-nøkkel

Lister chatmeldingene til en økt.

POST/api/sessions/[id]/messagesBearer-økt-token eller API-nøkkel

Sender en chatmelding i en økt.

POST/api/sessions/[id]/rateBearer-økt-token eller API-nøkkel (kunde)

Vurderer en fullført økt på en skala fra 1 til 5 stjerner, med en valgfri kommentar.

POST/api/sessions/exportBearer-økt-token eller API-nøkkel

Eksporterer øktdata.

Betalinger

All pengebevegelse går gjennom Stripe. Kundefakturering bruker en Stripe-kunde med en lagret betalingsmetode; operatørutbetalinger bruker Stripe Connect. Plattformen selv lagrer aldri kort- eller bankdata.

POST/api/stripe/customerBearer-økt-token (kunderolle)

Oppretter eller returnerer Stripe-kunden brukt til kundefakturering.

GET/api/stripe/connectBearer-økt-token (operatørrolle)

Returnerer statusen til operatørens Stripe Connect-konto.

POST/api/stripe/connectBearer-økt-token (operatørrolle)

Starter Stripe Connect-onboardingen for operatørutbetalinger.

POST/api/stripe/setup-intentBearer-økt-token (kunderolle)

Oppretter en Stripe SetupIntent for å lagre en betalingsmetode.

POST/api/stripe/portalBearer-økt-token (kunderolle)

Oppretter en Stripe-faktureringsportal-økt for å forvalte betalingsmetoder og fakturaer.

GET/api/stripe/payoutBearer-økt-token (operatørrolle)

Returnerer utbetalingsinformasjon for den autentiserte operatøren.

POST/api/stripe/payoutBearer-økt-token (operatørrolle)

Ber om en utbetaling av opparbeidede inntekter. Minsteutbetalingen er 10,00 EUR.

POST/api/stripe/webhookStripe-webhook-signatur

Mottar Stripe-webhook-hendelser. Kalles av Stripe, ikke av API-klienter.

Offentlige endepunkter

Disse endepunktene krever ingen autentisering. De er trygge å kalle fra overvåking, markedsføringssider eller en statusprobe.

GET/api/health

Helsesjekk for API-et og databasetilkoblingen dets. Returnerer 200 når begge er i orden; feiler databasesjekken, returneres samme struktur med status og db satt 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 informasjon om en støttet robotmodell.

GET/api/public/pricing

Returnerer de gjeldende offentlige prisplanene.

POST/api/contact

Sender inn en melding fra kontaktskjemaet. Meldingen lagres først og leveres deretter på e-post, slik at et midlertidig e-postavbrudd ikke mister den: i så fall rapporterer svaret stored true og delivered false, og leveringen forsøkes på nytt driftsmessig.

NameInTypeDescription
namebodystringPåkrevd. Navnet ditt.
emailbodystringPåkrevd. En gyldig e-postadresse for svaret.
categorybodystringPåkrevd. En av: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringPåkrevd. Kort emnelinje.
messagebodystringPåkrevd. Selve meldingsteksten.
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

Ber om støtte for en robottype som ikke er på plattformen ennå.

GET/api/stats

Returnerer offentlig plattformstatistikk.