API reference

Nabubuhay ang AY-Robots REST API sa ilalim ng https://www.ay-robots.com/api at nagsasalita ng JSON sa parehong direksyon. Dinodokumento ng pahinang ito ang authentication, ang mga convention ng response, at bawat endpoint, kasama ang kumpletong dokumentasyon ng parameter para sa mga route na malamang tatawagin mo nang programmatic.

Huling na-update 2026-08-09

Authentication

Nangangailangan ng authentication ang bawat endpoint maliban kung nakalista ito sa seksyong Public. Tumatanggap ang API ng dalawang uri ng credential, at pareho itong dumarating sa parehong paraan: alinman bilang session cookie na ipinapadala na ng dashboard, o bilang Authorization header na may Bearer token.

ParaanPaano gumaganaGamitin para sa
Browser sessionAng Supabase session token ng naka-log-in mong account, ipinapadala bilang cookie o bilang Bearer tokenAng dashboard mismo at mabilisang eksperimento mula sa authenticated na browser context
API keyKey na may ayr_live_ prefix, ginawa sa /dashboard/settings at ipinapadala bilang Bearer tokenScript, server, CI, at anumang hindi dapat umaasa sa browser login
MCPAng hosted MCP server sa https://www.ay-robots.com/api/mcp (Streamable HTTP)LLM agent at tool na nagsasalita ng Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Pag-authenticate gamit ang API key

Ginagawa at binabawi ang mga API key sa /dashboard/settings. Itratong parang password: itago sa server-side, at i-rotate sa pamamagitan ng paggawa ng kapalit na key bago bawiin ang luma. Kung ginagamit mo ang desktop CLI, puwede rin nitong ilantad ang platform bilang lokal na MCP server gamit ang command: ay-robots mcp.

JSON ang mga response. Gumagamit ang mga error ng consistent na shape: JSON object na may iisang error field na naglalaman ng mababasang mensahe, na inihahatid kasama ng angkop na 4xx o 5xx status code. Ibinabalik nang direkta ng success response ang resource; binabalot ng ilang endpoint ang listahan sa isang named field, na ipinapakita ng mga halimbawa sa ibaba kung saan mahalaga ito.

Mga auth endpoint

Ang plumbing ng account at profile. Ginagamit ito pangunahin ng dashboard mismo, pero gumagana ito sa anumang valid na credential.

GET/api/auth/profileBearer session token o API key

Ibinabalik ang profile ng authenticated na user.

POST/api/auth/profileBearer session token o API key

Ina-update ang mga profile field tulad ng display name at notification preference.

POST/api/auth/syncBearer session token

Sina-synchronize ang Supabase auth user sa platform user record.

GET/api/auth/check-onboardingBearer session token

Inirereport kung nakumpleto na ng authenticated na user ang onboarding.

POST/api/auth/avatarBearer session token

Nag-a-upload ng bagong avatar image para sa authenticated na user.

Mga client endpoint

Lahat ng pinamamahalaan ng may-ari ng robot: mga naka-register na robot, ang client profile, dataset, invoice, at dashboard statistics.

GET/api/client/robotsBearer session token o API key (client role)

Naglilista ng mga robot na naka-register ng authenticated na kliyente, pinakabago muna, hanggang 50 entry. ISO 8601 ang mga timestamp; null ang last_online at last_heartbeat hangga't hindi pa nagkakaroon ng koneksyon ang robot.

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 session token o API key (client role)

Nagre-register ng bagong robot at ibinabalik ang id nito. Isang robot lang ang puwedeng pagmayarian ng isang motor board hardware id; tinatanggihan ang collision gamit ang status 409.

GET/api/client/profileBearer session token o API key (client role)

Ibinabalik ang client profile ng authenticated na user.

PATCH/api/client/profileBearer session token o API key (client role)

Ina-update ang mga field ng client profile.

GET/api/client/datasetsBearer session token o API key (client role)

Naglilista ng mga cloud dataset ng kliyente kasama ang bilang ng episode at sukat.

GET/api/client/invoicesBearer session token o API key (client role)

Naglilista ng mga buwanang invoice ng kliyente.

GET/api/client/statsBearer session token o API key (client role)

Ibinabalik ang usage statistics para sa client dashboard.

Mga operator endpoint

Ang panig ng operator: profile at availability, certification, scheduling, at earnings statistics.

GET/api/operator/profileBearer session token o API key (operator role)

Ibinabalik ang operator profile ng authenticated na user.

POST/api/operator/profileBearer session token o API key (operator role)

Gumagawa o nag-a-update ng operator profile.

GET/api/operator/available-robotsBearer session token o API key (operator role)

Naglilista ng mga robot na available ngayon at tugma sa mga certification ng operator.

GET/api/operator/certificationsBearer session token o API key (operator role)

Naglilista ng mga certification request ng operator at ang status nila.

POST/api/operator/certificationsBearer session token o API key (operator role)

Humihiling ng certification para sa isang robot type.

GET/api/operator/scheduleBearer session token o API key (operator role)

Ibinabalik ang lingguhang availability schedule ng operator.

POST/api/operator/scheduleBearer session token o API key (operator role)

Ina-update ang lingguhang availability schedule.

GET/api/operator/availabilityBearer session token o API key (operator role)

Ibinabalik ang kasalukuyang availability ng operator.

GET/api/operator/statsBearer session token o API key (operator role)

Ibinabalik ang earnings at session statistics para sa operator dashboard.

Sessions

Ang sessions ang pangunahing resource ng platform: iisang session ang isang tuloy-tuloy na teleoperation engagement sa pagitan ng operator at robot. Dumadaan ang session status sa PENDING, ACTIVE, PAUSED, COMPLETED, at CANCELLED.

