ВозможностиИИКабинетAPIЦеныСкачатьПомощь
Тема оформления (Авто: светлая)
Попробовать бесплатно
API и разработчикам

Нажмите Энтер.
Получите данные.

REST API /api/v1, 53 скоупа, 239 эндпоинтов, 11 событий вебхуков и JS API виджета. Чаты, контакты, ИИ, база знаний, тикеты и биллинг — всё, что умеет кабинет, умеет и ваш код.

smartbtn.me/api/v1
# нажмите Энтер или знак справа
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

Быстрый старт

Три шага от нуля до первого ответа. Каждый запрос привязан к одному виджету и авторизован bearer‑токеном.

  1. Выпустите токенКабинет → API‑токены: название, срок действия (необязательно) и нужные скоупы. Токен принадлежит ровно одному виджету. Открытый текст показывается один раз; Smartbtn хранит только хеш, поэтому потерянный токен не восстановить — только отозвать и выпустить заново.
  2. Включите API виджетаВ настройках виджета включите «Разрешить API виджета (JS и REST)». Выпуск токена сам по себе этот переключатель не включает.
  3. Отправьте первый запросТокен передаётся только в заголовке Authorization — никогда в URL.
# список чатов виджета
curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \
     https://smartbtn.me/api/v1/chats
// 200 OK · курсорная пагинация
{
  "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ],
  "next_cursor": "eyJpZCI6NDgyMTB9"   // null — на последней странице
}
Единый базовый адрес API. https://smartbtn.me/api/v1 — основной адрес API для всех данных проекта. Всегда отправляйте запросы по HTTPS и не пересылайте токен при редиректах.
Токена нет, он неверный или без нужного скоупа? Ответ — 401 или 403 с телом RFC‑7807 application/problem+json — см. Ошибки.
02

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

Три пути — в зависимости от того, кто кому звонит. Доступ запрещён по умолчанию: нет скоупа — нет вызова.

Вы → Smartbtn
Вызовы REST

Каждый запрос несёт Authorization: Bearer <token>. На сервере токен превращается в виджет и его скоупы.

Smartbtn → вы
Вебхуки, внешний ИИ‑оператор

Исходящие запросы подписаны секретом: X‑Smartbtn‑Signature. Если вашей стороне нужен свой bearer — его можно добавить.

Ваш ИИ‑оператор → Smartbtn
Асинхронные ответы

Для POST /v1/ai/replies — своя подписанная рамка, привязанная к вашему ИИ‑оператору и виджету, с долговечным causation_id.

Переключатель, о котором забывают

«Разрешить API виджета (JS и REST)» в настройках виджета открывает и REST, и JS API виджета. Выпуск токена его не включает. Скоупы существующего ключа меняются в кабинете (API‑токены → ключ → «Изменить скоупы») без перевыпуска — интеграции продолжают работать.

Пресеты

ПресетСкоупыКогда
Настройка через AI 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:readВаше ИИ‑приложение настраивает виджет: ассистента, базу знаний, тексты. Заменяет весь выбор скоупов.
Только чтение (пример набора)chats:read · messages:read · contacts:read · stats:readДашборды, BI, выгрузки.
Мост в helpdesk (пример набора)chats:read · messages:read · messages:write · webhooks:write · support:readЗеркалить диалоги и тикеты в вашу CRM.
Ключи провайдера — отдельно. ai:credentials:write выдавайте, только если владелец разрешил подключить ключ провайдера. Права аккаунта, биллинга и партнёрки для настройки ИИ не нужны. Ключ показывается один раз — отзовите его после настройки.
03

Скоупы

53 скоупа маршрутов, плюс один условный и один зарезервированный. Запрос проходит, только если у токена есть скоуп маршрута (или указанная альтернатива).

