API حوالہ

AY-Robots REST API https://www.ay-robots.com/api کے تحت موجود ہے اور دونوں سمتوں میں JSON بولتا ہے۔ یہ صفحہ آتھینٹیکیشن، رسپانس کنونشنز، اور ہر اینڈ پوائنٹ دستاویز کرتا ہے، ان روٹس کے لیے مکمل پیرامیٹر دستاویزات کے ساتھ جنہیں آپ پروگرامیٹک طور پر کال کرنے کا سب سے زیادہ امکان رکھتے ہیں۔

آخری اپڈیٹ 2026-08-09

آتھینٹیکیشن

ہر اینڈ پوائنٹ کو آتھینٹیکیشن درکار ہے جب تک کہ یہ Public سیکشن میں درج نہ ہو۔ API دو قسم کے کریڈینشلز قبول کرتا ہے، اور دونوں ایک ہی طریقے سے آتے ہیں: یا تو وہ سیشن کوکی جو ڈیش بورڈ پہلے سے بھیجتا ہے، یا Bearer ٹوکن کے ساتھ ایک Authorization ہیڈر۔

طریقہیہ کیسے کام کرتا ہےاسے استعمال کریں
براؤزر سیشنآپ کے لاگ ان اکاؤنٹ کا Supabase سیشن ٹوکن، کوکی یا Bearer ٹوکن کے طور پر بھیجا جاتا ہےخود ڈیش بورڈ اور آتھینٹیکیٹڈ براؤزر کنٹیکسٹ سے فوری تجربات
API کیayr_live_ پریفکس والی ایک کی، /dashboard/settings میں بنائی گئی اور Bearer ٹوکن کے طور پر بھیجی گئیاسکرپٹس، سرورز، CI، اور کوئی بھی چیز جسے براؤزر لاگ ان پر منحصر نہیں ہونا چاہیے
MCPhttps://www.ay-robots.com/api/mcp پر ہوسٹڈ MCP سرور (Streamable HTTP)LLM ایجنٹس اور ٹولز جو Model Context Protocol بولتے ہیں
bash
curl https://www.ay-robots.com/api/sessions \
  -H 'Authorization: Bearer ayr_live_your_key_here'
API کی سے آتھینٹیکیٹ کرنا

API کیز /dashboard/settings میں بنائی اور منسوخ کی جاتی ہیں۔ انہیں پاسورڈز کی طرح برتیں: سرور سائیڈ پر رکھیں، اور پرانی کو منسوخ کرنے سے پہلے ایک متبادل کی بنا کر روٹیٹ کریں۔ اگر آپ ڈیسک ٹاپ CLI استعمال کرتے ہیں، تو یہ پلیٹ فارم کو اس کمانڈ سے ایک مقامی MCP سرور کے طور پر بھی ظاہر کر سکتا ہے: ay-robots mcp۔

رسپانسز JSON ہوتے ہیں۔ ایررز ایک مستقل شکل استعمال کرتے ہیں: ایک قابل مطالعہ پیغام رکھنے والا ایک واحد error فیلڈ والا JSON آبجیکٹ، مناسب 4xx یا 5xx اسٹیٹس کوڈ کے ساتھ دیا جاتا ہے۔ کامیاب رسپانسز براہ راست ریسورس واپس کرتے ہیں؛ کچھ اینڈ پوائنٹس فہرستوں کو ایک نامزد فیلڈ میں لپیٹتے ہیں، جو نیچے دی گئی مثالیں جہاں اہم ہے وہاں دکھاتی ہیں۔

Auth اینڈ پوائنٹس

اکاؤنٹ اور پروفائل کی بنیادی کارروائیاں۔ یہ بنیادی طور پر خود ڈیش بورڈ استعمال کرتا ہے، لیکن یہ کسی بھی درست کریڈینشل کے ساتھ کام کرتے ہیں۔

GET/api/auth/profileBearer سیشن ٹوکن یا API کی

آتھینٹیکیٹڈ صارف کا پروفائل واپس کرتا ہے۔

POST/api/auth/profileBearer سیشن ٹوکن یا API کی

ڈسپلے نام اور نوٹیفیکیشن ترجیحات جیسے پروفائل فیلڈز اپڈیٹ کرتا ہے۔

POST/api/auth/syncBearer سیشن ٹوکن

Supabase auth صارف کو پلیٹ فارم یوزر ریکارڈ کے ساتھ ہم آہنگ کرتا ہے۔

GET/api/auth/check-onboardingBearer سیشن ٹوکن

