مرجع API

enuchat را با استفاده از Tenant API به سیستم‌های خود ادغام کنید. گفتگوها را مدیریت کنید، پیام ارسال کنید و به داده‌های صورتحساب به صورت برنامه‌ای دسترسی داشته باشید.

احراز هویت

همه درخواست‌های API با استفاده از یک کلید API ارسال شده در هدر X-Api-Key احراز هویت می‌شوند.

دریافت کلید API خود

  1. به تنظیمات → کلیدهای API در داشبورد خود بروید
  2. روی ایجاد کلید API کلیک کنید و به آن نامی بدهید
  3. کلید را بلافاصله کپی کنید — فقط یک بار نمایش داده می‌شود
  4. آن را به صورت ایمن ذخیره کنید (متغیر محیطی، مدیر اسرار)

ارسال درخواست‌ها

کلید را در هر درخواست شامل کنید:

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

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

پارامترهای کوئری

پارامترنوعتوضیحات
statusstringفیلتر بر اساس وضعیت: open، pending، closed
widgetIdstringفیلتر بر اساس UUID ویجت
limitintegerحداکثر نتایج (پیش‌فرض ۲۰، حداکثر ۱۰۰)
offsetintegerرد کردن 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}

یک گفتگو با همه پیام‌ها را دریافت کنید.

پارامترهای کوئری

پارامترنوعتوضیحات
limitintegerحداکثر پیام‌ها (پیش‌فرض ۵۰، حداکثر ۲۰۰)

پاسخ

{'{'}
  "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"
}
فیلدنوعتوضیحات
contentstringالزامی. متن پیام.
rolestringsystem (پیش‌فرض) یا 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"
}
فیلدنوعتوضیحات
statusstringopen، pending یا closed
assignedTostring|nullUUID اپراتور برای واگذاری، یا 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 تولید کنید.

رایگان شروع کنید