На этой странице
Лид — это заявка покупателя: имя, телефон и данные о том, откуда он пришёл. Через API вы отправляете такие заявки из своей формы или скрипта, а потом проверяете, что с каждой стало: принята ли она, ждёт ли выплаты или отклонена. Для этого есть две функции приложения leads: leads/add отправляет лид, leads/list показывает статусы отправленных.
Функционал общий для вебмастера, агентства и компании, роль определяется токеном. Параметры и поля, которыми пользуются только агентство и компания, помечены словами «Только агентство:», «Только компания:» или «Только агентство и компания:». Вебмастеру они не нужны.
Адрес запроса, токен, форматы ответа и общие ошибки (key, ban) описаны на странице Общие правила API. Фазы лида и причины отказа — в справочниках значений.
Вебмастер: от отправки до статуса#
-
Заведите поток. Лид всегда записывается на один из ваших потоков: по нему сеть знает, кому начислить вознаграждение. Создайте поток под оффер в кабинете (Создание потока) или функцией
wm/add, а ID потока посмотрите в спискеwm/flows. -
Проверьте, что отправка разрешена. Убедитесь, что менеджер активировал для вас отправку лидов по API. Обычно по умолчанию она отключена. Если при отправке вы получили ошибку
access, доступ ещё не открыли. Уточнить можно у своего персонального менеджера. -
Отправьте лид. Передайте оффер, поток, телефон покупателя и всё, что знаете о нём и об источнике трафика, в
leads/add. В ответе придётid— номер лида в сети. -
Сохраните номер. Номер
id— ключ для проверки статуса. Заодно передавайте вsubidсобственный номер заявки: даже если вы не сохранилиid, лид можно будет найти по этой метке. -
Проверяйте статус. Спросите
leads/listпо егоid. Об изменениях можно узнавать и от платформы: настройте постбек потока, и она сама сообщит о новых статусах ваших лидов.
Агентство: особенности работы#
-
Выберите оффер. Вам потребуется идентификатор оффера для отправки лида. Его можно найти в каталоге офферов или уточнить у своего менеджера.
-
Отправьте лид. Передайте оффер, телефон покупателя, идентификатор и источник на вашей стороне, и всё, что знаете о нём и об источнике трафика, в
leads/add. В ответе придётid— номер лида в сети. -
Сохраните номер. Номер
id— ключ для проверки статуса. Не забывайте передавать вextuсобственный номер заявки: даже если вы не сохранилиid, лид можно будет найти по этой метке. Желательно также отправлять идентификатор вебмастера на вашей стороне в полеexts. -
Проверяйте статус. Запросите
leads/listпоidили поextu, это оптимальный вариант проверки статусов. Если ваш трекер не поддерживает выгрузку статусов по API, вы можете использовать постбеки.
Жизнь лида#
Сразу после отправки лид получает фазу «Ожидание» (wait), и сеть начинает обрабатывать заказ. Дальше фаза меняется в зависимости от оффера и скорости обработки: лид может уйти в холд, быть принят или отклонён. Что значит каждая фаза и какие бывают причины отказа, написано в справочниках значений.
У заказа одно состояние, и в ответе leads/list оно записано двумя способами. phase (и её символьный код stage) — фаза заказа для вебмастера, от неё зависит, начислено ли вознаграждение. Поле crm — статус заказа в CRM, число от 1 до 12. Какому статусу какая фаза соответствует, задаёт модель оплаты оффера: статусы описаны в справочнике, фазы — в справочнике фаз. Причина отказа лежит в поле reason (причины). Если сеть показывает текстовый статус, он приходит в поле custom.
Тестовый лид#
Отдельной отметки «тестовый» в API нет: тестовый лид — обычный. Он проходит те же проверки (дубли, фильтры трафика, гео), попадает в вашу статистику, по нему считается вознаграждение и срабатывает постбек потока. Поэтому:
- предупредите менеджера сети, что отправляете тест, и выберите оффер и поток, которые не жалко увидеть в отчётах;
- пишите в
subidилиutm_campaignпонятную метку, напримерtest-001: по ней лид легко найти вleads/listи отличить в отчётах; - для повторных проверок используйте служебный телефон
1234567890: он не участвует в проверке дублей; - без кода тестовый лид отправляют из кабинета: Ручная отправка лида, там же — как гонять тесты подряд.
leads/addДобавить лид#
https://lk.dalead.pro/api/leads/add.json?id={token}Создаёт лид (у вебмастера на одном из его потоков, у агентства сразу на оффере). Лид будет создан, если выполнены условия:
- в вашей учётной записи разрешена отправка лидов по API, иначе ответ
access; - только для вебмастера: в параметре
flowуказан ваш собственный поток, иначеnoflowилиbadflow; - оффер доступен вам и принимает лиды по API, иначе
no-apiилиtraffic; - переданы
offerиphone.
Данные можно передать строкой запроса, формой POST или телом JSON с заголовком Content-Type: application/json. Рекомендуется POST. Если JSON в теле повреждён, платформа его не заметит и ответит так, будто данных нет, обычно ошибкой noflow. Параметры, которых нет в таблице, игнорируются.
Имена полей не зависят от регистра: Phone и phone — одно и то же. Многие поля принимаются под несколькими именами (колонка «Синонимы»): так чужие формы подключаются без переписывания.
Повторный запрос создаёт ещё один лид, если сеть не включила защиту от дублей. Если связь оборвалась на отправке, не повторяйте запрос вслепую: сначала поищите лид в leads/list по своему subid.
Параметры
Параметры идут блоками: сначала основные, затем метки, адрес, состав заказа и дополнительные параметры. Адрес и состав заказа нужны офферам с товарами и оплатой при получении.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
offer | int | да | ID оффера. Оффер должен быть вам доступен и принимать лиды по API. ID берут из offer/list. |
flow | int | да | ID вашего потока; поток должен принадлежать вам. Агентство и компания поток не передают. ID потоков — в wm/flows. |
phone | string | да | Телефон покупателя в международном формате, например 79001234567: от 6 до 15 цифр, ведущие нули в счёт не идут. Знаки +, пробелы, скобки и дефисы допускаются. Номер приводится к виду, принятому в стране лида.Синонимы: tel, telephone, phone2, fullphone, full_phone |
name | string | — | Имя покупателя. Записывается с заглавных букв. Если не передано, подставляется заглушка.Синонимы: fio, firstname, first_name, f_name, fname, forename, first_last_name |
last | string | — | Фамилия покупателя. Сохраняется в дополнительных полях заказа.Синонимы: lastname, last_name, l_name, lname, surname, sirname, sname, s_name |
email | string | — | Электронная почта покупателя. Нужна, если оффер требует её: без неё придёт ошибка data (в bad — email) или email. Платформа проверяет только, что адрес передан, а его вид не проверяет. |
pass | string | — | Пароль покупателя для CRM рекламодателя; нужен финансовым и гемблинг-офферам. Сохраняется в дополнительных полях заказа.Синонимы: password |
lang | string | — | Язык покупателя. Сохраняется в дополнительных полях заказа.Синонимы: language, isolang, langcode |
phonecc | string | — | Телефонный код страны покупателя. Сохраняется в дополнительных полях заказа.Синонимы: phonecode, phone_code, countrydialcode |
country | string | — | Двухбуквенный код страны покупателя, например ru или kz. Если не передан, определяется по телефону, затем по IP-адресу; если не удалось, лид получает код zz. От страны зависят цены, валюта и проверка гео оффера.Синонимы: geo, countryiso, countryiso2 |
comment | string | — | Комментарий к заказу. Показывается в leads/list в поле comment на тех фазах, где сеть включила показ комментариев.Синонимы: comm, comments, question |
ip | string | — | IP-адрес покупателя, IPv4 или IPv6. Если на оффере включена фильтрация трафика, лид без IP-адреса не принимается. Значение auto подставляет случайный адрес страны лида. Без IP в лиде будет 0.0.0.0.Синонимы: client_ip, clientip, ip_address, ipaddress, ip_addr, ipadd |
ua | string | — | User-Agent браузера покупателя. Если на оффере включена фильтрация ботов, лид без User-Agent не принимается. |
Метки. Источник трафика и ваши идентификаторы лида.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
utm_source | string | — | UTM-метка источника трафика. UTM-метки, domain, customer, subid, uuid и clid обрезаются до 250 знаков.Синонимы: us, utms |
utm_campaign | string | — | UTM-метка рекламной кампании.Синонимы: uc, utmc, utm_campaing |
utm_content | string | — | UTM-метка объявления или креатива.Синонимы: un, utmn |
utm_term | string | — | UTM-метка ключевого слова.Синонимы: ut, utmt |
utm_medium | string | — | UTM-метка типа трафика.Синонимы: um, utmm |
domain | string | — | Домен, с которого пришёл лид.Синонимы: ud, utmd, utm_domain, host |
customer | string | — | Идентификатор заказчика рекламы.Синонимы: uu, utmu, utm_user, utm_customer |
subid | string | — | SubID клика — удобное место для собственного номера заявки.Синонимы: x32, sub, sub_id |
sub1 … sub5 | string | — | Дополнительные метки клика. Обрезаются до 255 знаков.Синонимы: xm1…xm5, subid1…subid5, sub_id1…sub_id5, sid1…sid5 |
uuid | string | — | Уникальный идентификатор клика на стороне источника трафика.Синонимы: x64 |
adid | string | — | Рекламный идентификатор клика. Из нескольких имён в заказ попадает одно значение: сначала uid, затем clid, затем остальные имена в порядке списка справа. Передавайте то имя, которое поставила ваша рекламная система. Здесь uid — идентификатор клика, а не заказа агентства, как в ответе и в фильтре leads/list.Синонимы: clid, uid, fbclid, gclid, gbraid, wbraid, adclid, adsclid, rb_clickid, ttclid, ttlid, twclid, msclkid, yclid, bbg, external_id, unique_id |
extu | string | — | Только агентство: идентификатор заказа на стороне агентства — латинские буквы, цифры, _, - и .. Значение auto или пустое выдаёт порядковый номер; он возвращается в поле uid ответа. |
exts | string | — | Только агентство: идентификатор вебмастера или другого источника трафика на стороне агентства. |
exto | string | — | Только компания: идентификатор заказа на стороне компании. Если такой идентификатор у вас на этом оффере уже есть, лид не создаётся (ошибка exto).Синонимы: order |
Адрес. Адрес доставки покупателя.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
index | string | — | Почтовый индекс адреса доставки, например 127000. |
area | string | — | Регион доставки, например Московская обл..Синонимы: region |
city | string | — | Город доставки.Синонимы: geo_city |
street | string | — | Улица адреса доставки. |
addr | string | — | Адрес доставки: полный адрес без индекса, если остальные поля адреса не используются, иначе только дом, корпус, квартира или офис.Синонимы: house, address, adress, addres, adres |
delivery | int | — | ID способа доставки. Если не передан, берётся способ по умолчанию. |
Состав заказа. Товары, цены и стоимость доставки.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
currency | string | — | Трёхбуквенный код валюты заказа, например rub. Если валюта не передана, а country передан, берётся валюта этой страны, даже если у оффера для неё задана другая. Неизвестный код при переданном country заменяется так же. Без country берётся валюта оффера для определённой страны, а если у оффера её нет — валюта страны покупателя.Синонимы: cur, curr |
base | float | — | Цена единицы товара в валюте заказа. |
count | int | — | Количество товара. По умолчанию 1.Синонимы: amount, qnt, quantity |
discount | int | — | Скидка на заказ в процентах, от -99 до 99. Значение вне этих границ считается нулевым. |
more | int | — | Наценка на заказ: доплата за срочность, упаковку и тому подобное. Нуль и отрицательные значения игнорируются. |
delpr | float | — | Стоимость доставки в валюте заказа. Если не передана, берётся из настроек оффера или сети. |
total | float | — | Итоговая сумма заказа. Разница между ней и стоимостью товаров записывается в стоимость доставки у товарных офферов, у остальных — в наценку. |
item | string | — | Варианты товара через запятую, количество через x: 1x2,3. Цены берутся из настроек оффера и потока. |
items | list | — | Состав заказа: массив товаров. ID вариантов товара — в ответе offer/show, поле goods. Если передан, item не учитывается. |
items[].id | int | да | ID варианта товара. |
items[].count | int | — | Количество единиц. По умолчанию 1. |
items[].price | float | — | Цена одной единицы. Если не передана, берётся цена из настроек оффера или потока. |
items[].total | float | — | Цена за все единицы сразу: можно передать вместо price. |
items[].cost | float | — | Только компания: себестоимость единицы товара. |
goods | int | — | ID готового набора товаров оффера: набор задаёт состав заказа, количество и цены. ID набора сообщает администратор сети. |
Дополнительные параметры. Площадка, устройство, цель и произвольные поля заказа.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
site | int | — | ID лендинга, с которого пришёл лид; ID сайтов оффера — в offer/sites. По нему в лиде виден адрес лендинга. Платформа не проверяет, что такой лендинг есть: несуществующий ID может пройти без ошибки (иногда приходит traffic с info: site), и лид создаётся с пустым адресом лендинга, в leads/list siteurl будет []. Берите ID только из offer/sites, а если лендинг неизвестен, не передавайте site вовсе. |
from | int | — | ID прелендинга, с которого пришёл лид. В leads/list параметр from — уже дата начала периода. |
mobile | bool | — | 1 — мобильное устройство, 0 — компьютер. Если не передан, определяется по ua. |
os | int | — | ID операционной системы в справочнике платформы. Обычно не нужен: если не передан, определяется по ua. |
browser | int | — | ID браузера в справочнике платформы. Обычно не нужен: если не передан, определяется по ua. |
bad | bool | — | 1 — трафик нецелевой. На оффере для такой метки может действовать отдельная ставка.Синонимы: another |
src | string | — | Источник трафика: ID или символьный код из справочника сети. По нему может подбираться цель оффера. Если не передан, берётся источник потока (поле src в wm/flows). |
params | object | — | Произвольные поля заказа: ключ — имя поля, значение — содержимое. Сюда же попадают last, pass, lang и phonecc, переданные отдельно. |
goal | string | — | Символьный код цели оффера; коды — в ответе offer/show, поле goal. Неизвестный код ошибкой не считается: лид получает цель оффера по умолчанию, если у оффера есть цели. |
gid | int | — | ID цели оффера; приоритетнее goal. В offer/show ID цели нет, обычно хватает goal. ID другого оффера — ошибка goal. |
Запрос
https://lk.dalead.pro/api/leads/add.json?id={token}&offer=19&flow=63&phone=79001234567&name=Whiskers%20Pawson&email=whiskers%40meow.pro&country=ru&ip=203.0.113.42&ua=Mozilla%2F5.0%20%28iPhone%3B%20CPU%20iPhone%20OS%2017_5%20like%20Mac%20OS%20X%29&utm_source=facebook&utm_campaign=cathulhu-ru-01&subid=purr-42&comment=Call%20after%2018%3A00
curl 'https://lk.dalead.pro/api/leads/add.json?id={token}' \
--data-urlencode 'offer=19' \
--data-urlencode 'flow=63' \
--data-urlencode 'phone=79001234567' \
--data-urlencode 'name=Whiskers Pawson' \
--data-urlencode 'email=whiskers@meow.pro' \
--data-urlencode 'country=ru' \
--data-urlencode 'ip=203.0.113.42' \
--data-urlencode 'ua=Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X)' \
--data-urlencode 'utm_source=facebook' \
--data-urlencode 'utm_campaign=cathulhu-ru-01' \
--data-urlencode 'subid=purr-42' \
--data-urlencode 'comment=Call after 18:00'
// Лид из формы лендинга: данные покупателя и трафика
$url = 'https://lk.dalead.pro/api/leads/add.json?id={token}';
$data = [
'offer' => 19,
'flow' => 63,
'phone' => $_POST['phone'],
'name' => $_POST['name'],
'email' => $_POST['email'],
'country' => 'ru',
'ip' => $_SERVER['REMOTE_ADDR'],
'ua' => $_SERVER['HTTP_USER_AGENT'],
'utm_source' => 'facebook',
'utm_campaign' => 'cathulhu-ru-01',
'subid' => 'purr-42',
'comment' => 'Call after 18:00',
];
$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/leads/add.json?id={token}' \
-H 'Content-Type: application/json' \
--data-raw '{"offer": 31, "flow": 63, "phone": "79001234568", "name": "Mittens Fluffy", "country": "ru", "ip": "203.0.113.42", "index": "127000", "city": "Moscow", "addr": "Meow street, 7-1", "items": [{"id": 1, "count": 2, "price": 1990}, {"id": 3, "count": 1, "price": 990}], "subid": "purr-43"}'
// Лид с товарами и адресом (тело JSON)
$url = 'https://lk.dalead.pro/api/leads/add.json?id={token}';
$data = [
'offer' => 31,
'flow' => 63,
'phone' => '79001234568',
'name' => 'Mittens Fluffy',
'country' => 'ru',
'ip' => '203.0.113.42',
'index' => '127000',
'city' => 'Moscow',
'addr' => 'Meow street, 7-1',
'items' => [
[
'id' => 1,
'count' => 2,
'price' => 1990,
],
[
'id' => 3,
'count' => 1,
'price' => 990,
],
],
'subid' => 'purr-43',
];
$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'] );
Ответ
Успешный ответ означает, что платформа записала лид. Что дальше с ним будет, покажет leads/list.
{
"status": "ok",
"id": 950084,
"pin": 892529
}
{
"status": "error",
"error": "data",
"bad": [
"phone"
]
}
{
"status": "error",
"error": "badflow"
}
{
"status": "error",
"error": "traffic",
"info": "offer"
}
| Поле | Описание |
|---|---|
status |
Результат операции: ok при успехе, error при ошибке. |
error |
Код ошибки для статуса error (таблица ниже). |
id |
ID созданного лида. По нему проверяют статус в leads/list. |
pin |
Контрольный код заказа: шестизначное число, выданное при создании. Для проверки статуса не нужен. |
uid |
Только агентство: идентификатор заказа на стороне агентства — значение extu или выданный платформой номер. Сохраните его, если отправляете лиды с extu=auto: по нему можно проверять статусы. |
autologin |
Код автологина. Приходит, если сеть выдаёт покупателям ссылки на вход на своём домене. |
url |
Ссылка автологина для покупателя. Приходит у офферов, где CRM рекламодателя выдаёт покупателю ссылку для входа. |
info |
Уточнение причины ошибки (таблица ниже). |
bad |
Для ошибки data: массив имён полей, которых не хватило. |
message |
Для ошибки failed: текст ошибки CRM рекламодателя. |
geo |
Для ошибок traffic и ban, связанных с гео: данные геолокации по IP-адресу. |
Поля ответа.
Ошибки
Ошибки перечислены в порядке проверок. Первые идут до создания лида, остальные — при создании.
| Код | Что случилось | Что делать |
|---|---|---|
access | Вам не разрешена отправка лидов по API. | Попросите администратора сети включить право «Может добавлять заказы по API». |
noflow | Не передан параметр flow. | Передайте ID своего потока. |
badflow | Потока нет или он принадлежит другому пользователю. | Возьмите ID потока из wm/flows. |
nophone | Не передан телефон покупателя. | Передайте phone. |
nooffer | Не передан ID оффера или в форме есть поле offer с произвольными данными. | Передайте корректный offer. |
no-api | Оффера с таким ID нет или он не принимает лиды по API. | Проверьте ID по списку offer/list. |
security | Только агентство: пользователь, на которого записывается лид, заблокирован. | Обратитесь к администратору сети. |
traffic | Трафик на оффер не принимается, причина в поле info (таблица ниже). | Устраните причину из info. |
goal | Цель gid не принадлежит офферу. | Передайте goal с кодом из offer/show. |
data | Не хватает данных. Имена полей в bad: это phone, а также поля, которые оффер сделал обязательными, — name, last, pass, email, country, comment, goal, ip. Телефон короче 6 и длиннее 15 цифр (ведущие нули не считаются) тоже даёт bad: ["phone"]. Если info равно trash, лид отклонён CRM рекламодателя как невалидный. | Передайте недостающие поля. Для trash данные исправить нельзя. |
ban | Лид отклонён защитой от нецелевого трафика, причина в поле info (таблица ниже). | Разберите причину из info. |
phone | Номер не проходит проверку, включённую в настройках оффера. | Проверьте номер и country. |
email | Оффер требует электронную почту, а она не передана или пуста. Вид адреса платформа не проверяет. | Передайте email. |
duplicate | Лид признан дублем. Если в ответе нет pin, новый лид не создан: в id — ID исходного заказа, в autologin и url — ссылка автологина, если она была выдана. Если pin есть, id — новый лид, который рекламодатель отклонил как дубль уже после записи. | Повторно лид не отправляйте. |
inactive | Оффер отключён на стороне рекламодателя (info равно offer). | Выберите другой оффер. |
failed | CRM рекламодателя вернула ошибку, её текст в поле message. | Передайте текст ошибки в поддержку сети. |
db | Лид не удалось записать в базу. | Повторите запрос позже. |
access-denied | Только компания: отправитель не администратор своей компании, либо в компании отключено добавление заказов. | Обратитесь к администратору сети. |
no-comp | Только компания: компания отправителя не найдена. | Обратитесь к администратору сети. |
no-ext | Только агентство: подключение агентства не найдено. | Обратитесь к администратору сети. |
no-money | Только компания: компания исчерпала лимиты и не принимает заказы. | Обратитесь к администратору сети. |
exto | Только компания: заказ с таким exto уже есть, в поле id — его ID. | Не отправляйте лид повторно. |
Ошибка не всегда значит, что лида нет. Дубль, пойманный до записи, и exto возвращают id исходного заказа. Кроме того, после записи лида рекламодатель может отклонить его сразу: тогда приходит ошибка (data с info: trash, duplicate, inactive, failed, а также ban с гео или языком), но в ответе есть id и pin нового лида, а в leads/list он виден с отказной фазой (cancel или trash). Если в ответе с ошибкой есть pin, то id — новый лид; если pin нет, id (когда он есть) — исходный заказ.
Общие ошибки key и ban (токен не подошёл, учётная запись заблокирована) приходят до функции, их разбор — в Общих правилах API. Отличить блокировку учётной записи от отказа принять лид просто: у блокировки поля info нет, а у отклонённого лида оно есть всегда (таблица ниже).
Уточнения info
Поле info уточняет ошибки traffic и ban.
| Ошибка | info |
Что случилось |
|---|---|---|
traffic |
offer |
У вас нет доступа к этому офферу (приватный, закрытый или заблокированный). |
traffic |
site |
У вас нет доступа к указанному в site лендингу или такого лендинга нет. |
traffic |
search |
Только компания: лид пришёл без вебмастера, а приём такого трафика на оффере запрещён. |
traffic |
country |
Страна лида не входит в гео оффера (мягкая проверка гео). |
traffic |
no-cap |
Оффер принимает лиды только в рамках ёмкости, а свободной ёмкости капа нет. |
ban |
bot |
Запрос отправлен ботом. |
ban |
bad-ua |
Не передан User-Agent, а фильтрация ботов включена. |
ban |
filter |
IP-адрес отклонён фильтром трафика. |
ban |
bad-ip |
Не передан IP-адрес, а фильтрация трафика включена. |
ban |
phone |
Номер телефона в чёрном списке. |
ban |
ip |
IP-адрес в чёрном списке. |
ban |
flood |
С этого IP-адреса пришло слишком много лидов за короткое время. |
ban |
geo |
Страна по IP-адресу не входит в гео оффера. |
ban |
country |
Страна лида не входит в гео оффера (жёсткая проверка гео). |
ban |
lang |
Лид отклонён CRM рекламодателя из-за языкового барьера. |
Значения info.
leads/listПроверить статусы лидов#
https://lk.dalead.pro/api/leads/list.json?id={token}Возвращает ваши лиды с их статусами: все, а не только присланные по API, то есть и те, что пришли по ссылкам потоков, и те, что вы отправили из кабинета. Запрос должен содержать хотя бы один фильтр, иначе функция отвечает ошибкой no-param.
Функция рассчитана на выборочную проверку, а не на постоянный опрос. Чтобы узнавать о смене статуса сразу, настройте постбеки: платформа сообщит о ней сама.
Параметры
Все фильтры сочетаются по «и»: лид должен подойти под каждый. Фильтр, кроме дат и статуса, принимает несколько значений, и подходит лид с любым из них: через запятую (ids=1,2,3) или массивом (ids[]=1&ids[]=2). Текстовые значения сравниваются целиком и с учётом регистра, поиск по части значения не поддерживается. Пробелы по краям отбрасываются. В отличие от leads/add, имена параметров здесь пишут точно как в таблице: UTM_SOURCE и короткие utms фильтром не считаются.
Выдача не делится на страницы и не принимает limit и offset. Функция отдаёт все подходящие лиды сразу, но не больше 10 000 строк. Если лидов может быть больше, делите выборку по датам, например по одному дню: from и to с одной датой. Поле total в ответе — число строк в data, поэтому значение 10000 значит, что выборка обрезана и её нужно сузить.
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
ids | list | — | ID лидов в сети: значения id из ответа leads/add. |
offer | list | — | ID офферов. |
site | list | — | ID лендингов. |
space | list | — | ID прелендингов. |
subid | list | — | Значения SubID клика. |
utm_source, utm_campaign, utm_content, utm_term, utm_medium | list | — | Значения соответствующей UTM-метки. |
domain | list | — | Значения метки домена, с которого пришёл лид. |
customer | list | — | Значения метки заказчика рекламы. |
from | date | — | Начало периода в формате ГГГГ-ММ-ДД: учитываются лиды, созданные с 00:00:00 этого дня. Время суток в значении игнорируется. Дни считаются по часовому поясу сети. |
to | date | — | Конец периода в формате ГГГГ-ММ-ДД включительно, до 23:59:59 этого дня. |
status | string | — | Фильтр по фазе: wait, hold, approve, cancel или trash. Принимаются также числа от 1 до 5 и буквы w, h, a, c, t. Регистр не важен. Неизвестное значение игнорируется и фильтром не считается. |
uid | list | — | Только агентство: идентификаторы заказов на стороне агентства — значения, которые передавались в extu. |
src | list | — | Только агентство: идентификаторы источников трафика на стороне агентства — значения, которые передавались в exts. |
Даты нужно писать полностью. Ошибки при неверной дате нет, но и период получается неверный: например, from=2026-10 вместо начала месяца даст последний день предыдущего. Пустое значение (ids=) тоже считается фильтром, а не его отсутствием. В числовых фильтрах оно превращается в 0, как и нечисловое: ids= и offer= ничего не находят, а site= и space= находят лиды без лендинга или прелендинга. В текстовых фильтрах (subid, utm_*, domain, customer, uid, src) пустое значение означает пустую метку: находятся лиды, у которых она не заполнена.
Запрос
https://lk.dalead.pro/api/leads/list.json?id={token}&ids=950084
curl 'https://lk.dalead.pro/api/leads/list.json?id={token}' \
--data-urlencode 'ids=950084'
// Лид по его номеру
$url = 'https://lk.dalead.pro/api/leads/list.json?id={token}';
$data = [
'ids' => 950084,
];
$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/leads/list.json?id={token}&subid=purr-42
curl 'https://lk.dalead.pro/api/leads/list.json?id={token}' \
--data-urlencode 'subid=purr-42'
// Лиды по своей метке
$url = 'https://lk.dalead.pro/api/leads/list.json?id={token}';
$data = [
'subid' => 'purr-42',
];
$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/leads/list.json?id={token}&from=2026-10-01&to=2026-10-31&status=approve
curl 'https://lk.dalead.pro/api/leads/list.json?id={token}' \
--data-urlencode 'from=2026-10-01' \
--data-urlencode 'to=2026-10-31' \
--data-urlencode 'status=approve'
// Принятые за месяц
$url = 'https://lk.dalead.pro/api/leads/list.json?id={token}';
$data = [
'from' => '2026-10-01',
'to' => '2026-10-31',
'status' => 'approve',
];
$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",
"total": 1,
"data": [
{
"id": 950084,
"time": 1793389833,
"status": {
"phase": 1,
"stage": "wait",
"hold": 0,
"goal": false,
"ftd": false,
"deposited": false,
"crm": 2,
"reason": 0
},
"payment": {
"amount": 550,
"currency": "rub",
"convert": 550
},
"offer": {
"id": 19,
"name": "Постельное белье",
"flow": 63,
"site": 0,
"space": 0,
"siteurl": false,
"spaceurl": false
},
"tags": {
"source": "facebook",
"content": "",
"campaign": "cathulhu-ru-01",
"medium": "",
"term": "",
"domain": "",
"customer": "",
"adid": "",
"uuid": "",
"subid": "purr-42",
"sub1": "",
"sub2": "",
"sub3": "",
"sub4": "",
"sub5": "",
"click": "",
"extu": "",
"exts": ""
},
"info": {
"country": "ru",
"ip": "203.0.113.42",
"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X)",
"comment": ""
}
}
]
}
{
"status": "ok",
"total": 0,
"data": []
}
Ответ состоит из общих полей (результат и число лидов) и массива лидов data.
| Поле | Описание |
|---|---|
status |
Результат операции: ok при успехе, error при ошибке. |
error |
Код ошибки для статуса error (см. ниже). |
total |
Число строк в data (не больше 10 000). |
data |
Массив лидов; пустой, если ничего не найдено. |
Поля ответа.
Строка в data:
| Поле | Описание |
|---|---|
id |
ID лида в сети. |
time |
Время создания лида, unix-время (секунды). |
status |
Состояние лида (объект, ниже). |
payment |
Вознаграждение по лиду (объект). |
offer |
Оффер, поток и площадки (объект). |
tags |
Метки источника трафика (объект). |
info |
Данные лида (объект). |
Строка лида.
Объект status:
| Поле | Описание |
|---|---|
phase |
Фаза заказа для вебмастера числом от 1 до 5. |
stage |
Та же фаза символьным кодом: wait, hold, approve, cancel, trash. |
hold |
Время окончания холда, unix-время. 0 — холд не назначен. |
goal |
Символьный код цели оффера или false, если цели нет. |
ftd |
true, если покупатель оплатил заказ. |
deposited |
Время оплаты, unix-время. Значение false, пока заказ не оплачен. Если время неизвестно, приходит 0. |
crm |
Статус заказа в CRM, число от 1 до 12. Это то же состояние, что и фаза, с точки зрения CRM. Соответствие статуса и фазы задаёт модель оплаты оффера. |
reason |
Код причины отказа у отменённых и треш-лидов, 0 — причина не указана. |
custom |
Текстовый статус лида, как его показывает ваша сеть: например New, Processing, Completed, Cancelled. Это текст, а не код: его набор и язык задаёт сеть. Пустая строка, если сеть статус не показывает. |
Объект status, основные поля.
Объект payment:
| Поле | Описание |
|---|---|
amount |
Вознаграждение по лиду в валюте выплаты. Целая сумма приходит числом (550), дробная — строкой ("3.70"): принимайте оба вида. |
currency |
Трёхбуквенный код валюты выплаты. |
convert |
Та же сумма в основной валюте сети, числом или строкой, как amount. |
Объект payment.
Объект offer:
| Поле | Описание |
|---|---|
id |
ID оффера. |
name |
Название оффера. |
flow |
ID потока, на который записан лид. |
site |
ID лендинга, 0 — лендинг не задан. |
space |
ID прелендинга, 0 — прелендинг не задан. |
siteurl |
Адрес лендинга без схемы или false, если лендинг не задан. |
spaceurl |
Адрес прелендинга без схемы или false, если прелендинг не задан. |
Объект offer.
Объект tags:
| Поле | Описание |
|---|---|
source |
UTM-метка utm_source. |
content |
UTM-метка utm_content. |
campaign |
UTM-метка utm_campaign. |
medium |
UTM-метка utm_medium. |
term |
UTM-метка utm_term. |
domain |
Домен, с которого пришёл лид. |
customer |
Идентификатор заказчика рекламы. |
adid |
Рекламный идентификатор клика — то, что было передано в clid. |
uuid |
Уникальный идентификатор клика на стороне источника. |
subid |
SubID клика. |
sub1–sub5 |
Дополнительные метки клика. |
click |
То же значение, что в adid. |
extu |
Идентификатор заказа на стороне агентства. У вебмастера пустой. |
exts |
Идентификатор источника трафика на стороне агентства. У вебмастера пустой. |
Объект tags.
Объект info:
| Поле | Описание |
|---|---|
country |
Двухбуквенный код страны покупателя, zz — страна не определена. |
ip |
IP-адрес покупателя; 0.0.0.0, если он не передавался. |
ua |
User-Agent покупателя. |
comment |
Комментарий к лиду: ваш или заметка оператора. |
Объект info, основные поля.
Если сеть подключила вас как агентство с расширенной статистикой, в объекте info к четырём полям выше добавляются данные покупателя, адрес доставки и состав заказа:
| Поле | Описание |
|---|---|
name |
Имя покупателя. |
gender |
Пол покупателя: 0 — не определён, 1 — мужской, 2 — женский. |
phone |
Телефон покупателя. |
index |
Почтовый индекс адреса доставки. |
area |
Регион доставки. |
city |
Город доставки. |
street |
Улица адреса доставки. |
addr |
Адрес доставки: полный адрес без индекса, если остальные поля адреса не использовались, иначе только дом, корпус, квартира или офис. |
delivery |
ID способа доставки. |
discount |
Скидка на заказ в процентах. |
currency |
Трёхбуквенный код валюты заказа. В ней указаны цены ниже; валюта вознаграждения — в payment.currency. |
base |
Цена единицы товара в валюте заказа. |
more |
Наценка на заказ в валюте заказа. |
delpr |
Стоимость доставки в валюте заказа. |
price |
Итоговая сумма заказа в валюте заказа: товары со скидкой, наценка и доставка. |
track |
Трек-номер посылки или false, если он ещё не присвоен. |
goods |
Состав заказа: массив товаров. Пустой массив, если состав не задан. |
meta |
Дополнительные поля заказа (объект «ключ — значение»): то, что было передано в params при создании лида, и то, что позже добавила сеть. Если полей нет, приходит пустой массив []. |
Объект info, дополнительные поля.
Товар в goods:
| Поле | Описание |
|---|---|
id |
ID варианта товара. |
name |
Название варианта товара. |
count |
Количество единиц. |
price |
Цена одной единицы в валюте заказа. |
Элемент массива goods.
Ошибки
| Код | Что случилось | Что делать |
|---|---|---|
no-param | Не передано ни одного фильтра. | Передайте хотя бы один фильтр: ids, offer, период или status. |
auth | Только агентство и учётные записи неподдерживаемого типа: подключение агентства не найдено или функция для этого типа записи не предусмотрена. | Обратитесь к администратору сети. |
access-denied | Только агентство и компания. Агентство: у учётной записи нет подключения агентства. Компания: отправитель не администратор своей компании, либо в компании отключено добавление заказов. | Обратитесь к администратору сети. |
no-comp | Только компания: компания отправителя не найдена. | Обратитесь к администратору сети. |
no-money | Только компания: компания исчерпала лимиты. | Обратитесь к администратору сети. |
Ошибки токена (key, ban) приходят до функции: Общие ошибки.