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

Admin API: кампании

Методы Admin API для кампаний: список, создание, изменение, архив, копия, доступ, проверка целей, журналы кликов и конверсий, группы.

На странице 15 методов для работы с кампаниями. Всем методам нужен токен с доступом Полный доступ (full) в заголовке Api-Key. Авторизация описана на странице Admin API: обзор и авторизация, общий формат запросов и ошибок — на странице Формат запросов, ответов и ошибок.

Объект кампании

Методы создания, чтения, изменения и копирования возвращают один и тот же объект. Поля из таблицы передаются в теле при создании и изменении.

ПолеТипОбязательностьОписание
nameстрокада, при созданииНазвание кампании
aliasстроканетПервая часть пути ссылки кампании. Латинские буквы, цифры, _ и -, от 1 до 64 символов. Нельзя начинать с _, запрещены health, click, clk, cloak, api. Пустой alias при создании заменяется случайным из 7 символов
domain_idUUID или nullнетДомен кампании
traffic_source_idUUID или nullнетИсточник трафика
cost_modelстроканетcpc, cpuc, cpm, cpa, cps или revshare. По умолчанию cpc. См. Модели расхода кампании
cost_valueчислонетЦена в USD, не меньше 0. Для revshare — процент от 0 до 100
traffic_lossцелоенетНедошедший трафик в процентах, от 0 до 99
rotationстроканетВыбор среди обычных потоков: weight — по весу, position — первый подошедший по порядку. По умолчанию weight
uniqueness_methodстроканетnone, ip, ip_ua или param. По умолчанию none
uniqueness_ttlцелоенетСрок уникальности в часах. 0 — 24 часа
uniqueness_paramстроканетИмя параметра ссылки для метода param
bindingлогическоенетПривязка посетителя
binding_depthстроканетstream, lander или offer. По умолчанию stream
binding_ttlцелоенетСрок привязки в часах, от 0 до 8760. 0 — срок уникальности
group_nameстроканетНазвание группы
cloakingлогическоенетВключает клоаку
cloak_configобъектнетНастройки клоаки. По умолчанию {}
paramsмассивнетПараметры ссылки: объекты с полями name, param, value. По умолчанию []
s2s_postbacksмассивнетДо 20 объектов с полями status, url, disabled. См. S2S-постбеки кампании и источника
stateстроканетactive, paused или archived. По умолчанию active

В s2s_postbacks поле status — статус без пробелов до 32 символов или * для всех статусов. Поле url — полный адрес http:// или https:// до 2048 символов без пробелов.

Поля только для чтения:

  • id — идентификатор кампании, UUID;
  • seq — порядковый номер, тот же, что в колонке ID в панели;
  • workspace_id — идентификатор команды;
  • owner_id — владелец. При создании по токену — создатель токена, из тела запроса не принимается;
  • created_at — момент создания;
  • can_edit — может ли пользователь менять кампанию, есть в ответах списка и чтения.

Чтение

Список кампаний

GET /api/v1/campaigns

Возвращает кампании команды, новые первыми.

ПараметрТипОбязательностьОписание
stateстроканетТолько кампании в этом статусе: active, paused или archived
limitцелоенетРазмер страницы, по умолчанию 50. 0 — все кампании
offsetцелоенетСколько кампаний пропустить, по умолчанию 0

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

bash
curl "https://panel.example.com/api/v1/campaigns?state=active&limit=100" \
  -H "Api-Key: <токен>"

Получить кампанию

GET /api/v1/campaigns/{id}

Возвращает одну кампанию по её id. Ответ 200 — объект кампании. Ошибка: 404 not_found.

Создание и изменение

Создать кампанию

POST /api/v1/campaigns

Создаёт кампанию. Обязательно только поле name, остальные получают значения по умолчанию из таблицы выше.

bash
curl -X POST https://panel.example.com/api/v1/campaigns \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"name":"FB · Sweeps US","cost_model":"cpc","cost_value":0.05,"uniqueness_method":"ip_ua","uniqueness_ttl":24,"group_name":"Sweeps"}'

Ответ 201 — объект созданной кампании с присвоенными id, seq и alias. Ошибки: 400 bad_request, 409 conflict, 422 validation — тексты в разделе Ошибки.

Потоки добавляются отдельными методами — см. Admin API: потоки.

Изменить кампанию

PUT /api/v1/campaigns/{id}