53 + 1 условный + 1 резерв
чувствительныйусловныйзарезервирован
СкоупЧто даёт
chats · 2
chats:readЧтение чатов и их метаданных
chats:writeЗакрыть чат, запросить оценку, передать, взять, назначить или снять оператора
messages · 2
messages:readИстория сообщений чата
messages:writeОтправка сообщений, индикатора набора и отметок о прочтении от имени оператора
contacts · 2
contacts:readЧтение контактов
contacts:writeИзменение полей и атрибутов контакта
agents · 3
agents:readОператоры и их статус присутствия
agents:writeчувствительныйПригласить, изменить, приостановить, восстановить или удалить оператора; приглашённый видит все чаты виджета
agents:events:readЖурнал действий и метрики оператора
tags · 2
tags:readЧтение тегов
tags:writeПривязать теги к контакту
files · 2
files:readСкачать загруженный файл
files:writeЗагрузить новый файл
stats · 1
stats:readСводная статистика чатов, сообщений и оценок
channels · 3
channels:readОнлайн‑статус своего канала
channels:writeДоставить входящее сообщение в свой канал
channels:registerЗарегистрировать новый свой канал (только для установленных приложений)
webhooks · 2
webhooks:readСписок подписок на вебхуки
webhooks:writeСоздать, удалить или переотправить подписку
quick_phrases · 2
quick_phrases:readБыстрые фразы оператора
quick_phrases:writeСоздать, изменить или удалить быстрые фразы
ratings · 1
ratings:readОценки посетителей и кого из операторов они касаются
responder · 2
responder:injectчувствительныйВставить ответ в живой чат как внешний ИИ‑оператор или бот
responder:escalateусловныйДля POST /v1/ai/replies: передать чат человеку по escalate=true
widget · 2
widget:readВнешний вид, поведение и код установки виджета
widget:writeИзменить настройки виджета и сбросить его кеш
departments · 2
departments:readОтделы, их операторы и расписание
departments:writeСоздать, изменить или удалить отдел и расписание
messengers · 2
messengers:readКакие мессенджеры и соцсети подключены (без учётных данных)
messengers:writeчувствительныйПодключить или отключить мессенджер; записывает учётные данные провайдера
ai · 4
ai:readИИ‑ассистенты, их настройки и алерты
ai:writeСоздать и изменить ассистентов, ИИ‑настройки и ИИ‑операторов, включая персону и промпт
ai:credentials:writeчувствительныйСохранить ключи сторонних LLM‑провайдеров (BYOK)
ai:applyОдобрить улучшение, которое переписывает персону живого ассистента
kb · 2
kb:readПравила базы знаний и загруженные источники
kb:writeСоздать, изменить или удалить правила и источники базы знаний
transcripts · 1
transcripts:readЭкспорт стенограммы чата
account · 2
account:readПрофиль аккаунта и все его юрлица
account:writeИзменить только имя, фамилию и телефон аккаунта
billing · 2
billing:readБиллинг виджета и юрлица аккаунта
billing:writeСоздать, изменить, удалить юрлица; счета не выставляет и деньги не двигает
partners · 2
partners:readДанные партнёрского аккаунта и рефералов
partners:withdrawзарезервированЗарезервирован: выплаты через API сейчас не выполняются
support · 4
support:readТикеты, чаты с активностью клиента, их сообщения и свой журнал действий
support:replyчувствительныйОтветить клиенту от имени оператора поддержки
support:writeВзять или отпустить чат, закрыть тикет без ответа, переоткрыть
support:tickets:closeТолько закрыть тикет — и больше ничего
marketing · 2
marketing:readМаркетинговые кампании: баннеры, попапы, email‑рассылки
marketing:writeСоздать и изменить кампании, сменить статус, запустить email‑рассылку
broadcasts · 2
broadcasts:readРассылки в мессенджерах (WhatsApp, Telegram, MAX, VK)
broadcasts:writeСоздать, изменить и запустить рассылку
problems · 2
problems:readКластеры проблем клиентов и настройки анализа
problems:writeИзменить настройки и статус кластера: new, in progress, resolved, recurring
invitations · 2
invitations:readПравила умных приглашений, A/B‑варианты, шаблоны и воронка
invitations:writeСоздать, изменить, включить или удалить правила и шаблоны
04

Эндпоинты

Вся публичная поверхность в одном списке. Фильтр по ресурсу, поиск по пути, клик по строке — готовый curl в буфере.

Показано: 245 из 245
GETPOSTPUTPATCHDELETE

ai Ассистенты, операторы, ключи, самообучение, маркетплейс54

chats Диалоги, сообщения, передача, оценки18

kb База знаний: правила, краулер, файлы, поиск16

agents Операторы, приглашения, метрики14

messengers Мессенджеры, сообщества VK, кабинеты Avito13

