Admin API¶
Всё, что делает интерфейс, доступно по REST: кампании, потоки, лендинги, офферы, отчёты, авто-правила, интеграции, команда — 200 эндпоинтов.
Открыть интерактивный справочник →
Там же лежат OpenAPI-спецификации (Admin API, Click API) и коллекции Postman (Admin API, Click API).
База и авторизация¶
Авторизация — 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":"••••••"}'
Ответ содержит токен, дальше просто подставляйте его:
Если у пользователя включена 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 не связан с ним и не одобрен им; название встречается в пути эндпоинта и в описании импортёра только для обозначения формата дампа, который импортёр читает.
С чего начать интеграцию¶
- Залогиньтесь, получите JWT.
GET /me— проверьте, кто вы и в каком воркспейсе.GET /campaigns— убедитесь, что видите свои кампании.- Дальше по справочнику: у каждого эндпоинта описаны параметры, тело и примеры на curl, Python, Node и PHP.