رفتن به محتوای اصلی
های چت

REST API

از سرور خودتان گفتگوها را بخوانید، پیام بفرستید و کاربران و پاسخ‌های آماده را مدیریت کنید.

آدرس پایه همه درخواست‌ها:

https://app.hichat.ir/api/v1

احراز هویت

در پنل، بخش توسعه‌دهندگان، یک کلید بسازید. کلید فقط یک بار نشان داده می‌شود؛ آن را در جای امن سرور نگه دارید. هر درخواست باید این سرآیند را داشته باشد:

Authorization: Bearer cf_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

برای هر کلید فقط دسترسی‌هایی را بدهید که لازم است. هر کلید تازه باید دست‌کم یک IP یا محدوده IP مجاز داشته باشد (مثل 203.0.113.10 یا 203.0.113.0/24) و فقط از همان‌ها کار می‌کند. می‌توانید تاریخ انقضا هم بگذارید.

دسترسیکار
conversations:readخواندن گفتگوها
conversations:writeبستن، سپردن و برچسب زدن
messages:read / messages:writeخواندن و فرستادن پیام
visitors:read / visitors:writeخواندن، ویرایش و مسدود کردن کاربران
team:readدیدن اپراتورها و بخش‌ها
canned:read / canned:writeپاسخ‌های آماده
stats:readآمار
webhooks:writeمدیریت وب‌هوک‌ها
widget:writeفرمان به ویجت

قالب پاسخ و خطا

همه پاسخ‌ها JSON هستند. شناسه‌ها رشته‌اند (عدد ۶۴ بیتی). خطاها این شکل را دارند:

{ "error": "not_found", "message": "..." }
کدمعنی
400ورودی نامعتبر
401کلید نامعتبر یا منقضی
402بسته فعلی این امکان را ندارد
403کلید این دسترسی را ندارد یا IP مجاز نیست
404پیدا نشد (یا مال سایت دیگری است)
429درخواست زیاد؛ کمی صبر کنید
503API به‌طور موقت از طرف های چت متوقف شده است؛ کمی بعد دوباره امتحان کنید

گفتگوها

فهرست گفتگوها

GET /conversations?status=active&limit=50

پارامترها: status یکی از open، queued، closed، bot یا active (همه بازها)، from و to (تاریخ ISO)، visitorId، limit (تا ۱۰۰) و before برای صفحه بعد. مقدار next در پاسخ را به عنوان before بفرستید.

یک گفتگو

GET /conversations/{id}

پیام‌های گفتگو

GET /conversations/{id}/messages?before={messageId}

یادداشت‌های داخلی فقط با internal=1 برگردانده می‌شوند.

فرستادن پیام

POST /conversations/{id}/messages
Content-Type: application/json

{ "text": "سفارش شما ارسال شد.", "clientId": "6f1c..." }

به جای text می‌توانید rich بفرستید (متن قالب‌دار). با "internal": true پیام به صورت یادداشت داخلی ثبت می‌شود. clientId اختیاری است و جلوی ثبت تکراری را می‌گیرد.

فرستادن فایل

POST /conversations/{id}/files?name=invoice.pdf
Content-Type: application/pdf

<بدنه فایل>

بستن، سپردن و برچسب

POST /conversations/{id}/close
POST /conversations/{id}/assign      { "memberId": "..." }  یا  { "departmentId": "..." }
PUT  /conversations/{id}/tags        { "tags": ["پیگیری", "مالی"] }

کاربران

GET   /visitors/{id}
PATCH /visitors/{id}          { "name": "...", "phone": "...", "email": "...", "note": "...", "tags": [], "data": {} }
POST  /visitors/{id}/block    { "reason": "مزاحمت", "block": true }

با "block": false کاربر از مسدودی خارج می‌شود.

تیم و پاسخ‌های آماده

GET    /operators
GET    /departments
GET    /canned
POST   /canned          { "title": "زمان ارسال", "body": [[{ "t": "دو روز کاری" }]], "shortcut": "ارسال" }
DELETE /canned/{id}

آمار

GET /stats?from=2026-09-22T00:00:00Z&to=2026-10-22T00:00:00Z

تعداد گفتگو، پیام‌های ورودی و خروجی، میانگین زمان اولین پاسخ (ثانیه) و میانگین امتیاز.

فرمان به ویجت

برای کاربری که الان در سایت است، ویجت را باز یا بسته کنید یا یک رویداد سفارشی به صفحه بفرستید:

POST /visitors/{id}/widget
{ "action": "event", "name": "coupon", "data": { "code": "AFTAB20" } }

در صفحه سایت با HiChat('on', 'custom', fn) دریافت می‌شود. این فرمان فقط داده می‌فرستد و هیچ کدی در صفحه اجرا نمی‌کند.

وب‌هوک‌ها

GET    /webhooks
POST   /webhooks       { "url": "https://example.com/hichat", "events": ["message.created"] }
DELETE /webhooks/{id}

در پاسخ ساخت، secret فقط همین یک بار برمی‌گردد. جزئیات در وب‌هوک.