billing Баланс, подписки, счета, юрлица12

support Агент поддержки: тикеты и чаты12

widget Настройки, язык, переводы, скины, кеш12

channels Свои каналы8

external‑operators Свой бот как оператор8

webhook‑subscriptions Подписки на вебхуки8

broadcasts Рассылки в мессенджерах7

departments Отделы и расписание7

invitations Умные приглашения7

marketing Маркетинговые кампании7

partner Партнёрская программа7

wishes Пожелания к ИИ7

contacts Контакты и теги5

problems Анализ проблем клиентов4

quick‑phrases Быстрые фразы4

compat Совместимость при переезде3

stats Статистика3

account Аккаунт2

files Файлы2

ratings Оценки1

tags Теги1

v1 1

webhook‑events Каталог событий1

Пути — относительно https://smartbtn.me/api. Записи требуют Content‑Type: application/json и X‑Smartbtn‑Idempotency‑Key. Группа compat — слой совместимости для переезда с другой чат‑платформы.

05

Вебхуки

Подписанный JSON POST на ваш адрес, когда происходит событие из подписки. Подписки — через /v1/webhook‑subscriptions или в кабинете.

POST ваш URL · X‑Smartbtn‑Event: ticket.created
{
  "id": "evt_01JAB3K9Q7",
  "type": "ticket.created",
  "data": {
    "button_guid": "b_3f9c2e",
    "ticket_number": 10482,
    "chat_id": 48211,
    "client_id": 9134,
    "reason": "human_request",
    "priority": "high",
    "sla_hours": 4,
    "source": "chat",
    "created_at": "2026-10-17T10:15:00+03:00"
  }
}

reason: human_request | billing | ai_unresolved | action_request | …; priority: high | normal; source: chat | app | site. Тикет и переписка — GET /v1/support/tickets/{number}.

Заголовки доставки

X‑Smartbtn‑EventТип события, например message.created.
X‑Smartbtn‑SignatureHMAC сырого тела: sha256=v1:<hex>.
X‑Smartbtn‑Idempotency‑KeyОдно значение на событие, не меняется при повторах. По нему — дедупликация.
X‑Smartbtn‑DeliveryОдно значение на попытку доставки — для ваших логов.
X‑Smartbtn‑TimestampUnix‑время отправки. Для справки, в подпись не входит.

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

HMAC‑SHA256 от сырого тела (байты как пришли, до разбора JSON) секретом подписки; сравнение — за постоянное время. Секрет показывается один раз при создании подписки; ротация — POST /v1/webhook‑subscriptions/{id}/rotate‑secret.

// Node.js · пример, секрет — заглушка
import crypto from 'node:crypto';

function verify(rawBody, header, secret) {
  const expected = 'sha256=v1:' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
  const a = Buffer.from(expected), b = Buffer.from(header || '');
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}
// PHP
$expected = 'sha256=v1:' . hash_hmac('sha256', file_get_contents('php://input'), $secret);
if (!hash_equals($expected, $_SERVER['HTTP_X_SMARTBTN_SIGNATURE'] ?? '')) { http_response_code(401); exit; }

Повторы и порядок

  • До 4 попыток (первая отправка + 3 повтора), пауза min(60, 2^attempt × 5) с — примерно 10, 20, 40 с.
  • Не‑2xx или таймаут — неудачная попытка. Неудачные доставки можно переотправить: POST /v1/webhook‑subscriptions/{id}/redeliver — тот же ключ идемпотентности, новый id доставки.
  • Доставка «хотя бы раз» и без гарантии порядка. Полезная нагрузка минимальна — идентификаторы, а не копии записей; детали забирайте через REST.
06

JS API

Передайте оператору то, что вы уже знаете о посетителе. Вызовы принимаются только с домена из настроек виджета.

smartbtn_widget_api.setContactInfo(info)

Задаёт контактные данные посетителя. Оператор видит их так, будто посетитель сам заполнил форму. Имя, телефон и email в Smartbtn играют особую роль — поэтому отдельный метод.

НазваниеТипОписание
namestringИмя посетителя
emailstringEmail посетителя
phonestringТелефон посетителя
descriptionstringДополнительная информация о клиенте
Smartbtn_api.setClientInfo({
  name: "Василий Васильев",
  email: "email@example.com",
  phone: "+17584987855",
  description: "Description text"
});

