Офферы

На этой странице

Эти функции отдают то же, что вы видите в разделе Офферы кабинета: список офферов, ставки по странам и целям, лендинги и прелендинги. С их помощью можно выгрузить каталог офферов в свой инструмент (таблицу, бота, панель, трекер) и получить готовые сайты оффера, чтобы разместить их на своём хостинге. Всё это делает приложение offer, у него пять функций.

Правила запроса, токен и формат ответа — на странице Общие правила API. Там же общие ошибки входа в API: key (токен не подходит) и ban (учётная запись заблокирована). Они возможны у любой функции ниже и в их таблицах ошибок не повторяются. Фазы заказа, на которые ссылаются показатели, — в справочниках значений.

Выгрузить каталог в свой инструмент#

  1. Вызовите offer/list. Одним запросом придёт весь видимый вам каталог в кратком виде: ID, название, категория, модель оплаты, гео и показатели.

  2. Для нужных офферов вызовите offer/show с параметром offer: он отдаёт ставки, сайты, товары и источники трафика. Запрашивайте офферы по одному.

  3. Если нужны только названия для подписей в отчётах, берите offer/names: ответ намного короче.

  4. Сохраняйте ответы у себя и обновляйте по расписанию, а не перед каждой операцией. Каталог — тяжёлый ответ, а показатели оффера сеть и сама пересчитывает не сразу.

Получить готовые сайты#

  1. Вызовите offer/sites с ID оффера и выберите лендинг или прелендинг с archive: true. Его id — это параметр site.

  2. Возьмите ID своего потока по этому офферу: список потоков отдаёт wm/flows, новый поток создаёт wm/add.

  3. Вызовите offer/download с параметрами site и flow: в ответ придёт ZIP-архив с готовым сайтом. Поток должен быть по тому же офферу, что и сайт. В лендинге из такого архива лежит api.php с вашим токеном. Токен открывает весь ваш API, поэтому архив личный: не публикуйте его и не загружайте туда, где его увидят другие (подробнее).

  4. Распакуйте архив в пустую папку на своём хостинге с PHP и подключите к нему домен: как установить. В страницах лежит ваш токен, поэтому загружайте их только в свой трекер, к которому больше ни у кого нет доступа.

Что попадает в каталог#

В каталог попадают только офферы самой сети: включённые, с незаблокированным трафиком. Дальше выдачу сужает приватность оффера:

  • Публичный оффер виден и доступен всем, кроме тех, кого администратор внёс в его чёрный список: отдельного вебмастера или целую команду.
  • Оффер по заявке виден в каталоге, но работать с ним можно только с разрешением. Он приходит с private: true и available: false, пока доступ не открыт.
  • Приватный оффер виден и доступен только тем, кто есть в его белом списке. Остальные не видят его совсем.

Независимо от приватности администратор может ограничить команду набором офферов или категорий: тогда вебмастерам этой команды видны только они.

Эти состояния различают два поля ответа. private показывает, что оффер не публичный, а available — что вам разрешено лить на него трафик и отправлять лиды. Оффер с available: false виден в каталоге, его ставки можно посмотреть, но работать с ним до получения доступа нельзя.

Показатели epc, cr и appr сеть пересчитывает по расписанию за скользящий период. Его длину задаёт администратор: от 7 до 90 дней, по умолчанию 15.

  • cr — конверсия: число заказов оффера без треша, поделённое на число кликов по его лендингам, в процентах.
  • epc — средний доход с клика: выплаты вебмастерам по заказам в фазах «Холд» и «Принят» в основной валюте сети, поделённые на то же число кликов.
  • appr — процент подтверждения: доля заказов в фазах «Холд» и «Принят» от всех заказов оффера без треша.

offer/listКраткий список офферов#

GETPOSThttps://lk.dalead.pro/api/offer/list.json?id={token}

Краткий список всех офферов, которые видны вам в каталоге: название, категория, модель оплаты, гео и три показателя. Ставок, сайтов и товаров здесь нет: это витрина, по которой выбирают оффер. Подробности по выбранному офферу берите в offer/show.

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

Запрос

https://lk.dalead.pro/api/offer/list.json?id={token}

Ответ

JSON
{
  "status": "ok",
  "data": {
    "67": {
      "id": 67,
      "private": false,
      "available": true,
      "cid": 13,
      "cat": "Gifts and fun",
      "name": "Catnip Cola sparkling drink",
      "short": "Catnip Cola",
      "model": "cpl",
      "country": [
        "gb",
        "au"
      ],
      "epc": 0,
      "cr": 0,
      "appr": 0
    },
    "76": {
      "id": 76,
      "private": true,
      "available": false,
      "cid": 6,
      "cat": "Electronics and gadgets",
      "name": "Maine Coon Gadgets smart feeder",
      "short": "Maine Coon Gadgets",
      "model": "cps",
      "country": [
        "mx",
        "au"
      ],
      "epc": 0,
      "cr": 0,
      "appr": 0
    }
  }
}
Поле Описание
status Результат операции: ok при успехе, error при ошибке.
error Код ошибки для статуса error (см. ниже).
data Офферы: объект, ключ — ID оффера. Если видимых вам офферов нет, приходит пустой массив [].

