На этой странице
С помощью этих пяти функций поток можно создать, настроить, прочитать и удалить, не заходя в кабинет, а расходы на трафик загрузить из своей программы или таблицы. Настройки, которые вы меняете в разделе «Потоки» кабинета, меняются и здесь.
Поток — это ваша связка с оффером: в нём хранятся лендинг и прелендинг, вид ссылки, метки и пиксели, фильтры, постбек, а вся статистика кликов и лидов считается по потоку. Ссылку для рекламной кампании вы берёте именно из потока. Оффер потока поменять нельзя: под каждый оффер создаётся свой поток.
С чего начать#
- Выберите оффер.
Список офферов с их ID отдаёт
offer/list. Оффер должен быть вам доступен (available: true), иначе поток не создастся. - Создайте поток.
Вызовите
wm/addс ID оффера. В ответе придут ID и код потока. Поток сразу готов к работе: у него стандартные настройки. - Настройте поток.
Лендинг и прелендинг возьмите из
offer/sitesи передайте вwm/editвместе с метками, постбеком и остальными настройками. - Заберите рабочую ссылку.
Ни
wm/add, ниwm/editссылку не возвращают. Прочитайте её вwm/flowsи вставьте в рекламную кампанию. После каждой правки настроек читайте ссылку заново: она может измениться. - Внесите расходы.
Когда накопятся переходы, поставьте им цену клика функцией
wm/cost: тогда в статистике появятся расход, профит и ROI.
Что полезно знать#
- Все пять функций работают от вашего имени и видят только ваши потоки. Чужой или несуществующий поток даёт ошибку
access-denied. - Адрес запроса, токен, форматы ответа и общие ошибки (
key,ban,funcи другие) описаны на странице Общие правила API. Здесь только то, что относится к потокам. - Список потоков
wm/flowsотдаётся без конверта соstatus: это сразу объект с потоками. Остальные четыре функции отвечают обычным конвертом. - Настройки в
wm/editчитаются только из тела POST-запроса. Если значение не принято,wm/editобычно не сообщает об ошибке. Он молча пропускает значение и отвечаетok. Такие случаи собраны в таблице ниже. - Что означают сами настройки, объясняет руководство: создание и настройки потока, виды ссылок, метки и пиксели, фильтры и трафикбек, постбеки, паркованные домены, расходы.
| Что нужно сделать | Функция |
|---|---|
| Узнать рабочую ссылку и настройки потока | wm/flows |
| Создать поток под оффер | wm/add |
| Выбрать лендинг, задать метки, постбек, пиксели, фильтры | wm/edit |
| Удалить поток | wm/del |
| Поставить цену клика или загрузить расход | wm/cost |
Какая функция что делает.
wm/flowsСписок потоков#
https://lk.dalead.pro/api/wm/flows.json?id={token}Отдаёт все ваши потоки: ID, код, рабочие ссылки, оффер, лендинг, показатели и основные настройки. Рабочую ссылку отдаёт только эта функция: wm/add и wm/edit её не возвращают.
Ответ не делится на страницы: приходят сразу все потоки. Сузить его можно только оффером. Полного набора настроек в ответе нет. Есть только поля из таблиц ниже, остальные настройки (фильтры, SubID, цены, пиксели Conversion API и другие) смотрите в кабинете.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
offer | int | — | ID оффера. Без параметра или со значением 0 приходят потоки по всем офферам. Если по офферу у вас нет потоков, приходит пустой ответ. |
Запрос
https://lk.dalead.pro/api/wm/flows.json?id={token}&offer=64
curl 'https://lk.dalead.pro/api/wm/flows.json?id={token}' \
--data-urlencode 'offer=64'
// Потоки по одному офферу
$url = 'https://lk.dalead.pro/api/wm/flows.json?id={token}';
$data = [
'offer' => 64,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
https://lk.dalead.pro/api/wm/flows.json?id={token}&offer=72
curl 'https://lk.dalead.pro/api/wm/flows.json?id={token}' \
--data-urlencode 'offer=72'
// Оффер без ваших потоков
$url = 'https://lk.dalead.pro/api/wm/flows.json?id={token}';
$data = [
'offer' => 72,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
Ответ
{
"127": {
"id": 127,
"code": "2A4E-581D-AC66-289D",
"url": "https://lk.dalead.pro/to-5d8bf0342f2ceaaa?utm_source=facebook&utm_campaign=whisker-es-01&utm_content={{ad.id}}",
"urls": {
"classic": "https://lk.dalead.pro/whisker-boost-vet-review/?flow=127&l=405&fb=1234567890123456&fbe=Purchase&utm_source=facebook&utm_campaign=whisker-es-01&utm_content={{ad.id}}&src=9",
"short": "https://lk.dalead.pro/to127?utm_source=facebook&utm_campaign=whisker-es-01&utm_content={{ad.id}}",
"encoded": "https://lk.dalead.pro/to-5d8bf0342f2ceaaa?utm_source=facebook&utm_campaign=whisker-es-01&utm_content={{ad.id}}",
"direct": "https://lk.dalead.pro/to-x5d8bf0342f2ceaaa?utm_source=facebook&utm_campaign=whisker-es-01&utm_content={{ad.id}}"
},
"offer": 64,
"offername": "Whisker Boost",
"name": "Purr Squad - facebook - es",
"epc": 0,
"cr": 0,
"total": 0,
"src": 9,
"srcname": "Social targeting",
"site": 405,
"siteurl": "meow.pro/whisker-boost-quiz-landing",
"space": 407,
"spaceurl": "meow.pro/whisker-boost-vet-review",
"traffback": "",
"postback": "https://meow.pro/pb?click={subid}&status={phase}",
"metrika": "",
"google": "",
"vkcom": "",
"facebook": "1234567890123456",
"utm_source": "facebook",
"utm_campaign": "whisker-es-01",
"utm_content": "{{ad.id}}",
"utm_term": "",
"utm_medium": ""
}
}
[]
Ответ — это объект потоков, где ключом служит ID потока. Конверта со status нет, кодов ошибок у функции тоже нет. Если потоков нет или под фильтр не подошёл ни один, приходит пустой массив []. Выше показан один поток, в вашем ответе будут все.
| Поле | Описание |
|---|---|
id |
ID потока. |
code |
Символьный код потока: шестнадцать знаков, разбитых дефисами по четыре, в верхнем регистре. Функции wm/edit и wm/del принимают его вместо ID. |
url |
Рабочая ссылка потока, на которую льют трафик. Её вид зависит от вида ссылки потока (mode) и от выбранного паркованного домена, поэтому после правки настроек её нужно перечитать. Метки и макросы потока уже в ссылке. |
urls |
Ссылки потока всех четырёх видов сразу: classic (обычная), short (короткая), encoded (шифрованная), direct (прямая). Чем они отличаются, написано в руководстве. |
offer |
ID оффера потока. |
offername |
Краткое название оффера. |
name |
Название потока. |
epc |
Средний доход с клика по потоку в основной валюте сети. |
cr |
Конверсия потока в процентах. |
total |
Заработок по потоку за всё время: выплаты вам по заказам в фазах «Холд» и «Принят» (фазы заказа). |
src |
ID источника трафика потока, 0 — источник не задан. |
srcname |
Название источника трафика, false — источник не задан. |
site |
ID лендинга потока, 0 — лендинг не выбран. |
siteurl |
Адрес лендинга без схемы, false — лендинг не выбран. |
space |
ID прелендинга, 0 — прелендинг не используется. |
spaceurl |
Адрес прелендинга без схемы, false — прелендинг не используется. |
traffback |
Адрес белой страницы для трафикбека, пустая строка — не задан. |
postback |
Адрес постбека потока, пустая строка — не задан. |
utm_source |
Метка utm_source потока. |
utm_campaign |
Метка utm_campaign потока. |
utm_content |
Метка utm_content потока. |
utm_term |
Метка utm_term потока. |
utm_medium |
Метка utm_medium потока. |
Основные поля потока в ответе.
Показатели epc и cr платформа пересчитывает по расписанию, как и показатели оффера. Они считаются за недавний период (в сети по умолчанию 15 дней) и по уникальным кликам. Общее число кликов берёт в расчёт только сеть, которая это включила. cr — это число заказов потока без треша за период, поделённое на число кликов по его лендингу за тот же период, в процентах. epc — выплаты вам по заказам в фазах «Холд» и «Принят» за период, поделённые на то же число кликов. Если заказов за период не было, при очередном пересчёте оба показателя обнуляются. Заработок total считается за всё время и от периода не зависит, но тоже обновляется по расписанию.
Дополнительные поля
Эти поля есть в ответе всегда, но заполнены только там, где оффер или сеть разрешают соответствующие системы аналитики и вы указали их в настройках потока (wm/edit). Иначе приходит пустая строка.
| Поле | Описание |
|---|---|
metrika |
Номер счётчика Яндекс.Метрики. |
google |
Идентификатор счётчика Google Analytics или Tag Manager. |
vkcom |
Идентификатор пикселя ВКонтакте. |
facebook |
Идентификатор пикселя Facebook. |
Дополнительные поля потока в ответе.
wm/addСоздать поток#
https://lk.dalead.pro/api/wm/add.json?id={token}Создаёт новый поток по офферу. Оффер должен быть включён, не заблокирован для трафика и доступен вам: доступные офферы перечисляет offer/list. Ограничения на число потоков нет, по одному офферу их можно создать сколько угодно.
Настройки нового потока стандартные:
- Лендинг — первый доступный вам лендинг оффера. Если у оффера есть лендинг по умолчанию, берётся он. Прелендинга нет.
- Источник трафика — первый из источников, которые разрешает оффер. Если оффер не даёт выбирать источник, источник не задаётся (
srcравен0). - Название — краткое название оффера и номер потока:
Whisker Boost - 127. - Ссылка — обычная. Постбеки включены для всех пяти фаз, метки и пиксели пустые.
Если у оффера нет доступного вам лендинга, поток всё равно создаётся, но без лендинга (site равен 0) и без рабочей ссылки. В wm/flows ссылка url (как и urls.classic) выглядит как http:///?flow=75. Короткая, шифрованная и прямая ссылки выглядят нормально, но переход по ним ведёт на /, то есть на главную страницу сети. Не запускайте трафик, пока не выбран лендинг. Выберите его из offer/sites через wm/edit. Остальное тоже настраивается через wm/edit.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
offer | int | да | ID оффера. ID берут из offer/list. |
Запрос
https://lk.dalead.pro/api/wm/add.json?id={token}&offer=64
curl 'https://lk.dalead.pro/api/wm/add.json?id={token}' \
--data-urlencode 'offer=64'
// Новый поток по офферу
$url = 'https://lk.dalead.pro/api/wm/add.json?id={token}';
$data = [
'offer' => 64,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
https://lk.dalead.pro/api/wm/add.json?id={token}&offer=999
curl 'https://lk.dalead.pro/api/wm/add.json?id={token}' \
--data-urlencode 'offer=999'
// Оффера нет или он недоступен
$url = 'https://lk.dalead.pro/api/wm/add.json?id={token}';
$data = [
'offer' => 999,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
Ответ
{
"status": "ok",
"id": 127,
"code": "2A4E-581D-AC66-289D"
}
{
"status": "error",
"error": "offer-inactive"
}
| Поле | Описание |
|---|---|
status |
Результат операции: ok при успехе, error при ошибке. |
error |
Код ошибки для статуса error (см. ниже). |
id |
ID созданного потока. Только при успехе. |
code |
Символьный код созданного потока. Только при успехе. |
Поля ответа.
Рабочей ссылки в ответе нет: прочитайте её через wm/flows.
Ошибки
| Код | Что случилось | Что делать |
|---|---|---|
no-id | Не передан параметр offer, он равен нулю или не число. | Передайте ID оффера. |
offer-inactive | Оффера нет, он выключен, трафик на него заблокирован или вам не разрешено с ним работать. | Выберите оффер из offer/list с available: true. |
request-error | Поток не удалось записать в базу данных. | Повторите запрос позже. |
wm/editИзменить поток#
https://lk.dalead.pro/api/wm/edit.json?id={token}Меняет настройки потока. Обновление частичное: передавайте только те поля, которые нужно изменить, остальные останутся как были.
Настройки читаются только из тела POST-запроса, в формате application/x-www-form-urlencoded или JSON. Идентификатор потока (flow или code) можно передать и в строке запроса, но настройки в строке запроса игнорируются.
Изменение настроек часто меняет рабочую ссылку потока, поэтому после правки перечитайте её через wm/flows.
Учтите: wm/edit отвечает ok и тогда, когда часть значений не сохранена. Например, если оффер запрещает настройку, переданное значение молча отбрасывается. Какие значения пропускаются и что передавать вместо них, описано в разделе Когда ответ «ok», а настройка не изменилась.
Параметры
Параметры идут двумя таблицами: основные и дополнительные. Основные работают у любого оффера. Дополнительные работают только там, где возможность разрешена оффером или, если оффер её не задаёт, настройками сети. Сюда входят метки SubID, ERID, цена клика, пиксели, Conversion API, свой код на страницах и свои цены. Запрещённый параметр молча отбрасывается. Есть ли поле у вашего оффера, видно в форме потока в кабинете.
Флаги (cb, cbot, cgeo, clang, cban, cadid, pb1–pb5) передавайте как 1 или 0, в теле JSON — как true или false. Из текстовых значений удаляются HTML-теги и пробелы по краям, а кавычки заменяются кодами " и '. Название и идентификаторы пикселей и счётчиков очищаются строже, см. описания полей. Слишком длинное значение обрезается до длины поля без ошибки.
Основные параметры. Работают у любого оффера.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
flow | int | — | ID потока из wm/flows или wm/add. Нужен один из двух параметров: flow или code. |
code | string | — | Символьный код потока из поля code ответа wm/flows, регистр не важен. Если переданы оба параметра, используется code, а если код не удалось разобрать, то flow. |
name | string | — | Название потока, нужно для удобства поиска. До 100 знаков. Знаки, кроме букв, цифр, _, -, . и ,, заменяются пробелами, повторные пробелы склеиваются. |
site | int | — | ID лендинга из offer/sites оффера этого потока. Несуществующий или недоступный вам сайт игнорируется: лендинг остаётся прежним. |
space | int | — | ID прелендинга из offer/sites оффера этого потока. Значение 0, а также несуществующий или недоступный сайт убирают прелендинг из потока. |
mode | int | — | Вид ссылки потока: 0 — обычная, 1 — короткая, 2 — шифрованная, 3 — прямая. Различия описаны в руководстве. Другие значения не проверяются, не используйте их. |
drd | int | — | ID паркованного домена для ссылки потока, 0 — стандартный домен сети. ID домена — поле id в ответе domain/get, домены добавляются в кабинете (Парковка доменов). |
cb | bool | — | Скрипт ComeBacker на прелендинге: 1 включает, 0 выключает. Значение читается как число, поэтому текст true или yes скрипт не включает, а выключает. В теле JSON true и false подходят. |
deep | string | — | Deeplink: адрес конкретной страницы внутри целевого сайта, до 250 знаков. Сохраняется, только если лендинг потока — сайт-редирект на сторонний адрес и домен из значения входит в список доменов этого сайта. Иначе значение молча отбрасывается, а если в запросе нет других полей, ответ request-error. Пустое значение очищает поле. |
src | int | — | ID источника трафика, 0 — без источника. Источники, которые разрешает и запрещает оффер, приходят в полях allow и deny ответа offer/show. Значение со списками не сверяется: сохраняется любое число до 255, указывайте только разрешённые оффером источники. |
url | string | — | Адрес белой страницы для трафикбека, до 250 знаков. Должен быть полным корректным адресом (с https://), иначе поле очищается. См. Фильтры и трафикбек. |
cact | int | — | Метод работы трафикбека: 0 — перенаправить по ссылке (302), 1 — перенаправить и склеить домен (301), 2 — через отдельную страницу (meta), 8 — скриптом (js), 3 — показать ссылку в iframe, 5 — показать контент по ссылке, 4 — показать контент по ссылке без обработки, 6 — показать пустую страницу, 7 — показать страницу с ошибкой. |
cfltr | int | — | ID кампании фильтрации трафика (Кампании фильтрации). Кампания должна принадлежать вам, иначе значение сбрасывается в 0. Ненулевое значение отключает простые фильтры (cbot, cgeo, clang, cban) и собственный список стран geos: они сбрасываются в том же запросе. Это происходит и тогда, когда чужая или несуществующая кампания сбросилась в 0: фильтры и geos всё равно очищены, поэтому отправляйте их отдельным запросом после cfltr. 0 — кампания не используется. |
cbot | bool | — | Простой фильтр «Боты». |
cgeo | bool | — | Простой фильтр «Страна»: пропускать только посетителей из страны оффера или из списка geos. |
clang | bool | — | Простой фильтр «Язык»: проверка языка браузера. |
cban | bool | — | Простой фильтр «Чёрные списки»: проверка адреса по чёрным спискам. |
cadid | bool | — | Фильтр «ID рекламы»: пропускать только посетителей с рекламным идентификатором. |
geos | list | — | Свой белый список стран для фильтра cgeo: двухбуквенные коды через запятую (ru,ua,kz) или массив geos[]. Регистр не важен. Пустое значение очищает список. |
white | int | — | ID белого сайта. Сайт должен быть включён и принадлежать вам или вашей команде, иначе значение сбрасывается в 0. |
pbu | string | — | Адрес постбека потока с макросами (Постбеки). Пустое значение очищает поле. |
pb1 … pb5 | bool | — | Отправлять ли постбек по фазе заказа: pb1 — «Ожидает», pb2 — «Холд», pb3 — «Принят», pb4 — «Отмена», pb5 — «Треш» (фазы заказа). По умолчанию у потока включены все пять. |
utms, utmc, utmn, utmt, utmm | string | — | Метки UTM, которые подставляются в ссылку потока: utms — utm_source, utmc — utm_campaign, utmn — utm_content, utmt — utm_term, utmm — utm_medium. До 250 знаков каждая. |
utmu | string | — | Идентификатор покупателя, в ссылке потока параметр customer. До 250 знаков. |
Дополнительные параметры. Только у офферов и сетей, которые их разрешают.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
subid | string | — | SubID потока, подставляется в ссылку. До 32 знаков. |
sub1 … sub5 | string | — | Дополнительные метки SubID 1–5, до 250 знаков каждая. |
uuid | string | — | Постоянная метка UUID потока, до 250 знаков. Подставляется в ссылку параметром uuid. При переходе по ссылке попадает в метку UUID клика, а в постбеке её отдаёт макрос {uuid} (Постбеки). Если в ссылке есть и erid, в клик записывается erid. Включить uuid в кабинете нельзя: в списке систем аналитики оффера и сети такого пункта нет, поэтому в обычной сети значение молча отбрасывается и ответ остаётся ok. |
erid | string | — | Маркировочный токен рекламы (ERID), до 250 знаков. |
cpc | string | — | Макрос цены клика: значение или макрос рекламной сети (например {cpc}), который подставляется в ссылку потока, до 50 знаков. Цена, пришедшая по нему, записывается в переход при клике, вносить её через wm/cost не нужно. |
cur | string | — | Валюта цены клика, трёхбуквенный код (usd). Принимается только вместе с cpc. |
fb | string | — | Идентификатор пикселя Facebook для лендинга и прелендинга, до 250 знаков. |
fbe | string | — | Событие конверсии Facebook. Принимаются только стандартные события, регистр важен. Неизвестное или пустое значение даёт Lead. |
ga | string | — | Идентификатор счётчика Google Analytics или Tag Manager, до 100 знаков. |
gad | string | — | Код конверсии Google, до 100 знаков. |
vk | string | — | Идентификатор пикселя ВКонтакте в формате VK-RTRG-12345-abcd, до 100 знаков. |
mtrk | string | — | Номер счётчика Яндекс.Метрики, до 30 знаков. |
mt | string | — | Идентификатор пикселя Mail Target, до 100 знаков. |
tt | string | — | Идентификатор пикселя TikTok, до 100 знаков. |
lki | string | — | Идентификатор пикселя Likee, до 100 знаков. |
fb2i | string | — | Идентификатор пикселя Facebook Conversion API для серверных событий. Оставляются только цифры, до 250 знаков. |
fb2e | string | — | Событие Conversion API для нового лида. Принимаются только стандартные события, регистр важен. Неизвестное или пустое значение очищает поле, и событие не отправляется. |
fb2h | string | — | Событие Conversion API для фазы «Холд». Правила те же, что у fb2e. |
fb2a | string | — | Событие Conversion API для фазы «Принят». Правила те же, что у fb2e. |
fb2t | string | — | API-токен пикселя для серверных запросов в Facebook, до 255 знаков. |
fb2p | string | — | Прокси для серверного запроса в формате http://логин:пароль@адрес:порт, до 200 знаков. |
fb2m | int | — | Режим Conversion API: 0 — только ID клика, 1 — ID клика и данные лида, 2 — данные лида даже без ID клика. Значения вне диапазона не отклоняются: меньше нуля сохраняется как 0, больше трёх как 3. Режима 3 в кабинете нет, используйте только 0, 1 и 2. |
pixs, pixt | string | — | Свой трекинг-код: pixs — для основных страниц сайта, pixt — для страницы «Спасибо». Принимается только у офферов, которые разрешают свой трекинг-код. PHP-код из значения вырезается. |
head, foot | string | — | Свой HTML-код в заголовок (head) и в подвал (foot) страниц сайта. Принимается только у офферов, которые разрешают свой код заголовка и подвала. PHP-код из значения вырезается. |
price | object | — | Свои цены на лендинге. Принимается только у офферов с настройкой ценников. Таблица заменяется целиком, поэтому каждый запрос должен содержать все нужные цены. Чтобы убрать все свои цены, передайте любую ячейку с пустым значением, например price[ru][2]=. |
price[<страна>][<вариант>] | float | — | Цена в стране: ключ страны — двухбуквенный код страны оффера, ключ варианта — ID товара из поля goods ответа offer/show. Ключ варианта 0 — цена самого оффера (для офферов без вариантов), ключ -1 — скидка на лендинге в процентах. Отрицательные цены и цены ниже минимальной, заданной в оффере, отбрасываются. |
Идентификаторы пикселей и счётчиков (fb, ga, gad, vk, mtrk, mt, tt, lki) очищаются так же, как название: знаки, кроме букв, цифр, _, -, . и ,, заменяются пробелами, а кавычки превращаются в цифры «34» и «39». Например, AW-123456789/AbCdEf сохранится как AW-123456789 AbCdEf, а A"B — как A 34 B.
Стандартные события Facebook
Параметры fbe, fb2e, fb2h и fb2a принимают одно из семнадцати названий. Регистр важен: Purchase подойдёт, purchase — нет.
AddPaymentInfo, AddToCart, AddToWishlist, CompleteRegistration, Contact, CustomizeProduct, Donate, FindLocation, InitiateCheckout, Lead, Purchase, Schedule, Search, StartTrial, SubmitApplication, Subscribe, ViewContent.
Запрос
curl 'https://lk.dalead.pro/api/wm/edit.json?id={token}' \
--data-urlencode 'flow=127' \
--data-urlencode 'name=Purr Squad - facebook - es' \
--data-urlencode 'site=405' \
--data-urlencode 'space=407' \
--data-urlencode 'mode=2' \
--data-urlencode 'src=9' \
--data-urlencode 'utms=facebook' \
--data-urlencode 'utmc=whisker-es-01' \
--data-urlencode 'utmn={{ad.id}}' \
--data-urlencode 'pbu=https://meow.pro/pb?click={subid}&status={phase}' \
--data-urlencode 'pb4=0' \
--data-urlencode 'pb5=0'
// Название, лендинг, источник, метки и постбек
$url = 'https://lk.dalead.pro/api/wm/edit.json?id={token}';
$data = [
'flow' => 127,
'name' => 'Purr Squad - facebook - es',
'site' => 405,
'space' => 407,
'mode' => 2,
'src' => 9,
'utms' => 'facebook',
'utmc' => 'whisker-es-01',
'utmn' => '{{ad.id}}',
'pbu' => 'https://meow.pro/pb?click={subid}&status={phase}',
'pb4' => 0,
'pb5' => 0,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
curl 'https://lk.dalead.pro/api/wm/edit.json?id={token}' \
-H 'Content-Type: application/json' \
--data-raw '{"flow": 127, "price": {"es": {"100": 36.9, "99": 22.9}}, "fb": "1234567890123456", "fbe": "Purchase"}'
// Свои цены и пиксель Facebook (тело JSON)
$url = 'https://lk.dalead.pro/api/wm/edit.json?id={token}';
$data = [
'flow' => 127,
'price' => [
'es' => [
'100' => 36.9,
'99' => 22.9,
],
],
'fb' => '1234567890123456',
'fbe' => 'Purchase',
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode( $data ),
CURLOPT_HTTPHEADER => [ 'Content-Type: application/json' ],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
curl 'https://lk.dalead.pro/api/wm/edit.json?id={token}' \
--data-urlencode 'flow=1' \
--data-urlencode 'name=Purr Squad'
// Чужой поток
$url = 'https://lk.dalead.pro/api/wm/edit.json?id={token}';
$data = [
'flow' => 1,
'name' => 'Purr Squad',
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
Ответ
{
"status": "ok"
}
{
"status": "error",
"error": "access-denied"
}
Ошибки
| Код | Что случилось | Что делать |
|---|---|---|
no-id | Не передан ни flow, ни code, либо код не удалось разобрать и flow не передан. | Передайте ID или код потока из wm/flows. |
access-denied | Поток принадлежит другому пользователю или не существует. | Проверьте ID потока в wm/flows. |
request-error | Изменения не удалось записать в базу данных, либо в запросе остались только отброшенные deep или url. | Если вы передавали только deep или url, добавьте любое другое поле, например name с прежним значением. Иначе повторите запрос позже. |
Когда ответ «ok», а настройка не изменилась
Ответ ok значит только, что запрос разобран и ошибок нет. Сохранилось ли каждое поле, он не говорит. Проверяйте результат чтением потока в wm/flows или в кабинете.
| Что вы отправили | Что произойдёт | Что сделать |
|---|---|---|
Только флаги pb1–pb5 |
Ответ ok, ничего не сохраняется |
Отправьте их вместе с любым другим полем, которое сохраняется, например name с прежним значением |
Только таблицу price |
Ответ ok, ничего не сохраняется |
То же: добавьте в запрос другое поле, например name |
Запрос без единого распознанного поля, например flow=127 или поле с неверным именем |
Ответ ok, ничего не меняется |
Сверьте имена полей с таблицей параметров |
| Настройки в строке запроса | Игнорируются | Передавайте их в теле POST: формой или JSON. В строке запроса оставьте только flow или code |
Поле, которое оффер или сеть не разрешают: метки SubID, uuid, ERID, цена клика, пиксели, Conversion API, pixs, pixt, head, foot, price, url |
Значение молча отбрасывается. Только url отвечает request-error, если других полей в запросе нет |
Откройте поток в кабинете: если поля в форме нет, оффер его не разрешает |
site или space, которых нет или которые вам недоступны |
site не меняется, space обнуляется |
Берите ID из offer/sites |
site, space или src от другого оффера или не из разрешённого списка |
Сохраняются без проверки | Берите ID только из offer/sites и offer/show оффера этого потока |
deep, который не подходит лендингу |
Молча отбрасывается. Если других полей в запросе нет, ответ request-error, а не ok |
Используйте сайт-редирект и домен из его списка доменов. Или добавьте в запрос любое другое поле |
url, который не является полным адресом |
Поле очищается | Передавайте адрес целиком, с https:// |
cfltr или white с чужим или выключенным объектом |
Сбрасываются в 0. Чужой cfltr к тому же очищает cbot, cgeo, clang, cban и geos из этого запроса |
Передавайте ID своих кампаний и белых сайтов. Фильтры отправьте отдельным запросом после |
price |
Заменяет всю таблицу цен потока | Передавайте все цены в одном запросе |
Флаг cbot, cgeo, clang, cban, cadid или pb1–pb5 со значением false, no или любым непустым, кроме 0 |
Флаг включается | Передавайте 1 и 0 (в JSON — true и false) |
Флаг cb со значением true, yes или другим текстом, который не число |
Флаг выключается, включить его так нельзя: значение читается как число, текст даёт 0 |
Передавайте 1 и 0 (в JSON — true и false) |
| Значение длиннее поля | Обрезается до длины поля | Укладывайтесь в длины из таблицы: например, название до 100 знаков, subid до 32 |
fb2m вне диапазона 0–2 |
Сохраняется ближайшее допустимое число 0–3 |
Передавайте 0, 1 или 2 |
Случаи, когда wm/edit отвечает ok (для deep и url без других полей — request-error), но не сохраняет значение.
wm/delУдалить поток#
https://lk.dalead.pro/api/wm/del.json?id={token}Удаляет поток. Отменить удаление нельзя, поэтому поток, по которому идёт трафик, удалять не стоит: сначала остановите кампанию или смените в ней ссылку.
Ссылка потока, паркованные домены и сплит-тесты после удаления сами не отключаются, подробности в разделе Что остаётся после удаления.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
flow | int | — | ID потока. Нужен один из двух параметров: flow или code. |
code | string | — | Символьный код потока в том виде, в каком его отдаёт wm/flows. Если переданы оба параметра, используется code, а если код не удалось разобрать, то flow. |
Запрос
https://lk.dalead.pro/api/wm/del.json?id={token}&flow=127
curl 'https://lk.dalead.pro/api/wm/del.json?id={token}' \
--data-urlencode 'flow=127'
// Удалить поток
$url = 'https://lk.dalead.pro/api/wm/del.json?id={token}';
$data = [
'flow' => 127,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
Ответ
{
"status": "ok"
}
{
"status": "error",
"error": "access-denied"
}
Ошибки
| Код | Что случилось | Что делать |
|---|---|---|
no-id | Не передан ни flow, ни code, либо код не удалось разобрать и flow не передан. | Передайте ID или код потока. |
access-denied | Поток принадлежит другому пользователю или не существует (в том числе уже удалён). | Проверьте ID потока в wm/flows. |
request-error | Поток не удалось удалить из базы данных. | Повторите запрос позже. |
Что остаётся после удаления
- Ссылка. Старая ссылка потока не исчезает, но больше не ведёт на лендинг: короткая, шифрованная и прямая ссылки (они идут через редиректор сети) отвечают редиректом 302 на
/, то есть на главную страницу сети. Рекламный трафик по ней попадёт туда: сначала остановите кампанию или смените в ней ссылку. - Статистика. Клики, заказы и дневная статистика остаются, но теряют привязку к потоку: по офферу и сайтам они видны по-прежнему, по потоку больше не выделяются.
- Паркованные домены. Сам домен остаётся в вашем списке. Привязка домена к потоку (кнопка «Привязать» на странице «Паркованные домены», поле
linkв ответеdomain/get) не снимается: домен продолжает ссылаться на удалённый поток. Перед удалением привяжите домен к другому потоку или отвяжите его в кабинете: Парковка доменов. - Сплит-тесты. Функция не проверяет, входит ли поток в сплит-тест. Уберите поток из теста заранее: Сплит-тесты.
wm/costВнести расходы#
https://lk.dalead.pro/api/wm/cost.json?id={token}Ставит цену клика уже накопленным переходам. Платформа сама расход не знает. Его приносит макрос цены клика cpc в ссылке потока (см. wm/edit) или вы загружаете его из рекламной сети: этой функцией, вручную из кабинета или подключением автоматической выгрузки (Расходы). Проставленная цена идёт в статистику как расход, по ней считаются профит и ROI (см. wm/stats).
Запрос описывает одну или несколько операций. Операция состоит из фильтров, которые отбирают переходы, и цены, которую им ставят. Цена задаётся одним из трёх способов:
cpc— цена одного перехода: ставится каждому отобранному переходу как есть.cost— общий расход: делится на число отобранных переходов, и результат ставится каждому из них.zero— обнуление: отобранным переходам ставится нулевая цена.
Если передано несколько способов сразу, старшим считается zero, затем cpc, затем cost. Операция без цены не выполняется.
Нужен хотя бы один фильтр: операция без фильтров не выполняется. Фильтры соединяются по «и»: к переходу должны подходить все условия. Всегда отбираются только ваши переходы. Новая цена записывается поверх прежней.
Операция, в которой есть только from и to, проставит цену всем вашим переходам за этот период, по всем потокам и офферам. Если нужен один поток или одна кампания, указывайте flow и метки. Следите и за значениями фильтров: дата, которую не удалось разобрать (from=abc), и нечисловой flow молча отбрасываются, и вместе с ними пропадает ограничение. Операция с одной такой «пустой» датой или потоком проставит цену всем вашим переходам.
Цена ставится один раз за визит. Если в связке есть прелендинг, расход ложится на переход по прелендингу, а переход с прелендинга на лендинг цены не получает: так один визит не считается дважды.
Несколько операций можно передать за один запрос в параметре batch. Это массив, каждый элемент — объект с теми же полями. Обычно его передают JSON-телом, но подойдёт и форма вида batch[0][flow]=127&batch[0][cpc]=0.2&batch[1][flow]=84&batch[1][cost]=10. Параметры из строки запроса и из тела запроса не склеиваются в одну операцию: каждая группа становится отдельной операцией. Поэтому фильтры и цену передавайте вместе. Если flow стоит в строке запроса, а cpc в теле, получится две неполные операции и ответ empty. Операции без фильтров или без цены в batch молча пропускаются.
Параметры
Все параметры необязательны по отдельности, но нужны хотя бы один фильтр и одна цена. Фильтры: flow, метки, from и to. Цена: cpc, cost или zero.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
flow | int | — | ID потока. Один поток на операцию. Для нескольких потоков используйте batch. |
utms, utmc, utmn, utmt, utmm | string | — | Значение метки перехода: utms — utm_source, utmc — utm_campaign, utmn — utm_content, utmt — utm_term, utmm — utm_medium. Метка сравнивается на точное совпадение, регистр важен. |
from | string | — | Начало периода: дата и время строкой (2026-10-01, 2026-10-01 12:00:00) или unix-время числом. Берутся переходы строго позже этого момента. Дату пишите с дефисами: значение из одних цифр, например 20261001, читается как unix-время (это август 1970 года), и период молча расширяется на всё время. Для точности передавайте unix-время: оно не зависит от часового пояса. |
to | string | — | Конец периода в том же виде, дату тоже пишите с дефисами: 20261031 из одних цифр читается как unix-время (1970 год), и под период не попадёт ни один переход. Берутся переходы до этого момента включительно. Дата без времени — это полночь начала дня: to=2026-10-31 не захватит 31 октября. Чтобы взять его целиком, укажите 2026-10-31 23:59:59. |
cpc | float | — | Цена одного перехода. Не больше шести знаков после запятой. Цена меньше 0.0001 не принимается, операция попадёт в bad. |
cost | float | — | Общий расход, который нужно разделить между отобранными переходами. Если ни один переход не отобран, операция попадёт в bad. |
zero | bool | — | Поставить отобранным переходам нулевую цену. |
valid | bool | — | Брать только целевые переходы, не отсечённые фильтрами. |
unique | bool | — | Брать только уникальные переходы. |
curr | string | — | Валюта цены, трёхбуквенный код (usd). Неизвестный код и отсутствие параметра дают основную валюту сети. Параметр cur здесь не работает: пишите curr или currency.Синонимы: currency |
batch | list | — | Массив операций: каждый элемент — объект с полями из этой таблицы. |
extu | string | — | Только агентство: идентификатор клика или заказа на стороне агентства (метка extu). Сравнивается на точное совпадение. |
exts | string | — | Только агентство: идентификатор источника трафика на стороне агентства (метка exts). Сравнивается на точное совпадение. |
Запрос
https://lk.dalead.pro/api/wm/cost.json?id={token}&flow=127&utms=facebook&cpc=0.35
curl 'https://lk.dalead.pro/api/wm/cost.json?id={token}' \
--data-urlencode 'flow=127' \
--data-urlencode 'utms=facebook' \
--data-urlencode 'cpc=0.35'
// Цена клика по метке
$url = 'https://lk.dalead.pro/api/wm/cost.json?id={token}';
$data = [
'flow' => 127,
'utms' => 'facebook',
'cpc' => 0.35,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
https://lk.dalead.pro/api/wm/cost.json?id={token}&flow=127&utmn=purr-creative-01&from=2026-10-01&to=2026-10-31%2023%3A59%3A59&cost=420.5&curr=usd&valid=1
curl 'https://lk.dalead.pro/api/wm/cost.json?id={token}' \
--data-urlencode 'flow=127' \
--data-urlencode 'utmn=purr-creative-01' \
--data-urlencode 'from=2026-10-01' \
--data-urlencode 'to=2026-10-31 23:59:59' \
--data-urlencode 'cost=420.5' \
--data-urlencode 'curr=usd' \
--data-urlencode 'valid=1'
// Расход за месяц на креатив
$url = 'https://lk.dalead.pro/api/wm/cost.json?id={token}';
$data = [
'flow' => 127,
'utmn' => 'purr-creative-01',
'from' => '2026-10-01',
'to' => '2026-10-31 23:59:59',
'cost' => 420.5,
'curr' => 'usd',
'valid' => 1,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
curl 'https://lk.dalead.pro/api/wm/cost.json?id={token}' \
-H 'Content-Type: application/json' \
--data-raw '{"batch": [{"flow": 127, "utms": "facebook", "utmc": "whisker-es-01", "from": "2026-10-01", "to": "2026-10-31 23:59:59", "cost": 420.5, "curr": "usd"}, {"flow": 127, "utms": "facebook", "cpc": 0.35}]}'
// Две операции за один запрос
$url = 'https://lk.dalead.pro/api/wm/cost.json?id={token}';
$data = [
'batch' => [
[
'flow' => 127,
'utms' => 'facebook',
'utmc' => 'whisker-es-01',
'from' => '2026-10-01',
'to' => '2026-10-31 23:59:59',
'cost' => 420.5,
'curr' => 'usd',
],
[
'flow' => 127,
'utms' => 'facebook',
'cpc' => 0.35,
],
],
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode( $data ),
CURLOPT_HTTPHEADER => [ 'Content-Type: application/json' ],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
https://lk.dalead.pro/api/wm/cost.json?id={token}&cpc=0.35&valid=1
curl 'https://lk.dalead.pro/api/wm/cost.json?id={token}' \
--data-urlencode 'cpc=0.35' \
--data-urlencode 'valid=1'
// Цена без фильтра
$url = 'https://lk.dalead.pro/api/wm/cost.json?id={token}';
$data = [
'cpc' => 0.35,
'valid' => 1,
];
$ch = curl_init( $url );
curl_setopt_array( $ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $data ),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$r = json_decode( curl_exec( $ch ), true );
curl_close( $ch );
if ( isset( $r['error'] ) ) error_log( 'API error: ' . $r['error'] );
Ответ
{
"status": "ok",
"ok": 1,
"bad": 0
}
{
"status": "ok",
"ok": 0,
"bad": 1
}
{
"status": "ok",
"ok": 1,
"bad": 1
}
{
"status": "error",
"error": "empty"
}
| Поле | Описание |
|---|---|
status |
Результат операции: ok при успехе, error при ошибке. |
error |
Код ошибки для статуса error (см. ниже). |
ok |
Число выполненных операций. Операция с cpc или zero считается выполненной и тогда, когда подходящих переходов не нашлось. |
bad |
Число невыполненных операций. Операция не выполнена, если при cost под фильтры не подошёл ни один переход или если цена после округления получилась равной нулю. |
Поля ответа.
Ответ считает операции. Сколько именно переходов получило цену, функция не сообщает. Проверяйте результат по статистике (wm/stats): расход и число кликов с ценой там видны в дополнительных полях cpc и cpv.
Ошибки
| Код | Что случилось | Что делать |
|---|---|---|
empty | В запросе не нашлось ни одной операции, в которой есть и фильтр, и цена. | Добавьте фильтр (flow, метку или период) и цену (cpc, cost или zero) в одно место запроса: в строку или в тело. |
Ошибки входа в API (key, ban и другие) общие для всех функций: Общие правила API.