Разделы документации

Admin API: логи и диагностика

Десять методов Admin API: поиск кликов и карточка клика, журнал действий, потоковые журналы, состояние очередей, сервисов и применения настроек.

Через API доступны те же данные, что в разделе панели Логи и на странице Состояние системы. Все десять методов требуют токен с доступом Полный доступ (full): с другим доступом приходит 403 token_scope. При неактивной лицензии методы отвечают 402 — см. Истёкшая лицензия. Авторизация описана на странице Admin API: обзор и авторизация, формат ответов и общие коды ошибок — на странице Формат запросов, ответов и ошибок.

Клики

http
GET /api/v1/logs/clicks

Возвращает клики за период. Можно отобрать клики по точному IP, subid или external_id. Правила поиска те же, что на вкладке Клики и лиды.

ПараметрТипОбязательностьОписание
fromстрока, дата RFC 3339нетНачало периода по времени клика. По умолчанию — 24 часа назад
toстрока, дата RFC 3339нетКонец периода. По умолчанию — текущее время. Период — не больше 93 дней
fieldстроканетПризнак поиска: ip, subid или external_id
valueстроканетТочное значение признака, до 512 символов. Без field не принимается. Для subid — до 64 символов: латинские буквы, цифры, _ и -
limitцелоенетРазмер страницы от 1 до 200. По умолчанию 100
cursorстроканетЗначение next_cursor из предыдущего ответа

Ответ — код 200:

ПолеТипОписание
itemsмассивКлики, новые первыми. Если ничего не найдено — пустой массив
next_cursorстрокаКурсор следующей страницы. Пустая строка — страниц больше нет
namesобъектНазвания кампаний из items: ключ — ID, значение — название
Поля клика в items
  • subid — идентификатор клика; ts — время клика; ip — IP посетителя.
  • campaign_id, stream_id, source_id, lander_id, offer_id — ID кампании, потока, источника, лендинга и оффера. Пустая строка, если объекта в пути клика не было.
  • country, region, city, isp, connection_type — данные по IP.
  • device_type, os, os_version, browser, browser_version, user_agent, lang, referrer — устройство и браузер.
  • is_bot, is_unique — признаки бота и уникального клика.
  • cost — расход клика в USD.
  • sub_ids, tokens — параметры клика. В tokens.external_id лежит external_id. Значения параметров с токенами доступа заменены на ***.

Пример запроса:

bash
curl "https://panel.example.com/api/v1/logs/clicks?from=2026-10-01T00:00:00Z&to=2026-10-04T00:00:00Z&field=ip&value=203.0.113.10&limit=50" \
  -H "Api-Key: <токен>"

Пример ответа, часть полей клика опущена:

json
{
  "items": [
    {
      "subid": "k3x9m2q7c1ab",
      "ts": "2026-10-03T14:22:05.418Z",
      "ip": "203.0.113.10",
      "campaign_id": "c41a9e07-52bd-4f13-8a60-9d7e6f5a4b3c",
      "stream_id": "5e2d7a10-8c4b-4f6e-b1a9-0d3c2b1a4f5e",
      "country": "PL",
      "is_bot": false,
      "is_unique": true,
      "tokens": {"external_id": "ext-448812"}
    }
  ],
  "next_cursor": "",
  "names": {"c41a9e07-52bd-4f13-8a60-9d7e6f5a4b3c": "FB PL Nutra"}
}

Ошибки:

КодcodemessageКогда
400validationНекорректное начало периода, Некорректный конец периодаfrom или to не в формате RFC 3339
400validationВыберите период до 93 днейПериод длиннее 93 дней или to раньше from
400validationРазмер страницы: от 1 до 200limit вне диапазона
400validationНекорректная страницаcursor не из ответа этого метода
400validationПроверьте поле и значение поискаНеизвестный field, value без field, значение не IP или не subid
503no_analyticsАналитика недоступнаСтатистика не подключена

Карточка клика

http
GET /api/v1/logs/clicks/{id}

Возвращает клик, его переходы с лендинга и конверсии — данные карточки клика. Клик ищется по всей сохранённой истории, период не нужен.

ПараметрГдеТипОбязательностьОписание
idпутьстрокадаsubid клика

Ответ — код 200:

ПолеТипОписание
clickобъектКлик с теми же полями, что в items поиска
history.transitionsмассивПереходы с лендинга, от ранних к поздним: ts, lander_id, offer_id. До 200 записей
history.transitions_moreлогическоеtrue, если переходов больше 200
history.conversionsмассивКонверсии клика, новые первыми, по одной записи на txid с последним статусом: subid, ts, status, payout, revenue, offer_id, txid. До 200 записей
history.conversions_moreлогическоеtrue, если конверсий больше 200
history.lead_updated_atстрока или nullВремя последних данных лида по клику. null — данных лида нет
namesобъектНазвания кампании, потока, источника, лендингов и офферов по их ID. Удалённого объекта в names нет