Поля ответа.

Основные поля оффера:

Поле Описание
id ID оффера.
cid ID категории оффера.
cat Название категории.
name Полное название оффера, а если оно не задано, краткое.
short Краткое название оффера.
model Модель оплаты оффера символьным кодом: cps, cpl, cpv, cpa, cod, cor либо cpx, если модель не задана.
country Гео оффера: массив двухбуквенных кодов стран. Единственный элемент ww означает весь мир.
epc Средний доход с клика в основной валюте сети.
cr Конверсия в процентах.
appr Процент подтверждения.
private true, если оффер не публичный: приватный или доступный по заявке.
available true, если вам разрешено работать с оффером. false — оффер виден в каталоге, но доступ к нему нужно получить.

Объект оффера.

offer/namesНазвания офферов#

GETPOSThttps://lk.dalead.pro/api/offer/names.json?id={token}

Лёгкий справочник «ID — краткое название». Он пригодится, когда полный каталог не нужен: подписать оффер в отчёте, проверить ID перед отправкой лида. Ответ намного короче, чем у offer/list, поэтому запрашивать его можно чаще.

В отличие от остальных функций раздела, справочник перечисляет только офферы, с которыми вам разрешено работать: офферы по заявке, к которым у вас пока нет доступа, в него не попадают. Названия идут по алфавиту. У функции нет параметров.

Запрос

https://lk.dalead.pro/api/offer/names.json?id={token}

Ответ

JSON
{
  "status": "ok",
  "data": {
    "67": "Catnip Cola",
    "65": "Claw Quest",
    "70": "Kitty Cam Pro"
  }
}
Поле Описание
status Результат операции: ok при успехе, error при ошибке.
error Код ошибки для статуса error (см. ниже).
data Названия офферов: объект, ключ — ID оффера, значение — краткое название. Если доступных офферов нет, приходит пустой массив [].

Поля ответа.

offer/showПолные данные офферов#

GETPOSThttps://lk.dalead.pro/api/offer/show.json?id={token}

Оффер целиком: ставки по странам или целям, лендинги и прелендинги, а у части офферов ещё и варианты товара, холд и источники трафика. Через эту функцию внешняя система строит свой каталог и узнаёт, сколько платят за заказ и куда вести трафик.

Запрос без offer вернёт все видимые вам офферы, в том числе с available: false, и для каждого — полную таблицу ставок, сайты и товары. Такой ответ очень тяжёлый, поэтому запрашивайте офферы по одному, а полную выгрузку делайте редко и по расписанию. Офферы идут по алфавиту краткого названия.

Ставки в ответе уже рассчитаны для вас. При сборке ответа применяются особые правила: для отдельных вебмастеров, команд, VIP-вебмастеров, агентств и вебмастеров, приглашённых VIP-вебмастером, а также правила с ограниченным сроком действия. Поэтому один оффер может отдавать разным вебмастерам разные ставки.

Параметры

ПараметрТипОбяз.Описание
offerint—ID оффера. Если не передан или равен нулю, возвращаются все видимые вам офферы, в том числе с available: false.

Запрос

Один оффер
https://lk.dalead.pro/api/offer/show.json?id={token}&offer=68

Ответ

