API maʼlumotnomasi

AY-Robots REST API'si https://www.ay-robots.com/api manzilida joylashgan va ikkala yoʻnalishda ham JSON bilan gaplashadi. Bu sahifa autentifikatsiyani, javob konventsiyalarini va har bir endpointni, dasturiy chaqirishingiz eng ehtimolli marshrutlar uchun toʻliq parametr hujjatlari bilan yoritadi.

Oxirgi yangilangan 2026-08-09

Autentifikatsiya

Ochiq boʻlim ostida sanalmagan boʻlsa, har bir endpoint autentifikatsiyani talab qiladi. API ikki turdagi hisob maʼlumotini qabul qiladi, ikkalasi ham bir xil yoʻl bilan keladi: yo boshqaruv paneli allaqachon yuboradigan sessiya cookie sifatida, yoki Bearer tokeni bilan Authorization sarlavhasi sifatida.

UsulQanday ishlaydiNima uchun mos
Brauzer sessiyasiTizimga kirgan hisobingizning Supabase sessiya tokeni, cookie yoki Bearer token sifatida yuborilganBoshqaruv panelining oʻzi va autentifikatsiyalangan brauzer kontekstidan tezkor tajribalar
API-kalit/dashboard/settings da yaratilgan va Bearer token sifatida yuboriladigan ayr_live_ prefiksli kalitSkriptlar, serverlar, CI va brauzer kirishiga bogʻliq boʻlmasligi kerak boʻlgan hamma narsa
MCPhttps://www.ay-robots.com/api/mcp dagi hostlangan MCP server (Streamable HTTP)Model Context Protocol'da gaplashadigan LLM agentlari va vositalar
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
API-kalit bilan autentifikatsiya

API-kalitlar /dashboard/settings da yaratiladi va bekor qilinadi. Ularni parol kabi koʻring: serverda saqlang va avval yangi kalitni yaratib, keyin eskisini bekor qilib rotatsiya qiling. Desktop CLI dan foydalansangiz, u platformani ay-robots mcp buyrugʻi bilan mahalliy MCP server sifatida ham taqdim eta oladi.

Javoblar JSON koʻrinishida. Xatolar izchil shaklga ega: inson oʻqiy oladigan xabar bilan bitta error maydonli JSON obyekti, mos 4xx yoki 5xx status kodi bilan yetkaziladi. Muvaffaqiyatli javoblar resursni toʻgʻridan-toʻgʻri qaytaradi; bir nechta endpointlar roʻyxatlarni nomlangan maydonga oʻraydi, quyidagi misollar bu muhim boʻlgan joylarda koʻrsatadi.

Auth endpointlari

Hisob va profil bilan bogʻliq ishlar. Bu endpointlardan asosan boshqaruv panelining oʻzi foydalanadi, lekin ular har qanday amaldagi hisob maʼlumoti bilan ishlaydi.

GET/api/auth/profileBearer sessiya-tokeni yoki API-kalit

Autentifikatsiyadan oʻtgan foydalanuvchining profilini qaytaradi.

POST/api/auth/profileBearer sessiya-tokeni yoki API-kalit

Koʻrsatiladigan nom va bildirishnoma sozlamalari kabi profil maydonlarini yangilaydi.

POST/api/auth/syncBearer sessiya-tokeni

Supabase auth foydalanuvchisini platforma foydalanuvchi yozuvi bilan sinxronlashtiradi.

GET/api/auth/check-onboardingBearer sessiya-tokeni

Autentifikatsiyadan oʻtgan foydalanuvchi onboardingni tugatganini bildiradi.

POST/api/auth/avatarBearer sessiya-tokeni

Autentifikatsiyadan oʻtgan foydalanuvchi uchun yangi avatar rasmini yuklaydi.

Mijoz endpointlari

Robot egasi boshqaradigan hamma narsa: roʻyxatga olingan robotlar, mijoz profili, datasetlar, hisob-fakturalar va boshqaruv paneli statistikasi.

GET/api/client/robotsBearer sessiya-tokeni yoki API-kalit (mijoz roli)

Autentifikatsiyadan oʻtgan mijoz roʻyxatga olgan robotlarni, eng yangisi birinchi boʻlib, 50 tagacha yozuvni sanaydi. Vaqt belgilari ISO 8601; robot bir marta ulanmaguncha last_online va last_heartbeat null boʻladi.

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 sessiya-tokeni yoki API-kalit (mijoz roli)

Yangi robotni roʻyxatga oladi va uning id sini qaytaradi. Motor plata uskuna id si faqat bitta robotga tegishli boʻlishi mumkin; toʻqnashuv 409 statusi bilan rad etiladi.

GET/api/client/profileBearer sessiya-tokeni yoki API-kalit (mijoz roli)

Autentifikatsiyadan oʻtgan foydalanuvchining mijoz profilini qaytaradi.

