Adset.ProAdset.ProKnowledge base
Home/Публічне HTTP API/Партнерські мережі (CPA)

Партнерські мережі (CPA)

Партнерська мережа (CPA-мережа) — довідник рекламодавців, з якими працює команда: назва, валюта виплат, маппінг статусів постбеків на події трекера, макроси постбека і шаблон параметрів для посилань. Офери й потоки завжди належать якійсь CPA-мережі. У кабінеті це розділ Трекер → Aff. Networks (див. Aff. Networks (Партнерські мережі) та Статуси конверсій і налаштування postback).

Отримання токена, загальний формат відповідей, параметри списків і помилки — у головній статті розділу.

Скоупи

Скоуп Доступ У дефолтному PAT
api:cpa читання CPA-мереж і CPA-шаблонів так
api:cpa:write створення і редагування CPA-мереж ні

Ендпоінти

Метод Шлях Скоуп RBAC-право
GET /api/cpa api:cpa cpa:list
POST /api/cpa api:cpa:write cpa:create
GET /api/cpa/{id} api:cpa cpa:read
PATCH /api/cpa/{id}?changeAllUrl= api:cpa:write cpa:update

Права cpa:list, cpa:read, cpa:create є в усіх ролей. cpa:update немає в BUYER — для його токена PATCH /api/cpa/{id} поверне 403 forbidden навіть за наявності скоупу api:cpa:write. Видимість: ADMIN — усі мережі, решта ролей — мережі своєї команди (BUYER — свої та доступні за налаштуваннями доступу). Чужа мережа → 404.

Параметри списку GET /api/cpa

Поля
Фільтри filter[...] name, team, user, isActive, lastLoginAt, created, updated, tags
Сортування sort name, isActive, created, updated
Populate за замовчуванням user (name, email, avatar), team (name), tags
curl -G 'https://adset.pro/api/cpa' \
  -H 'Authorization: Bearer pat_…' \
  --data-urlencode 'pageSize=100' \
  --data-urlencode 'sort=name:asc' \
  --data-urlencode 'filter[isActive]=true'

Об'єкт CPA-мережі