Истории доставки событий в ответе нет: её отдаёт GET /api/v1/deliveries/search с параметром click_id — см. Admin API: конверсии и постбек. Данные лида отдаёт GET /api/v1/reports/click-lead — см. Admin API: отчёты.

Ошибки:

КодcodemessageКогда
400validationНекорректный subidВ id недопустимые символы или больше 64 символов
404not_foundКлик не найденКлика с таким subid нет
503no_analyticsАналитика недоступнаСтатистика не подключена

Журнал действий

http
GET /api/v1/logs/audit

Возвращает записи журнала действий пользователей, новые первыми.

ПараметрТипОбязательностьОписание
pageцелоенетНомер страницы с 1. По умолчанию 1
limitцелоенетЗаписей на странице, по умолчанию 100, максимум 500. Значение больше 500 заменяется на 100
qстроканетПоиск подстроки без учёта регистра в действии, ресурсе, ID ресурса и пользователе
resourceстроканетТочное значение ресурса, например campaigns — см. значения «Ресурс»
actionстроканетТочное значение действия, например update — см. значения «Действие»
user_idстрока, UUIDнетID пользователя, который выполнил действие
outcomeстроканетsuccess — статус ответа от 200 до 399, error — от 400
fromстрока, дата RFC 3339нетНачало периода, включительно
toстрока, дата RFC 3339нетКонец периода, не включается. Должен быть позже from

Ответ — код 200: объект с полями items, total — число записей по фильтру, page и limit.

Поле записиТипОписание
idцелоеНомер записи
created_atстрока, дата RFC 3339Время действия
contextстрокаUI — действие в панели, API — запрос с токеном
action, resource, resource_idстрокаДействие, ресурс и ID объекта
user_id, user_emailстрокаИсполнитель. У запроса с токеном в user_email после логина стоит начало токена в квадратных скобках
ip, user_agentстрокаАдрес и клиент, с которых пришёл запрос
statusцелоеКод HTTP ответа на действие

Пример запроса — неудачные изменения кампаний за сутки:

bash
curl "https://panel.example.com/api/v1/logs/audit?resource=campaigns&outcome=error&from=2026-10-03T00:00:00Z&to=2026-10-04T00:00:00Z&limit=50" \
  -H "Api-Key: <токен>"

Ошибки — код 422, code validation:

messageКогда
Неизвестный исходoutcome не success и не error
Дата должна быть в RFC3339from или to в другом формате
Конец периода должен быть позже началаto не позже from
Слишком большой номер страницыpage больше 1 000 000

Потоковые журналы

Четыре журнала: system — системный лог, postback — входящие постбеки, s2s — исходящие S2S, traffic — журнал трафика. Что в них пишется — на странице Системный лог, постбэки и журнал трафика. В каждом журнале хранятся 2000 последних записей, журналы общие для всей установки.

Прочитать журнал

http
GET /api/v1/logs/{stream}

Возвращает записи журнала, новые первыми.

ПараметрГдеТипОбязательностьОписание
streamпутьстрокадаsystem, postback, s2s или traffic
qзапросстроканетОставляет записи, в тексте которых есть эта строка. Регистр не важен
limitзапросцелоенетЧисло записей, по умолчанию 500, максимум 2000. Значение больше 2000 заменяется на 500

Ответ — код 200 и массив записей. Если записей нет, приходит [].

ПолеТипОписание
tsцелоеВремя записи в миллисекундах Unix
textстрокаТекст записи
levelстрокаУровень. Есть только в журнале system
ctxстрокаСлужба, которая сделала запись. Есть только в журнале system

Ошибка: 404, code not_found, message неизвестный поток логов — в stream значение не из списка.

Очистить журнал

http
DELETE /api/v1/logs/{stream}

Удаляет все записи журнала для всей установки. Параметр пути stream — тот же, что при чтении.

Ответ — код 204 без тела.

Внимание.

Восстановить удалённые записи нельзя. Очистка записывается в журнал действий: действие delete, ресурс logs.

Узнать, включён ли журнал трафика

http
GET /api/v1/logs/traffic-enabled

Параметров нет. Ответ — код 200:

json
{"enabled": false}

Включить или выключить журнал трафика

http
PUT /api/v1/logs/traffic-enabled

Переключает запись журнала traffic — то же, что тумблер Логировать на вкладке Трафик.

Поле телаТипОбязательностьОписание
enabledлогическоедаtrue — записывать, false — не записывать. Запрос без этого поля выключает журнал

Ответ — код 200 и объект {"enabled": true} с новым значением.

Ошибка: 400, code bad_request, message invalid json — тело не разобрано.

Диагностика

Состояние очередей

http
GET /api/v1/queue-health

Возвращает очередь приёма кликов и незавершённые задачи доставки — данные вкладки Состояние очередей.

