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

Справочник методов API

Все методы одним списком: что делает, какие принимает параметры и какой уровень доступа нужен ключу. Список формируется из кода сервиса, поэтому не расходится с тем, что работает на самом деле.

45 методов Один эндпоинт POST /api/v1 Машиночитаемая спека OpenAPI

Все вызовы — POST /api/v1 с заголовком Authorization: Bearer bb_…. Метод указывается полем method, бот — полем botId.

Ошибка самого метода приходит с кодом 200 — «не нашёл подписчика», «нет такой группы» и подобное различаются полем success или error в теле, а не HTTP-статусом. Это унаследовано от прежней версии API и сохранено намеренно: по нему уже работают чужие скрипты. До метода дело доходит не всегда: неверный или отозванный ключ — это 401, запрос не методом POST — 405, превышение частоты — 429. Клиент должен различать оба слоя: проверять HTTP-код и только потом читать тело.

Уровень доступа задаётся при выпуске ключа в разделе «API, MCP» панели. Машиночитаемое описание всех методов — /api/v1/openapi.json: его можно скормить генератору клиента или Swagger UI.

Подписчики и группы

AddUserToGroup изменение

Добавить подписчика в группу или убрать из неё.

Параметр Тип Описание
user* integer id подписчика
group* integer id группы
remove boolean true — убрать из группы
CreateGroup изменение

Создать группу подписчиков.

Параметр Тип Описание
name* string название группы
description string
grouplist integer id папки сегментов; по умолчанию первая
DeleteGroup полный

Удалить группу вместе с членством. Подписчики остаются. Необратимо.

Параметр Тип Описание
id* integer id группы (GetGroups)
GetBotUsers чтение

Подписчики бота с признаками «закрыл чат» и «заблокирован».

Параметр Тип Описание
limit integer по умолчанию 1000, максимум 5000
offset integer
GetGroupUsers чтение

Подписчики группы.

Параметр Тип Описание
group* integer id группы
limit integer по умолчанию 1000, максимум 5000
offset integer
GetGroups чтение

Группы подписчиков (сегменты).

GetUserProfile чтение

Профиль подписчика: поиск по id, логину, телефону или email.

Параметр Тип Описание
user integer id подписчика
login string логин Telegram без @
phone string
email string

Сообщения и рассылки

CancelBroadcast полный

Отменить запланированную рассылку. Ушедшую в отправку отменить нельзя — её останавливает StopBroadcast.

Параметр Тип Описание
id* integer id рассылки (GetBroadcasts)
CreateBroadcast полный

Разовая рассылка подписчикам: сейчас или по расписанию. Тратит деньги и внимание аудитории.

Параметр Тип Описание
text string текст (HTML-разметка Telegram); обязателен, если нет mediaFileId и richmessage
richmessage string расширенное сообщение (ТОЛЬКО Telegram): HTML с заголовками, цитатами, таблицами, медиа и рядами кнопок; заменяет обычный текст
mediaFileId integer id файла в хранилище бота
groupId integer id группы; 0 или пусто — всем подписчикам
sendAt string 'now' или 'YYYY-MM-DD HH:MM' по Москве
buttons array кнопки: {text, url} либо {text, categoryId}
interval number пауза между получателями в секундах (по умолчанию 1; минимум 0.05 для Telegram и 0.1 для MAX и ВКонтакте, максимум 60). Чем больше пауза, тем безопаснее для бота
GetBroadcasts чтение

Разовые рассылки бота со статусом (запланирована / отправляется / останавливается / отправлена / остановлена / прервана) и ходом отправки: done из total, intervalMs, remainingSec, stoppable.

Параметр Тип Описание
limit integer по умолчанию 200, максимум 200
offset integer
SendMessage полный

Отправить сообщение конкретным подписчикам или группе. Списывает средства.

Параметр Тип Описание
users array до 1000 id подписчиков
group integer id группы — альтернатива users
message string текст сообщения
category integer id рубрики: вместо текста запустить сценарий
StopBroadcast полный

Остановить идущую рассылку (в GetBroadcasts stoppable=true): следующая волна не уйдёт, списание — только за отправленное. Тем, кому она уже ушла, сообщение останется.

Параметр Тип Описание
id* integer id рассылки (GetBroadcasts)

Переменные

GetVariables чтение

Справочник переменных бота (id, ключ, лимит длины, тип значения).

SetUserVariable полный

Записать значение переменной подписчику. Если у переменной задан тип (число, дата, телефон, почта, да/нет), значение проверяется и приводится к единому виду — телефон, например, к +7…

Параметр Тип Описание
user* integer id подписчика
variable* integer id типа переменной (GetVariables)
value* string значение; проверяется по типу переменной и обрезается по её strlimit. Пустая строка очищает переменную

