API-viite

AY-Robotsin REST-API sijaitsee osoitteessa https://www.ay-robots.com/api ja puhuu JSON:ia molempiin suuntiin. Tämä sivu dokumentoi todennuksen, vastauskäytännöt ja jokaisen rajapinnan, täydellisellä parametridokumentaatiolla niille reiteille, joita todennäköisimmin kutsut ohjelmallisesti.

Viimeksi päivitetty 2026-08-09

Todennus

Jokainen rajapinta vaatii todennuksen, ellei se ole listattu Julkinen-osiossa. API hyväksyy kaksi tunnistetietojen muotoa, ja molemmat saapuvat samalla tavalla: joko dashboardin jo lähettämänä istuntoevästeenä tai Authorization-otsakkeena Bearer-tokenin kanssa.

MenetelmäMiten se toimiiKäytä sitä
SelainistuntoKirjautuneen tilisi Supabase-istuntotoken, lähetettynä evästeenä tai Bearer-tokeninaItse dashboardiin ja nopeisiin kokeiluihin todennetusta selainkontekstista
API-avainAvain etuliitteellä ayr_live_, luotuna osoitteessa /dashboard/settings ja lähetettynä Bearer-tokeninaSkripteihin, palvelimiin, CI:hin ja mihin tahansa, mikä ei saa riippua selainkirjautumisesta
MCPHostattu MCP-palvelin osoitteessa https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM-agenteille ja työkaluille, jotka puhuvat Model Context Protocolia
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Todennus API-avaimella

API-avaimet luodaan ja perutaan osoitteessa /dashboard/settings. Käsittele niitä kuin salasanoja: pidä ne palvelinpuolella, ja rotatoi luomalla korvaava avain ennen vanhan peruuttamista. Jos käytät työpöytäsovelluksen CLI:tä, se voi myös paljastaa alustan paikallisena MCP-palvelimena komennolla: ay-robots mcp.

Vastaukset ovat JSON:ia. Virheet käyttävät johdonmukaista muotoa: JSON-objekti, jossa on yksi error-kenttä, joka sisältää luettavan viestin, toimitettuna sopivalla 4xx- tai 5xx-tilakoodilla. Onnistuneet vastaukset palauttavat resurssin suoraan; muutama rajapinta kääri listat nimettyyn kenttään, minkä alla olevat esimerkit näyttävät siellä, missä sillä on merkitystä.

Auth-rajapinnat

Tilin ja profiilin perustoiminnot. Näitä käyttää ensisijaisesti itse dashboard, mutta ne toimivat minkä tahansa kelvollisen tunnistetiedon kanssa.

GET/api/auth/profileBearer-istuntotoken tai API-avain

Palauttaa todennetun käyttäjän profiilin.

POST/api/auth/profileBearer-istuntotoken tai API-avain

Päivittää profiilikenttiä, kuten näyttönimen ja ilmoitusasetukset.

POST/api/auth/syncBearer-istuntotoken

Synkronoi Supabase-todennuskäyttäjän alustan käyttäjätietueen kanssa.

GET/api/auth/check-onboardingBearer-istuntotoken

Kertoo, onko todennettu käyttäjä suorittanut käyttöönoton loppuun.

POST/api/auth/avatarBearer-istuntotoken

Lataa uuden avatarkuvan todennetulle käyttäjälle.

Asiakasrajapinnat

Kaikki, mitä robotinomistaja hallinnoi: rekisteröidyt robotit, asiakasprofiili, datasetit, laskut ja dashboardin tilastot.

GET/api/client/robotsBearer-istuntotoken tai API-avain (asiakasrooli)

Listaa todennetun asiakkaan rekisteröimät robotit, uusimmat ensin, enintään 50 merkintää. Aikaleimat ovat ISO 8601 -muodossa; last_online ja last_heartbeat ovat null, kunnes robotti on yhdistänyt kerran.

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-istuntotoken tai API-avain (asiakasrooli)

Rekisteröi uuden robotin ja palauttaa sen id:n. Moottorikortin laitteisto-id voi kuulua vain yhdelle robotille; törmäys hylätään tilalla 409.

GET/api/client/profileBearer-istuntotoken tai API-avain (asiakasrooli)

Palauttaa todennetun käyttäjän asiakasprofiilin.

PATCH/api/client/profileBearer-istuntotoken tai API-avain (asiakasrooli)