smartbtn_widget_api.setCustomData(fields)

Произвольные данные для информационной панели справа в приложении оператора. Вызывайте сколько угодно раз — в открытом диалоге панель обновится в реальном времени. Поля выводятся в порядке массива.

НазваниеТипОписание
fieldsarrayСписок полей
field.titlestringЗаголовок над полем
field.contentstringСодержимое поля; теги экранируются
field.linkstringURL, открываемый по клику
Smartbtn_api.setClientCustomData([
  { title: "Order", content: "#10482 · 3 items", link: "https://shop.example/orders/10482" },
  { title: "Actions", content: "Open customer profile", link: "https://crm.example/c/9134" }
]);

smartbtn_widget_api.setSkin(skin, opts) · open() · close()

Переключайте тему оформления виджета на лету без перезагрузки страницы (classic, minimal, capsule, liquid) или управляйте окном чата программно. Для постоянной настройки под проект передайте те же поля в PATCH /v1/widget/settings.

// JS API · переключение стиля кнопки на странице в реальном времени
smartbtn_widget_api.setSkin("minimal");
smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "Ответим за ~1 с" });

// REST API · PATCH /v1/widget/settings (скоуп widget:write)
{
  "skin": "minimal",
  "widget_header_align": "center",
  "widget_show_operator_avatars": false,
  "widget_show_tabs_bar": false,
  "chat_bg": "#FAF8F5",
  "capsule_title": "Smartbtn AI",
  "capsule_subtitle": "Онлайн 24/7"
}
Если включён widget_api_contact_sync, эти вызовы также порождают вебхук contact.updated.
07

Support‑agent API

Автоматический агент поддержки работает с очередью тикетов и чатами клиентов: берёт чат, отвечает от имени вашего оператора поддержки, закрывает тикет. Выключен, пока владелец виджета его не включит.

  1. Владелец включаетУказывает токены, которым можно работать агентом, и IP‑адреса, с которых можно звонить.
  2. ОчередьGET /v1/support/tickets · GET /v1/support/chats
  3. Взять чатPOST …/chats/{id}/claim · …/release
  4. ОтветитьТолько текст, ссылки — только на разрешённые хосты виджета. 201 — только когда сообщение сохранено.
  5. Закрыть или переоткрытьPOST …/tickets/{number}/close · …/reopen
СкоупРазрешает
support:readТикеты, чаты с активностью клиента, сообщения с метками client / ai / support / system, свой журнал действий
support:writeВзять / отпустить чат, закрыть без ответа, переоткрыть
support:replyОтвет клиенту от имени оператора поддержки (чувствительный)
support:tickets:closeТолько закрыть тикет — для кнопки «Вопрос решён» на вашем бэкенде
curl -X POST https://smartbtn.me/api/v1/support/chats/48211/reply \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Smartbtn-Idempotency-Key: $(uuidgen)" \
  -d '{"text":"Готово, доступ восстановлен."}'
Владелец может задать токенам агента поддержки свой лимит в минуту — или снять его. Остальные маршруты живут по общему лимиту.
08

ИИ API

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

Ассистенты и ИИ‑операторы

Несколько ассистентов со своей ролью и языком, тест перед запуском, операторы с именами на каждом языке.

  • GET/v1/ai/assistants
  • POST/v1/ai/assistants/{id}/test
  • PATCH/v1/ai/operators/{id}
  • POST/v1/ai/handoff
Скоупы: ai:read · ai:write
Свой ключ провайдера (BYOK)

Claude, ChatGPT, DeepSeek, YandexGPT, Gemini, Mistral или любой OpenAI‑совместимый. Список моделей — по ключу.

  • GET/v1/ai/credentials
  • POST/v1/ai/credentials
  • GET/v1/ai/credentials/{id}/models
Скоупы: ai:read · ai:credentials:write
База знаний

Краулер по вашему сайту, загрузка PDF и DOCX, правила, поиск и статус индексации.

  • PUT/v1/kb/crawler
  • POST/v1/kb/uploads
  • POST/v1/kb/rules
  • GET/v1/kb/search
Скоупы: kb:read · kb:write · files:write
Самообучение

