REST API AppsMax — документация v1

REST API AppsMax v1 — server-to-server интерфейс для чтения проектов и передачи рабочих данных между AppsMax и внешней системой. Через него можно получать ботов, подключения, мини-приложения, сценарии и меню, а также работать с заявками, подписчиками и кампаниями.

Это API платформы AppsMax, а не официальный API MAX или Telegram. Имя рабочего домена telegram.appsmax.ru историческое и не ограничивает API одним мессенджером: доступные данные зависят от проектов вашей организации и правил подключённого канала.

Версияv1
Base URLhttps://telegram.appsmax.ru/api/v1
По умолчанию60 запросов/мин на токен
Проверено25 июля 2026

Доступ: REST API входит в текущий тариф «Профи» либо включается по индивидуальному праву. Точный состав тарифа проверяйте на странице «Тарифы» до внедрения.

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

  1. Откройте в кабинете AppsMax раздел Данные → Интеграции → API.
  2. Создайте токен только с теми scopes, которые нужны интеграции. Скопируйте значение сразу: секрет не предназначен для повторного показа.
  3. Сохраните токен в secret-хранилище серверного приложения. Не помещайте его в публичный JavaScript, мобильное приложение, репозиторий или URL.
  4. Проверьте контекст токена методом 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.

Безопасность и честные ограничения

  • Только сервер-сервер. Не встраивайте токен в браузерный код. Произвольные cross-origin запросы из чужого сайта не являются поддерживаемым способом интеграции.
  • Минимальные scopes. Разделяйте токены чтения и записи, если интеграция допускает это.
  • Ротация. Отзывайте неиспользуемые токены и создавайте новый после подозрения на раскрытие.
  • Персональные данные. Передавайте только необходимые поля, определите роли оператора и обработчика, сроки хранения и порядок удаления.
  • Кампании. До запуска проверяйте содержание, аудиторию, основание коммуникации и правила конкретного канала.
  • Webhooks. Настройки исходящих webhook есть в кабинете AppsMax, но их полный payload/retry/security-контракт пока не включён в эту публичную reference. Для внедрения webhook запросите актуальную схему у поддержки.
  • Нет публичного SDK. Официальные Python, PHP, JavaScript или другие SDK AppsMax сейчас не заявлены. Используйте обычный HTTPS-клиент и OpenAPI.

Когда REST API не нужен

Если задача ограничивается формой заявки, мини-приложением, меню, записью или простой передачей в уже доступную интеграцию, быстрее начать с готовых блоков AppsMax. REST API нужен, когда внешняя система должна читать данные, создавать записи или управлять процессом по собственным правилам.

Для Bitrix24, Google Sheets, n8n и других систем сначала проверьте обзор интеграций и доступные настройки кабинета: индивидуальная разработка требуется не всегда.