JSON
{
  "status": "ok",
  "data": {
    "68": {
      "id": 68,
      "private": false,
      "available": true,
      "cid": 7,
      "cat": "Home appliances",
      "name": "Meow Air Purifier for pet homes",
      "short": "Meow Air Purifier",
      "model": "cps",
      "epc": 0,
      "cr": 0,
      "appr": 0,
      "country": [
        "fr",
        "de",
        "pl"
      ],
      "hold": 7,
      "land": {
        "418": {
          "id": 418,
          "url": "https://meow.pro/meow-air-purifier-classic-landing/",
          "name": "Classic landing",
          "epc": 0,
          "cr": 0,
          "approve": 0,
          "mobile": 0,
          "default": false,
          "local": true,
          "archive": true
        },
        "419": {
          "id": 419,
          "url": "https://meow.pro/meow-air-purifier-comparison-landing/",
          "name": "Comparison landing",
          "epc": 0,
          "cr": 0,
          "approve": 0,
          "mobile": 0,
          "default": false,
          "local": true,
          "archive": false
        }
      },
      "space": {
        "421": {
          "id": 421,
          "url": "https://meow.pro/meow-air-purifier-vet-review/",
          "name": "Vet review",
          "epc": 0,
          "cr": 0,
          "approve": 0,
          "mobile": 0,
          "default": false,
          "local": true,
          "archive": false
        }
      },
      "geo": {
        "fr": {
          "code": "fr",
          "name": "France",
          "price": 89,
          "currency": "eur",
          "cr": 0,
          "epc": 0,
          "approve": 0,
          "desktop": {
            "base": 17,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          },
          "mobile": {
            "base": 23,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          }
        },
        "pl": {
          "code": "pl",
          "name": "Poland",
          "price": 379,
          "currency": "pln",
          "cr": 0,
          "epc": 0,
          "approve": 0,
          "desktop": {
            "base": 19,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          },
          "mobile": {
            "base": 25,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          }
        }
      },
      "goods": {
        "103": {
          "id": 103,
          "name": "Purifier Max",
          "tid": 0,
          "type": "Main",
          "price": {
            "fr": 129,
            "pl": 549
          }
        },
        "104": {
          "id": 104,
          "name": "Spare Filter Set",
          "tid": 1,
          "type": "Additional",
          "price": {
            "fr": 27,
            "pl": 114
          }
        }
      },
      "allow": {
        "1": "Desktop traffic",
        "6": "Context ads"
      },
      "deny": {
        "7": "Teaser ads"
      }
    }
  }
}
Оффер с целями по странам
{
  "status": "ok",
  "data": {
    "72": {
      "id": 72,
      "private": true,
      "available": true,
      "cid": 2,
      "cat": "Games",
      "name": "Black Panther Slots online casino",
      "short": "Black Panther Slots",
      "model": "cps",
      "epc": 0,
      "cr": 0,
      "appr": 0,
      "country": [
        "gb",
        "de",
        "br"
      ],
      "hold": 7,
      "land": {
        "432": {
          "id": 432,
          "url": "https://meow.pro/black-panther-slots-classic-landing/",
          "name": "Classic landing",
          "epc": 0,
          "cr": 0,
          "approve": 0,
          "mobile": 0,
          "default": false,
          "local": true,
          "archive": false
        }
      },
      "space": [],
      "goal": {
        "reg": {
          "code": "reg",
          "name": "Registration",
          "price": false,
          "currency": false,
          "geo": {
            "gb": {
              "code": "reg-gb",
              "name": "United Kingdom",
              "price": false,
              "currency": "gbp",
              "cr": 0,
              "epc": 0,
              "approve": 0,
              "desktop": {
                "base": 6,
                "upsale": 0,
                "xsale": 0,
                "percent": 0,
                "currency": "usd"
              },
              "mobile": {
                "base": 6,
                "upsale": 0,
                "xsale": 0,
                "percent": 0,
                "currency": "usd"
              }
            }
          }
        },
        "dep": {
          "code": "dep",
          "name": "Deposit",
          "price": false,
          "currency": false,
          "geo": {
            "gb": {
              "code": "dep-gb",
              "name": "United Kingdom",
              "price": false,
              "currency": "gbp",
              "cr": 0,
              "epc": 0,
              "approve": 0,
              "desktop": {
                "base": 45,
                "upsale": 0,
                "xsale": 0,
                "percent": 0,
                "currency": "usd"
              },
              "mobile": {
                "base": 45,
                "upsale": 0,
                "xsale": 0,
                "percent": 0,
                "currency": "usd"
              }
            }
          }
        }
      },
      "allow": {
        "3": "Websites",
        "2": "Mobile traffic"
      },
      "deny": {
        "9": "Social targeting",
        "7": "Teaser ads"
      }
    }
  }
}
Оффер по заявке, доступ не открыт (поля сайтов опущены)
{
  "status": "ok",
  "data": {
    "76": {
      "id": 76,
      "private": true,
      "available": false,
      "cid": 6,
      "cat": "Electronics and gadgets",
      "name": "Maine Coon Gadgets smart feeder",
      "short": "Maine Coon Gadgets",
      "model": "cps",
      "epc": 0,
      "cr": 0,
      "appr": 0,
      "country": [
        "mx",
        "au"
      ],
      "hold": 14,
      "geo": {
        "mx": {
          "code": "mx",
          "name": "Mexico",
          "price": 1490,
          "currency": "mxn",
          "cr": 0,
          "epc": 0,
          "approve": 0,
          "desktop": {
            "base": 10,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          },
          "mobile": {
            "base": 10,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          }
        },
        "au": {
          "code": "au",
          "name": "Australia",
          "price": 129,
          "currency": "aud",
          "cr": 0,
          "epc": 0,
          "approve": 0,
          "desktop": {
            "base": 18,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          },
          "mobile": {
            "base": 18,
            "upsale": 0,
            "xsale": 0,
            "percent": 0,
            "currency": "usd"
          }
        }
      },
      "allow": {
        "1": "Desktop traffic",
        "2": "Mobile traffic"
      },
      "deny": {
        "12": "E-mail marketing"
      }
    }
  }
}
Поле Описание
status Результат операции: ok при успехе, error при ошибке.
error Код ошибки для статуса error (см. ниже).
data Офферы: объект, ключ — ID оффера. Если под запрос не подошёл ни один оффер, приходит пустой массив []: в том числе когда оффер с таким ID существует, но вам не виден.

