API reference
REST API از AY-Robots در آدرس https://www.ay-robots.com/api زندگی می کند و در هر دو جهت JSON صحبت می کند. این صفحه احراز هویت، قراردادهای پاسخ، و هر نقطه پایانی را مستند می کند، با مستندات کامل پارامتر برای مسیرهایی که به احتمال زیاد به صورت برنامه ای فراخوانی می کنید.
آخرین به روزرسانی 2026-08-09
احراز هویت
هر نقطه پایانی احراز هویت نیاز دارد مگر اینکه در بخش Public فهرست شده باشد. API دو شکل از اعتبارنامه را می پذیرد، و هر دو به همان روش می رسند: یا به عنوان کوکی نشستی که داشبورد از قبل می فرستد، یا به عنوان یک هدر Authorization با یک توکن Bearer.
| روش | چگونه کار می کند | استفاده برای |
|---|---|---|
| نشست مرورگر | توکن نشست Supabase حساب وارد شده شما، به عنوان کوکی یا به عنوان توکن Bearer فرستاده می شود | خود داشبورد و آزمایش های سریع از یک زمینه مرورگر احراز هویت شده |
| کلید API | یک کلید با پیشوند ayr_live_، ساخته شده در /dashboard/settings و به عنوان توکن Bearer فرستاده می شود | اسکریپت ها، سرورها، CI، و هر چیزی که نباید به ورود مرورگر وابسته باشد |
| MCP | سرور MCP میزبانی شده در آدرس https://www.ay-robots.com/api/mcp (Streamable HTTP) | agent های LLM و ابزارهایی که Model Context Protocol صحبت می کنند |
curl https://www.ay-robots.com/api/sessions \
-H 'Authorization: Bearer ayr_live_your_key_here'کلیدهای API در /dashboard/settings ساخته و باطل می شوند. با آن ها مثل رمز عبور رفتار کنید: آن ها را سمت سرور نگه دارید، و با ساختن یک کلید جایگزین قبل از باطل کردن کلید قدیمی چرخش کنید. اگر از CLI دسکتاپ استفاده می کنید، آن هم می تواند پلتفرم را به عنوان یک سرور MCP محلی با دستور نشان دهد: ay-robots mcp.
پاسخ ها JSON هستند. خطاها یک شکل ثابت استفاده می کنند: یک شیء JSON با یک فیلد error واحد که پیامی قابل خواندن برای انسان دارد، همراه با یک کد وضعیت 4xx یا 5xx مناسب تحویل داده می شود. پاسخ های موفق منبع را مستقیم برمی گردانند؛ چند نقطه پایانی لیست ها را در یک فیلد نام دار می پیچند، که مثال های زیر جایی که اهمیت دارد آن را نشان می دهند.
نقاط پایانی احراز هویت
لوله کشی حساب و پروفایل. این ها عمدتا توسط خود داشبورد استفاده می شوند، اما با هر اعتبارنامه معتبری کار می کنند.
/api/auth/profileتوکن نشست از نوع Bearer یا کلید APIپروفایل کاربر احراز هویت شده را برمی گرداند.
/api/auth/profileتوکن نشست از نوع Bearer یا کلید APIفیلدهای پروفایل مانند نام نمایشی و ترجیحات اعلان را به روز می کند.
/api/auth/syncتوکن نشست از نوع Bearerکاربر auth از Supabase را با رکورد کاربر پلتفرم همگام می کند.
/api/auth/check-onboardingتوکن نشست از نوع Bearerگزارش می دهد آیا کاربر احراز هویت شده onboarding را کامل کرده است.
/api/auth/avatarتوکن نشست از نوع Bearerیک تصویر avatar جدید برای کاربر احراز هویت شده آپلود می کند.
نقاط پایانی مشتری
هر چیزی که یک صاحب ربات مدیریت می کند: ربات های ثبت شده، پروفایل مشتری، مجموعه داده ها، فاکتورها، و آمار داشبورد.
/api/client/robotsتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)ربات های ثبت شده توسط مشتری احراز هویت شده را فهرست می کند، جدیدترین ها اول، تا 50 رکورد. مهرهای زمانی ISO 8601 هستند؛ last_online و last_heartbeat تا زمانی که ربات یک بار وصل نشده null هستند.
curl https://www.ay-robots.com/api/client/robots \
-H 'Authorization: Bearer ayr_live_your_key_here'[
{
"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"
}
]/api/client/robotsتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)یک ربات جدید ثبت می کند و id آن را برمی گرداند. یک hardware id برد موتور فقط می تواند به یک ربات تعلق داشته باشد؛ یک برخورد با وضعیت 409 رد می شود.
/api/client/profileتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)پروفایل مشتری کاربر احراز هویت شده را برمی گرداند.
/api/client/profileتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)فیلدهای پروفایل مشتری را به روز می کند.
/api/client/datasetsتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)مجموعه داده های ابری مشتری را با تعداد اپیزود و اندازه ها فهرست می کند.
/api/client/invoicesتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)فاکتورهای ماهانه مشتری را فهرست می کند.
/api/client/statsتوکن نشست از نوع Bearer یا کلید API (نقش مشتری)آمار استفاده برای داشبورد مشتری را برمی گرداند.
نقاط پایانی اپراتور
طرف اپراتور: پروفایل و در دسترس بودن، گواهینامه ها، زمان بندی، و آمار درآمد.
/api/operator/profileتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)پروفایل اپراتور کاربر احراز هویت شده را برمی گرداند.
/api/operator/profileتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)پروفایل اپراتور را می سازد یا به روز می کند.
/api/operator/available-robotsتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)ربات هایی که در حال حاضر در دسترس هستند و با گواهینامه های اپراتور مطابقت دارند را فهرست می کند.
/api/operator/certificationsتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)درخواست های گواهینامه اپراتور و وضعیت آن ها را فهرست می کند.
/api/operator/certificationsتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)گواهینامه ای برای یک نوع ربات درخواست می کند.
/api/operator/scheduleتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)برنامه در دسترس بودن هفتگی اپراتور را برمی گرداند.
/api/operator/scheduleتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)برنامه در دسترس بودن هفتگی را به روز می کند.
/api/operator/availabilityتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)در دسترس بودن فعلی اپراتور را برمی گرداند.
/api/operator/statsتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)آمار درآمد و نشست برای داشبورد اپراتور را برمی گرداند.
نشست ها
نشست ها منبع اصلی پلتفرم هستند: یک نشست یک تعامل کنترل از راه دور پیوسته بین یک اپراتور و یک ربات است. وضعیت نشست از میان PENDING، ACTIVE، PAUSED، COMPLETED، و CANCELLED حرکت می کند.
/api/sessionsتوکن نشست از نوع Bearer یا کلید APIنشست ها را برای کاربر احراز هویت شده فهرست می کند. اپراتورها نشست هایی که آن ها اجرا کرده اند را می بینند؛ مشتریان نشست های روی ربات های خودشان را می بینند. مجموعه فیلد بین دو نما کمی متفاوت است: نمای مشتری episodes_collected و data_collected_mb را شامل می شود، نمای اپراتور operator_earnings_cents را شامل می شود.
| Name | In | Type | Description |
|---|---|---|---|
| status | query | string | اختیاری. بر اساس وضعیت نشست فیلتر کنید، مثلا ACTIVE یا COMPLETED. برای فهرست کردن همه حذف کنید. |
| limit | query | number | اختیاری. اندازه صفحه، پیش فرض 50، حداکثر 100. |
| offset | query | number | اختیاری. آفست صفحه بندی، پیش فرض 0. |
curl 'https://www.ay-robots.com/api/sessions?status=COMPLETED&limit=10' \
-H 'Authorization: Bearer ayr_live_your_key_here'{
"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."
}
]
}/api/sessionsتوکن نشست از نوع Bearer یا کلید API (نقش اپراتور)یک نشست کنترل از راه دور روی یک ربات در دسترس شروع می کند. نقش اپراتور نیاز است: مشتریان نمی توانند نشست شروع کنند. یک اپراتور در هر لحظه حداکثر می تواند یک نشست ACTIVE یا PAUSED داشته باشد، و ربات باید در حال حاضر وضعیت AVAILABLE داشته باشد. در یک شروع فوری ربات به IN_SESSION تغییر می کند و مشتری مطلع می شود.
| Name | In | Type | Description |
|---|---|---|---|
| robotId | body | string | اجباری. شناسه رباتی که باید کنترل شود. ربات باید AVAILABLE باشد. |
| operatorId | body | string | اختیاری. شناسه اپراتور صریح؛ پیش فرض اپراتور احراز هویت شده است. |
| scheduledFor | body | string (ISO 8601) | اختیاری. نشست را برای یک زمان آینده زمان بندی می کند به جای شروع فوری آن. |
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"}'{
"sessionId": "6b0d2c9a-53f1-4f6e-8f1a-2c9d4e7b5a30",
"status": "ACTIVE"
}/api/sessions/[id]توکن نشست از نوع Bearer یا کلید APIیک نشست تکی را با جزئیات آن برمی گرداند.
/api/sessions/[id]توکن نشست از نوع Bearer یا کلید APIچرخه عمر نشست را به روز می کند: توقف، از سرگیری، پایان، و اقدام های مرتبط.
/api/sessions/[id]/extendتوکن نشست از نوع Bearer یا کلید API (مشتری، مالک نشست)یک تمدید نشست درخواست می کند. فقط مشتری که مالک نشست است می تواند این را فراخوانی کند، و نشست باید ACTIVE باشد. درخواست به عنوان یک رویداد نشست ثبت می شود و اپراتور یک اعلان دریافت می کند؛ خود تمدید وقتی اپراتور روی آن عمل می کند اتفاق می افتد.
| Name | In | Type | Description |
|---|---|---|---|
| id | path | string | شناسه نشست. |
| additionalMinutes | body | number | طول تمدید درخواستی به دقیقه. |
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}'{
"message": "Extension request sent to operator"
}/api/sessions/[id]/messagesتوکن نشست از نوع Bearer یا کلید APIپیام های چت یک نشست را فهرست می کند.
/api/sessions/[id]/messagesتوکن نشست از نوع Bearer یا کلید APIیک پیام چت در یک نشست می فرستد.
/api/sessions/[id]/rateتوکن نشست از نوع Bearer یا کلید API (مشتری)یک نشست تکمیل شده را در مقیاس 1 تا 5 ستاره امتیاز می دهد، با یک نظر اختیاری.
/api/sessions/exportتوکن نشست از نوع Bearer یا کلید APIداده نشست را خروجی می گیرد.
پرداخت ها
همه حرکت پول از طریق Stripe انجام می شود. صورتحساب مشتری از یک مشتری Stripe با یک روش پرداخت ذخیره شده استفاده می کند؛ برداشت های اپراتور از Stripe Connect استفاده می کنند. خود پلتفرم هرگز داده کارت یا بانک را ذخیره نمی کند.
/api/stripe/customerتوکن نشست از نوع Bearer (نقش مشتری)مشتری Stripe استفاده شده برای صورتحساب مشتری را می سازد یا برمی گرداند.
/api/stripe/connectتوکن نشست از نوع Bearer (نقش اپراتور)وضعیت حساب Stripe Connect اپراتور را برمی گرداند.
/api/stripe/connectتوکن نشست از نوع Bearer (نقش اپراتور)onboarding مربوط به Stripe Connect را برای برداشت های اپراتور شروع می کند.
/api/stripe/setup-intentتوکن نشست از نوع Bearer (نقش مشتری)یک Stripe SetupIntent برای ذخیره یک روش پرداخت می سازد.
/api/stripe/portalتوکن نشست از نوع Bearer (نقش مشتری)یک نشست پورتال صورتحساب Stripe برای مدیریت روش های پرداخت و فاکتورها می سازد.
/api/stripe/payoutتوکن نشست از نوع Bearer (نقش اپراتور)اطلاعات برداشت برای اپراتور احراز هویت شده را برمی گرداند.
/api/stripe/payoutتوکن نشست از نوع Bearer (نقش اپراتور)برداشت درآمد جمع شده را درخواست می کند. حداقل برداشت 10.00 EUR است.
/api/stripe/webhookامضای webhook از Stripeرویدادهای webhook از Stripe را دریافت می کند. توسط Stripe فراخوانی می شود، نه توسط کلاینت های API.
نقاط پایانی عمومی
این نقاط پایانی هیچ احراز هویتی نیاز ندارند. فراخوانی آن ها از پایش، صفحات بازاریابی، یا یک پروب وضعیت امن است.
/api/healthبررسی تندرستی برای API و اتصال پایگاه داده آن. وقتی هر دو خوب هستند 200 برمی گرداند؛ اگر بررسی پایگاه داده شکست بخورد، همان شکل با status و db تنظیم شده به error و وضعیت HTTP 503 برگردانده می شود.
curl https://www.ay-robots.com/api/health{
"status": "ok",
"db": "ok",
"timestamp": "2026-08-09T10:12:00.000Z"
}/api/robots/[id]اطلاعات عمومی درباره یک مدل ربات پشتیبانی شده را برمی گرداند.
/api/public/pricingطرح های قیمت گذاری عمومی فعلی را برمی گرداند.
/api/contactیک پیام فرم تماس ارسال می کند. پیام ابتدا ذخیره می شود و سپس با ایمیل تحویل داده می شود، پس یک قطعی موقت پستی آن را از دست نمی دهد: در آن صورت پاسخ stored true و delivered false گزارش می دهد، و تحویل به صورت عملیاتی دوباره تلاش می شود.
| Name | In | Type | Description |
|---|---|---|---|
| name | body | string | اجباری. نام شما. |
| body | string | اجباری. یک آدرس ایمیل معتبر برای پاسخ. | |
| category | body | string | اجباری. یکی از: General Inquiry, Bug Report, Feature Request, Sales & Pricing, Partnership, Career/Jobs, Technical Support, Billing & Payments, Press & Media, Other. |
| subject | body | string | اجباری. خط موضوع کوتاه. |
| message | body | string | اجباری. متن پیام. |
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."
}'{
"success": true,
"message": "Message sent successfully",
"id": "b1f2c3d4-0000-0000-0000-000000000000",
"stored": true,
"delivered": true
}/api/robot-requestپشتیبانی برای یک نوع ربات که هنوز روی پلتفرم نیست را درخواست می کند.
/api/statsآمار عمومی پلتفرم را برمی گرداند.
AY-Robots حساب ها و کنترل زنده ربات را چگونه ایمن می کند: احراز هویت Supabase، مدل نقش، کلیدهای API، تدابیر ایمنی نشست، ردیابی حسابرسی، و رمزنگاری.
نشست ها در AY-Robots چگونه کار می کنند: چرخه عمر از PENDING تا COMPLETED، هر رویداد فعالیت توضیح داده شده، چت نشست، امتیازدهی، تمدیدها، و داده آموزشی.