Справочник API
Создавайте собственные интеграции с REST API Asyntai
Требуется платный план: Доступ к API доступен на тарифах Starter, Standard и Pro. Посмотреть цены
Обзор
API Asyntai позволяет интегрировать поддержку клиентов на базе ИИ в любое приложение. Отправляйте сообщения и получайте интеллектуальные ответы, обученные на содержимом вашего сайта и базе знаний.
Аутентификация
Все API-запросы требуют аутентификации с помощью вашего API-ключа. Получить API-ключ можно на странице Настройки API.
Включите ваш API-ключ в запросы одним из следующих способов:
- Заголовок авторизации (рекомендуется):
Authorization: Bearer YOUR_API_KEY - Заголовок X-API-Key:
X-API-Key: YOUR_API_KEY
Храните ваш API-ключ в тайне. Любой, кто имеет ваш ключ, может получить доступ к аккаунту через API. Никогда не раскрывайте его в клиентском коде.
Базовый URL
https://asyntai.com/api/v1/
Конечные точки
POST /chat/
Отправьте сообщение и получите ответ, сгенерированный ИИ.
Тело запроса
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
message |
строка | Да | Сообщение пользователя для отправки ИИ |
session_id |
строка | Нет | Уникальный идентификатор разговора. Используйте одинаковый session_id для сохранения истории переписки. |
website_id |
целое число | Нет | Конкретный ID сайта. Если не указан, используется основной сайт. |
Ответ
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Пример (cURL)
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "What are your business hours?", "session_id": "user_123"}'
Пример (Python)
import requests
response = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"message": "What are your business hours?",
"session_id": "user_123"
}
)
data = response.json()
print(data["response"])
Пример (JavaScript)
const response = await fetch("https://asyntai.com/api/v1/chat/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "What are your business hours?",
session_id: "user_123"
})
});
const data = await response.json();
console.log(data.response);
GET /websites/
Список всех сайтов, привязанных к вашему аккаунту.
Ответ
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Пример (cURL)
curl https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET /conversations/
Получить историю переписки для конкретной сессии.
Параметры запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
session_id |
строка | Да | ID сессии для получения истории |
limit |
целое число | Нет | Максимальное количество сообщений для возврата (по умолчанию: 50, макс: 100) |
Ответ
{
"success": true,
"session_id": "user_123",
"messages": [
{
"role": "user",
"content": "What are your business hours?",
"timestamp": "2024-01-15T10:30:00Z"
},
{
"role": "assistant",
"content": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"timestamp": "2024-01-15T10:30:01Z"
}
]
}
Пример (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
Список ваших недавних сессий чата. Используйте это для поиска идентификаторов сессий, которые затем можно передать в /conversations/ для получения полной истории сообщений.
Параметры запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
limit |
целое число | Нет | Количество недавних сессий для возврата (по умолчанию: 20, макс: 100) |
website_id |
строка | Нет | Фильтровать сессии по конкретному ID сайта |
source |
строка | Нет | Фильтр по источнику сессии: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
Ответ
{
"success": true,
"sessions": [
{
"session_id": "session_abc123def",
"source": "widget",
"message_count": 5,
"first_message": "What are your business hours?",
"first_message_at": "2024-01-15T10:30:00Z",
"last_message_at": "2024-01-15T10:35:00Z",
"website_domain": "example.com"
}
]
}
Пример (cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
Получить собранные лиды — адреса электронной почты и номера телефонов, отправленные посетителями во время чат-разговоров.
Параметры запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
limit |
целое число | Нет | Количество лидов для возврата (по умолчанию: 50, макс: 100) |
website_id |
строка | Нет | Фильтровать лиды по конкретному ID сайта |
Ответ
{
"success": true,
"leads": [
{
"session_id": "session_abc123def",
"email": "visitor@example.com",
"phone": "+1234567890",
"page_url": "https://example.com/pricing",
"started_at": "2024-01-15T10:30:00Z"
}
]
}
| Поле | Тип | Описание |
|---|---|---|
session_id |
строка | ID чат-сессии. Передайте его в /conversations/, чтобы увидеть полную историю чата. |
email |
строка или null | Адрес электронной почты, предоставленный посетителем, или null если не был собран |
phone |
строка или null | Номер телефона, предоставленный посетителем, или null если не был собран |
page_url |
строка или null | URL страницы, на которой посетитель общался в чате |
started_at |
строка | Временная метка ISO 8601 начала чат-сессии |
Пример (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Пример (Python)
import requests
response = requests.get(
"https://asyntai.com/api/v1/leads/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"limit": 20}
)
leads = response.json()["leads"]
for lead in leads:
print(f"{lead['email'] or ''} | {lead['phone'] or ''}")
GET /account/
Получите информацию об аккаунте и статистику использования.
Ответ
{
"success": true,
"account": {
"email": "you@example.com",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
Пример (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Несколько сайтов? Конечные точки базы знаний по умолчанию привязаны к вашему основному сайту. Если у вас несколько сайтов, передайте website_id для указания конкретного. Идентификаторы сайтов можно найти с помощью GET /websites/.
Ежедневные лимиты загрузки: Загрузки в базу знаний (текст, URL, таблицы) ограничены суточным лимитом символов в зависимости от вашего тарифа. Это ограничение распространяется на весь контент, загруженный через все конечные точки базы знаний за день.
| Тариф | Символов/день |
|---|---|
| Starter | 100 000 |
| Standard | 500 000 |
| Pro | 2 000 000 |
GET /knowledge/
Список записей базы знаний. Это источники контента, которые ваш ИИ-чат-бот использует для ответов на вопросы.
Параметры запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
limit |
целое число | Нет | Количество записей для возврата (по умолчанию: 50, макс.: 100) |
website_id |
строка | Нет | Фильтровать по ID сайта (по умолчанию — ваш основной сайт) |
Ответ
{
"success": true,
"entries": [
{
"id": "abc-123-def",
"type": "text",
"title": "Business Hours",
"description": "Manual text content (150 words)",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "ghi-456-jkl",
"type": "url",
"title": "About Us - Example",
"description": "Content from https://example.com/about",
"created_at": "2024-01-14T09:00:00Z"
}
]
}
Пример (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Добавьте пользовательский текстовый контент в вашу базу знаний. ИИ будет использовать его для ответов на вопросы посетителей.
Тело запроса
{
"title": "Return Policy",
"content": "We offer a 30-day return policy on all items. Items must be unused and in original packaging. Refunds are processed within 5-7 business days.",
"website_id": "123"
}
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
title |
строка | Да | Заголовок для этой записи базы знаний |
content |
строка | Да | Текстовое содержимое (минимум 10 символов) |
website_id |
строка | Нет | Целевой сайт (по умолчанию — основной сайт) |
Ответ
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Пример (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/text/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Return Policy", "content": "We offer a 30-day return policy..."}'
POST /knowledge/url/
Добавьте веб-страницу в вашу базу знаний. Содержимое будет загружено и извлечено автоматически.
Тело запроса
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
url |
строка | Да | URL для получения содержимого |
website_id |
строка | Нет | Целевой сайт (по умолчанию — основной сайт) |
Ответ
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Пример (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/url/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/faq"}'
POST /knowledge/spreadsheet/
Загрузите таблицу CSV или Excel (.xlsx) в базу знаний. Каждая строка становится отдельной записью — идеально для каталогов товаров, FAQ, прайс-листов и справочников.
Запрос
Отправляйте как multipart/form-data (загрузка файла), а не JSON.
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
file |
файл | Да | Файл .csv или .xlsx. Первая строка должна содержать заголовки столбцов. Максимум строк за загрузку: Starter — 500, Standard — 2 000, Pro — 10 000. Лишние строки обрезаются. |
website_id |
строка | Нет | Целевой сайт (по умолчанию — основной сайт) |
Ответ
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Пример (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@products.csv"
DELETE /knowledge/{id}/
Удалить запись базы знаний. id можно найти в ответе GET /knowledge/.
Ответ
{
"success": true,
"message": "Knowledge base entry deleted"
}
Пример (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Совет: Вы также можете управлять вебхуками из Настройки API страницы без написания кода.
GET /webhooks/
Список зарегистрированных вебхуков.
Ответ
{
"success": true,
"webhooks": [
{
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
Пример (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Зарегистрируйте новый вебхук для получения уведомлений о событиях в реальном времени.
Доступные события
| Событие | Описание |
|---|---|
message.received |
Посетитель отправил сообщение и получил ответ |
conversation.started |
Началась новая сессия чата |
escalation.requested |
ИИ инициировал передачу разговора живому оператору |
takeover.started |
Живой агент взял управление сессией чата |
Тело запроса
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
url |
строка | Да | HTTPS URL для получения POST-запросов вебхука |
events |
массив | Да | Список событий для подписки (см. таблицу выше) |
website_id |
строка | Нет | Целевой сайт (по умолчанию — основной сайт) |
Ответ
{
"success": true,
"webhook": {
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"secret": "whsec_abc123...",
"created_at": "2024-01-15T10:30:00Z"
}
}
Проверка вебхуков: Каждый вебхук включает secret (показывается только при создании). Каждый POST-запрос на ваш URL содержит X-Webhook-Signature заголовок — HMAC-SHA256 тела запроса, подписанный вашим секретом.
Пример (cURL)
curl -X POST "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhook", "events": ["message.received"]}'
DELETE /webhooks/{id}/
Удалить вебхук. id можно найти в ответе GET /webhooks/.
Ответ
{
"success": true,
"message": "Webhook deleted"
}
Пример (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Ответы об ошибках
Все ответы об ошибках имеют такой формат:
{
"success": false,
"error": "Error message describing what went wrong"
}
| Код статуса | Описание |
|---|---|
400 |
Неверный запрос — недопустимые параметры или отсутствуют обязательные поля |
401 |
Не авторизовано — недействительный или отсутствующий API-ключ |
429 |
Слишком много запросов — достигнут лимит сообщений для вашего тарифа |
503 |
Сервис недоступен — сервис ИИ временно недоступен |
Ограничения по запросам
Использование API ограничено вашим тарифом:
- Free: 100 сообщений/месяц
- Starter ($39/мес.): 2 500 сообщений/месяц
- Standard ($139/мес.): 15 000 сообщений/месяц
- Pro ($449/мес.): 50 000 сообщений/месяц
Нужна помощь?
Если у вас есть вопросы или возникли проблемы, свяжитесь с нами по адресу hello@asyntai.com.