Запуск настройки, циклы, журнал, версии персоны с откатом и стоп‑кран.

  • POST/v1/ai/learning/tune
  • GET/v1/ai/learning/cycles
  • POST/v1/ai/learning/persona‑versions/{version}/revert
  • GET/v1/ai/learning/kill‑switch
Скоупы: ai:read · ai:write · ai:apply
Пожелания к ИИ

Пожелание свободным текстом → предпросмотр без последствий → одобрить, отклонить или откатить.

  • POST/v1/wishes
  • GET/v1/wishes/{id}/preview
  • POST/v1/wishes/{id}/approve
  • POST/v1/wishes/{id}/revert
Скоупы: ai:write · ai:apply
Проблемы и сигналы спроса

Кластеры проблем со статусами и месячным лимитом расходов; что клиенты просили, а у вас этого нет.

  • GET/v1/problems
  • PATCH/v1/problems/settings
  • POST/v1/problems/{id}/status
  • GET/v1/ai/demand‑signals
Скоупы: problems:read · problems:write · ai:read
Статус клиента

Ваш бэкенд сообщает статус клиента (зарегистрирован, оплатил, клиент с какого времени, состояние сервиса) запросом с подписью HMAC — ИИ учитывает его в ответе и эскалации.

  • POST/v1/ai/customer‑status
  • POST/v1/ai/tickets
  • GET/v1/ai/alerts
Скоупы: ai:write · ai:read
Ассистент в вашем приложении

Ход диалога, привязка чата к аккаунту, распознавание и синтез речи, тикеты из приложения — через подписанную интеграцию.

  • POST/v1/ai/assistant/turn
  • POST/v1/ai/assistant/account‑link
  • POST/v1/ai/assistant/speech‑to‑text
  • POST/v1/ai/assistant/text‑to‑speech
Скоупы: подпись интеграции (HMAC)
Маркетплейс решений

Готовые ассистенты под нишу: кофейня, клиника, магазин, автосервис. Применить — один запрос.

  • GET/v1/ai/marketplace/templates
  • POST/v1/ai/marketplace/templates/{slug}/apply
Скоупы: ai:read · ai:write
Внешний ИИ‑оператор

Свой бот отвечает в чатах: асинхронные ответы, передача человеку, тесты и жизненный цикл.

  • POST/v1/ai/replies
  • POST/v1/external‑operators/{public_id}/tests
  • POST/v1/external‑operators/{public_id}/lifecycle
Скоупы: responder:inject · responder:escalate
09

Лимиты

На каждый токен — два счётчика: чтение и запись считаются отдельно, поэтому опрос не съедает бюджет записи.

600 / минчтение: GET, HEAD
120 / минзапись: POST, PATCH, PUT, DELETE
429сверх лимита — ждите Retry‑After
X‑RateLimit‑LimitРазмер счётчика, в который попал запрос (600 или 120)
X‑RateLimit‑RemainingСколько запросов осталось в окне
X‑RateLimit‑ResetКогда окно обнулится
Retry‑AfterПри 429: сколько секунд ждать
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
Retry-After: 12
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0

{ "status": 429, "title": "Too Many Requests", "reason": "rate_limited" }

У /v1/ai/assistant/tickets/status и /v1/ai/assistant/account‑link — свои счётчики; для Support‑agent API владелец может задать свой лимит.

10

Ошибки

Любая ошибка — RFC‑7807 application/problem+json: статус и причина для машины, пояснение для человека.

HTTP/1.1 403 · Content-Type: application/problem+json
{
  "type": "https://smartbtn.me/problems/forbidden",
  "title": "Forbidden",
  "status": 403,
  "detail": "Token lacks scope chats:write.",
  "required_scopes": [
    "chats:write"
  ],
  "hint": "Dashboard → API tokens → key → Edit scopes"
}

В теле — required_scopes и подсказка, где выдать скоуп. Перевыпускать ключ не нужно.

СтатусЗначение
400Некорректный запрос или не передан обязательный ключ идемпотентности
401Нет токена, токен неверный или отозван
403У токена нет скоупа; в теле — required_scopes и где его выдать
404Не найдено в этом виджете
405Метод не разрешён — остановитесь и сообщите, не ищите обходных записей
409Ключ идемпотентности повторён в течение 24 ч или конфликт состояния
422Ошибка валидации (например, прислали поле только для чтения)
429Лимит запросов; соблюдайте Retry‑After
11