Балансы

GetBalanceTypes чтение

Типы внутренних балансов бота и курсы обмена.

SetBalanceTypeExchangeRate полный

Изменить курс обмена типа баланса.

Параметр Тип Описание
balancetype* integer id типа (GetBalanceTypes)
exchangerate* number новый курс
SetUserBalance полный

Изменить внутренний баланс подписчика. Движение денег — операция необратимая.

Параметр Тип Описание
user* integer id подписчика
balancetype* integer id типа баланса
amount* number сумма: со знаком — изменение, иначе установка
comment string комментарий в историю операций

Оплата

CreatePaymentSystem полный

Создать способ оплаты бота. Ключи, без которых платёж не пройдёт, обязательны сразу. На MAX и ВКонтакте внешних шлюзов нет — там допустим только тип manual.

Параметр Тип Описание
name* string название способа оплаты (видит только владелец)
type* string manual (ручной перевод с подтверждением) | token (платёжный токен от @BotFather) | stars (Telegram Stars) | cryptobot | yookassa | cloudpayments | tinkoff
balancetype integer id внутреннего баланса, в котором считается сумма (GetBalanceTypes)
paymenttoken string секрет: платёжный токен бота (token) либо api-key приложения @CryptoBot (cryptobot)
cryptobotcurrency string код криптовалюты счёта @CryptoBot (USDT, TON…) — обязателен для cryptobot
paymentshop string секрет: shopId (ЮKassa) | Public ID (CloudPayments) | Terminal Key (Т-Банк)
paymentsecret string секрет: секретный ключ | API Secret | пароль терминала
invoicerfswitch boolean передавать данные чека по 54-ФЗ
invoicedatatype string откуда брать данные чека: sendphone | sendphonevar | sendemailvar | sendphoneemailvar | userinputphone | userinputemail | userinputphoneemail
invoiceemailvar integer id переменной с email для чека (GetVariables)
invoicephonevar integer id переменной с телефоном для чека
policyurl string ссылка на политику обработки данных для страницы оплаты эквайринга; пусто — общая страница сервиса
invoicetaxsystem string система налогообложения для чека: osn | usn_income | usn_income_outcome | esn | patent; для tinkoff с чеком обязательна
invoicevat string ставка НДС позиции чека 54-ФЗ: none | vat0 | vat5 | vat7 | vat10 | vat22 | vat105 | vat107 | vat110 | vat122; по умолчанию none
invoicesubject string предмет расчёта позиции чека 54-ФЗ: commodity | service | payment | another; по умолчанию commodity
invoicemode string способ расчёта позиции чека 54-ФЗ: full_payment | full_prepayment | advance; по умолчанию full_payment
invoicebalanceadvance boolean пополнение внутреннего баланса пробивать авансом (advance, предмет payment); по умолчанию false
invoice_ttl_hours integer срок оплаты выставленного счёта, часов: 1–720; 0 — по умолчанию (24 ч, у cloudpayments 72 ч). После срока счёт перестаёт приниматься, подписчик может выставить его заново. Только для stars, token, cryptobot, yookassa, cloudpayments, tinkoff; у manual — 0
manual_issued_hours integer только manual: сколько часов действуют кнопки «Оплатил/Отмена»; 0 — бессрочно; целое 0–8760, по умолчанию 72
manual_receipt_hours integer только manual: сколько часов ждать подтверждения оплаты после «Оплатил»; 0 — бессрочно; целое 0–8760, по умолчанию 72
manual_remind_hours integer только manual: через сколько часов напомнить о неразобранной оплате (не больше 3 раз); 0 — не напоминать; целое 0–8760, по умолчанию 24
manual_autodecline_hours integer только manual: через сколько часов отклонить неразобранную оплату (подписчик получит «оплата не подтверждена»); 0 — выключено; целое 0–8760, по умолчанию 0
refundcategory integer id рубрики этого бота (GetCategories), в которую переводится подписчик при ПОЛНОМ возврате оплаты (уведомление эквайринга или возврат Telegram Stars из панели); там владелец настраивает реакцию: смена тарифа, списание баланса, сообщение. Переход прерывает текущий сценарий подписчика. 0 — только уведомление владельцу. Частичный возврат — всегда только уведомление. Только для stars, yookassa, cloudpayments, tinkoff
DeletePaymentSystem полный

Удалить способ оплаты. Действия «Оплата», ссылавшиеся на него, останутся с висячей ссылкой и уведут подписчика по маршруту ошибки — их число вернётся в actionsAffected. Необратимо.

Параметр Тип Описание
id* integer id способа оплаты (GetPaymentSystems)
GetPaymentSettings чтение

