Для разработчиков
REST API: безопасный первый запрос
Создайте токен с минимальными правами, проверьте контекст организации и только затем подключайте заявки или другую рабочую систему.
- MAX + Telegram
- Российская инфраструктура

Быстрый выбор
Откройте нужную часть документации
Подробности
Полная документация REST API v1
REST API AppsMax v1 — server-to-server интерфейс для чтения проектов и передачи рабочих данных между AppsMax и внешней системой. Через него можно получать ботов, подключения, мини-приложения, сценарии и меню, а также работать с заявками, подписчиками и кампаниями.
Это API платформы AppsMax, а не официальный API MAX или Telegram. Имя рабочего домена telegram.appsmax.ru историческое и не ограничивает API одним мессенджером: доступные данные зависят от проектов вашей организации и правил подключённого канала.
Если вы не разработчик: сначала выберите готовую функцию, webhook или REST API в понятном обзоре интеграций, затем откройте пошаговые инструкции базы знаний. Эта страница нужна для точных методов, полей и ошибок.
https://telegram.appsmax.ru/api/v1Доступ: REST API входит в текущий тариф «Профи» либо включается по индивидуальному праву. Точный состав тарифа проверяйте на странице «Тарифы» до внедрения.
Быстрый старт
- Откройте в кабинете AppsMax раздел Данные → Интеграции → API.
- Создайте токен только с теми scopes, которые нужны интеграции. Скопируйте значение сразу: секрет не предназначен для повторного показа.
- Сохраните токен в secret-хранилище серверного приложения. Не помещайте его в публичный JavaScript, мобильное приложение, репозиторий или URL.
- Проверьте контекст токена методом
GET /me.
curl --request GET \
--url https://telegram.appsmax.ru/api/v1/me \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Успешный ответ содержит объект data с организацией и сведениями о токене: его именем, scopes, индивидуальным rate limit и временем последнего использования.
Авторизация и формат
Рекомендуемый способ — заголовок Authorization: Bearer YOUR_API_TOKEN. Для совместимости поддерживается запасной заголовок X-Api-Token: YOUR_API_TOKEN. Токен в query string не поддерживается и не должен использоваться.
- Запросы и ответы:
application/json. - Текущая версия возвращается в заголовке
X-Api-Version: v1. - Все методы, включая
/ping, требуют действующий API-токен. - Токен всегда ограничен своей организацией; чужой объект возвращается как недоступный или не найденный.
Scopes доступа
Для нового подключения выбирайте минимально необходимые права. Токен без заданного списка scopes технически получает полный доступ в пределах организации, поэтому для новых интеграций такой режим не рекомендуется.
| Scope | Что разрешает |
|---|---|
organizations:read |
Читать текущую организацию. |
bots:read |
Читать список и карточки ботов. |
connections:read |
Читать состояние подключения бота к каналу. |
miniapps:read |
Читать мини-приложения. |
funnels:read |
Читать сценарии и воронки. |
interactive_menu:read |
Читать элементы интерактивного меню. |
applications:read |
Читать заявки. |
applications:write |
Создавать заявки и синхронизировать их теги. |
campaigns:read |
Читать кампании. |
campaigns:write |
Создавать и отдельно запускать кампании. |
subscribers:read |
Читать подписчиков. |
subscribers:write |
Создавать или обновлять подписчиков. |
Методы REST API v1
Ниже перечислен весь публичный набор на дату проверки. Идентификаторы в фигурных скобках — целые числа. Для коллекций обычно действует per_page от 1 до 100; у интерактивного меню верхняя граница 200.
| Метод | Путь | Scope | Назначение |
|---|---|---|---|
| GET | /ping |
— | Проверить токен и контекст организации. |
| GET | /me |
— | Получить токен, scopes, лимит и организацию. |
| GET | /organizations |
organizations:read |
Получить текущую организацию. |
| GET | /bots |
bots:read |
Список ботов; фильтры driver, status. |
| GET | /bots/{bot} |
bots:read |
Карточка бота своей организации. |
| GET | /bots/{bot}/connections |
connections:read |
Канал, статус и доступный профиль подключения. |
| GET | /miniapps |
miniapps:read |
Мини-приложения; фильтры bot_id, status. |
| GET | /funnels |
funnels:read |
Сценарии; фильтры bot_id, active. |
| GET | /interactive-menu |
interactive_menu:read |
Элементы меню; фильтры bot_id, active. |
| GET | /applications |
applications:read |
Заявки с фильтрами по боту, статусу, источнику, тегу и датам. |
| POST | /applications |
applications:write |
Создать заявку. Поле bot_id обязательно. |
| GET | /applications/{id} |
applications:read |
Получить одну заявку. |
| POST | /applications/{application}/tags |
applications:write |
Синхронизировать до 20 непустых тегов. |
| GET | /campaigns |
campaigns:read |
Кампании с фильтрами по боту, статусу, типу, датам и строке поиска. |
| POST | /campaigns |
campaigns:write |
Создать черновик или запланированную кампанию; не заменяет запуск. |
| GET | /campaigns/{campaign} |
campaigns:read |
Получить кампанию и её содержимое. |
| POST | /campaigns/{id}/run |
campaigns:write |
Перевести черновик в состояние запуска/планирования. |
| GET | /subscribers |
subscribers:read |
Подписчики с фильтрами по каналу, статусу, боту, тегу, группе и датам. |
| POST | /subscribers |
subscribers:write |
Создать или обновить запись по паре bot_id + external_id. |
| GET | /subscribers/{id} |
subscribers:read |
Получить одного подписчика. |
| PATCH | /subscribers/{id} |
subscribers:write |
Обновить канал, статус, имя, username или теги. |
Примеры запросов
Получить ботов
curl --request GET \
--url 'https://telegram.appsmax.ru/api/v1/bots?driver=max&per_page=50' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Создать заявку
bot_id обязателен и должен принадлежать организации токена. Поле верхнего уровня status при создании не поддерживается: новая заявка получает начальный статус по правилам AppsMax.
curl --request POST \
--url https://telegram.appsmax.ru/api/v1/applications \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"bot_id": 42,
"source": "rest_api",
"title": "Заявка с сайта",
"channel": "website",
"contact": {
"name": "Тестовый контакт",
"phone": "+70000000000",
"email": "test@example.invalid"
},
"payload": {
"comment": "Проверка интеграции"
}
}'
Ответ на успешное создание — 201 Created. В нём возвращаются идентификатор, бот, источник, статус, контакт, ответы, метаданные формы, теги и временные метки.
Добавить теги заявке
curl --request POST \
--url https://telegram.appsmax.ru/api/v1/applications/123/tags \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"tags":["сайт","повторный контакт"]}'
Создать и затем запустить кампанию
Создание и запуск — два разных действия. Сначала создаётся запись кампании:
curl --request POST \
--url https://telegram.appsmax.ru/api/v1/campaigns \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"bot_id": 42,
"title": "Сервисное уведомление",
"content": "Ваш запрос обработан.",
"channel": "max"
}'
После проверки аудитории, содержания, согласий и правил канала черновик запускается отдельным методом:
curl --request POST \
--url https://telegram.appsmax.ru/api/v1/campaigns/321/run \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Важно: наличие API-метода не отменяет требования закона, согласия адресата и ограничения мессенджера. Массовые маркетинговые сообщения в личные чаты MAX доступны только при отдельном разрешении площадки.
Пагинация и фильтры
Коллекции Laravel возвращают массив data, ссылки пагинации и блок meta. Используйте URL следующей страницы из ответа либо параметр page. Значение per_page ограничивается сервером.
- Заявки:
status[],source[],created_from,created_to,bot_id,tag,sort=created_at|submitted_at,direction=asc|desc. - Кампании:
bot_id,status[],type[],created_from,created_to,q,sort=created_at,direction. - Подписчики:
channel[],status[],bot_id,tag,group_id,q, даты и направление сортировки.
Ошибки, версия и лимиты
Основные API-ошибки имеют единый объект error:
{
"error": {
"code": "validation_failed",
"message": "Validation failed.",
"details": {
"fields": {
"bot_id": ["The bot id field is required."]
}
}
}
}
| HTTP | Когда возникает |
|---|---|
401 |
Токен отсутствует, недействителен или отозван. |
403 |
Нет нужного scope или объект недоступен организации. |
404 |
Ресурс не найден в доступном контуре. |
422 |
Поля запроса не прошли валидацию. |
429 |
Превышен общий или дополнительный лимит операции. |
500 |
Неожиданная серверная ошибка. |
Базовый лимит — 60 запросов в минуту на токен. Для конкретного токена администратор может установить другое значение; фактический лимит виден в GET /me и заголовках X-RateLimit-*. Создание и запуск кампаний дополнительно защищены отдельными лимитами. При 429 используйте паузу и exponential backoff, не увеличивайте burst.
Исходящие webhook AppsMax
Webhook нужен, когда AppsMax должен сам сообщить вашей системе о новой заявке, изменении данных или статуса. Это отдельный механизм: REST API вызываете вы, а webhook отправляет AppsMax.
- Приёмник должен использовать HTTPS и проверять заголовок события и HMAC-SHA256 подпись по исходному телу запроса.
- Доставка выполняется как минимум один раз, поэтому обработчик должен безопасно распознавать повтор одного события.
- Прямой режим Bitrix24 поддерживает собственный ограниченный набор событий; amoCRM подключается через внешний обработчик, который выполняет авторизацию и вызов amoCRM.
Стабильная схема событий, payload, подписи, повторов и ошибок опубликована отдельно: контракт исходящих webhook 1.0.0. REST-методы по-прежнему описывает OpenAPI 1.1.1.
Безопасность и честные ограничения
- Только сервер-сервер. Не встраивайте токен в браузерный код. Произвольные cross-origin запросы из чужого сайта не являются поддерживаемым способом интеграции.
- Минимальные scopes. Разделяйте токены чтения и записи, если интеграция допускает это.
- Ротация. Отзывайте неиспользуемые токены и создавайте новый после подозрения на раскрытие.
- Персональные данные. Передавайте только необходимые поля, определите роли оператора и обработчика, сроки хранения и порядок удаления.
- Кампании. До запуска проверяйте содержание, аудиторию, основание коммуникации и правила конкретного канала.
- Webhooks. Исходящие события не входят в REST OpenAPI: для них действует отдельный публичный контракт webhook 1.0.0.
- Нет публичного SDK. Официальные Python, PHP, JavaScript или другие SDK AppsMax сейчас не заявлены. Используйте обычный HTTPS-клиент и OpenAPI.
Когда REST API не нужен
Если задача ограничивается формой заявки, мини-приложением, меню, записью или простой передачей в уже доступную интеграцию, быстрее начать с готовых блоков AppsMax. REST API нужен, когда внешняя система должна читать данные, создавать записи или управлять процессом по собственным правилам.
Для Bitrix24, n8n и других систем сначала проверьте обзор интеграций и доступные настройки кабинета: индивидуальная разработка требуется не всегда.
Перед внедрением
Проверьте один запрос на тестовых данных
Не передавайте токены, рабочие данные и персональные сведения в обычной переписке.