Параметров нет. Ответ — код 200:

ПолеТипОписание
deliveriesмассивНезавершённые задачи рабочего пространства по типам. Пустой массив — незавершённых нет
deliveries[].kindстрокаconversion, s2s или capi
deliveries[].pending, running, failedцелоеЗадачи, которые ждут, отправляются и остановились с ошибкой
deliveries[].expiredцелоеЗадачи, обработка которых не завершилась вовремя
deliveries[].unknownцелоеЗадачи без подтверждения получателя
deliveries[].oldest_secondsчислоСколько секунд ждёт самая старая незавершённая задача
ingestобъект или nullОчередь приёма кликов всего сервера. null — сведений от обработчика нет
ingest_staleлогическоеtrue, если сведений нет или они старше 30 секунд
checked_atстрока, дата RFC 3339Время проверки
Поля объекта ingest
  • updated_at — время последних сведений от обработчика кликов.
  • clicks и lp — очереди кликов и переходов с лендинга. В каждой: pending_batches — пакетов ждёт записи, oldest_seconds — сколько ждёт самый старый, bytes и max_bytes — объём на диске и предел, disk_available и disk_known — свободное место и удалось ли его определить, scan_ok — очередь прочитана, delivery_failing — запись в статистику сейчас не удаётся, failures — число неудачных записей с запуска, last_success — время последней удачной записи в миллисекундах Unix, waiting_requests — запросы, которые ждут сохранения.
  • geo — геобазы обработчика: provider, state, bytes, modified_at, last_error. Статусы разобраны на странице Геобазы трекера.

Ошибка: 503, code unavailable — очередь доставки не прочитана. В ответе есть заголовок Retry-After: 5: повторите запрос через 5 секунд.

Состояние системы

http
GET /api/v1/system-health

Возвращает данные страницы Состояние системы: сборку, сервисы, фоновые задачи и выгрузки.

Параметров нет. Метод отвечает кодом 200 и при недоступном сервисе: смотрите поле state.

ПолеТипОписание
revisionстрокаИдентификатор сборки. unknown — не определён
uptime_secondsцелоеСколько секунд работает служба панели
process_memory_bytesцелоеПамять службы панели в байтах
go_versionстрокаВерсия среды выполнения
servicesобъектКлючи postgres, clickhouse, redis. У каждого state — ok или unavailable, bytes — объём данных, version, у первых двух migrations — список применённых миграций
workersмассивФоновые задачи: name, state, checked_at, stale. Задача без единого отклика приходит с state missing
workers_availableлогическоеfalse — отметки задач не прочитаны
exportsобъектЧисло действующих выгрузок CSV по состояниям pending, running, ready, failed. Состояния без выгрузок в объекте нет
exports_availableлогическоеfalse — счётчик выгрузок не прочитан
ingest, ingest_stale—То же, что в GET /api/v1/queue-health
integrations.proxy_nodesлогическоеНастроено ли управление proxy-серверами
checked_atстрока, дата RFC 3339Время проверки

Имена задач в workers: report_exports, deliveries, target-monitor, retention, domain-checks. stale равно true, если последний отклик старше 3 минут.

Применение настроек трафика

http
GET /api/v1/runtime-config

Показывает, дошли ли изменения кампаний, потоков и доменов до серверов обработки трафика. Как читать статусы — на странице Серверы обработки трафика.

Параметров нет. Ответ — код 200:

ПолеТипОписание
appliedлогическоеtrue — текущая версия настроек опубликована и подтверждена всеми ожидаемыми серверами
config.revision, config.published_revisionцелоеТекущая и опубликованная версии настроек
config.pending_changesлогическоеtrue — есть изменения, которые ещё не вошли в опубликованную версию
config.published_atстрока, дата RFC 3339Время последней публикации. Поля нет, пока публикации не было
config.last_errorстрокаОшибка последней публикации. Поля нет, если ошибки не было
publication_availableлогическоеtrue — опубликованные настройки прочитаны, их версия равна config.published_revision
nodes_availableлогическоеfalse — подтверждения серверов не прочитаны
expected_nodesцелоеЧисло ожидаемых серверов
nodesмассивСерверы: сначала ожидаемые, затем обнаруженные

Поля сервера в nodes: node — имя, revision — подтверждённая версия, checked_at — последний отклик, поля нет у сервера без единого отклика, expected — входит ли в список ожидаемых, stale — нет свежего отклика, instances — сколько работающих серверов назвались этим именем, state — состояние:

stateСостояние в панели
appliedНастройки применены
pendingОжидает обновления
missingНет отклика
staleСвязь потеряна
conflictПовторяется имя сервера
unexpectedВне списка ожидаемых
unavailableПроверка недоступна

Ошибка: 503, code config_unavailable, message Состояние конфигурации недоступно.

Обновлено Нужна помощь? ↗