رپورٹ کرتا ہے کہ آیا آتھینٹیکیٹڈ صارف نے اونبورڈنگ مکمل کر لی ہے۔

POST/api/auth/avatarBearer سیشن ٹوکن

آتھینٹیکیٹڈ صارف کے لیے ایک نئی اوتار تصویر اپ لوڈ کرتا ہے۔

کلائنٹ اینڈ پوائنٹس

ہر وہ چیز جو ایک روبوٹ مالک منظم کرتا ہے: رجسٹرڈ روبوٹس، کلائنٹ پروفائل، ڈیٹاسیٹس، انوائسز، اور ڈیش بورڈ اعداد و شمار۔

GET/api/client/robotsBearer سیشن ٹوکن یا API کی (client رول)

آتھینٹیکیٹڈ کلائنٹ کے رجسٹرڈ روبوٹس کو تازہ ترین پہلے، 50 اندراجات تک، فہرست کرتا ہے۔ ٹائم اسٹیمپس ISO 8601 ہیں؛ روبوٹ کے ایک بار کنیکٹ ہونے تک last_online اور last_heartbeat null رہتے ہیں۔

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 سیشن ٹوکن یا API کی (client رول)

ایک نیا روبوٹ رجسٹر کرتا ہے اور اس کی id واپس کرتا ہے۔ ایک موٹر بورڈ ہارڈویئر id صرف ایک روبوٹ سے تعلق رکھ سکتی ہے؛ ٹکراؤ 409 اسٹیٹس کے ساتھ مسترد کیا جاتا ہے۔

GET/api/client/profileBearer سیشن ٹوکن یا API کی (client رول)

آتھینٹیکیٹڈ صارف کا کلائنٹ پروفائل واپس کرتا ہے۔

PATCH/api/client/profileBearer سیشن ٹوکن یا API کی (client رول)

کلائنٹ پروفائل فیلڈز اپڈیٹ کرتا ہے۔

GET/api/client/datasetsBearer سیشن ٹوکن یا API کی (client رول)

کلائنٹ کے کلاؤڈ ڈیٹاسیٹس کو ایپیسوڈ کاؤنٹس اور سائزز کے ساتھ فہرست کرتا ہے۔

GET/api/client/invoicesBearer سیشن ٹوکن یا API کی (client رول)

کلائنٹ کے ماہانہ انوائسز فہرست کرتا ہے۔

GET/api/client/statsBearer سیشن ٹوکن یا API کی (client رول)

کلائنٹ ڈیش بورڈ کے لیے استعمال کے اعداد و شمار واپس کرتا ہے۔

آپریٹر اینڈ پوائنٹس

آپریٹر کا پہلو: پروفائل اور دستیابی، سرٹیفیکیشنز، شیڈولنگ، اور آمدنی کے اعداد و شمار۔

GET/api/operator/profileBearer سیشن ٹوکن یا API کی (operator رول)

آتھینٹیکیٹڈ صارف کا آپریٹر پروفائل واپس کرتا ہے۔

POST/api/operator/profileBearer سیشن ٹوکن یا API کی (operator رول)

آپریٹر پروفائل بناتا یا اپڈیٹ کرتا ہے۔

GET/api/operator/available-robotsBearer سیشن ٹوکن یا API کی (operator رول)

ایسے روبوٹس فہرست کرتا ہے جو فی الحال دستیاب ہیں اور آپریٹر کی سرٹیفیکیشنز سے میل کھاتے ہیں۔

GET/api/operator/certificationsBearer سیشن ٹوکن یا API کی (operator رول)

آپریٹر کی سرٹیفیکیشن درخواستیں اور ان کی حیثیت فہرست کرتا ہے۔

POST/api/operator/certificationsBearer سیشن ٹوکن یا API کی (operator رول)

ایک روبوٹ ٹائپ کے لیے سرٹیفیکیشن کی درخواست دیتا ہے۔

GET/api/operator/scheduleBearer سیشن ٹوکن یا API کی (operator رول)

آپریٹر کا ہفتہ وار دستیابی شیڈول واپس کرتا ہے۔

POST/api/operator/scheduleBearer سیشن ٹوکن یا API کی (operator رول)

ہفتہ وار دستیابی شیڈول اپڈیٹ کرتا ہے۔

GET/api/operator/availabilityBearer سیشن ٹوکن یا API کی (operator رول)

آپریٹر کی موجودہ دستیابی واپس کرتا ہے۔

GET/api/operator/statsBearer سیشن ٹوکن یا API کی (operator رول)