Поля ответа.

Все поля оффера лежат в одном объекте. Ниже они разбиты на группы, чтобы было удобнее читать. Поля, которых нет у части офферов и сетей, описаны в разделе Дополнительные поля.

Оффер:

Поле Описание
id, cid, cat, name, short, model, country, epc, cr, appr Те же поля, что в offer/list.

Основные поля оффера.

Ставки по странам. Каждая ставка — отдельная строка, ключ которой — двухбуквенный код страны или ww (весь мир):

Поле Описание
geo Ставки по странам: объект, ключ — код страны, значение — строка ставки. У офферов с целями вместо него приходит goal, см. Дополнительные поля.

Ставки.

Строка ставки:

Поле Описание
code Код строки: у обычных офферов код страны, у офферов с целями код цели, а если цели разбиты ещё и по странам, то цель-страна, например dep-gb.
name Название страны или цели.
price Цена товара для покупателя или цена конверсии по цели в валюте currency. Число или строка вида "111.00". false, если цена не задана.
currency Трёхбуквенный код валюты цены или false, если валюта не определена.
cr Конверсия по этой стране или цели, в процентах.
epc Средний доход с клика по этой стране или цели.
approve Процент подтверждения по этой стране или цели.
desktop Ставки для трафика с настольных устройств (объект, см. ниже).
mobile Ставки для трафика с мобильных устройств (объект, тот же состав).

Строка ставки.

Объекты desktop и mobile:

Поле Описание
base Базовая ставка за заказ в валюте currency.
upsale Надбавка за каждую единицу основного товара начиная со второй.
xsale Надбавка за каждую единицу дополнительного товара.
percent Ставка процентом от суммы заказа, от -100 до 100.
currency Трёхбуквенный код валюты ставки. Если своя валюта у ставки не задана, приходит основная валюта сети.

Ставки desktop и mobile.

Если оффер не различает мобильный и настольный трафик, оба объекта совпадают.

Сайты. Оба поля есть у любого оффера, у оффера без сайтов они пустые:

Поле Описание
land Лендинги оффера: объект, ключ — ID сайта.
space Прелендинги оффера: объект, ключ — ID сайта.

Сайты оффера.

Состав объекта сайта такой же, как в ответе offer/sites.

Дополнительные поля

Эти поля есть не у каждого оффера и не в каждой сети: цели, холд, товары и ограничения источников трафика включает администратор сети. Поля private, available и hold приходят всегда, остальные — только если у оффера есть что показать.

Поле Описание
private, available Те же поля, что в offer/list. Приватные офферы и офферы по заявке бывают не во всех сетях.
hold Холд в днях: срок, в течение которого выплата по подтверждённому заказу не поступает на счёт. false — холда нет. Приходит всегда. Если для вас задан индивидуальный холд, приходит именно он.
goal Ставки по целям — у офферов с целями. Приходит вместо geo: у оффера есть ровно одно из двух полей. Объект, ключ — символьный код цели.
goods Варианты товара: объект, ключ — ID варианта. Поля нет у офферов без вариантов товара.
allow Разрешённые источники трафика: объект, ключ — ID источника, значение — его название. Поля нет, если оффер не сужает список источников.
deny Запрещённые источники трафика в том же виде. Поля нет, если запрещённых источников нет.

Дополнительные поля оффера.

Что лежит в goal. Если цели не разбиты по странам, значение — сразу строка ставки с полем code, равным коду цели. Если цели разбиты ещё и по странам, как у оффера 72 в примере выше, значение — объект цели:

Поле Описание
code Символьный код цели.
name Название цели.
price Цена конверсии по цели или false, если цена задана не на цели, а на странах.
currency Трёхбуквенный код валюты цены или false, если валюта цели не задана.
geo Ставки по странам этой цели: объект, ключ — двухбуквенный код страны, значение — строка ставки.

Объект цели.

Объект варианта товара:

