Довідник 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) у нашій базі даних. Ми ніколи не зберігаємо сирий ключ. Ставтеся до свого ключа як до пароля — не коміть його в код і не діліться ним публічно.
Базовий 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 | Максимум результатів (за замовчуванням 20, макс 100) |
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 | Максимум повідомлень (за замовчуванням 50, макс 200) |
Відповідь
{'{'}
"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 Status | Значення |
|---|---|
401 | Недійсний, прострочений або відсутній API-ключ |
400 | Недійсне тіло запиту або параметри |
404 | Ресурс не знайдено (або він належить іншому тенанту) |
500 | Помилка сервера |
Поширені сценарії використання
CRM-інтеграція
Опитуйте нові розмови й синхронізуйте дані відвідувачів (ім'я, email, мова) зі своїм CRM. Використовуйте ID розмови як зовнішнє посилання.
Автоматичні follow-up
Після закриття розмови надішліть follow-up повідомлення через API: «Дякуємо за чат! Чи є ще щось, у чому ми можемо допомогти?»
Альтернатива webhook
Доки вихідні webhook-и недоступні, періодично опитуйте endpoint розмов, щоб виявляти нові повідомлення або зміни статусу.
Масові операції
Закривайте всі розмови, старіші за 7 днів, призначайте розмови операторам за зовнішньою логікою або експортуйте історію розмов для аналітики.
Обмеження частоти
API дозволяє до 60 запитів на хвилину на API-ключ. При перевищенні ви отримаєте відповідь 429 Too Many Requests. Зачекайте й повторіть з експоненційним відкатом.
Готові інтегрувати?
Створіть безкоштовний акаунт і згенеруйте API-ключ за лічені хвилини.
Почати безкоштовно