GET/api/sessionsBearer session token o API key

Naglilista ng mga session para sa authenticated na user. Nakikita ng mga operator ang mga session na pinatakbo nila; nakikita ng mga kliyente ang mga session sa robot nila. Bahagyang naiiba ang field set sa pagitan ng dalawang view: kasama sa client view ang episodes_collected at data_collected_mb, kasama sa operator view ang operator_earnings_cents.

NameInTypeDescription
statusquerystringOpsyonal. I-filter ayon sa session status, halimbawa ACTIVE o COMPLETED. Iwan kung gusto ang lahat.
limitquerynumberOpsyonal. Page size, default 50, maximum 100.
offsetquerynumberOpsyonal. Pagination offset, default 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 session token o API key (operator role)

Nagsisimula ng teleoperation session sa isang available na robot. Kailangan ang operator role: hindi puwedeng magsimula ng session ang mga kliyente. Isang ACTIVE o PAUSED na session lang ang puwedeng hawakan ng operator nang sabay, at dapat AVAILABLE ang status ng robot sa oras na iyon. Sa isang immediate na start, lumilipat ang robot sa IN_SESSION at ina-notify ang kliyente.

NameInTypeDescription
robotIdbodystringKailangan. Id ng robot na papatakbuhin. Dapat AVAILABLE ang robot.
operatorIdbodystringOpsyonal. Explicit na operator id; default sa authenticated na operator.
scheduledForbodystring (ISO 8601)Opsyonal. Nagsi-schedule ng session sa hinaharap na oras sa halip na simulan agad.
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 session token o API key

Ibinabalik ang isang session kasama ang mga detalye nito.

PATCH/api/sessions/[id]Bearer session token o API key

Ina-update ang session lifecycle: pause, resume, end, at kaugnay na aksyon.

POST/api/sessions/[id]/extendBearer session token o API key (client, may-ari ng session)

Humihiling ng extension ng session. Ang kliyenteng may-ari ng session lang ang puwedeng tumawag dito, at dapat ACTIVE ang session. Nila-log ang request bilang session event at nakakatanggap ng notification ang operator; ang extension mismo ay nangyayari kapag kumilos ang operator dito.

NameInTypeDescription
idpathstringAng session id.
additionalMinutesbodynumberHinihiling na haba ng extension sa minuto.
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 session token o API key

Naglilista ng mga chat message ng isang session.

POST/api/sessions/[id]/messagesBearer session token o API key

Nagpapadala ng chat message sa isang session.

POST/api/sessions/[id]/rateBearer session token o API key (client)

Nire-rate ang isang natapos na session sa 1 hanggang 5 star scale, may opsyonal na comment.

POST/api/sessions/exportBearer session token o API key

Nag-e-export ng session data.

Payments

Dumadaan sa Stripe ang lahat ng galaw ng pera. Gumagamit ang client billing ng Stripe customer na may saved payment method; gumagamit ang operator payout ng Stripe Connect. Hindi kailanman nag-i-store ang platform mismo ng card o bank data.

POST/api/stripe/customerBearer session token (client role)

Gumagawa o ibinabalik ang Stripe customer na ginagamit para sa client billing.

GET/api/stripe/connectBearer session token (operator role)

Ibinabalik ang status ng Stripe Connect account ng operator.

POST/api/stripe/connectBearer session token (operator role)

Sinisimulan ang Stripe Connect onboarding para sa operator payout.

POST/api/stripe/setup-intentBearer session token (client role)

Gumagawa ng Stripe SetupIntent para sa pag-save ng payment method.

POST/api/stripe/portalBearer session token (client role)

Gumagawa ng Stripe billing portal session para sa pamamahala ng payment method at invoice.

GET/api/stripe/payoutBearer session token (operator role)

Ibinabalik ang impormasyon ng payout para sa authenticated na operator.

POST/api/stripe/payoutBearer session token (operator role)

Humihiling ng payout ng naipong earnings. Ang minimum na payout ay 10.00 EUR.

POST/api/stripe/webhookStripe webhook signature

Tumatanggap ng Stripe webhook event. Tinatawag ng Stripe, hindi ng API client.

Mga public endpoint

Walang kailangang authentication ang mga endpoint na ito. Ligtas silang tawagin mula sa monitoring, marketing page, o status probe.

GET/api/health

Health check para sa API at koneksyon nito sa database. Nagbabalik ng 200 kapag maayos ang dalawa; kung nabigo ang database check, ibinabalik ang parehong shape na may status at db na naka-set sa error at 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]

Ibinabalik ang pampublikong impormasyon tungkol sa isang suportadong robot model.

GET/api/public/pricing

Ibinabalik ang kasalukuyang pampublikong pricing plan.

POST/api/contact

Nag-su-submit ng mensahe sa contact form. Nakaimbak muna ang mensahe bago ihatid sa pamamagitan ng email, kaya hindi ito nawawala kahit may pansamantalang outage sa mail: sa ganitong sitwasyon, iniuulat ng response na stored true at delivered false, at ine-retry ang delivery sa operational na antas.

NameInTypeDescription
namebodystringKailangan. Pangalan mo.
emailbodystringKailangan. Valid na email address para sa reply.
categorybodystringKailangan. Isa sa: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringKailangan. Maikling subject line.
messagebodystringKailangan. Ang laman ng mensahe.
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

Humihiling ng support para sa robot type na wala pa sa platform.

GET/api/stats

Ibinabalik ang pampublikong statistics ng platform.