Поле Описание
id ID варианта. Его подставляют в состав заказа при отправке лида.
name Название варианта.
tid Тип варианта: 0 — основной товар, 1 — дополнительный, 2 — доставка.
type Название типа варианта.
price Цены варианта по странам: объект, ключ — двухбуквенный код страны, значение — цена единицы товара в валюте этой страны. Только страны, для которых цена задана. Если цен нет совсем, приходит пустой массив [].

Вариант товара.

offer/sitesСайты оффера#

GETPOSThttps://lk.dalead.pro/api/offer/sites.json?id={token}

Лендинги и прелендинги одного оффера. Функция нужна там, где ставки и товары уже известны, а обновить надо только список сайтов: например, перед созданием потока или чтобы выбрать сайт для скачивания.

Сайты оффера делятся на две группы. Лендинг — целевая страница с формой заказа, именно с неё приходит лид. Прелендинг (прокладка) — промежуточная страница: обзор, статья, тест или новость, которая подводит посетителя к покупке и ведёт его на лендинг. В связке посетитель сначала попадает на прелендинг, оттуда переходит на лендинг. Лендинг в связке обязателен, прелендинг — нет.

Группа land собирает лендинги всех видов: физические сайты сети, страницы-редиректы на сторонний адрес и страницы TDS. Отличить их можно по полю local. Сайты, скрытые из списков, и приватные сайты, к которым у вас нет доступа, в выдачу не попадают. Сайты идут по алфавиту адреса.

Адрес в поле url — адрес самой страницы, это не ссылка для трафика. Он нужен, чтобы посмотреть сайт. Трафик вы льёте по ссылке своего потока (wm/flows), а лендинг и прелендинг выбираете в настройках потока (wm/edit), подставляя ID из этого ответа.

Параметры

ПараметрТипОбяз.Описание
offerintдаID оффера.

Запрос

https://lk.dalead.pro/api/offer/sites.json?id={token}&offer=68

Ответ

JSON
{
  "status": "ok",
  "land": {
    "418": {
      "id": 418,
      "url": "https://meow.pro/meow-air-purifier-classic-landing/",
      "name": "Classic landing",
      "epc": 0,
      "cr": 0,
      "approve": 0,
      "mobile": 0,
      "default": false,
      "local": true,
      "archive": true
    },
    "419": {
      "id": 419,
      "url": "https://meow.pro/meow-air-purifier-comparison-landing/",
      "name": "Comparison landing",
      "epc": 0,
      "cr": 0,
      "approve": 0,
      "mobile": 0,
      "default": false,
      "local": true,
      "archive": false
    }
  },
  "space": {
    "421": {
      "id": 421,
      "url": "https://meow.pro/meow-air-purifier-vet-review/",
      "name": "Vet review",
      "epc": 0,
      "cr": 0,
      "approve": 0,
      "mobile": 0,
      "default": false,
      "local": true,
      "archive": false
    }
  }
}
Оффер с редиректом на сторонний адрес (часть сайтов не показана)
{
  "status": "ok",
  "land": {
    "429": {
      "id": 429,
      "url": "https://meow.pro/tabby-credit-classic-landing/",
      "name": "Classic landing",
      "epc": 0,
      "cr": 0,
      "approve": 0,
      "mobile": 0,
      "default": false,
      "local": true,
      "archive": false
    },
    "438": {
      "id": 438,
      "url": "https://meow.pro/tabby-credit-partner-redirect/",
      "name": "Partner redirect",
      "epc": 0,
      "cr": 0,
      "approve": 0,
      "mobile": 0,
      "default": false,
      "local": false,
      "archive": false
    }
  },
  "space": {
    "431": {
      "id": 431,
      "url": "https://meow.pro/tabby-credit-money-blog/",
      "name": "Money blog",
      "epc": 0,
      "cr": 0,
      "approve": 0,
      "mobile": 0,
      "default": false,
      "local": true,
      "archive": false
    }
  }
}
Ошибка: оффер вам пока недоступен
{
  "status": "error",
  "error": "access-denied"
}
Поле Описание
status Результат операции: ok при успехе, error при ошибке.
error Код ошибки для статуса error (см. ниже).
land Лендинги оффера: объект, ключ — ID сайта. Пустой массив [], если подходящих сайтов нет.
space Прелендинги оффера в том же виде.

Поля ответа.

Несуществующий ID оффера даёт access-denied, как и недоступный. Оффер, у которого нет подходящих сайтов, даёт ok с двумя пустыми массивами.

Состав объекта сайта:

