Бизик API
REST API для интеграции с вашими системами: CRM, ERP, аналитика, автоматизация. Управляйте чатами, сообщениями, менеджерами и аналитикой программно.
https://bizik.io/api/v1
Авторизация
Все запросы к API должны содержать заголовок X-API-Key с вашим API-ключом.
Как получить API-ключ
Зайдите в Настройки → API-ключ → Сгенерировать в вашем аккаунте Бизика. Ключ — строка из 64 символов. Храните его в секрете и не передавайте третьим лицам.
curl -X GET "https://bizik.io/api/v1/company" \ -H "X-API-Key: YOUR_API_KEY"
Коды ошибок
API возвращает стандартные HTTP-коды статуса.
| Код | Описание |
|---|---|
| 200 | Успешный запрос |
| 201 | Ресурс создан |
| 400 | Неверный запрос (проверьте параметры) |
| 401 | Неверный или отсутствующий API-ключ |
| 404 | Ресурс не найден |
| 429 | Превышен лимит запросов |
| 500 | Внутренняя ошибка сервера |
Тело ошибки всегда содержит поле detail:
{ "detail": "Chat not found" }
Лимиты запросов
Для предотвращения злоупотреблений действуют ограничения:
| Эндпоинт | Лимит |
|---|---|
| GET-запросы | 120 запросов / минута |
| POST/PATCH/DELETE | 60 запросов / минута |
| Отправка сообщений | 30 запросов / минута |
При превышении лимита вернётся 429 Too Many Requests. Повторите через секунду.
Компания
Информация об аккаунте, привязанном к API-ключу.
Возвращает базовую информацию об аккаунте.
Ответ 200
{
"id": 1,
"name": "Моя компания",
"email": "info@company.ru",
"is_active": true,
"created_at": "2025-01-15T10:00:00",
"plan": "start"
}
Чаты
Управление чатами: список, фильтрация, создание, обновление статусов и назначение менеджеров.
Список чатов с пагинацией и фильтрами.
Query-параметры
| Параметр | Тип | Описание |
|---|---|---|
| status | string опц. | Фильтр: incoming, active, completed, closed |
| source | string опц. | Фильтр: telegram, avito, vk, max, email, webchat, phone |
| assigned_to | integer опц. | ID менеджера |
| page | integer опц. | Номер страницы (от 1, по умолч. 1) |
| page_size | integer опц. | Размер страницы (1–200, по умолч. 50) |
curl "https://bizik.io/api/v1/chats?status=active&page=1&page_size=20" \ -H "X-API-Key: YOUR_API_KEY"
Ответ 200
{
"items": [
{
"id": 42,
"external_id": "tg-123456",
"source": "telegram",
"status": "active",
"customer_name": "Иван Петров",
"customer_contact": "+79001234567",
"assigned_to": 3,
"unread_count": 2,
"needs_response": true,
"traffic_source": "yandex_direct",
"order_amount": null,
"last_message_at": "2025-04-16T12:30:00",
"created_at": "2025-04-15T09:00:00",
"updated_at": "2025-04-16T12:30:00"
}
],
"total": 156,
"page": 1,
"page_size": 20,
"has_more": true
}
Возвращает информацию о конкретном чате.
| Параметр | Тип | Описание |
|---|---|---|
| chat_id | integer обяз. | ID чата |
Создаёт новый чат от внешнего источника (source = "api"). Можно передать начальное сообщение.
Body (JSON)
| Поле | Тип | Описание |
|---|---|---|
| customer_name | string опц. | Имя клиента |
| customer_contact | string опц. | Контакт (телефон, email) |
| source | string опц. | Источник (по умолч. "api") |
| initial_message | string опц. | Текст первого сообщения |
curl -X POST "https://bizik.io/api/v1/chats" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_name": "Алексей",
"customer_contact": "+79001234567",
"initial_message": "Здравствуйте, интересует товар"
}'
Обновляет статус, менеджера, источник трафика или сумму заказа.
Body (JSON)
| Поле | Тип | Описание |
|---|---|---|
| status | string опц. | incoming, active, completed, closed, spam |
| assigned_to | integer опц. | ID менеджера |
| traffic_source | string опц. | Источник трафика |
| order_amount | string опц. | Сумма заказа |
| customer_name | string опц. | Имя клиента |
curl -X PATCH "https://bizik.io/api/v1/chats/42" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "completed", "order_amount": "150000"}'
Сообщения
Получение истории и отправка сообщений в чаты через любые подключённые каналы.
| Параметр | Тип | Описание |
|---|---|---|
| chat_id | integer обяз. | ID чата |
| limit | integer опц. | Количество (1–500, по умолч. 100) |
| offset | integer опц. | Смещение (от 0) |
Ответ 200
{
"items": [
{
"id": 501,
"chat_id": 42,
"direction": "incoming",
"content": "Здравствуйте! Товар ещё в наличии?",
"content_type": "text",
"sender_name": "Иван",
"is_read": true,
"file_url": null,
"created_at": "2025-04-16T12:00:00"
},
{
"id": 502,
"chat_id": 42,
"direction": "outgoing",
"content": "Да, есть в наличии! Отправим сегодня.",
"content_type": "text",
"sender_name": "Менеджер Анна",
"is_read": true,
"file_url": null,
"created_at": "2025-04-16T12:05:00"
}
],
"total": 15,
"chat_id": 42
}
Отправляет сообщение клиенту через подключённый канал (Telegram, MAX, Avito и т.д.).
Доставка
Сообщение будет доставлено через тот же канал, откуда пришёл чат. Например, если чат из Telegram — сообщение уйдёт в Telegram.
Body (JSON)
| Поле | Тип | Описание |
|---|---|---|
| content | string обяз. | Текст сообщения (до 10 000 символов) |
| content_type | string опц. | "text" (по умолч.) |
curl -X POST "https://bizik.io/api/v1/chats/42/messages" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Ваш заказ отправлен! Трек: EMS12345"}'
Менеджеры
Список сотрудников компании для назначения на чаты.
Ответ 200
[
{
"id": 1,
"name": "Анна Смирнова",
"email": "anna@company.ru",
"role": "admin",
"is_active": true,
"is_online": true
},
{
"id": 3,
"name": "Пётр Иванов",
"email": "petr@company.ru",
"role": "manager",
"is_active": true,
"is_online": false
}
]
Аналитика
Агрегированные метрики за период.
| Параметр | Тип | Описание |
|---|---|---|
| date_from | string опц. | Начало (YYYY-MM-DD) |
| date_to | string опц. | Конец (YYYY-MM-DD) |
| days | integer опц. | Период в днях (если даты не указаны, по умолч. 7) |
curl "https://bizik.io/api/v1/analytics/kpi?days=30" \ -H "X-API-Key: YOUR_API_KEY"
Ответ 200
{
"period_days": 30,
"total_chats": 156,
"new_chats": 42,
"completed_chats": 28,
"total_messages": 1240,
"incoming_messages": 680,
"outgoing_messages": 560,
"avg_response_time_seconds": null,
"sources": {
"telegram": 45,
"max": 38,
"avito": 52,
"webchat": 21
},
"statuses": {
"incoming": 14,
"active": 86,
"completed": 28,
"closed": 28
}
}
Вебхуки
Подписывайтесь на события и получайте уведомления на ваш URL в реальном времени.
Доступные события
new_chat — новый чат создан
new_message — новое сообщение в чате
chat_status_changed — статус чата изменился
chat_assigned — менеджер назначен на чат
Ответ 200
[
{
"id": "a1b2c3d4e5f6",
"url": "https://your-server.com/webhook/bizik",
"events": ["new_chat", "new_message"],
"is_active": true,
"created_at": "2025-04-16T10:00:00"
}
]
| Поле | Тип | Описание |
|---|---|---|
| url | string обяз. | URL для получения уведомлений |
| events | string[] обяз. | Список событий |
curl -X POST "https://bizik.io/api/v1/webhooks" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhook/bizik",
"events": ["new_chat", "new_message", "chat_status_changed"]
}'
| Параметр | Тип | Описание |
|---|---|---|
| webhook_id | string обяз. | ID вебхука |
Ответ: 204 No Content
Примеры использования
Когда менеджер закрывает сделку в CRM, отправляем сумму в Бизик. Статус чата автоматически сменится на «Оформившие».
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://bizik.io/api/v1"
headers = {"X-API-Key": API_KEY, "Content-Type": "application/json"}
# 1. Найти чат клиента
chats = requests.get(
f"{BASE_URL}/chats",
headers=headers,
params={"status": "active", "page_size": 200}
).json()
# 2. Обновить статус и сумму
for chat in chats["items"]:
if chat["customer_contact"] == "+79001234567":
requests.patch(
f"{BASE_URL}/chats/{chat['id']}",
headers=headers,
json={"status": "completed", "order_amount": "148000"}
)
print(f"Чат {chat['id']} закрыт, сумма 148 000₽")
break
Подписываемся на событие new_chat через вебхук и отправляем автоматический ответ.
# Flask webhook handler (ваш сервер)
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
BIZIK_KEY = "YOUR_API_KEY"
@app.route("/webhook/bizik", methods=["POST"])
def handle_bizik_webhook():
event = request.json
if event["type"] == "new_chat":
chat_id = event["data"]["chat_id"]
# Отправляем приветствие
requests.post(
f"https://bizik.io/api/v1/chats/{chat_id}/messages",
headers={"X-API-Key": BIZIK_KEY, "Content-Type": "application/json"},
json={"content": "Здравствуйте! Менеджер ответит вам в течение 5 минут."}
)
return jsonify({"ok": True})
Cron-задача, которая каждый день отправляет сводку KPI в Telegram.
import requests
from datetime import date, timedelta
BIZIK_KEY = "YOUR_API_KEY"
TELEGRAM_BOT = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT = "YOUR_CHAT_ID"
# Получаем KPI за вчера
yesterday = (date.today() - timedelta(days=1)).isoformat()
kpi = requests.get(
"https://bizik.io/api/v1/analytics/kpi",
headers={"X-API-Key": BIZIK_KEY},
params={"date_from": yesterday, "date_to": yesterday}
).json()
text = (
f"📊 Отчёт за {yesterday}\n"
f"Чатов: {kpi['total_chats']}\n"
f"Новых: {kpi['new_chats']}\n"
f"Закрытых: {kpi['completed_chats']}\n"
f"Сообщений: {kpi['total_messages']}"
)
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_BOT}/sendMessage",
json={"chat_id": TELEGRAM_CHAT, "text": text}
)
OpenAPI Schema
Машиночитаемая OpenAPI 3.1 спецификация публичного API:
OpenAPI JSON
https://bizik.io/api/v1/openapi.json
Импортируйте в Postman, Insomnia или любой другой API-клиент для автоматического создания коллекции запросов.
© 2025 Бизик. Все права защищены.
Поддержка: info@bizik.io · Telegram · На главную