API Бизика

Бизик API

REST API для интеграции с вашими системами: CRM, ERP, аналитика, автоматизация. Управляйте чатами, сообщениями, менеджерами и аналитикой программно.

Base URL: https://bizik.io/api/v1

Авторизация

Все запросы к API должны содержать заголовок X-API-Key с вашим API-ключом.

Как получить API-ключ

Зайдите в Настройки → API-ключ → Сгенерировать в вашем аккаунте Бизика. Ключ — строка из 64 символов. Храните его в секрете и не передавайте третьим лицам.

cURL
Python
JavaScript
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/DELETE60 запросов / минута
Отправка сообщений30 запросов / минута

При превышении лимита вернётся 429 Too Many Requests. Повторите через секунду.

Компания

Информация об аккаунте, привязанном к API-ключу.

GET /company Информация о компании

Возвращает базовую информацию об аккаунте.

Ответ 200

{
  "id": 1,
  "name": "Моя компания",
  "email": "info@company.ru",
  "is_active": true,
  "created_at": "2025-01-15T10:00:00",
  "plan": "start"
}

Чаты

Управление чатами: список, фильтрация, создание, обновление статусов и назначение менеджеров.

GET /chats Список чатов

Список чатов с пагинацией и фильтрами.

Query-параметры

ПараметрТипОписание
statusstring опц.Фильтр: incoming, active, completed, closed
sourcestring опц.Фильтр: telegram, avito, vk, max, email, webchat, phone
assigned_tointeger опц.ID менеджера
pageinteger опц.Номер страницы (от 1, по умолч. 1)
page_sizeinteger опц.Размер страницы (1–200, по умолч. 50)
cURL
Python
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
}
GET /chats/{chat_id} Получить чат

Возвращает информацию о конкретном чате.

ПараметрТипОписание
chat_idinteger обяз.ID чата
POST /chats Создать чат

Создаёт новый чат от внешнего источника (source = "api"). Можно передать начальное сообщение.

Body (JSON)

ПолеТипОписание
customer_namestring опц.Имя клиента
customer_contactstring опц.Контакт (телефон, email)
sourcestring опц.Источник (по умолч. "api")
initial_messagestring опц.Текст первого сообщения
cURL
Python
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": "Здравствуйте, интересует товар"
  }'
PATCH /chats/{chat_id} Обновить чат

Обновляет статус, менеджера, источник трафика или сумму заказа.

Body (JSON)

ПолеТипОписание
statusstring опц.incoming, active, completed, closed, spam
assigned_tointeger опц.ID менеджера
traffic_sourcestring опц.Источник трафика
order_amountstring опц.Сумма заказа
customer_namestring опц.Имя клиента
cURL
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"}'

Сообщения

Получение истории и отправка сообщений в чаты через любые подключённые каналы.

GET /chats/{chat_id}/messages История сообщений
ПараметрТипОписание
chat_idinteger обяз.ID чата
limitinteger опц.Количество (1–500, по умолч. 100)
offsetinteger опц.Смещение (от 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
}
POST /chats/{chat_id}/messages Отправить сообщение

Отправляет сообщение клиенту через подключённый канал (Telegram, MAX, Avito и т.д.).

Доставка

Сообщение будет доставлено через тот же канал, откуда пришёл чат. Например, если чат из Telegram — сообщение уйдёт в Telegram.

Body (JSON)

ПолеТипОписание
contentstring обяз.Текст сообщения (до 10 000 символов)
content_typestring опц."text" (по умолч.)
cURL
Python
JavaScript
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"}'

Менеджеры

Список сотрудников компании для назначения на чаты.

GET /employees Список менеджеров

Ответ 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
  }
]

Аналитика

Агрегированные метрики за период.

GET /analytics/kpi KPI за период
ПараметрТипОписание
date_fromstring опц.Начало (YYYY-MM-DD)
date_tostring опц.Конец (YYYY-MM-DD)
daysinteger опц.Период в днях (если даты не указаны, по умолч. 7)
cURL
Python
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 — менеджер назначен на чат

GET /webhooks Список вебхуков

Ответ 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"
  }
]
POST /webhooks Создать вебхук
ПолеТипОписание
urlstring обяз.URL для получения уведомлений
eventsstring[] обяз.Список событий
cURL
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"]
  }'
DELETE /webhooks/{webhook_id} Удалить вебхук
ПараметрТипОписание
webhook_idstring обяз.ID вебхука

Ответ: 204 No Content

Примеры использования

CRM-интеграция: передача суммы заказа

Когда менеджер закрывает сделку в 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})
Дашборд: ежедневный отчёт в Telegram

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 · На главную