Päivittää asiakasprofiilin kenttiä.

GET/api/client/datasetsBearer-istuntotoken tai API-avain (asiakasrooli)

Listaa asiakkaan pilvidatasetit episodimäärineen ja kokoineen.

GET/api/client/invoicesBearer-istuntotoken tai API-avain (asiakasrooli)

Listaa asiakkaan kuukausilaskut.

GET/api/client/statsBearer-istuntotoken tai API-avain (asiakasrooli)

Palauttaa käyttötilastot asiakkaan dashboardille.

Operaattorirajapinnat

Operaattoripuoli: profiili ja saatavuus, sertifioinnit, aikataulutus ja ansiotilastot.

GET/api/operator/profileBearer-istuntotoken tai API-avain (operaattorirooli)

Palauttaa todennetun käyttäjän operaattoriprofiilin.

POST/api/operator/profileBearer-istuntotoken tai API-avain (operaattorirooli)

Luo tai päivittää operaattoriprofiilin.

GET/api/operator/available-robotsBearer-istuntotoken tai API-avain (operaattorirooli)

Listaa robotit, jotka ovat parhaillaan saatavilla ja vastaavat operaattorin sertifiointeja.

GET/api/operator/certificationsBearer-istuntotoken tai API-avain (operaattorirooli)

Listaa operaattorin sertifiointipyynnöt ja niiden tilan.

POST/api/operator/certificationsBearer-istuntotoken tai API-avain (operaattorirooli)

Pyytää sertifiointia robottityypille.

GET/api/operator/scheduleBearer-istuntotoken tai API-avain (operaattorirooli)

Palauttaa operaattorin viikoittaisen saatavuusaikataulun.

POST/api/operator/scheduleBearer-istuntotoken tai API-avain (operaattorirooli)

Päivittää viikoittaisen saatavuusaikataulun.

GET/api/operator/availabilityBearer-istuntotoken tai API-avain (operaattorirooli)

Palauttaa operaattorin nykyisen saatavuuden.

GET/api/operator/statsBearer-istuntotoken tai API-avain (operaattorirooli)

Palauttaa ansio- ja istuntotilastot operaattorin dashboardille.

Istunnot

Istunnot ovat alustan ydinresurssi: yksi istunto on yksi jatkuva teleoperointitapahtuma operaattorin ja robotin välillä. Istunnon tila etenee tilojen PENDING, ACTIVE, PAUSED, COMPLETED ja CANCELLED läpi.

GET/api/sessionsBearer-istuntotoken tai API-avain

Listaa todennetun käyttäjän istunnot. Operaattorit näkevät istunnot, joita he ovat ohjanneet; asiakkaat näkevät istunnot omilla roboteillaan. Kenttäjoukko eroaa hieman näiden kahden näkymän välillä: asiakasnäkymä sisältää kentät episodes_collected ja data_collected_mb, operaattorinäkymä sisältää kentän operator_earnings_cents.

NameInTypeDescription
statusquerystringValinnainen. Suodata istunnon tilan mukaan, esimerkiksi ACTIVE tai COMPLETED. Jätä pois listataksesi kaikki.
limitquerynumberValinnainen. Sivukoko, oletus 50, enintään 100.
offsetquerynumberValinnainen. Sivutuksen siirtymä, oletus 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-istuntotoken tai API-avain (operaattorirooli)

Käynnistää teleoperointi-istunnon käytettävissä olevalla robotilla. Vaatii operaattorin roolin: asiakkaat eivät voi käynnistää istuntoja. Operaattorilla voi olla kerrallaan enintään yksi ACTIVE- tai PAUSED-istunto, ja robotin tilan täytyy tällä hetkellä olla AVAILABLE. Välittömässä käynnistyksessä robotti vaihtuu tilaan IN_SESSION ja asiakkaalle ilmoitetaan.

NameInTypeDescription
robotIdbodystringPakollinen. Ohjattavan robotin id. Robotin täytyy olla tilassa AVAILABLE.
operatorIdbodystringValinnainen. Nimenomainen operaattorin id; oletuksena todennettu operaattori.
scheduledForbodystring (ISO 8601)Valinnainen. Ajoittaa istunnon tulevaan ajankohtaan sen sijaan, että se käynnistyisi heti.
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-istuntotoken tai API-avain

Palauttaa yksittäisen istunnon tietoineen.

