API reference

REST API AY-Robots berada di https://www.ay-robots.com/api dan bertutur JSON dalam kedua-dua arah. Halaman ini mendokumentasikan pengesahan, konvensyen respons, dan setiap titik akhir, dengan dokumentasi parameter penuh untuk laluan yang paling mungkin anda panggil secara berprogram.

Terakhir dikemas kini 2026-08-09

Pengesahan

Setiap titik akhir memerlukan pengesahan melainkan ia disenaraikan dalam bahagian Public. API menerima dua bentuk kelayakan, dan kedua-duanya tiba dengan cara yang sama: sama ada sebagai kuki sesi yang dihantar oleh papan pemuka pada bila-bila masa, atau sebagai header Authorization dengan token Bearer.

KaedahCara ia berfungsiGunakan untuk
Sesi pelayarToken sesi Supabase akaun anda yang log masuk, dihantar sebagai kuki atau sebagai token BearerPapan pemuka itu sendiri dan eksperimen pantas daripada konteks pelayar yang disahkan
Kunci APIKunci dengan awalan ayr_live_, dicipta di /dashboard/settings dan dihantar sebagai token BearerSkrip, pelayan, CI, dan apa jua yang tidak boleh bergantung pada log masuk pelayar
MCPPelayan MCP dihoskan di https://www.ay-robots.com/api/mcp (Streamable HTTP)Agen LLM dan alat yang bertutur Model Context Protocol
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
Mengesahkan dengan kunci API

Kunci API dicipta dan dibatalkan di /dashboard/settings. Layankan seperti kata laluan: simpan di sisi pelayan, dan pusingkan dengan mencipta kunci pengganti sebelum membatalkan yang lama. Jika anda menggunakan CLI desktop, ia juga boleh mendedahkan platform sebagai pelayan MCP tempatan dengan arahan: ay-robots mcp.

Respons adalah JSON. Ralat menggunakan bentuk yang konsisten: satu objek JSON dengan medan error tunggal yang mengandungi mesej boleh dibaca manusia, dihantar bersama kod status 4xx atau 5xx yang sesuai. Respons berjaya mengembalikan sumber secara terus; beberapa titik akhir membalut senarai dalam medan bernama, yang ditunjukkan oleh contoh di bawah apabila ia penting.

Titik akhir pengesahan

Perpaipan akaun dan profil. Ini terutamanya digunakan oleh papan pemuka itu sendiri, tetapi ia berfungsi dengan sebarang kelayakan yang sah.

GET/api/auth/profileToken sesi jenis Bearer atau kunci API

Mengembalikan profil pengguna yang disahkan.

POST/api/auth/profileToken sesi jenis Bearer atau kunci API

Mengemas kini medan profil seperti nama paparan dan keutamaan pemberitahuan.

POST/api/auth/syncToken sesi jenis Bearer

Menyelaraskan pengguna auth Supabase dengan rekod pengguna platform.

GET/api/auth/check-onboardingToken sesi jenis Bearer

Melaporkan sama ada pengguna yang disahkan telah melengkapkan onboarding.

POST/api/auth/avatarToken sesi jenis Bearer

Memuat naik imej avatar baharu untuk pengguna yang disahkan.

Titik akhir pelanggan

Segala yang diuruskan oleh pemilik robot: robot yang didaftarkan, profil pelanggan, set data, invois, dan statistik papan pemuka.

GET/api/client/robotsToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Menyenaraikan robot yang didaftarkan oleh pelanggan yang disahkan, terbaharu dahulu, sehingga 50 rekod. Cap masa adalah ISO 8601; last_online dan last_heartbeat adalah null sehingga robot pernah menyambung sekali.

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/robotsToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Mendaftarkan robot baharu dan mengembalikan id-nya. hardware id papan motor hanya boleh tergolong kepada satu robot; pertembungan ditolak dengan status 409.

GET/api/client/profileToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Mengembalikan profil pelanggan pengguna yang disahkan.

PATCH/api/client/profileToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Mengemas kini medan profil pelanggan.

GET/api/client/datasetsToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Menyenaraikan set data awan pelanggan dengan bilangan episod dan saiz.

