К содержанию

EVIR API

API для выдачи спонсорских карточек в Telegram-боте

Ваш сервер получает assignments от EVIR, отправляет карточку через Telegram и подтверждает только доказанный этап доставки.

  • Base URL: https://evir.bot/api/v1
  • JSON over HTTPS
  • Повтор delivery без двойного расчёта

Авторизация

Владелец создаёт подключение в EVIR и один раз получает ключ. Ключ хранится только на backend вашего бота.

Authorization: Bearer EVIR_API_KEY
Content-Type: application/json

Номер подключения можно передать в публичной ссылке на инструкцию. API key, токен Telegram и webhook secret — нельзя.

Основной поток

  1. 1

    1. Проверка

    POST /integrations/{projectId}/ping — убедиться, что ключ относится к активному проекту.

  2. 2

    2. Получение

    POST /integrations/{projectId}/next с recipientId и limit от 1 до 10.

  3. 3

    3. Отправка

    Отправить полученную карточку через Telegram без изменения защищённых URL.

  4. 4

    4. Подтверждение

    После подтверждённой отправки вызвать endpoint, который соответствует productType.

Публичные endpoints подключения

POST /integrations/{projectId}/ping

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

Тело: {}. Ответ подтверждает активное подключение.

POST /integrations/{projectId}/next

Получить карточки

Тело: recipientId, limit и необязательный isPremium. Пустой assignments означает, что сейчас предложений нет.

POST /integrations/{projectId}/deliveries/{id}/served

Подтвердить отправку

Для показа это расчётное событие. Для перехода и bot-ОП — только подтверждение контакта перед последующим действием.

POST /integrations/{projectId}/deliveries/{id}/qualify

Подтвердить channel-ОП

Используется для действия пользователя в ОП канала с тем же recipientId.

POST /integrations/{projectId}/start

Передать запуск

Используется для совместимого сценария атрибуции /start с recipientId и startParam.

Минимальный запрос

const response = await fetch(
  'https://evir.bot/api/v1/integrations/PROJECT_ID/next',
  {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.EVIR_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ recipientId: String(user.id), limit: 3 }),
  },
);
const { data } = await response.json();

Не вызывайте /served, если Telegram доказанно отклонил отправку. При timeout с неизвестным результатом не пересылайте карточку автоматически.

Ошибки и повторы

401 / 403

Проверьте ключ, подключение и допуск нужного SDK-формата.

404

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

409

Состояние изменилось. Прочитайте code и requiredAction, затем обновите данные.

429 / 5xx

Учтите Retry-After и повторите запрос для того же recipient или delivery. Не создавайте новую отправку при неизвестном результате Telegram.

Коротко и по делу

Что часто спрашивают

Откройте вопрос, чтобы увидеть ответ. Больше технических деталей — в документации.

Все вопросы
Можно вызывать API из frontend?

Нет. EVIR API key должен оставаться на сервере вашего бота.

Что делать, если assignments пустой?

Показать обычный сценарий бота или настроенный empty state. Пустой результат не является ошибкой.

Можно повторить served?

Да. Повторите POST для того же delivery id. Уже рассчитанный результат не создаёт второе списание или начисление.

EVIR внутри Telegram

Документация готова. Подключение начинается в EVIR.

Настройки, проверка подключения и статистика собраны в одном Mini App.
Полная инструкция