PATCH/api/client/profileBearer sessiya-tokeni yoki API-kalit (mijoz roli)

Mijoz profili maydonlarini yangilaydi.

GET/api/client/datasetsBearer sessiya-tokeni yoki API-kalit (mijoz roli)

Mijozning bulutli datasetlarini epizod soni va hajmi bilan sanaydi.

GET/api/client/invoicesBearer sessiya-tokeni yoki API-kalit (mijoz roli)

Mijozning oylik hisob-fakturalarini sanaydi.

GET/api/client/statsBearer sessiya-tokeni yoki API-kalit (mijoz roli)

Mijoz boshqaruv paneli uchun foydalanish statistikasini qaytaradi.

Operator endpointlari

Operator tomoni: profil va mavjudlik, sertifikatlar, jadval tuzish va daromad statistikasi.

GET/api/operator/profileBearer sessiya-tokeni yoki API-kalit (operator roli)

Autentifikatsiyadan oʻtgan foydalanuvchining operator profilini qaytaradi.

POST/api/operator/profileBearer sessiya-tokeni yoki API-kalit (operator roli)

Operator profilini yaratadi yoki yangilaydi.

GET/api/operator/available-robotsBearer sessiya-tokeni yoki API-kalit (operator roli)

Hozir mavjud boʻlgan va operatorning sertifikatlariga mos keladigan robotlarni sanaydi.

GET/api/operator/certificationsBearer sessiya-tokeni yoki API-kalit (operator roli)

Operatorning sertifikat soʻrovlari va ularning holatini sanaydi.

POST/api/operator/certificationsBearer sessiya-tokeni yoki API-kalit (operator roli)

Robot turi uchun sertifikat soʻraydi.

GET/api/operator/scheduleBearer sessiya-tokeni yoki API-kalit (operator roli)

Operatorning haftalik mavjudlik jadvalini qaytaradi.

POST/api/operator/scheduleBearer sessiya-tokeni yoki API-kalit (operator roli)

Haftalik mavjudlik jadvalini yangilaydi.

GET/api/operator/availabilityBearer sessiya-tokeni yoki API-kalit (operator roli)

Operatorning joriy mavjudligini qaytaradi.

GET/api/operator/statsBearer sessiya-tokeni yoki API-kalit (operator roli)

Operator boshqaruv paneli uchun daromad va sessiya statistikasini qaytaradi.

Sessiyalar

Sessiyalar platformaning asosiy resursi: bitta sessiya operator va robot orasidagi uzluksiz teleoperatsiya faoliyatining bitta davri. Sessiya statusi PENDING, ACTIVE, PAUSED, COMPLETED va CANCELLED boʻylab harakatlanadi.

GET/api/sessionsBearer sessiya-tokeni yoki API-kalit

Autentifikatsiyadan oʻtgan foydalanuvchi uchun sessiyalarni sanaydi. Operatorlar oʻzlari boshqargan sessiyalarni koʻradi; mijozlar oʻz robotlaridagi sessiyalarni koʻradi. Ikkala koʻrinish orasida maydon toʻplami biroz farq qiladi: mijoz koʻrinishi episodes_collected va data_collected_mb ni oʻz ichiga oladi, operator koʻrinishi esa operator_earnings_cents ni.

NameInTypeDescription
statusquerystringIxtiyoriy. Sessiya statusi boʻyicha filtrlaydi, masalan ACTIVE yoki COMPLETED. Hammasini sanash uchun tashlab keting.
limitquerynumberIxtiyoriy. Sahifa hajmi, standart 50, maksimum 100.
offsetquerynumberIxtiyoriy. Sahifalash siljishi, standart 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 sessiya-tokeni yoki API-kalit (operator roli)

Mavjud robotda teleoperatsiya sessiyasini boshlaydi. Operator rolini talab qiladi: mijozlar sessiya boshlay olmaydi. Operator bir vaqtda koʻpi bilan bitta ACTIVE yoki PAUSED sessiyani ushlab tura oladi, robot esa hozir AVAILABLE statusiga ega boʻlishi kerak. Darhol boshlanganda robot IN_SESSION ga oʻtadi va mijozga xabar beriladi.

NameInTypeDescription
robotIdbodystringMajburiy. Boshqariladigan robotning id si. Robot AVAILABLE boʻlishi kerak.
operatorIdbodystringIxtiyoriy. Aniq operator id si; standart holatda autentifikatsiyadan oʻtgan operator.
scheduledForbodystring (ISO 8601)Ixtiyoriy. Sessiyani darhol boshlash oʻrniga kelajakdagi vaqtga rejalashtiradi.
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 sessiya-tokeni yoki API-kalit

Bitta sessiyani uning tafsilotlari bilan qaytaradi.

PATCH/api/sessions/[id]Bearer sessiya-tokeni yoki API-kalit