آپریٹر ڈیش بورڈ کے لیے آمدنی اور سیشن کے اعداد و شمار واپس کرتا ہے۔

سیشنز

سیشنز پلیٹ فارم کا بنیادی ریسورس ہیں: ایک سیشن ایک آپریٹر اور ایک روبوٹ کے درمیان ایک مسلسل ٹیلی آپریشن مصروفیت ہے۔ سیشن اسٹیٹس PENDING، ACTIVE، PAUSED، COMPLETED، اور CANCELLED سے گزرتی ہے۔

GET/api/sessionsBearer سیشن ٹوکن یا API کی

آتھینٹیکیٹڈ صارف کے لیے سیشنز فہرست کرتا ہے۔ آپریٹرز وہ سیشنز دیکھتے ہیں جو انہوں نے چلائے؛ کلائنٹس اپنے روبوٹس پر سیشنز دیکھتے ہیں۔ دونوں ویوز کے درمیان فیلڈ سیٹ قدرے مختلف ہے: client ویو میں episodes_collected اور data_collected_mb شامل ہیں، operator ویو میں operator_earnings_cents شامل ہے۔

NameInTypeDescription
statusquerystringاختیاری۔ سیشن اسٹیٹس کے مطابق فلٹر کریں، مثلاً ACTIVE یا COMPLETED۔ سب فہرست کرنے کے لیے چھوڑ دیں۔
limitquerynumberاختیاری۔ پیج سائز، ڈیفالٹ 50، زیادہ سے زیادہ 100۔
offsetquerynumberاختیاری۔ پیجینیشن آفسیٹ، ڈیفالٹ 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 سیشن ٹوکن یا API کی (operator رول)

ایک دستیاب روبوٹ پر ایک ٹیلی آپریشن سیشن شروع کرتا ہے۔ operator رول درکار ہے: کلائنٹس سیشنز شروع نہیں کر سکتے۔ ایک آپریٹر بیک وقت زیادہ سے زیادہ ایک ACTIVE یا PAUSED سیشن رکھ سکتا ہے، اور روبوٹ کی موجودہ حیثیت لازماً AVAILABLE ہونی چاہیے۔ فوری آغاز پر، روبوٹ IN_SESSION میں بدل جاتا ہے اور کلائنٹ کو مطلع کیا جاتا ہے۔

NameInTypeDescription
robotIdbodystringلازمی۔ جس روبوٹ کو چلانا ہے اس کی id۔ روبوٹ لازماً AVAILABLE ہونا چاہیے۔
operatorIdbodystringاختیاری۔ واضح آپریٹر id؛ آتھینٹیکیٹڈ آپریٹر ڈیفالٹ ہے۔
scheduledForbodystring (ISO 8601)اختیاری۔ فوری شروع کرنے کے بجائے سیشن کو مستقبل کے وقت کے لیے شیڈول کرتا ہے۔
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 سیشن ٹوکن یا API کی

اس کی تفصیلات کے ساتھ ایک واحد سیشن واپس کرتا ہے۔

PATCH/api/sessions/[id]Bearer سیشن ٹوکن یا API کی

سیشن لائف سائیکل اپڈیٹ کرتا ہے: pause، resume، end، اور متعلقہ اعمال۔

POST/api/sessions/[id]/extendBearer سیشن ٹوکن یا API کی (client، سیشن کا مالک)

سیشن ایکسٹینشن کی درخواست دیتا ہے۔ صرف وہ کلائنٹ جو سیشن کا مالک ہے اسے کال کر سکتا ہے، اور سیشن لازماً ACTIVE ہونا چاہیے۔ درخواست ایک سیشن ایونٹ کے طور پر لاگ کی جاتی ہے اور آپریٹر کو ایک نوٹیفیکیشن ملتی ہے؛ ایکسٹینشن خود اسی وقت ہوتی ہے جب آپریٹر اس پر عمل کرتا ہے۔

NameInTypeDescription
idpathstringسیشن id۔
additionalMinutesbodynumberمنٹوں میں درخواست کردہ ایکسٹینشن کی لمبائی۔
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 سیشن ٹوکن یا API کی

ایک سیشن کے چیٹ پیغامات فہرست کرتا ہے۔

POST/api/sessions/[id]/messagesBearer سیشن ٹوکن یا API کی

ایک سیشن میں ایک چیٹ پیغام بھیجتا ہے۔

POST/api/sessions/[id]/rateBearer سیشن ٹوکن یا API کی (client)

ایک مکمل شدہ سیشن کو 1 سے 5 ستارے کے پیمانے پر ریٹ کرتا ہے، اختیاری تبصرے کے ساتھ۔