Меняет переданные поля. Поля, которых нет в теле, сохраняют прежние значения.

  • Список s2s_postbacks меняется, только если передан массив. Переданный массив заменяет список целиком, пустой массив удаляет все адреса.
  • Массив params и объект cloak_config тоже заменяются целиком.
bash
curl -X PUT https://panel.example.com/api/v1/campaigns/5b0c6a1e-3d0f-4a52-9c1b-7f2f1f3f8a10 \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"state":"paused"}'

Ответ 200 — объект кампании после изменения. Ошибки: 400 bad_request, 404 not_found, 409 conflict, 422 validation.

Внимание.

После смены alias старая ссылка перестаёт работать. В статусах paused и archived ссылка кампании отвечает 404.

Архивировать кампанию

DELETE /api/v1/campaigns/{id}

Переводит кампанию в статус archived. Запись, потоки и статистика сохраняются, кампания появляется в корзине. Ответ 204 без тела. Ошибка: 404 not_found.

Вернуть кампанию можно методом восстановления из корзины или запросом PUT с {"state":"active"}. Что происходит с трафиком — на странице Архив и корзина кампаний.

Клонировать кампанию

POST /api/v1/campaigns/{id}/clone

Создаёт копию кампании со всеми потоками. Тело не нужно.

  • К названию добавляется · копия.
  • alias генерируется случайный.
  • Копия создаётся в статусе paused, потоки сохраняют свои статусы.
  • Владелец, домен, источник, параметры и постбеки переносятся без изменений.

Ответ 201 — объект новой кампании. Ошибки: 404 not_found; 422 validation, если в потоках есть неизвестный фильтр либо недоступный оффер или лендинг.

Доступ сотрудников

Доступ даёт сотруднику просмотр кампании и её статистики. Подробнее — на странице Доступ к кампаниям и «Поделиться».

Кому открыта кампания

GET /api/v1/campaigns/{id}/shares

Ответ 200: объект с массивом user_ids — идентификаторы пользователей, которым открыт просмотр. Ошибка: 404 not_found.

Задать список доступа

POST /api/v1/campaigns/{id}/shares

Заменяет список целиком.

ПолеТипОбязательностьОписание
user_idsмассив UUIDнетНовый полный список. Пустой массив или запрос без поля закрывает доступ всем. Идентификаторы не из этой команды пропускаются

Ответ 204 без тела. Ошибки: 400 bad_request, 404 not_found. Идентификаторы пользователей возвращает список из Admin API: пользователи.

Проверка целей

Что означают проверки и сообщения — на странице Диагностика и мониторинг целей кампании.

Проверить конфигурацию целей

GET /api/v1/campaigns/{id}/target-health

Проверяет офферы и лендинги активных потоков без запросов в сеть: существует ли цель, задан ли адрес, загружен ли архив локальной страницы.

Ответ 200: массив items и network_checked со значением false. Поля элемента:

  • stream — название потока;
  • kind — offer, lander или stream;
  • id, name — идентификатор и название цели. У элемента с kind stream в id стоит идентификатор потока, name пустое;
  • state — ok, warning или error;
  • message — пояснение, например Конфигурация доступна или Оффер не активен.

Ошибка: 404 not_found.

Состояние мониторинга

GET /api/v1/campaigns/{id}/target-monitor

Ответ 200: enabled — включён ли мониторинг, и runs — до 20 последних проверок, новые первыми. У проверки есть id, checked_at и items в том же формате, что у target-health. После запроса по сети в элементе появляются http_status и duration_ms — время ответа в миллисекундах. Ошибка: 404 not_found.

Включить или выключить мониторинг

PUT /api/v1/campaigns/{id}/target-monitor

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

Ответ 200 — тот же объект, что у метода состояния. Ошибки: 404 not_found; 422 validation с текстом нужно enabled: true или false.

Журналы кликов и конверсий

Оба журнала отдают записи за период, новые первыми. Общие параметры:

ПараметрТипОбязательностьОписание
fromдата и времянетНачало периода в формате RFC 3339, например 2026-10-01T00:00:00Z. По умолчанию — 24 часа назад
toдата и времянетКонец периода в том же формате. По умолчанию — текущий момент
limitцелоенетРазмер страницы от 1 до 1000, по умолчанию 100
pageцелоенетНомер страницы с 1

