بابابات
رایگان شروع کن
پلن سازمانی

مستندات API

همان موتور پاسخی که ویجت استفاده می‌کند، پشت یک کلید. یک مسیر کد دارد، نه دو تا — پس دروازه‌ی خارج از حوزه، کش شباهت و رزرو اعتبار دقیقاً همان‌طور کار می‌کنند.

احراز هویت چطور است؟

یک هدر. کلید را از پنل می‌سازی و فقط همان یک بار می‌بینی‌اش.

Authorization: Bearer bbk_...
کلید به‌صورت هش ذخیره می‌شود، مثل رمز عبور. یعنی اگر گمش کردی ما هم نمی‌توانیم برایت پیدایش کنیم — یکی تازه بساز و قبلی را باطل کن.

بررسی کلید

GET/api/v1/public/me

ارزان‌ترین درخواست ممکن، برای اینکه ببینی کلید کار می‌کند. اعتباری مصرف نمی‌کند.

درخواست

curl https://bababot.ir/api/v1/public/me \
  -H "Authorization: Bearer bbk_..."

پاسخ

{
  "tenant": "فروشگاه من",
  "bot": { "id": "...", "name": "دستیار" },
  "credits_remaining": 1183,
  "rate_limit_per_minute": 30
}

یک پاسخ

POST/api/v1/public/chat

همان موتوری که ویجت استفاده می‌کند. user_id شناسه‌ی کاربر نهایی در سیستم خودت است؛ قبل از ذخیره هش می‌شود، پس لازم نیست از قبل ناشناس باشد.

درخواست

curl -X POST https://bababot.ir/api/v1/public/chat \
  -H "Authorization: Bearer bbk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "message": "گارانتی چند ماهه است؟",
    "user_id": "customer-4471"
  }'

پاسخ

{
  "answer": "گارانتی همه‌ی محصولات ۱۸ ماه است.",
  "refused": false,
  "conversation_id": "8f3c...",
  "message_id": 12904,
  "sources": [{ "title": "شرایط گارانتی", "url": "https://..." }],
  "cached": false,
  "credits_charged": 1,
  "model": "gpt-5.6-luna",
  "latency_ms": 2140
}

سینک محصولات

POST/api/v1/public/products

هر محصول یک رکورد ساخت‌یافته با فیلدهای جدا — نه یک تکه متن. فقط name، brand و category در رتبه‌بندی دخالت می‌کنند؛ specs و description به پاسخ کمک می‌کنند ولی رتبه را عوض نمی‌کنند.

درخواست

curl -X POST https://bababot.ir/api/v1/public/products \
  -H "Authorization: Bearer bbk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "products": [{
      "external_id": "4471",
      "name": "لپ‌تاپ ایسوس ROG Strix G16",
      "brand": "ASUS",
      "category": "لپ‌تاپ گیمینگ",
      "price": 78500000,
      "availability": true,
      "url": "https://shop.example/p/4471",
      "specs": { "رم": "۱۶ گیگ", "پردازنده": "i7-13650HX" }
    }]
  }'

پاسخ

{ "received": 1, "written": 1, "embedded": 1 }

خطاها چه شکلی‌اند؟

هر خطا یک code ماشین‌خوان، یک پیام فارسی و یک request_id دارد. آن شناسه را در تیکت بفرست تا کل ماجرا را در لاگ پیدا کنیم.

{
  "error": {
    "code": "rate_limited",
    "message": "سقف ۳۰ درخواست در دقیقه برای این کلید پر شده.",
    "request_id": "62adee26c466497e9bb196adf9f3eda2"
  }
}
HTTPcodeمعنی
401invalid_api_keyکلید نادرست، باطل‌شده یا منقضی است.
403permission_deniedپلن این حساب دیگر API عمومی ندارد.
402plan_limitسقف پلن پر شده — محصول، چت‌بات یا دانش.
429rate_limitedبیش از ۳۰ درخواست در دقیقه با همین کلید.
200refused: trueپاسخ داده شد ولی رد بود — اعتبار تمام، سقف روزانه، یا خارج از حوزه. خطا نیست.

سؤال‌های متداول

کلید API را کجا بسازم؟

در پنل، بخش «کلیدهای API». کلید فقط همان یک بار نمایش داده می‌شود چون به‌صورت هش ذخیره می‌شود و ما هم نمی‌توانیم دوباره ببینیمش. گم شد، یکی تازه بساز.

سقف درخواست چقدر است؟

۳۰ درخواست در دقیقه برای هر کلید. سقف روی کلید است نه روی حساب، تا یک اسکریپت از کنترل خارج‌شده بقیه‌ی اتصال‌هایت را از کار نیندازد.

اعتبار چطور حساب می‌شود؟

دقیقاً مثل ویجت: همان موتور، همان دفتر اعتبار، همان سقف‌ها. پاسخ‌هایی که از کش می‌آیند یا دروازه‌ی خارج از حوزه برشان می‌گرداند اعتباری نمی‌گیرند و در پاسخ با credits_charged صفر مشخص‌اند.

در کدام پلن است؟

پلن سازمانی. اگر پلنت API ندارد، ساخت کلید با خطای روشن رد می‌شود.

اگر فقط دنبال نصب روی وردپرس هستی، به API دست نزن — افزونه‌ی رسمی همین کارها را خودش می‌کند. https://bababot.ir/docs/api