Перейти к содержанию

Admin API

Всё, что делает интерфейс, доступно по REST: кампании, потоки, лендинги, офферы, отчёты, авто-правила, интеграции, команда — 200 эндпоинтов.

Открыть интерактивный справочник →

Там же лежат OpenAPI-спецификации (Admin API, Click API) и коллекции Postman (Admin API, Click API).

База и авторизация

https://tr.example.com/admin_api/v1

Авторизация — JWT в заголовке Authorization: Bearer <token>. Токен живёт 7 дней.

curl -X POST https://tr.example.com/admin_api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"admin@local","password":"••••••"}'

Ответ содержит токен, дальше просто подставляйте его:

curl https://tr.example.com/admin_api/v1/campaigns \
  -H "Authorization: Bearer $JWT"

Если у пользователя включена 2FA, в теле логина нужен ещё mfa_code — TOTP-код или резервный код формата XXXXX-XXXXX, где X — hex-символ в верхнем регистре (0-9, A-F). Без него логин отвечает 401 mfa required.

Тот же токен принимается в cookie auth — это запасной путь для браузера, сам сервер такую cookie не выставляет. Для интеграций используйте заголовок.

JWT ≠ API-ключ

JWT — для Admin API, ключ ak_… — для Click API. Это разные механизмы, друг друга не заменяют.

Права

Запросы выполняются с правами пользователя, которому выдан токен, и в его активном воркспейсе. Матрица прав — та же, что в интерфейсе: чужие сущности не видны и не редактируются.

В токен зашит воркспейс, а роль и точечные права на каждый запрос перечитываются из членства в этом воркспейсе — поэтому их изменение действует сразу, без перевыпуска токена. Чтобы работать в другом воркспейсе, вызовите POST /workspaces/{id}/switch — он вернёт новый токен, привязанный к этому воркспейсу.

Смена пароля отзывает все ранее выданные токены: они начинают отвечать 401.

Ошибки и лимиты

Ответы — JSON. Ошибка приходит объектом {"error": "текст"}; исключение — 429 на лимитах по IP, который отдаётся в text/plain. На /me/password и /me/2fa/* (лимит по аккаунту) 429 приходит обычным JSON-объектом.

Код Смысл
400 некорректное тело или параметры; тело разбирается строго, неизвестное поле — тоже ошибка
401 токен отсутствует, истёк, отозван или неверен
402 лицензия недействительна: админ-API закрыт, кроме /license, /me и /auth
403 не хватает прав на сущность или действие
404 объект не найден в вашем воркспейсе
413 тело больше 4 МиБ
422 ссылка на объект другого воркспейса, некорректные фильтры потока или небезопасный URL редиректа
429 превышен лимит частоты, в ответе есть Retry-After

402 не останавливает трафик

Гейт лицензии стоит только на /admin_api/v1. Редиректы, постбэки и запись кликов при этом продолжают работать.

Лимиты частоты — токен-бакет, по умолчанию на IP:

Что Лимит
логин, приглашения, публичные /branding* 1 запрос в секунду на IP, всплеск до 10
/me/password и /me/2fa/* 1 запрос в минуту на аккаунт, всплеск 10
POST /import/keitaro ~3 запроса в минуту на IP

Тело запроса ограничено 4 МиБ. Два эндпоинта — исключения со своими лимитами: загрузка ZIP лендинга (128 МиБ) и импорт со стороннего трекера (1 ГиБ).

О названии

Keitaro — товарный знак его правообладателя. Minik не связан с ним и не одобрен им; название встречается в пути эндпоинта и в описании импортёра только для обозначения формата дампа, который импортёр читает.

С чего начать интеграцию

  1. Залогиньтесь, получите JWT.
  2. GET /me — проверьте, кто вы и в каком воркспейсе.
  3. GET /campaigns — убедитесь, что видите свои кампании.
  4. Дальше по справочнику: у каждого эндпоинта описаны параметры, тело и примеры на curl, Python, Node и PHP.