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

Admin API: источники трафика

Восемь методов для работы с источниками: каталог шаблонов, создание и изменение, токены, постбек, секреты и перенос параметров в кампании.

Методы этой страницы делают то же, что раздел Источники в панели: создают источники трафика, меняют их токены и постбек, переносят параметры в кампании. Всем методам нужен токен с доступом Полный доступ (full). Авторизация описана на странице Admin API: обзор и авторизация, формат запросов и общие коды ошибок — на странице Формат запросов, ответов и ошибок.

Объект источника

Методы списка, чтения, создания и изменения возвращают источник в таком виде:

ПолеТипОписание
iduuidИдентификатор источника
namestringНазвание
template_idstringИдентификатор шаблона каталога. У источника, созданного без шаблона, поля нет
template_versionintegerВерсия шаблона на момент создания. У источника без шаблона поля нет
cost_modelstringЗначение по умолчанию — cpc. Модель расхода задаётся в кампании — см. Модели расхода кампании
tokensarrayТокены источника, всегда массив
postback_modestringРежим постбека в источник: single — один адрес на все статусы, per_status — отдельный адрес на статус
postback_urlstring или nullАдрес постбека режима single
postbacksarrayСтроки режима per_status, всегда массив
postback_secretstring или nullСекрет входящего постбека: ***, если задан, иначе null
capi_enabledbooleanОтправка событий в Facebook Conversions API
capi_pixel_idstring или nullPixel ID
capi_tokenstring или nullAccess Token: ***, если задан, иначе null

Токен

Элемент массива tokens. В массиве до 128 токенов.

ПолеТипОбязательностьОписание
namestringдаСлот: external_id, cost, sub_id_1 … sub_id_30 и другие. До 64 байт
paramstringдаИмя параметра в ссылке. До 128 байт, в пределах источника не повторяется
aliasstringнетНазвание токена. До 160 байт: это 160 латинских символов или 80 кириллических. В ответе поля нет, если название пустое
placeholderstringнетЗначение параметра в ссылке — макрос рекламной площадки. До 1024 байт

Пробелы по краям name и param отбрасываются.

Строка постбека

Элемент массива postbacks. В массиве до 20 строк.

ПолеТипОбязательностьОписание
statusstringдаСтатус конверсии: lead, sale, rejected, hold или свой статус сети. До 32 символов, сохраняется в нижнем регистре
urlstringдаАдрес с макросами. Требования те же, что у postback_url

Адрес постбека — полный адрес http:// или https:// до 2048 символов, без пробелов и переносов строк. Фигурные скобки допустимы только у макросов.

В режиме single отправляется postback_url, строки postbacks не используются. В режиме per_status отправляются строки postbacks с подходящим статусом, postback_url не используется.

Секреты

Значения postback_secret и capi_token из API прочитать нельзя: в ответах вместо них стоит ***. Изменить и удалить секрет можно методом Изменить источник.

Каталог шаблонов

Получить каталог шаблонов

http
GET /api/v1/traffic-source-templates

Возвращает каталог шаблонов источников. Параметров нет.

Ответ — код 200 и объект:

ПолеТипОписание
versionintegerВерсия каталога
itemsarrayШаблоны
items[].idstringИдентификатор шаблона, например facebook
items[].namestringНазвание, например Facebook Ads
items[].versionintegerВерсия шаблона. Передаётся при создании источника
items[].cost_modelstringЗначение cost_model для источника
items[].tokensarrayТокены шаблона, поля как в разделе Токен
items[].postback_urlstring или nullАдрес постбека шаблона
items[].setup_requiredbooleantrue у шаблонов, адрес постбека которых нужно заполнить вручную. У остальных поля нет

Источники

Список источников

http
GET /api/v1/traffic-sources

Возвращает все источники команды. Параметров нет.

Ответ — код 200 и массив объектов источника, новые первыми. Постраничной выдачи нет.

Получить источник

http
GET /api/v1/traffic-sources/{id}

Возвращает один источник. {id} в пути — идентификатор источника.

Ответ — код 200 и объект источника.

Ошибки: 400 bad_request — {id} не в формате UUID, 404 not_found — источника нет.

Создать источник

http
POST /api/v1/traffic-sources

Создаёт источник из шаблона каталога или с полями из запроса.

ПолеТипОбязательностьОписание
namestringдаНазвание
template_idstringнетИдентификатор шаблона из каталога
template_versionintegerс template_idВерсия шаблона из каталога. Должна совпадать с текущей
cost_modelstringнетПо умолчанию cpc
tokensarrayнетТокены. По умолчанию пустой массив
postback_modestringнетsingle или per_status. По умолчанию single
postback_urlstring или nullнетАдрес постбека режима single
postbacksarrayнетСтроки режима per_status
postback_secretstring или nullнетСекрет входящего постбека
capi_enabledbooleanнетПо умолчанию false
capi_pixel_idstring или nullнетPixel ID
capi_tokenstring или nullнетAccess Token

Если передан template_id, поля tokens, cost_model и postback_url берутся из шаблона, а значения из запроса не учитываются. Режим постбека становится single, строки postbacks — пустыми. У шаблона с setup_required адрес постбека остаётся пустым: задайте его методом Изменить источник.

Ответ — код 201 и объект созданного источника.

bash
curl -X POST https://panel.example.com/api/v1/traffic-sources \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"name":"Facebook Ads","template_id":"facebook","template_version":1}'

Ошибки:

КодcodeКогда
400bad_requestТело не разобрано как JSON
400validationОшибка в postback_mode, postback_url или строках postbacks, либо строк больше 20. Текст называет поле или номер строки
409template_changedШаблона с таким template_id и template_version в каталоге нет. Получите каталог заново
422validationНет name — сообщение name is required. Либо ошибка в tokens: больше 128 токенов, пустые name или param, превышена длина, повтор param