Поле Описание
id ID сайта. Его подставляют в настройки потока, в фильтры статистики и в offer/download.
url Полный адрес сайта со схемой и завершающей косой чертой.
name Название сайта. Может быть пустой строкой.
epc Средний доход с клика по этому сайту в основной валюте сети.
cr Конверсия сайта в процентах.
approve Процент подтверждения по этому сайту.
mobile Мобильность сайта: 0 — не предназначен для мобильных устройств, 1 — перенаправляет на мобильную версию, 2 — оптимизирован для мобильных устройств, 3 — адаптивный дизайн, работает на любых устройствах.
default true, если это сайт оффера по умолчанию: он подставляется в новый поток.
local true, если сайт размещён на серверах сети (лендинг или прелендинг). false — редирект или TDS, ведущие на сторонний адрес.
archive true, если для сайта подготовлен архив и его можно скачать через offer/download.

Объект сайта.

Ошибки

КодЧто случилосьЧто делать
no-offerНе передан параметр offer или он равен нулю.Передайте ID оффера.
access-deniedКаталог офферов скрыт от вебмастеров настройками сети, оффера нет или вам не разрешено работать с ним.Проверьте available в offer/list.

offer/downloadСкачать сайт оффера#

GETPOSThttps://lk.dalead.pro/api/offer/download.json?id={token}

Отдаёт лендинг или прелендинг оффера готовым ZIP-архивом: сайт, который можно развернуть на своём хостинге и вести на него трафик. Подходят сайты с archive: true в ответе offer/sites. То же самое делает кнопка скачивания в кабинете: Скачивание готовых сайтов.

Архив собирается лично для вас. Если передать flow, он привязывается к вашему потоку: в страницы попадают пиксели и код заголовка и подвала из настроек потока, цены, метки потока и счётчик визитов, а к лендингу добавляется api.php, который отправляет заказы от вашего имени. Архив собирается заново на каждый запрос, поэтому после смены настроек потока скачайте его ещё раз. Только агентство: api.php и счётчик визитов добавляются и без flow, подробнее — в предупреждении ниже.

В api.php лежит ваш токен

Файл api.php в архиве с flow отправляет заказы от вашего имени, а ваш токен записан в нём открытым текстом, в адресах запросов. Токен открывает весь ваш API: статистику, лиды и потоки. Поэтому такой архив — личный:

  • Не публикуйте архив и его файлы: не выкладывайте их в чаты, на файлообменники, в репозитории и общие папки.
  • Размещайте архив только на своём хостинге. Не загружайте его в трекеры и на хостинги, к которым есть доступ у других людей.
  • После распаковки удалите с хостинга сам .zip, если он лежит в папке, доступной по адресу сайта.
  • Если архив мог попасть в чужие руки, сбросьте ключ API в профиле: прежний токен сразу перестанет работать, а скачанные архивы придётся получить заново.

В архиве без flow у вебмастера файла api.php нет, токена в нём тоже нет.

Только агентство: api.php есть в лендинге и без flow. Он отправляет заказы по офферу сайта, а токен агентства записан в нём так же открытым текстом, поэтому такой архив тоже личный. Счётчик визитов у агентства стоит в страницах и без flow.

Заказы с лендинга уходят через leads/add, поэтому действуют его условия: вам должна быть разрешена отправка лидов по API, а оффер должен принимать лиды по API. Прелендинг заказов не отправляет, ему это не нужно.

Параметры

ПараметрТипОбяз.Описание
siteintдаID лендинга или прелендинга из offer/sites. У сайта должен быть готовый архив (archive: true).
flowint—ID вашего потока. Поток должен быть по тому же офферу, что и сайт. Поток по другому офферу сеть принимает без ошибки, но цены и название берутся по офферу потока, а не сайта, поэтому выходят пустыми или чужими, и api.php отправляет заказы по офферу потока. Без flow у вебмастера в лендинге нет api.php и не подставляются цены и название оффера (у агентства api.php есть и без него, см. Что внутри архива). Чужой или несуществующий поток молча игнорируется, архив собирается как без flow.
trackerint—Трекер, под который готовится архив: от 0 до 6, см. раздел Трекеры. По умолчанию 0. Значение вне диапазона от 0 до 6 в страницах действует как 0, но addtracker с ним не работает: он включается, только когда tracker не передан или равен нулю.
addtrackerbool—Встроить в страницы проверку посетителя по настройкам потока (трекер и клоака) и положить в архив белый сайт потока, если он задан. Работает только вместе с flow и без tracker. Передавайте 1.
geostring—Двухбуквенный код страны для подстановки цен и валюты, например pl. Регистр не важен: PL и pl дают одно и то же. По умолчанию берётся первая страна из country оффера. У оффера на весь мир (country: ["ww"]) страны по умолчанию нет: без geo ничего не подставляется, и метки остаются в страницах как есть. Если передать geo пустым, метки тоже остаются неподставленными. Если у оффера нет цены для этой страны или код неизвестен, цена остаётся пустой, а валюта подставляется всё равно (для неизвестного кода — основная валюта сети).
shortbool—Пиксели без JavaScript: вместо скриптов вставляются картинки-пиксели, они быстрее грузятся. Передавайте 1.
nopagebool—Пиксели только на странице «Спасибо». На самих страницах сайта остаётся лишь код, который запоминает идентификаторы пикселей. Передавайте 1.
nopixelbool—Не добавлять пиксели совсем. Передавайте 1.