Значение from или to в другом формате не учитывается: берётся значение по умолчанию.

Ответ 200: массив items, total — число записей, подходящих под условия запроса, limit — размер страницы.

Ошибки обоих методов: 404 not_found; 400 report_error — запрос к статистике не выполнен, причина в message; 503 no_analytics — статистика недоступна.

Журнал кликов

GET /api/v1/campaigns/{id}/clicks

Дополнительные параметры:

ПараметрТипОбязательностьОписание
subidстроканетПоиск по части идентификатора клика
streamUUIDнетТолько клики этого потока

Поля клика: subid, ts, ip, campaign_id, stream_id, source_id, offer_id, lander_id, country, region, city, isp, connection_type, device_type, os, os_version, browser, browser_version, user_agent, referrer, lang, is_bot, is_unique, cost, sub_ids, tokens.

sub_ids и tokens — объекты «имя — значение». Значения token, access_token, capi_token, sub_id_12 и значения, которые начинаются с EAA, заменены на ***.

bash
curl "https://panel.example.com/api/v1/campaigns/5b0c6a1e-3d0f-4a52-9c1b-7f2f1f3f8a10/clicks?from=2026-10-01T00:00:00Z&to=2026-10-02T00:00:00Z&limit=500&page=1" \
  -H "Api-Key: <токен>"

Поиск клика по всем кампаниям — на странице Admin API: логи и диагностика.

Журнал конверсий

GET /api/v1/campaigns/{id}/conversions

Каждая конверсия показана одной строкой с последним статусом. Конверсию определяет пара «клик и txid».

Поля конверсии: subid, ts — время последнего изменения, status, payout, revenue, offer_id, txid.

Группы кампаний

Группа — текстовая метка в поле group_name. Назначить группу кампании можно методом изменения кампании. Методы ниже меняют метку сразу у всех кампаний группы.

Переименовать группу

PUT /api/v1/campaign-groups?name=<текущее название>

В строке запроса name — текущее название группы, в теле name — новое. Оба обязательны. Если новое название совпадает с существующей группой, группы объединяются.

bash
curl -X PUT "https://panel.example.com/api/v1/campaign-groups?name=Sweeps" \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Sweeps US"}'

Ответ 200: {"updated": 3} — число изменённых кампаний. Ошибка: 422 validation.

Удалить группу

DELETE /api/v1/campaign-groups?name=<название>

Снимает метку с кампаний группы. Сами кампании остаются. Ответ 200: объект с полем updated. Ошибка: 422 validation с текстом name обязателен.

Ошибки

Общие коды — на странице Формат запросов, ответов и ошибок. Сообщения методов этой страницы:

КодСообщениеПричина
400 bad_requestinvalid jsonТело запроса не разобрано
400 bad_requestнекорректный идентификатор или значениеid в адресе или в теле — не UUID
404 not_foundresource not foundКампании с таким id нет
409 conflictкампания с таким alias уже естьalias занят другой кампанией
422 validationname is requiredПустое name при создании
422 validationalias: только латиница, цифры, _ и -, до 64 символов (без /)Недопустимый alias, в том числе пустой при изменении
422 validationalias «api» зарезервирован — выберите другойalias начинается с _ или входит в список запрещённых
422 validationнеизвестная модель стоимостиcost_model не из списка
422 validationцена должна быть от 0 до 1 000 000 000cost_value меньше 0 или больше 1 000 000 000
422 validationRevShare должен быть от 0 до 100%cost_value больше 100 при revshare
422 validationtraffic_loss должен быть от 0 до 99traffic_loss вне диапазона
422 validationbinding_depth: stream, lander или offerДругое значение binding_depth
422 validationСрок привязки: от 0 до 8760 часов (0 — срок уникальности)binding_ttl вне диапазона
422 validationНе больше 20 S2S-постбеков на кампаниюВ s2s_postbacks больше 20 строк
422 validationПостбек кампании №1: …Ошибка в статусе или адресе строки с этим номером
422 validationвыбранный домен недоступенДомена с таким domain_id нет в команде
422 validationname обязателенВ строке запроса методов групп нет name
422 validationновое имя группы обязательно, некорректное тело запросаВ теле переименования группы нет name или тело не разобрано
422 validationнужно enabled: true или falseВ теле метода мониторинга нет enabled или тело не разобрано
Обновлено Нужна помощь? ↗