GET/api/client/invoicesToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Menyenaraikan invois bulanan pelanggan.

GET/api/client/statsToken sesi jenis Bearer atau kunci API (peranan pelanggan)

Mengembalikan statistik penggunaan untuk papan pemuka pelanggan.

Titik akhir operator

Bahagian operator: profil dan ketersediaan, sijil, penjadualan, dan statistik pendapatan.

GET/api/operator/profileToken sesi jenis Bearer atau kunci API (peranan operator)

Mengembalikan profil operator pengguna yang disahkan.

POST/api/operator/profileToken sesi jenis Bearer atau kunci API (peranan operator)

Mencipta atau mengemas kini profil operator.

GET/api/operator/available-robotsToken sesi jenis Bearer atau kunci API (peranan operator)

Menyenaraikan robot yang tersedia pada masa ini dan sepadan dengan sijil operator.

GET/api/operator/certificationsToken sesi jenis Bearer atau kunci API (peranan operator)

Menyenaraikan permintaan sijil operator dan statusnya.

POST/api/operator/certificationsToken sesi jenis Bearer atau kunci API (peranan operator)

Meminta sijil untuk satu jenis robot.

GET/api/operator/scheduleToken sesi jenis Bearer atau kunci API (peranan operator)

Mengembalikan jadual ketersediaan mingguan operator.

POST/api/operator/scheduleToken sesi jenis Bearer atau kunci API (peranan operator)

Mengemas kini jadual ketersediaan mingguan.

GET/api/operator/availabilityToken sesi jenis Bearer atau kunci API (peranan operator)

Mengembalikan ketersediaan semasa operator.

GET/api/operator/statsToken sesi jenis Bearer atau kunci API (peranan operator)

Mengembalikan statistik pendapatan dan sesi untuk papan pemuka operator.

Sesi

Sesi ialah sumber teras platform: satu sesi ialah satu penglibatan teleoperasi berterusan antara operator dan robot. Status sesi bergerak melalui PENDING, ACTIVE, PAUSED, COMPLETED, dan CANCELLED.

GET/api/sessionsToken sesi jenis Bearer atau kunci API

Menyenaraikan sesi untuk pengguna yang disahkan. Operator melihat sesi yang mereka kendalikan; pelanggan melihat sesi pada robot mereka. Set medan berbeza sedikit antara kedua-dua paparan: paparan pelanggan merangkumi episodes_collected dan data_collected_mb, paparan operator merangkumi operator_earnings_cents.

NameInTypeDescription
statusquerystringPilihan. Tapis mengikut status sesi, contohnya ACTIVE atau COMPLETED. Tinggalkan untuk menyenaraikan semua.
limitquerynumberPilihan. Saiz halaman, lalai 50, maksimum 100.
offsetquerynumberPilihan. Ofset penomboran halaman, lalai 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/sessionsToken sesi jenis Bearer atau kunci API (peranan operator)

Memulakan sesi teleoperasi pada robot yang tersedia. Memerlukan peranan operator: pelanggan tidak boleh memulakan sesi. Seorang operator boleh memegang paling banyak satu sesi ACTIVE atau PAUSED pada satu masa, dan robot itu mesti pada masa ini berstatus AVAILABLE. Pada permulaan segera robot bertukar kepada IN_SESSION dan pelanggan dimaklumkan.

NameInTypeDescription
robotIdbodystringWajib. Id robot yang perlu dikendalikan. Robot itu mesti AVAILABLE.
operatorIdbodystringPilihan. Id operator eksplisit; lalai kepada operator yang disahkan.
scheduledForbodystring (ISO 8601)Pilihan. Menjadualkan sesi untuk masa akan datang dan bukannya memulakannya serta-merta.
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]Token sesi jenis Bearer atau kunci API

Mengembalikan satu sesi tunggal berserta perinciannya.

PATCH/api/sessions/[id]Token sesi jenis Bearer atau kunci API

Mengemas kini kitaran hayat sesi: jeda, sambung semula, tamat, dan tindakan berkaitan.

POST/api/sessions/[id]/extendToken sesi jenis Bearer atau kunci API (pelanggan, pemilik sesi)

