مرجع API
enuchat را با استفاده از Tenant API به سیستمهای خود ادغام کنید. گفتگوها را مدیریت کنید، پیام ارسال کنید و به دادههای صورتحساب به صورت برنامهای دسترسی داشته باشید.
احراز هویت
همه درخواستهای API با استفاده از یک کلید API ارسال شده در هدر X-Api-Key احراز هویت میشوند.
دریافت کلید API خود
- به تنظیمات → کلیدهای API در داشبورد خود بروید
- روی ایجاد کلید API کلیک کنید و به آن نامی بدهید
- کلید را بلافاصله کپی کنید — فقط یک بار نمایش داده میشود
- آن را به صورت ایمن ذخیره کنید (متغیر محیطی، مدیر اسرار)
ارسال درخواستها
کلید را در هر درخواست شامل کنید:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsهمه پاسخها JSON هستند. پاسخهای موفق فیلد data دارند. خطاها فیلد error با code و message دارند.
امنیت: کلیدهای API در پایگاه داده ما هش شدهاند (SHA-256). ما هرگز کلید خام را ذخیره نمیکنیم. با کلید خود مانند یک رمز عبور رفتار کنید — آن را در کد commit نکنید یا به طور عمومی به اشتراک نگذارید.
URL پایه
https://api.enuchat.com/api/v1/tenant-apiهمه endpointهای زیر نسبت به این URL پایه هستند.
Endpointها
GET /widgets
همه ویجتها را برای حساب خود لیست کنید.
پاسخ
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
گفتگوها را لیست کنید، مرتب شده بر اساس آخرین پیام.
پارامترهای کوئری
| پارامتر | نوع | توضیحات |
|---|---|---|
status | string | فیلتر بر اساس وضعیت: open، pending، closed |
widgetId | string | فیلتر بر اساس UUID ویجت |
limit | integer | حداکثر نتایج (پیشفرض ۲۰، حداکثر ۱۰۰) |
offset | integer | رد کردن N نتیجه |
مثال
curl -H "X-Api-Key: tak_..." \
"https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"پاسخ
{'{'}
"data": [
{'{'}
"id": "019d6724-000e-...",
"widgetId": "019d19c6-7e0b-...",
"visitorId": "v-abc123",
"visitorName": "John",
"visitorEmail": "john{'@'}example.com",
"visitorLanguage": "en",
"status": "open",
"assignedTo": null,
"lastMessageAt": "2026-04-11T14:30:00+00:00",
"startedAt": "2026-04-11T14:25:00+00:00"
}
]
}GET /conversations/{'{'}id}
یک گفتگو با همه پیامها را دریافت کنید.
پارامترهای کوئری
| پارامتر | نوع | توضیحات |
|---|---|---|
limit | integer | حداکثر پیامها (پیشفرض ۵۰، حداکثر ۲۰۰) |
پاسخ
{'{'}
"data": {'{'}
"id": "019d6724-000e-...",
"visitorLanguage": "en",
"status": "open",
"messages": [
{'{'}
"id": "019d6724-1234-...",
"role": "visitor",
"content": "Hello, how much does it cost?",
"contentLanguage": "en",
"translatedContent": "Cześć, ile to kosztuje?",
"translatedLanguage": "pl",
"isAutoReply": false,
"createdAt": "2026-04-11T14:25:30+00:00"
},
{'{'}
"id": "019d6724-5678-...",
"role": "ai",
"content": "Our plans start at €19/month...",
"isAutoReply": true,
"createdAt": "2026-04-11T14:25:32+00:00"
}
]
}
}POST /conversations/{'{'}id}/messages
پیامی را به یک گفتگو ارسال کنید. پیام به صورت بلادرنگ از طریق ویجت گفتگو به بازدیدکننده تحویل داده میشود.
بدنه درخواست
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| فیلد | نوع | توضیحات |
|---|---|---|
content | string | الزامی. متن پیام. |
role | string | system (پیشفرض) یا operator |
پاسخ (201 Created)
{'{'}
"data": {'{'}
"id": "019d6725-abcd-...",
"role": "system",
"content": "Thanks for reaching out!",
"createdAt": "2026-04-11T14:35:00+00:00"
}
}PATCH /conversations/{'{'}id}
وضعیت یا واگذاری یک گفتگو را بهروزرسانی کنید.
بدنه درخواست
{'{'}
"status": "closed"
}| فیلد | نوع | توضیحات |
|---|---|---|
status | string | open، pending یا closed |
assignedTo | string|null | UUID اپراتور برای واگذاری، یا null برای لغو واگذاری |
GET /billing/balance
طرح فعلی و موجودی اعتبار خود را دریافت کنید.
پاسخ
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}مدیریت خطا
خطاها یک کد وضعیت غیر-2xx را با یک بدنه JSON برمیگردانند:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| وضعیت HTTP | معنی |
|---|---|
401 | کلید API نامعتبر، منقضی شده یا گم شده |
400 | بدنه درخواست یا پارامترهای نامعتبر |
404 | منبع پیدا نشد (یا متعلق به یک tenant دیگر است) |
500 | خطای سرور |
موارد استفاده رایج
یکپارچهسازی CRM
برای گفتگوهای جدید نظرسنجی کنید و دادههای بازدیدکننده (نام، ایمیل، زبان) را با CRM خود همگامسازی کنید. از شناسه گفتگو به عنوان مرجع خارجی استفاده کنید.
پیگیریهای خودکار
پس از بسته شدن گفتگو، یک پیام پیگیری از طریق API ارسال کنید: "با تشکر از گفتگو! آیا چیز دیگری هست که بتوانیم کمک کنیم؟"
جایگزین Webhook
تا زمانی که webhookهای خروجی در دسترس باشند، endpoint گفتگوها را به صورت دورهای نظرسنجی کنید تا پیامهای جدید یا تغییرات وضعیت را تشخیص دهید.
عملیات انبوه
همه گفتگوهای قدیمیتر از ۷ روز را ببندید، گفتگوها را به اپراتورها بر اساس منطق خارجی واگذار کنید، یا تاریخچه گفتگو را برای تحلیل صادر کنید.
محدودیتهای نرخ
API اجازه میدهد تا ۶۰ درخواست در دقیقه به ازای هر کلید API. اگر از این محدودیت فراتر بروید، یک پاسخ 429 Too Many Requests دریافت خواهید کرد. صبر کنید و با backoff نمایی دوباره امتحان کنید.
آمادهاید یکپارچه شوید؟
حساب رایگان خود را ایجاد کنید و در عرض چند دقیقه یک کلید API تولید کنید.
رایگان شروع کنید