Поле Тип Опис
id string ObjectId
name string назва (обов'язкова під час створення), до 255 символів
description string опис, до 2000 символів
shortName string коротке ім'я, до 50 символів; за ним розпізнаються вхідні постбеки
isActive boolean за замовчуванням true
currency string ISO-код валюти виплат (USD, EUR, …), за замовчуванням USD; дохід конвертується в USD за курсом
paramTemplate string рядок GET-параметрів, який дописується до URL потоків цієї мережі, наприклад sub1={click_id}&sub2={campaign_id}
statuses об'єкт маппінг статусів партнерки на події трекера (див. нижче)
postbackMacros об'єкт імена параметрів постбека партнерки (див. нижче)
acceptDuplicates boolean приймати повторні постбеки з тим самим click_id і статусом (за замовчуванням false)
acceptDuplicatesFor string[] для яких подій дозволені дублі; за замовчуванням ["CPA_HOLD", "CPA_ACCEPT"]; допустимі також CPA_REDEP, CPA_DECLINE, CPA_TRASH
user, team id | об'єкт власник і команда
tags[] id[] | об'єкти теги
created, updated date лише читання

statuses — маппінг статусів

Значення — рядки, які партнерка надсилає в параметрі статусу постбека. Кожне поле відповідає події трекера:

Поле Подія трекера За замовчуванням Зміст
hold CPA_HOLD hold реєстрація / лід у холді
accept CPA_ACCEPT accept перший депозит, виплату підтверджено
redep CPA_REDEP "" повторний депозит
decline CPA_DECLINE decline відхилено
trash CPA_TRASH trash сміттєва реєстрація

postbackMacros — параметри постбека

Як називаються параметри в постбеку партнерки, з яких трекер бере дані:

Поле Що містить За замовчуванням
clickId ім'я параметра з click_id трекера ""
status ім'я параметра зі статусом конверсії ""
revenue ім'я параметра із сумою виплати "0"
currency ім'я параметра з валютою або фіксована валюта "USD"
externalId ім'я параметра із зовнішнім id конверсії (для дедуплікації) ""

POST /api/cpa — створити CPA-мережу

Обов'язкове поле — name. Власник і команда за замовчуванням беруться з токена; ADMIN зобов'язаний передати team та/або user (інакше 400). Заповнювати statuses і postbackMacros вручну необов'язково — зручніше взяти їх із CPA-шаблону потрібної партнерки.

// POST /api/cpa
{
  "name": "Casino Partners",
  "shortName": "casinop",
  "description": "Прямий рекламодавець, виплати в EUR",
  "currency": "EUR",
  "paramTemplate": "sub1={click_id}&sub2={campaign_id}",
  "statuses": { "hold": "lead", "accept": "sale", "redep": "redeposit", "decline": "rejected", "trash": "trash" },
  "postbackMacros": { "clickId": "sub1", "status": "status", "revenue": "payout", "currency": "EUR", "externalId": "conversion_id" },
  "acceptDuplicates": false,
  "tags": []
}

Відповідь — 201 Created, заголовок Location: /cpa/{id}:

{
  "data": {
    "id": "6704b1c2d3e4f5a6b7c8d9e0",
    "name": "Casino Partners",
    "description": "Прямий рекламодавець, виплати в EUR",
    "shortName": "casinop",
    "isActive": true,
    "statuses": { "accept": "sale", "redep": "redeposit", "hold": "lead", "decline": "rejected", "trash": "trash" },
    "postbackMacros": { "clickId": "sub1", "status": "status", "revenue": "payout", "currency": "EUR", "externalId": "conversion_id" },
    "currency": "EUR",
    "paramTemplate": "sub1={click_id}&sub2={campaign_id}",
    "acceptDuplicates": false,
    "acceptDuplicatesFor": ["CPA_HOLD", "CPA_ACCEPT"],
    "user": "64a0…",
    "team": "64b0…",
    "tags": [],
    "created": "2026-10-13T10:00:00.000Z",
    "updated": "2026-10-13T10:00:00.000Z"
  },
  "traceId": "01HX…"
}

PATCH /api/cpa/{id} — змінити CPA-мережу

Усі поля необов'язкові; передавайте лише те, що змінюєте. Відповідь 200 OK з повним об'єктом.

Прапорець ?changeAllUrl=true

Якщо в тілі змінюється paramTemplate, прапорець каскадно оновлює url усіх потоків цієї CPA-мережі:

  • у мережі не було шаблону — новий дописується до URL через ? або &;
  • шаблон був — його входження в URL замінюється на новий.

Без прапорця змінюється лише сама мережа, URL потоків залишаються незмінними. Потоки оновлюються в межах видимості власника токена.

# змінити шаблон параметрів і прокинути його в усі потоки мережі
curl -X PATCH 'https://adset.pro/api/cpa/6704b1c2d3e4f5a6b7c8d9e0?changeAllUrl=true' \
  -H 'Authorization: Bearer pat_…' \
  -H 'Content-Type: application/json' \
  -d '{ "paramTemplate": "sub1={click_id}&sub2={campaign_id}&sub3={source_id}" }'

Було: https://partner.example/offer?aff=123&sub1={click_id}&sub2={campaign_id} → стало: https://partner.example/offer?aff=123&sub1={click_id}&sub2={campaign_id}&sub3={source_id}.

Помилки

HTTP Коли
400 validationError ADMIN-токен створює мережу без team/user
403 forbidden + Insufficient OAuth scope. Required: api:cpa:write у токена немає write-скоупу
403 forbidden BUYER викликає PATCH /api/cpa/{id} — у ролі немає права cpa:update
404 notFound мережі немає або вона належить іншій команді
422 validationError немає name, невідома currency, значення acceptDuplicatesFor поза списком подій

Пов'язані статті