Meminta lanjutan sesi. Hanya pelanggan yang memiliki sesi boleh memanggil ini, dan sesi itu mesti ACTIVE. Permintaan direkodkan sebagai peristiwa sesi dan operator menerima pemberitahuan; lanjutan itu sendiri berlaku apabila operator bertindak ke atasnya.

NameInTypeDescription
idpathstringId sesi.
additionalMinutesbodynumberPanjang lanjutan yang diminta dalam minit.
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]/messagesToken sesi jenis Bearer atau kunci API

Menyenaraikan mesej sembang bagi satu sesi.

POST/api/sessions/[id]/messagesToken sesi jenis Bearer atau kunci API

Menghantar mesej sembang dalam satu sesi.

POST/api/sessions/[id]/rateToken sesi jenis Bearer atau kunci API (pelanggan)

Menilai sesi yang selesai pada skala 1 hingga 5 bintang, dengan komen pilihan.

POST/api/sessions/exportToken sesi jenis Bearer atau kunci API

Mengeksport data sesi.

Pembayaran

Semua pergerakan wang berjalan melalui Stripe. Pengebilan pelanggan menggunakan pelanggan Stripe dengan kaedah pembayaran yang disimpan; pengeluaran operator menggunakan Stripe Connect. Platform itu sendiri tidak pernah menyimpan data kad atau bank.

POST/api/stripe/customerToken sesi jenis Bearer (peranan pelanggan)

Mencipta atau mengembalikan pelanggan Stripe yang digunakan untuk pengebilan pelanggan.

GET/api/stripe/connectToken sesi jenis Bearer (peranan operator)

Mengembalikan status akaun Stripe Connect operator.

POST/api/stripe/connectToken sesi jenis Bearer (peranan operator)

Memulakan onboarding Stripe Connect untuk pengeluaran operator.

POST/api/stripe/setup-intentToken sesi jenis Bearer (peranan pelanggan)

Mencipta Stripe SetupIntent untuk menyimpan kaedah pembayaran.

POST/api/stripe/portalToken sesi jenis Bearer (peranan pelanggan)

Mencipta sesi portal pengebilan Stripe untuk menguruskan kaedah pembayaran dan invois.

GET/api/stripe/payoutToken sesi jenis Bearer (peranan operator)

Mengembalikan maklumat pengeluaran untuk operator yang disahkan.

POST/api/stripe/payoutToken sesi jenis Bearer (peranan operator)

Meminta pengeluaran pendapatan yang terkumpul. Pengeluaran minimum ialah 10.00 EUR.

POST/api/stripe/webhookTandatangan webhook Stripe

Menerima peristiwa webhook daripada Stripe. Dipanggil oleh Stripe, bukan oleh klien API.

Titik akhir awam

Titik akhir ini tidak memerlukan sebarang pengesahan. Selamat dipanggil daripada pemantauan, halaman pemasaran, atau probe status.

GET/api/health

Semakan kesihatan untuk API dan sambungan pangkalan datanya. Mengembalikan 200 apabila kedua-duanya baik; jika semakan pangkalan data gagal, bentuk yang sama dikembalikan dengan status dan db ditetapkan kepada error dan status HTTP 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]

Mengembalikan maklumat awam mengenai model robot yang disokong.

GET/api/public/pricing

Mengembalikan pelan harga awam semasa.

POST/api/contact

Menghantar mesej borang hubungi. Mesej itu disimpan dahulu dan kemudian dihantar melalui e-mel, jadi gangguan mel sementara tidak akan kehilangannya: dalam kes itu respons melaporkan stored true dan delivered false, dan penghantaran dicuba semula secara operasi.

NameInTypeDescription
namebodystringWajib. Nama anda.
emailbodystringWajib. Alamat e-mel yang sah untuk balasan.
categorybodystringWajib. Salah satu daripada: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringWajib. Baris subjek yang ringkas.
messagebodystringWajib. Kandungan mesej.
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

Meminta sokongan untuk jenis robot yang belum ada pada platform.

GET/api/stats

Mengembalikan statistik platform awam.