Для short, nopage и nopixel включением считается любое значение, кроме пустого и 0, в том числе слово false. Чтобы выключить параметр, не передавайте его совсем.

Запрос

Лендинг для своего потока
https://lk.dalead.pro/api/offer/download.json?id={token}&site=404&flow=80
Под Keitaro (subid), цены для Польши
https://lk.dalead.pro/api/offer/download.json?id={token}&site=404&flow=81&tracker=1&geo=pl
Лендинг: пиксели без JavaScript и только на странице «Спасибо»
https://lk.dalead.pro/api/offer/download.json?id={token}&site=404&flow=80&short=1&nopage=1
Лендинг под Binom (clickid)
https://lk.dalead.pro/api/offer/download.json?id={token}&site=426&flow=92&tracker=4

Ответ

Успешный ответ — сам ZIP-файл с заголовком Content-Type: application/zip, без конверта со status. Имя файла сервер не задаёт, поэтому сохраните ответ под любым именем, как в примерах выше (site.zip). Расширение в адресе (.json, .xml) на успешный ответ не влияет. Ошибка приходит обычным конвертом в формате, который задаёт расширение: при .json это JSON с Content-Type: application/json, при .xml — XML с Content-Type: application/xml. HTTP-код при этом остаётся 200 (подробнее о конверте). Поэтому архив и ошибку отличайте по Content-Type, а не по HTTP-коду.

Ошибка: у сайта нет архива
{
  "status": "error",
  "error": "no-archive"
}
Ошибка: не передан сайт
{
  "status": "error",
  "error": "no-site"
}

Ошибки

КодЧто случилосьЧто делать
no-siteНе передан параметр site или он равен нулю.Передайте ID сайта из offer/sites.
no-archiveУ сайта нет готового архива, такого сайта нет или файл архива недоступен.Выберите сайт с archive: true. Если ошибка осталась и у такого сайта, сообщите в поддержку сети.
inactiveОффер сайта отключён.Выберите сайт другого оффера.
access-deniedОффер или сайт вам недоступны.Проверьте available оффера в offer/list.

Ошибки входа в API (key, ban и другие) общие для всех функций: Общие правила API.

Подстановка цен и названия

В исходных сайтах цены и название оффера стоят метками [PRICE], [OLDPRICE], [DISCOUNT], [CURRENCY], [GEO] и [OFFERNAME] (для варианта товара — [PRICE<ID варианта>] и так далее). При скачивании метки заменяются значениями: ценой, старой ценой, скидкой в процентах, валютой и страной. Цену берут из ваших цен потока, а если их нет, из цен оффера для выбранной страны. Страну задаёт параметр geo, по умолчанию это первая страна оффера. У оффера на весь мир страны по умолчанию нет, и без geo метки не заменяются совсем. Цены и название оффера берутся по офферу вашего потока, поэтому без flow эти места остаются пустыми, а [CURRENCY] и [GEO] всё равно заполняются. Место цены пустое и тогда, когда geo указан неверно или у оффера нет цены для этой страны. Метки в квадратных скобках остаются в страницах, только когда страна не определена (geo передан пустым или оффер на весь мир скачан без geo).

Трекеры

Если вы ведёте трафик через трекер, параметр tracker готовит архив под него: в каждую форму добавляется скрытое поле с макросом трекера, а ссылки прелендинга ведут на макрос трекера вместо адреса сети. Макросы в фигурных скобках заменяет сам трекер, когда отдаёт страницу посетителю. Если страницы лежат просто на хостинге, макросы останутся в них как есть. Как подключить сайт к трекеру, написано в разделе Сторонние трекеры.

tracker Трекер Скрытое поле в формах Ссылка прелендинга
0 любой не добавляется. Если в настройке потока SubID стоит {subid}, добавляется subid = {subid} адрес сети
1 Keitaro (subid) subid = {subid} {offer}
2 Keitaro (utm_term) utm_term = {subid} {offer}
3 Keitaro (utm_medium) utm_medium = {subid} {offer}
4 Binom (clickid) subid = {clickid} {offer_link}
5 Binom (clickid+campaign) subid = {clickid}, utm_campaign = {campaign} {offer_link}
6 AlterCPA Red sub1 = {click} адрес сети