Идемпотентность

Сеть подводит. Ключ делает повтор записи безопасным: одна операция не выполнится дважды.

  • Передавайте X‑Smartbtn‑Idempotency‑Key в каждом POST / PATCH / PUT / DELETE: новый UUID — для новой операции, тот же ключ — для повтора той же.
  • Операции с x‑idempotency: required в OpenAPI: нет ключа → 400, ключ повторён в течение 24 часов → 409 (а не закешированный успех).
  • Не уверены, прошла ли запись? Сначала прочитайте состояние. Не меняйте ключ автоматически; соблюдайте Retry‑After.
  • Ответ 502 от внешнего провайдера освобождает ключ — повторяйте с тем же ключом.
KEY=$(uuidgen)
curl -X PATCH https://smartbtn.me/api/v1/widget/settings \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Smartbtn-Idempotency-Key: $KEY" \
  -d '{"language":"ru"}'
# ошибка сети? повторите с тем же $KEY
12

Changelog

Изменения публичного API и вебхуков в 2026 году. Всё ниже — добавления, версия остаётся v1.

НовоеТикеты: вебхук ticket.created, очередь по support:read, подсказка в 403

Новое событие ticket.created (включено). GET /v1/support/tickets отвечает любому ключу с support:read, пока агент поддержки не настроен. Скоупы ключа меняются в кабинете без перевыпуска. 403 получает required_scopes.

НовоеИмя ИИ‑оператора на каждом языке

POST/PATCH /v1/ai/operators принимают name_i18n; системные имена переводятся на язык виджета; предсказуемый выбор приветствия.

ИзменениеЛимиты: чтение и запись считаются отдельно

Чтение — 600 в минуту, запись — 120. Опрос больше не съедает бюджет записи. X‑RateLimit-* описывают счётчик, в который попал запрос.

НовоеGET /v1/chats: фильтр updated_since

Чаты с активностью начиная с указанного момента — как бы давно они ни были созданы. В каждом чате появилось last_message_at.

НовоеSupport API: чат запросил почту

chat.account.email_requested — чат ждёт адрес клиента, агенту не нужно запускать второй поток кода.

НовоеСкоуп support:tickets:close

Только закрытие тикета — для кнопки «Вопрос решён» на вашем бэкенде.

НовоеGET /v1/chats: поиск по тексту и сообщениям клиента

Фильтры has_client_messages=1 и q (2–100 символов).

НовоеПривязка аккаунта из бэкенда

POST /v1/ai/assistant/account‑link и /revoke. Выключено, пока владелец не включит.

ИсправлениеБаза знаний: запись с ключом ассистента

Правила индексируются ключом виджета или ключом включённого ассистента; 502 освобождает ключ идемпотентности.

ИзменениеSupport‑agent API: срок жизни аккаунта app‑ticket

Аккаунт виден, пока тикет открыт и ещё 7 дней после закрытия.

НовоеSupport‑agent API

Новая группа /v1/support: очередь, чаты, аренда чатов, ответы, закрытие и переоткрытие тикетов. Выключено, пока владелец не включит.

НовоеSupport‑agent API: окно e‑mail кода

Поля code_pending, code_expires_at, last_code_result и last_code_at.

13

Плагин WordPress

Виджет на сайте WordPress без правки кода темы.

  1. Скачайтеархив плагина на компьютер.
  2. УстановитеПоложите распакованную папку в wp‑content/plugins/ — или загрузите через админку WordPress.
  3. АктивируйтеВ меню появится пункт Smartbtn.
  4. Вставьте токенСкопируйте токен безопасности из настроек виджета в кабинете.
Важно

При смене пароля токен безопасности меняется, старый перестаёт работать — вставьте новый в плагин.

14

Примеры кода

Все чаты с активностью с прошлого опроса — по курсору до конца.

# первая страница
curl -G https://smartbtn.me/api/v1/chats \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  --data-urlencode "updated_since=2026-10-17T09:00:00+03:00"

# следующая — с next_cursor из ответа
curl -G https://smartbtn.me/api/v1/chats \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  --data-urlencode "cursor=eyJpZCI6NDgyMDd9"
Готово к работе

Выпустите токен — и нажмите Энтер.