PATCH/api/sessions/[id]Bearer-istuntotoken tai API-avain

Päivittää istunnon elinkaarta: keskeytys, jatkaminen, lopetus ja niihin liittyvät toiminnot.

POST/api/sessions/[id]/extendBearer-istuntotoken tai API-avain (asiakas, istunnon omistaja)

Pyytää istunnon jatkoa. Vain istunnon omistava asiakas voi kutsua tätä, ja istunnon täytyy olla ACTIVE. Pyyntö kirjataan istuntotapahtumana, ja operaattori saa ilmoituksen; itse jatko tapahtuu, kun operaattori toimii sen mukaisesti.

NameInTypeDescription
idpathstringIstunnon id.
additionalMinutesbodynumberPyydetty jatkon pituus minuutteina.
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-istuntotoken tai API-avain

Listaa istunnon chat-viestit.

POST/api/sessions/[id]/messagesBearer-istuntotoken tai API-avain

Lähettää chat-viestin istunnossa.

POST/api/sessions/[id]/rateBearer-istuntotoken tai API-avain (asiakas)

Arvioi suoritetun istunnon asteikolla 1-5 tähteä, valinnaisella kommentilla.

POST/api/sessions/exportBearer-istuntotoken tai API-avain

Vie istuntodataa.

Maksut

Kaikki rahaliikenne kulkee Stripen kautta. Asiakaslaskutus käyttää Stripe-asiakasta tallennetulla maksutavalla; operaattorimaksut käyttävät Stripe Connectia. Alusta itse ei koskaan tallenna kortti- tai pankkidataa.

POST/api/stripe/customerBearer-istuntotoken (asiakasrooli)

Luo tai palauttaa asiakaslaskutukseen käytettävän Stripe-asiakkaan.

GET/api/stripe/connectBearer-istuntotoken (operaattorirooli)

Palauttaa operaattorin Stripe Connect -tilin tilan.

POST/api/stripe/connectBearer-istuntotoken (operaattorirooli)

Käynnistää Stripe Connect -käyttöönoton operaattorimaksuja varten.

POST/api/stripe/setup-intentBearer-istuntotoken (asiakasrooli)

Luo Stripe SetupIntentin maksutavan tallentamista varten.

POST/api/stripe/portalBearer-istuntotoken (asiakasrooli)

Luo Stripe-laskutusportaali-istunnon maksutapojen ja laskujen hallintaan.

GET/api/stripe/payoutBearer-istuntotoken (operaattorirooli)

Palauttaa todennetun operaattorin maksutiedot.

POST/api/stripe/payoutBearer-istuntotoken (operaattorirooli)

Pyytää kertyneiden ansioiden maksua. Vähimmäismaksu on 10,00 EUR.

POST/api/stripe/webhookStripen webhook-allekirjoitus

Vastaanottaa Stripen webhook-tapahtumat. Stripen kutsuma, ei API-asiakkaiden.

Julkiset rajapinnat

Nämä rajapinnat eivät vaadi todennusta. Niitä on turvallista kutsua seurannasta, markkinointisivuilta tai tilan tarkistuksesta.

GET/api/health

API:n ja sen tietokantayhteyden terveystarkistus. Palauttaa 200, kun molemmat ovat kunnossa; jos tietokantatarkistus epäonnistuu, palautetaan sama muoto status- ja db-kentillä arvona error sekä HTTP-tilalla 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]

Palauttaa julkista tietoa tuetusta robottimallista.

GET/api/public/pricing

Palauttaa nykyiset julkiset hinnoittelusuunnitelmat.

POST/api/contact

Lähettää yhteydenottolomakkeen viestin. Viesti tallennetaan ensin ja toimitetaan sitten sähköpostitse, joten tilapäinen sähköpostikatkos ei hukkaa sitä: siinä tapauksessa vastaus ilmoittaa stored true ja delivered false, ja toimitusta yritetään uudelleen operatiivisesti.

NameInTypeDescription
namebodystringPakollinen. Nimesi.
emailbodystringPakollinen. Kelvollinen sähköpostiosoite vastausta varten.
categorybodystringPakollinen. Yksi seuraavista: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringPakollinen. Lyhyt aiherivi.
messagebodystringPakollinen. Viestin sisältö.
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

Pyytää tukea robottityypille, joka ei vielä ole alustalla.

GET/api/stats

Palauttaa julkiset alustan tilastot.