API-referens

AY-Robots REST-API finns under https://www.ay-robots.com/api och pratar JSON i båda riktningarna. Den här sidan dokumenterar autentisering, svarskonventionerna och varje slutpunkt, med fullständig parameterdokumentation för de rutter du mest sannolikt kommer att anropa programmatiskt.

Senast uppdaterad 2026-08-09

Autentisering

Varje slutpunkt kräver autentisering om den inte listas i avsnittet Publikt. API:et accepterar två typer av autentiseringsuppgifter, och båda kommer på samma sätt: antingen som sessionscookien instrumentpanelen redan skickar, eller som en Authorization-header med en Bearer-token.

MetodHur den fungerarAnvänd den för
WebbläsarsessionSupabase-sessionstoken för ditt inloggade konto, skickad som en cookie eller som en Bearer-tokenInstrumentpanelen själv och snabba experiment från en autentiserad webbläsarkontext
API-nyckelEn nyckel med prefixet ayr_live_, skapad i /dashboard/settings och skickad som en Bearer-tokenSkript, servrar, CI och allt som inte får bero på en webbläsarinloggning
MCPDen hostade MCP-servern på https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM-agenter och verktyg som pratar Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Autentisera med en API-nyckel

API-nycklar skapas och återkallas i /dashboard/settings. Behandla dem som lösenord: håll dem serversidan, och rotera genom att skapa en ersättningsnyckel innan du återkallar den gamla. Använder du desktop-CLI:t kan det också exponera plattformen som en lokal MCP-server med kommandot: ay-robots mcp.

Svaren är JSON. Fel använder en konsekvent form: ett JSON-objekt med ett enda error-fält som innehåller ett läsbart meddelande, levererat med en lämplig 4xx- eller 5xx-statuskod. Lyckade svar returnerar resursen direkt; ett fåtal slutpunkter paketerar listor i ett namngivet fält, vilket exemplen nedan visar där det spelar roll.

Auth-slutpunkter

Konto- och profilrörmokeri. De här används i första hand av instrumentpanelen själv, men fungerar med alla giltiga autentiseringsuppgifter.

GET/api/auth/profileBearer-sessionstoken eller API-nyckel

Returnerar profilen för den autentiserade användaren.

POST/api/auth/profileBearer-sessionstoken eller API-nyckel

Uppdaterar profilfält som visningsnamnet och aviseringsinställningar.

POST/api/auth/syncBearer-sessionstoken

Synkroniserar Supabase auth-användaren med plattformens användarpost.

GET/api/auth/check-onboardingBearer-sessionstoken

Rapporterar om den autentiserade användaren har slutfört onboardingen.

POST/api/auth/avatarBearer-sessionstoken

Laddar upp en ny avatarbild för den autentiserade användaren.

Kundslutpunkter

Allt en robotägare hanterar: registrerade robotar, kundprofilen, dataset, fakturor och instrumentpanelsstatistik.

GET/api/client/robotsBearer-sessionstoken eller API-nyckel (kundroll)

Listar robotarna registrerade av den autentiserade kunden, senaste först, upp till 50 poster. Tidsstämplar är ISO 8601; last_online och last_heartbeat är null tills roboten anslutit en gång.

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-nyckel (kundroll)

Registrerar en ny robot och returnerar dess id. Ett motorkorts hårdvaru-id kan bara tillhöra en robot; en kollision avvisas med status 409.

GET/api/client/profileBearer-sessionstoken eller API-nyckel (kundroll)

Returnerar kundprofilen för den autentiserade användaren.

PATCH/api/client/profileBearer-sessionstoken eller API-nyckel (kundroll)

Uppdaterar kundprofilfält.

GET/api/client/datasetsBearer-sessionstoken eller API-nyckel (kundroll)

Listar kundens molndataset med episodantal och storlekar.

GET/api/client/invoicesBearer-sessionstoken eller API-nyckel (kundroll)

Listar kundens månadsfakturor.

GET/api/client/statsBearer-sessionstoken eller API-nyckel (kundroll)

Returnerar användningsstatistik för kundens instrumentpanel.

Operatörsslutpunkter

Operatörssidan: profil och tillgänglighet, certifieringar, schemaläggning och intäktsstatistik.

GET/api/operator/profileBearer-sessionstoken eller API-nyckel (operatörsroll)

Returnerar operatörsprofilen för den autentiserade användaren.

POST/api/operator/profileBearer-sessionstoken eller API-nyckel (operatörsroll)

Skapar eller uppdaterar operatörsprofilen.

GET/api/operator/available-robotsBearer-sessionstoken eller API-nyckel (operatörsroll)

Listar robotar som för närvarande är tillgängliga och matchar operatörens certifieringar.

GET/api/operator/certificationsBearer-sessionstoken eller API-nyckel (operatörsroll)

Listar operatörens certifieringsbegäranden och deras status.

POST/api/operator/certificationsBearer-sessionstoken eller API-nyckel (operatörsroll)

Begär certifiering för en robottyp.

GET/api/operator/scheduleBearer-sessionstoken eller API-nyckel (operatörsroll)

Returnerar operatörens veckovisa tillgänglighetsschema.

POST/api/operator/scheduleBearer-sessionstoken eller API-nyckel (operatörsroll)

Uppdaterar det veckovisa tillgänglighetsschemat.

GET/api/operator/availabilityBearer-sessionstoken eller API-nyckel (operatörsroll)

Returnerar operatörens aktuella tillgänglighet.

GET/api/operator/statsBearer-sessionstoken eller API-nyckel (operatörsroll)

