Назад к панели управления

Документация

Узнайте, как использовать Asyntai

Справочник API

Создавайте собственные интеграции с REST API Asyntai

Получить API-ключ

Требуется платный план: Доступ к 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, таблицы) ограничены суточным лимитом символов в зависимости от вашего тарифа. Это ограничение распространяется на весь контент, загруженный через все конечные точки базы знаний за день.

Тариф Символов/день
Starter100 000
Standard500 000
Pro2 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.