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

পাবলিক প্ল্যাটফর্ম পরিসংখ্যান ফেরত দেয়।