Интеграции → API для разработчиков

API для разработчиков — WhatsApp, Telegram, MAX

HTTP API chatb24 работает. Отправляйте сообщения и получайте входящие напрямую в свою систему — сайт, интернет-магазин, 1С, мобильное приложение или самописную CRM. Один протокол для всех каналов: код пишется один раз, а WhatsApp, Telegram и MAX ходят через единый интерфейс.

Аутентификация

Ключ имеет вид cb24_… и передаётся в заголовке. Работают оба способа:

Authorization: Bearer cb24_ваш_ключ
X-Api-Key: cb24_ваш_ключ

В базе хранится только хеш ключа — восстановить его мы не можем. Потеряли — отзовите старый и создайте новый. Ключ действует на весь аккаунт: доступны все ваши номера, чужие — нет.

Проверить ключ:

curl https://app.chatb24.ru/api/v1/ping \
  -H "Authorization: Bearer cb24_ваш_ключ"

{"ok":true}

Методы

МетодПутьЧто делает
GET/api/v1/pingпроверка ключа
GET/api/v1/profilesсписок ваших подключённых номеров
POST/api/v1/messagesотправить текст
POST/api/v1/messages/mediaотправить файл, картинку, документ
GET/api/v1/webhookтекущий адрес вебхука
PUT/api/v1/webhookзадать адрес вебхука
DELETE/api/v1/webhookотключить вебхук

Базовый адрес — https://app.chatb24.ru. Ответы и тела запросов — JSON в кодировке UTF-8.

Список ваших номеров

curl https://app.chatb24.ru/api/v1/profiles \
  -H "Authorization: Bearer cb24_ваш_ключ"

[
  {
    "id": "9fa058c7-1bc5-4dfc-b18a-f1dbc879046a",
    "name": "Отдел продаж",
    "channel_type": "whatsapp",
    "status": "open",
    "phone": "79990001122"
  }
]

Поле id — это и есть profile_id, который нужен для отправки. channel_type бывает whatsapp, telegram, max_personal.

Отправить текст

curl -X POST https://app.chatb24.ru/api/v1/messages \
  -H "Authorization: Bearer cb24_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "9fa058c7-1bc5-4dfc-b18a-f1dbc879046a",
    "to": "79990001122",
    "text": "Заказ №123 собран и передан в доставку"
  }'

{"ok":true,"message_id":"3EB0C767D26B8F1B2A44"}

Поля пишутся через подчёркивание — profile_id, а не profileId. Это частая причина ошибки 400 на первом запросе.

В поле to для WhatsApp и MAX — номер телефона цифрами, для Telegram — номер или идентификатор чата.

Отправить файл

Два способа: дать ссылку на файл или прислать его содержимое в base64.

curl -X POST https://app.chatb24.ru/api/v1/messages/media \
  -H "Authorization: Bearer cb24_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_id": "9fa058c7-1bc5-4dfc-b18a-f1dbc879046a",
    "to": "79990001122",
    "url": "https://example.com/schet-123.pdf",
    "filename": "Счёт №123.pdf",
    "caption": "Счёт во вложении"
  }'

Вместо url можно передать base64 — содержимое файла (с префиксом data: или без). Тогда файл сохраняется у нас и уходит клиенту ссылкой.

Входящие: вебхук

Мы сами отправляем вам POST-запрос на каждое входящее сообщение. Один адрес на аккаунт — приходят сообщения со всех ваших номеров, а номер указан в поле profile_id.

curl -X PUT https://app.chatb24.ru/api/v1/webhook \
  -H "Authorization: Bearer cb24_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://ваш-сервер.ru/chatb24-hook"}'

{"ok":true,"webhook":{"url":"https://ваш-сервер.ru/chatb24-hook","active":true},
 "secret":"5870d805c2214fc8626e84c7cc3a3dfc…"}

Секрет показывается один раз — при первой установке адреса. Сохраните его: им проверяется подпись. Смена адреса секрет не меняет и второй раз его не показывает.

Что придёт на ваш адрес:

POST /chatb24-hook
X-Chatb24-Signature: 8be91a2620f2a64d6213cc011aaaabbab47af144e8c8e4d9dca128840b83d4ff
X-Chatb24-Delivery: cc430463-be4e-45e1-ac1d-7fb651a2ee3f
Content-Type: application/json

{
  "event": "message.inbound",
  "profile_id": "9fa058c7-1bc5-4dfc-b18a-f1dbc879046a",
  "channel": "tg",
  "chat_id": "343226676",
  "sender": "Иван Петров",
  "text": "Здравствуйте, а когда будет доставка?",
  "media_url": null,
  "external_id": "tgp-343226676-4821",
  "ts": "2026-09-16T13:06:57.383Z"
}

Текст приходит текстом, вложение — ссылкой в media_url, отправитель — именем, а не числовым идентификатором. Поле external_id уникально: используйте его для защиты от повторов.

Проверка подписи

Подпись — HMAC-SHA256 от сырого тела запроса на вашем секрете. Считайте её до разбора JSON: пересборка объекта меняет байты и ломает проверку.

# Python
import hmac, hashlib
def valid(raw_body: bytes, signature: str, secret: str) -> bool:
    mine = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(mine, signature)
// PHP
function valid(string $raw, string $signature, string $secret): bool {
    return hash_equals(hash_hmac('sha256', $raw, $secret), $signature);
}
// Node.js
const crypto = require('crypto');
const valid = (raw, signature, secret) =>
  crypto.timingSafeEqual(
    Buffer.from(crypto.createHmac('sha256', secret).update(raw).digest('hex')),
    Buffer.from(signature));

Если ваш сервер ответил не 2xx или не ответил вовсе — мы повторим доставку: три попытки с паузами. После этого сообщение остаётся в кабинете и в CRM, но на ваш адрес не уйдёт.

Ошибки

КодЗначениеЧто делать
400неверные поля запросатекст ошибки объясняет, чего не хватает
401ключ не передан, неизвестен или отозванпроверьте заголовок и ключ в кабинете
402нет активной подписки на этот каналоплатите канал в разделе «Подписка»
404номер не найденprofile_id чужой или удалён
429превышен лимит частотыподождите, сколько указано в Retry-After
502мессенджер не принял сообщениев тексте ошибки — причина от мессенджера

Тело ошибки всегда одинаковое:

{"error":"bad_request","message":"Нужен адрес получателя (to)"}

Лимиты

Мессенджеры сами не любят частых массовых отправок с личных номеров. Лимит API — это защита сервиса, а не разрешение на рассылку: рассылайте разумно, иначе номер заблокирует сам мессенджер.

Кому пригодится

Сколько стоит

1 490 ₽ в месяц за аккаунт — сверх подписки на подключённые номера. Доплата одна независимо от того, сколько у вас номеров: и с одним, и с десятью цена за API та же.

Первые 14 дней — бесплатно. Создайте ключ и встраивайте: плата начнётся только после пробного периода.

Как начать

Отдельной регистрации не нужно. Подключите номер, откройте в кабинете «Свой софт (API)» и создайте ключ.

Создать ключ в кабинете Тарифы

Вопросы по API — support@chatb24.ru