Returnerar intäkts- och sessionsstatistik för operatörens instrumentpanel.

Sessioner

Sessioner är plattformens kärnresurs: en session är ett sammanhängande teleopereringsengagemang mellan en operatör och en robot. Sessionsstatus rör sig genom PENDING, ACTIVE, PAUSED, COMPLETED och CANCELLED.

GET/api/sessionsBearer-sessionstoken eller API-nyckel

Listar sessioner för den autentiserade användaren. Operatörer ser sessioner de opererade; kunder ser sessioner på sina robotar. Fältuppsättningen skiljer sig något mellan de två vyerna: kundvyn inkluderar episodes_collected och data_collected_mb, operatörsvyn inkluderar operator_earnings_cents.

NameInTypeDescription
statusquerystringValfritt. Filtrera efter sessionsstatus, till exempel ACTIVE eller COMPLETED. Utelämna för att lista alla.
limitquerynumberValfritt. Sidstorlek, standard 50, maximalt 100.
offsetquerynumberValfritt. 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-nyckel (operatörsroll)

Startar en teleopereringssession på en tillgänglig robot. Kräver operatörsrollen: kunder kan inte starta sessioner. En operatör kan hålla högst en ACTIVE eller PAUSED session åt gången, och roboten måste för närvarande ha status AVAILABLE. Vid en omedelbar start växlar roboten till IN_SESSION och kunden meddelas.

NameInTypeDescription
robotIdbodystringObligatoriskt. Id för roboten som ska styras. Roboten måste vara AVAILABLE.
operatorIdbodystringValfritt. Explicit operatörs-id; standard är den autentiserade operatören.
scheduledForbodystring (ISO 8601)Valfritt. Schemalägger sessionen till en framtida tidpunkt i stället för att starta den omedelbart.
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-nyckel

Returnerar en enskild session med dess detaljer.

PATCH/api/sessions/[id]Bearer-sessionstoken eller API-nyckel

Uppdaterar sessionens livscykel: pausa, återuppta, avsluta och relaterade åtgärder.

POST/api/sessions/[id]/extendBearer-sessionstoken eller API-nyckel (kund, sessionsägare)

Begär en sessionsförlängning. Bara kunden som äger sessionen kan anropa den här, och sessionen måste vara ACTIVE. Begäran loggas som en sessionshändelse och operatören får en avisering; själva förlängningen sker när operatören agerar på den.

NameInTypeDescription
idpathstringSessions-id:t.
additionalMinutesbodynumberBegärd förlängningslängd i minuter.
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-nyckel

Listar chattmeddelandena för en session.

POST/api/sessions/[id]/messagesBearer-sessionstoken eller API-nyckel

Skickar ett chattmeddelande i en session.

POST/api/sessions/[id]/rateBearer-sessionstoken eller API-nyckel (kund)

Betygsätter en avslutad session på en skala från 1 till 5 stjärnor, med en valfri kommentar.

POST/api/sessions/exportBearer-sessionstoken eller API-nyckel

Exporterar sessionsdata.

Betalningar

All pengarörelse går genom Stripe. Kundfakturering använder en Stripe-kund med en sparad betalningsmetod; operatörsutbetalningar använder Stripe Connect. Plattformen själv lagrar aldrig kort- eller bankdata.

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

Skapar eller returnerar Stripe-kunden som används för kundfakturering.

GET/api/stripe/connectBearer-sessionstoken (operatörsroll)

Returnerar statusen för operatörens Stripe Connect-konto.

POST/api/stripe/connectBearer-sessionstoken (operatörsroll)

Startar Stripe Connect-onboarding för operatörsutbetalningar.

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

Skapar en Stripe SetupIntent för att spara en betalningsmetod.

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

Skapar en Stripe-faktureringsportalsession för att hantera betalningsmetoder och fakturor.

GET/api/stripe/payoutBearer-sessionstoken (operatörsroll)

Returnerar utbetalningsinformation för den autentiserade operatören.

POST/api/stripe/payoutBearer-sessionstoken (operatörsroll)

Begär en utbetalning av ackumulerade intäkter. Minsta utbetalning är 10,00 EUR.

POST/api/stripe/webhookStripe webhook-signatur

Tar emot Stripe webhook-händelser. Anropas av Stripe, inte av API-klienter.

Publika slutpunkter

De här slutpunkterna kräver ingen autentisering. De är säkra att anropa från övervakning, marknadsföringssidor eller en statuskontroll.

GET/api/health

Hälsokontroll för API:et och dess databasanslutning. Returnerar 200 när båda är okej; om databaskontrollen misslyckas returneras samma form med status och db satta till error och 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]

Returnerar publik information om en robotmodell som stöds.

GET/api/public/pricing

Returnerar de aktuella publika prisplanerna.

POST/api/contact

Skickar ett kontaktformulärsmeddelande. Meddelandet lagras först och levereras sedan via e-post, så ett tillfälligt mejlavbrott gör att det inte går förlorat: i så fall rapporterar svaret stored true och delivered false, och leveransen görs om operativt.

NameInTypeDescription
namebodystringObligatoriskt. Ditt namn.
emailbodystringObligatoriskt. En giltig e-postadress för svaret.
categorybodystringObligatoriskt. En av: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringObligatoriskt. Kort ämnesrad.
messagebodystringObligatoriskt. Meddelandetexten.
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

Begär stöd för en robottyp som ännu inte finns på plattformen.

GET/api/stats

Returnerar publik plattformsstatistik.