Денежные настройки бота: реферальная программа (выплата пригласившему за подтверждённый платёж) и уведомления владельца об оплатах.

GetPaymentSystems чтение

Способы оплаты бота: тип, баланс, настройки чека 54-ФЗ и признак готовности (ready/missing). Токены и ключи эквайринга не возвращаются — только признак «задано» в secrets.

SetPaymentSettings полный

Изменить денежные настройки бота (частично). Реферальная выплата начисляется пригласившему в момент подтверждённого платежа приглашённого и тратит баланс бота на каждой оплате.

Параметр Тип Описание
paymentrefswitch boolean включить реферальную программу
paymentrefpercentswitch boolean выплата процентом от суммы оплаты (иначе фиксированная сумма)
paymentrefpercent number процент выплаты: больше 0 и не больше 100
paymentrefamount number фиксированная выплата: больше нуля
paymentrefbalancetype integer id баланса начисления (GetBalanceTypes); обязателен при включённой программе
paymentrefmessage string сообщение пригласившему при выплате; пусто — не отправлять
notifyfinance boolean уведомлять владельца об оплатах, ждущих его решения. Устарело: при включённых профилях оповещений (раздел «Оповещения», GetAlertProfiles/SetAlertProfile) поле отклоняется — кому приходят оплаты, задаёт профиль в действии «Оплата»
UpdatePaymentSystem полный

Изменить способ оплаты (частично: переданные поля обновляются, остальные сохраняются). Смена реквизитов перенаправляет оплаты клиентов на другой счёт.

Параметр Тип Описание
id* integer id способа оплаты (GetPaymentSystems)
name string
type string
balancetype integer
paymenttoken string
cryptobotcurrency string
paymentshop string
paymentsecret string
invoicerfswitch boolean
invoicedatatype string
invoiceemailvar integer
invoicephonevar integer
invoicetaxsystem string
policyurl string
invoicevat string
invoicesubject string
invoicemode string
invoicebalanceadvance boolean
invoice_ttl_hours integer срок оплаты выставленного счёта, часов: 1–720; 0 — по умолчанию (24 ч, у cloudpayments 72 ч). После срока счёт перестаёт приниматься, подписчик может выставить его заново. Только для stars, token, cryptobot, yookassa, cloudpayments, tinkoff; у manual — 0
manual_issued_hours integer только manual: сколько часов действуют кнопки «Оплатил/Отмена»; 0 — бессрочно; целое 0–8760, по умолчанию 72
manual_receipt_hours integer только manual: сколько часов ждать подтверждения оплаты после «Оплатил»; 0 — бессрочно; целое 0–8760, по умолчанию 72
manual_remind_hours integer только manual: через сколько часов напомнить о неразобранной оплате (не больше 3 раз); 0 — не напоминать; целое 0–8760, по умолчанию 24
manual_autodecline_hours integer только manual: через сколько часов отклонить неразобранную оплату (подписчик получит «оплата не подтверждена»); 0 — выключено; целое 0–8760, по умолчанию 0
refundcategory integer id рубрики этого бота (GetCategories), в которую переводится подписчик при ПОЛНОМ возврате оплаты (уведомление эквайринга или возврат Telegram Stars из панели); там владелец настраивает реакцию: смена тарифа, списание баланса, сообщение. Переход прерывает текущий сценарий подписчика. 0 — только уведомление владельцу. Частичный возврат — всегда только уведомление. Только для stars, yookassa, cloudpayments, tinkoff

Оповещения

GetAlertProfiles чтение

Профили оповещений бота — кому уходят заявки, файлы хранилища, запросы доступа, оплаты и брони: получатели с состоянием доставки, переменные, число мест, где выбран профиль, и справочники для получателей (chats — каналы и группы бота, members — команда бота, variables). active=false — профили в окружении ещё не включены, действуют старые «Уведомления».

SetAlertProfile полный

Создать профиль оповещений (без id) или изменить его частично (с id): не переданные поля сохраняются. recipients добавляет новых получателей и меняет тему сохранённых чатов, remove убирает — список целиком не заменяется. Подписчик бота ({kind:"botuser"}) молча не добавляется: в ответе придёт subscriberLink, человек подтверждает подключение в боте. Выбрать профиль в действиях и объектах брони — через MCP.

Параметр Тип Описание
id integer id профиля (GetAlertProfiles); без него — создать
name string название профиля (обязательно при создании)
isDefault boolean сделать профилем по умолчанию (прежний снимется сам)
variables string "none" — не прикладывать переменные, "all" — все заполненные подписчиком, или массив id переменных (GetVariables)
recipients array получатели: {kind:"email", email} · {kind:"member", accountId или email} — участник команды бота · {kind:"chat", channelId, topic?} — канал или группа бота, topic — ссылка на тему форума или её номер · {kind:"botuser"} — ссылка для подписчика · {kind:"bitrix", type:"lead"|"deal", userFields?}; правка темы сохранённого чата — {id, topic}
remove array id получателей, которых убрать