Значения параметра tracker.

Что внутри архива

Файлы сайта лежат прямо в корне архива, общей папки нет. Вот что получается у лендинга, скачанного с flow:

api.php
index.php
style.css
success.php

В этом примере у сайта одна страница, index.php, а оформление лежит в одном файле style.css. У вашего сайта страниц, папок и файлов может быть больше.

Файл Что это
index.php и другие .php в корне Страницы сайта. В каждую подставлены цены, название оффера и страна, пиксели и коды потока, скрытые поля трекера. Форма отправляется на api.php вместе со всеми метками из адреса страницы.
success.php Страница «Спасибо», на которую api.php отправляет посетителя после заказа. Берётся из сайта, а если в сайте её нет, подставляется стандартная. Есть у каждого лендинга. У прелендинга она есть, только если была в исходном сайте.
api.php Принимает форму и передаёт заказ в leads/add от имени вашего потока, подставляя метки потока (например, utm_source), если посетитель пришёл без них. Есть только в лендинге, скачанном с flow. Содержит ваш токен. Только агентство: файл есть и без flow, с токеном агентства.
Остальные папки и файлы (css, images, js, fonts) Оформление сайта, без изменений. Файлы в подпапках архив не трогает.
Папка белого сайта Только при addtracker, если в потоке задан белый сайт.

Файлы архива.

Что добавляется к страницам:

  • Пиксели и счётчики из настроек потока: идентификатор можно также передать в адресе страницы, например ?fb=123456789012345, он запомнится в cookie на 30 дней. Подробнее — в разделе Метки и пиксели.
  • Коды заголовка и подвала из настроек потока. Блок между <!--site--> и <!--/site--> попадает только на страницы сайта, а блок между <!--thanks--> и <!--/thanks--> — только на страницу «Спасибо».
  • Метки потока в api.php: utm_source и другие, заданные в потоке, добавляются к заказу, если посетитель пришёл без них.
  • Счётчик визитов: в конце каждой страницы стоит запрос к сети, чтобы визит был засчитан в статистике потока. Без flow его нет. Только агентство: он стоит и без flow.
  • К прелендингу api.php не добавляется. Вместо него в начале страниц задан адрес для ссылок: адрес этого прелендинга в сети с номером вашего потока (flow) и признаком from. По ним сеть узнаёт, от какого потока и с какого сайта пришёл посетитель. Без flow вместо номера потока в этой ссылке остаётся заглушка XXX. Только агентство: вместо XXX в ссылке стоит номер подключения агентства (exti).
  • При addtracker в начало каждой страницы встраивается проверка посетителя по настройкам фильтрации и трафикбека потока: страница показывает сайт, белую страницу или перенаправляет посетителя.

Если сеть не приняла заказ, посетитель всё равно попадёт на success.php, но в адресе будут status=error и код ошибки из leads/add, а пиксели на странице не сработают.

Как установить на хостинг

  1. Подготовьте хостинг.

    Нужен хостинг или сервер с PHP и расширением cURL, на котором работает ваш домен. Для лендинга с хостинга должны быть разрешены исходящие запросы: api.php обращается к API вашей сети.

  2. Распакуйте архив в папку сайта.

    Положите содержимое архива в корень сайта или в нужную подпапку так, чтобы index.php, success.php и api.php лежали в одной папке. Общей папки внутри архива нет, поэтому распаковывайте его сразу в папку сайта. Берите пустую папку: файлы архива перезапишут одноимённые, прежде всего index.php и success.php, и другой сайт в этой папке сломается. Сам .zip после этого удалите.

  3. Откройте сайт в браузере.

    Страница должна открыться с ценой, валютой и названием оффера. Пустое место вместо цены значит, что архив скачан без flow, неверно указана страна geo или для неё у оффера нет цены. Метки в квадратных скобках ([PRICE]) остаются, только когда страна не определена: geo передан пустым, либо оффер на весь мир скачан без geo. В любом из этих случаев скачайте архив заново.

  4. Ведите трафик на адрес своего сайта.

    Метки из адреса (utm_source, subid и другие) страницы подхватывают сами и передают вместе с заказом. Если вы работаете через трекер, загрузите страницы только в свой трекер, доступа к которому нет у других людей: в api.php лежит ваш токен. Нужное значение tracker укажите при скачивании.

  5. Проверьте отправку заказа.

    Отправьте заказ через форму и убедитесь, что после неё открылась страница «Спасибо», а заказ появился в списке лидов. Для повторных проверок есть служебный номер, он описан в разделе Как гонять тесты подряд.