POST/api/sessions/exportBearer سیشن ٹوکن یا API کی

سیشن ڈیٹا ایکسپورٹ کرتا ہے۔

ادائیگیاں

تمام رقم کی نقل و حرکت Stripe کے ذریعے چلتی ہے۔ کلائنٹ بلنگ ایک محفوظ پیمنٹ میتھڈ والا Stripe کسٹمر استعمال کرتی ہے؛ آپریٹر پے آؤٹس Stripe Connect استعمال کرتے ہیں۔ پلیٹ فارم خود کبھی کارڈ یا بینک ڈیٹا محفوظ نہیں کرتا۔

POST/api/stripe/customerBearer سیشن ٹوکن (client رول)

کلائنٹ بلنگ کے لیے استعمال ہونے والا Stripe کسٹمر بناتا یا واپس کرتا ہے۔

GET/api/stripe/connectBearer سیشن ٹوکن (operator رول)

آپریٹر کے Stripe Connect اکاؤنٹ کی حیثیت واپس کرتا ہے۔

POST/api/stripe/connectBearer سیشن ٹوکن (operator رول)

آپریٹر پے آؤٹس کے لیے Stripe Connect اونبورڈنگ شروع کرتا ہے۔

POST/api/stripe/setup-intentBearer سیشن ٹوکن (client رول)

ایک پیمنٹ میتھڈ محفوظ کرنے کے لیے ایک Stripe SetupIntent بناتا ہے۔

POST/api/stripe/portalBearer سیشن ٹوکن (client رول)

پیمنٹ میتھڈز اور انوائسز کے انتظام کے لیے ایک Stripe بلنگ پورٹل سیشن بناتا ہے۔

GET/api/stripe/payoutBearer سیشن ٹوکن (operator رول)

آتھینٹیکیٹڈ آپریٹر کے لیے پے آؤٹ کی معلومات واپس کرتا ہے۔

POST/api/stripe/payoutBearer سیشن ٹوکن (operator رول)

جمع شدہ آمدنی کے پے آؤٹ کی درخواست کرتا ہے۔ کم از کم پے آؤٹ 10.00 EUR ہے۔

POST/api/stripe/webhookStripe webhook signature

Stripe ویب ہک ایونٹس وصول کرتا ہے۔ Stripe کے ذریعے کال کیا جاتا ہے، API کلائنٹس کے ذریعے نہیں۔

پبلک اینڈ پوائنٹس

ان اینڈ پوائنٹس کو کسی آتھینٹیکیشن کی ضرورت نہیں۔ انہیں مانیٹرنگ، مارکیٹنگ صفحات، یا اسٹیٹس پروب سے کال کرنا محفوظ ہے۔

GET/api/health

API اور اس کے ڈیٹابیس کنکشن کے لیے ہیلتھ چیک۔ دونوں ٹھیک ہونے پر 200 واپس کرتا ہے؛ اگر ڈیٹابیس چیک ناکام ہو، تو وہی شکل واپس کی جاتی ہے جس میں status اور db error پر سیٹ ہوں اور 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]

ایک سپورٹڈ روبوٹ ماڈل کے بارے میں پبلک معلومات واپس کرتا ہے۔

GET/api/public/pricing

موجودہ پبلک پرائسنگ پلانز واپس کرتا ہے۔

POST/api/contact

ایک کنٹیکٹ فارم پیغام جمع کرتا ہے۔ پیغام کو ای میل کے ذریعے پہنچانے سے پہلے پہلے محفوظ کیا جاتا ہے، اس لیے میل کی عارضی بندش اسے ضائع نہیں کرتی: اس صورت میں، رسپانس stored true اور delivered false رپورٹ کرتا ہے، اور ڈیلیوری آپریشنل طور پر دوبارہ کوشش کی جاتی ہے۔

NameInTypeDescription
namebodystringلازمی۔ آپ کا نام۔
emailbodystringلازمی۔ جواب کے لیے ایک درست ای میل ایڈریس۔
categorybodystringلازمی۔ ان میں سے ایک: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other۔
subjectbodystringلازمی۔ مختصر موضوع کی لائن۔
messagebodystringلازمی۔ پیغام کا متن۔
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

ایسی روبوٹ ٹائپ کے لیے سپورٹ کی درخواست کرتا ہے جو ابھی تک پلیٹ فارم پر نہیں ہے۔

GET/api/stats

پبلک پلیٹ فارم کے اعداد و شمار واپس کرتا ہے۔