Ошибки постбека приходят с кодом 400, ошибки названия и токенов — с кодом 422. Тексты ошибок постбека разобраны на странице S2S-постбэк в источник, тексты ошибок токенов — на странице Токены источника.

Изменить источник

http
PUT /api/v1/traffic-sources/{id}

Сохраняет источник. {id} в пути — идентификатор источника. Тело заменяет запись, поэтому передавайте источник целиком: получите его методом Получить источник, измените нужные поля и отправьте обратно. Секреты в виде *** при этом сохранятся.

ПолеТипОбязательностьОписание
namestringдаНазвание
tokensarrayнетЗаменяет все токены. Без поля токены удаляются
postback_urlstring или nullнетБез поля, null или пустая строка — адрес очищается
capi_enabledbooleanнетБез поля — false
capi_pixel_idstring или nullнетБез поля или null — очищается
cost_modelstringнетБез поля или пустая строка — не меняется
postback_modestringнетБез поля или пустая строка — не меняется
postbacksarrayнетБез поля или null — не меняются. Пустой массив [] удаляет все строки
postback_secretstring или nullнетНовый секрет. Без поля, null, пустая строка или *** — прежний секрет остаётся
capi_tokenstring или nullнетНовый токен. Без поля, null, пустая строка или *** — прежний токен остаётся
clear_postback_secretbooleanнетtrue удаляет секрет входящего постбека
clear_capi_tokenbooleanнетtrue удаляет Access Token

Поля template_id и template_version этим методом не меняются.

Ответ — код 200 и объект источника. Новые токены действуют на клики всех кампаний источника сразу. Параметры в ссылках кампаний не меняются — для этого есть перенос параметров.

Внимание.

Запрос без tokens, postback_url, capi_enabled или capi_pixel_id очищает эти поля. После удаления секрета постбеки по кликам источника принимаются без параметра secret.

Ошибки: те же 400 и 422, что при создании, 400 bad_request — {id} не в формате UUID, 404 not_found — источника нет.

Удалить источник

http
DELETE /api/v1/traffic-sources/{id}

Удаляет источник. Кампании остаются, поле источника в них становится пустым. {id} в пути — идентификатор источника.

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

Ошибки: 400 bad_request — {id} не в формате UUID, 404 not_found — источника нет.

Перенос параметров в кампании

Перенос идёт в два запроса: сначала просмотр, затем применение. Правила слияния описаны на странице Применение источника к кампаниям.

Получить просмотр изменений

http
POST /api/v1/traffic-sources/{id}/apply/preview

Показывает, как сохранённые токены источника изменят параметры каждой кампании с этим источником. В кампаниях ничего не меняется. Тело запроса не нужно, {id} в пути — идентификатор источника.

Ответ — код 200 и объект:

ПолеТипОписание
iduuidИдентификатор просмотра для метода применения
expires_atstringВремя, до которого просмотр можно применить: 15 минут с момента запроса
campaignsarrayКампании источника
campaigns[].iduuidИдентификатор кампании
campaigns[].namestringНазвание кампании
campaigns[].beforearrayПараметры кампании сейчас: объекты {name, param, value}
campaigns[].afterarrayПараметры после применения
campaigns[].changedbooleantrue, если параметры изменятся

Ошибки:

КодcodeКогда
400bad_request{id} не в формате UUID
404not_foundИсточника нет
422batch_too_largeУ источника больше 2000 кампаний
422invalid_paramsПараметры одной из кампаний сохранены в неверном формате
422validationОшибка в сохранённых токенах источника

Применить просмотр

http
POST /api/v1/traffic-sources/{id}/apply

Записывает в кампании параметры из поля after просмотра. {id} в пути — идентификатор источника.

ПолеТипОбязательностьОписание
preview_iduuidдаПоле id из ответа просмотра

Применить просмотр можно только токеном того же пользователя, который его получил.

bash
curl -X POST https://panel.example.com/api/v1/traffic-sources/3f6c1c1e-8a52-4a4b-9c0d-2b7e5d1a9f10/apply \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"preview_id":"b1d7a0c4-52e3-4c8f-a6b9-0e4f7d2c3a15"}'

Ответ — код 200 и объект:

json
{
  "updated": 1,
  "total": 2,
  "outcomes": [
    {"id": "7a1e0f3b-6c2d-4e58-b9a1-3d5c8e2f4a60", "state": "updated"},
    {"id": "c4b2d9e1-0f7a-4b36-8d5e-1a9c6f3b2e74", "state": "conflict"}
  ]
}

updated — число обновлённых кампаний, total — число кампаний в просмотре. Значения state:

ЗначениеЧто значит
updatedПараметры кампании заменены
unchangedУ кампании не было отличий от источника
conflictПараметры кампании изменились после просмотра. Кампания не тронута
unavailableКампания удалена или в ней выбран другой источник. Кампания не тронута

Для кампаний с исходами conflict и unavailable получите новый просмотр и примените его. Повторный запрос с тем же preview_id возвращает сохранённый результат и ничего не меняет.

Ошибки:

КодcodeКогда
400bad_request{id} или preview_id не в формате UUID
404not_foundПросмотра с таким preview_id у этого источника и пользователя нет
409preview_expiredПрошло больше 15 минут. Получите новый просмотр
409source_changedТокены источника изменились после просмотра. Получите новый просмотр
422preview_requiredВ теле нет preview_id или тело не разобрано как JSON
Обновлено Нужна помощь? ↗