Sessiya hayot aylanishini yangilaydi: pauza, davom ettirish, tugatish va tegishli amallar.

POST/api/sessions/[id]/extendBearer sessiya-tokeni yoki API-kalit (mijoz, sessiya egasi)

Sessiya uzaytirishini soʻraydi. Faqat sessiya egasi boʻlgan mijoz ushbu endpointni chaqira oladi, sessiya esa ACTIVE boʻlishi kerak. Soʻrov sessiya hodisasi sifatida qayd etiladi va operator bildirishnoma oladi; uzaytirishning oʻzi operator unga javob berganda sodir boʻladi.

NameInTypeDescription
idpathstringSessiya id si.
additionalMinutesbodynumberSoʻralgan uzaytirish uzunligi, daqiqalarda.
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 sessiya-tokeni yoki API-kalit

Sessiyaning chat xabarlarini sanaydi.

POST/api/sessions/[id]/messagesBearer sessiya-tokeni yoki API-kalit

Sessiyada chat xabarini yuboradi.

POST/api/sessions/[id]/rateBearer sessiya-tokeni yoki API-kalit (mijoz)

Tugallangan sessiyani 1 dan 5 yulduzgacha shkalada, ixtiyoriy izoh bilan baholaydi.

POST/api/sessions/exportBearer sessiya-tokeni yoki API-kalit

Sessiya maʼlumotini eksport qiladi.

Toʻlovlar

Barcha pul harakati Stripe orqali amalga oshadi. Mijoz hisob-kitobi saqlangan toʻlov usuliga ega Stripe mijozidan foydalanadi, operator toʻlovlari esa Stripe Connect orqali oʻtadi. Platformaning oʻzi hech qachon karta yoki bank maʼlumotini saqlamaydi.

POST/api/stripe/customerBearer sessiya-tokeni (mijoz roli)

Mijoz hisob-kitobi uchun ishlatiladigan Stripe mijozini yaratadi yoki qaytaradi.

GET/api/stripe/connectBearer sessiya-tokeni (operator roli)

Operatorning Stripe Connect hisobi holatini qaytaradi.

POST/api/stripe/connectBearer sessiya-tokeni (operator roli)

Operator toʻlovlari uchun Stripe Connect onboardingini boshlaydi.

POST/api/stripe/setup-intentBearer sessiya-tokeni (mijoz roli)

Toʻlov usulini saqlash uchun Stripe SetupIntent yaratadi.

POST/api/stripe/portalBearer sessiya-tokeni (mijoz roli)

Toʻlov usullari va hisob-fakturalarni boshqarish uchun Stripe billing portal sessiyasini yaratadi.

GET/api/stripe/payoutBearer sessiya-tokeni (operator roli)

Autentifikatsiyadan oʻtgan operator uchun toʻlov maʼlumotini qaytaradi.

POST/api/stripe/payoutBearer sessiya-tokeni (operator roli)

Yigʻilgan daromadning toʻlovini soʻraydi. Minimal toʻlov 10,00 EUR.

POST/api/stripe/webhookStripe webhook imzosi

Stripe webhook hodisalarini qabul qiladi. API klientlari emas, Stripe tomonidan chaqiriladi.

Ochiq endpointlar

Bu endpointlar hech qanday autentifikatsiya talab qilmaydi. Ularni monitoring, marketing sahifalari yoki status tekshiruvidan xavfsiz chaqirish mumkin.

GET/api/health

API va uning maʼlumotlar bazasi ulanishi uchun health-check. Ikkalasi ham yaxshi boʻlsa 200 qaytaradi; maʼlumotlar bazasi tekshiruvi muvaffaqiyatsiz boʻlsa, xuddi shu tuzilma status va db ni error ga oʻrnatilgan holda va HTTP status 503 bilan qaytariladi.

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]

Qoʻllab-quvvatlanadigan robot modeli haqida ochiq maʼlumotni qaytaradi.

GET/api/public/pricing

Joriy ochiq narx rejalarini qaytaradi.

POST/api/contact

Kontakt forma xabarini yuboradi. Xabar avval saqlanadi, keyin email orqali yetkaziladi, shuning uchun vaqtinchalik mail uzilishi uni yoʻqotmaydi: bunday holatda javob stored true va delivered false ni bildiradi, yetkazish esa operativ ravishda qayta urinib koʻriladi.

NameInTypeDescription
namebodystringMajburiy. Ismingiz.
emailbodystringMajburiy. Javob uchun amaldagi email manzili.
categorybodystringMajburiy. Quyidagilardan biri: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other.
subjectbodystringMajburiy. Qisqa mavzu qatori.
messagebodystringMajburiy. Xabar matni.
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

Platformada hali boʻlmagan robot turi uchun qoʻllab-quvvatlashni soʻraydi.

GET/api/stats

Ochiq platforma statistikasini qaytaradi.