Каналы и ссылки

CreateChannelPost полный

Пост в канал или группу бота: черновик, по расписанию или сразу. Опубликованное сразу видят все подписчики канала.

Параметр Тип Описание
channelId integer id канала (GetChannels)
text string текст поста (HTML-разметка Telegram), до 4000 символов; обязателен даже при richmessage — он превью и запасной вариант
richmessage string расширенное сообщение (ТОЛЬКО Telegram): HTML с таблицами, цитатами, файлами и рядами кнопок
mode string draft (по умолчанию), scheduled (нужен sendAt) или now
sendAt string 'YYYY-MM-DD HH:MM' в местном времени канала
buttons array кнопки {text, url}; в постах канала только https-ссылки
CreateInviteLink полный

Создать инвайт-ссылку канала.

Параметр Тип Описание
channel* integer id канала
name string название ссылки (видно только вам)
expire_date string срок действия, YYYY-MM-DD
member_limit integer лимит переходов
join_request boolean вступление по заявке
advercost string стоимость размещения (для отчёта по рекламе)
description string заметка
DeleteChannelPost полный

Удалить пост из плана публикаций. Уже опубликованное сообщение остаётся в канале — его убирают в самом мессенджере.

Параметр Тип Описание
channelId integer id канала (GetChannels)
id integer id поста (GetChannelPosts)
DeleteInviteLink полный

Отозвать инвайт-ссылку. Необратимо.

Параметр Тип Описание
channel* integer id канала
link* string сама ссылка
EditInviteLink полный

Изменить инвайт-ссылку.

Параметр Тип Описание
channel* integer id канала
link* string сама ссылка (GetInviteLinks)
name string
expire_date string
member_limit integer
join_request boolean
advercost string
description string
GetChannelPosts чтение

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

Параметр Тип Описание
channelId integer id канала (GetChannels)
limit integer по умолчанию 200, максимум 200
offset integer
GetChannels чтение

Каналы и группы, к которым подключён бот.

GetInviteLinks чтение

Инвайт-ссылки канала со статистикой переходов.

Параметр Тип Описание
channel* integer id канала (GetChannels)

События и структура

GetAccess чтение

Заявки на доступ с даты.

Параметр Тип Описание
date* string с какого момента
user integer
limit integer
offset integer
GetCategories чтение

Структура бота: списки рубрик и рубрики внутри них.

GetSignals чтение

Сигналы (события сценариев) с даты.

Параметр Тип Описание
date* string с какого момента: 'YYYY-MM-DD' или 'YYYY-MM-DD HH:MM:SS'
user integer только по одному подписчику
limit integer
offset integer
GetStorage чтение

Файлы и тексты, присланные подписчиками, с даты.

Параметр Тип Описание
date* string с какого момента
user integer
limit integer
offset integer
SetAccess полный

Одобрить или отклонить заявку на доступ. allow — подписчик получает текст «доступ открыт» и идёт дальше по сценарию; deny — текст отказа. Повтор того же статуса ничего не меняет; deny по уже одобренной заявке отзывает доступ без сообщения (при следующем входе «Запрос доступа» не пустит).

Параметр Тип Описание
accessid* integer id заявки (GetAccess)
status* string allow | deny

Бронирование

GetBooking чтение

Одна бронь по id.

Параметр Тип Описание
booking* integer id брони
GetBookingList чтение

Брони объекта на ближайшие дни.

Параметр Тип Описание
object* integer id объекта
days integer горизонт в днях: по умолчанию 14, максимум 90
GetBookingLots чтение

Свободные слоты объекта по услугам.

Параметр Тип Описание
object* integer id объекта (GetBookingObjects)
services array id услуг
days integer горизонт в днях
date string конкретный день, YYYY-MM-DD
GetBookingObjects чтение

Объекты бронирования (готовые к записи).

GetBookingServices чтение

Услуги бронирования: длительность и цена.

GetBookingStatusList чтение

Справочник статусов брони.

SetBookingStatus полный

Подтвердить или отклонить бронь (как во «Входящих» панели).

Параметр Тип Описание
booking* integer id брони
status* string accepted — подтвердить, declined — отклонить; при ждущей ручной оплате accepted отклоняется

Звёздочкой отмечены обязательные параметры. Поле botId обязательно во всех методах и здесь не повторяется.

Зачислим 200 рублей для тестов при регистрации

Нужен ключ доступа?

Ключи выпускаются в разделе «API, MCP» панели: выберите уровень доступа — чтение, изменение или полный — и скопируйте ключ.