Авторизация в API с помощью Bearer Token
Для авторизации в системе через API с использованием Bearer Token необходимо добавить в ваш запрос заголовок «Authorization» со значением «Bearer X», где «X» — ваш персональный токен. Токен доступен в личном кабинете рекламодателя в разделе «Профиль и настройки». Срок действия токена не ограничен. Токен можно сбросить через метод POST /api/users/token-reset.
Базовый URL:
https://partners.kadam.net/api/v1
Swagger-документация: https://partners.kadam.net/api-doc/#/ru
Общий формат ответа:
{ "success": true, "code": 0, "msg": {}, "data": { ... } }
При ошибке success = false, поле msg содержит описание ошибки.
Пагинация и сортировка (общие параметры для списков):
page — номер страницы, int (от 1)
perPage — количество элементов на странице, int (по умолчанию 20 или 50)
sort — объект вида
{"поле": "asc"|"desc"}, доступные поля указаны для каждого метода
Профиль
Данные аккаунта
Для получения данных текущего аккаунта используется метод GET /me. Он возвращает ID аккаунта, баланс, валюту, дату регистрации и часовой пояс. Email и имя не передаются.
Пример запроса:
GET https://partners.kadam.net/api/v1/me
Authorization: Bearer YOUR_TOKEN
Баланс
Для быстрой проверки баланса (например, для уведомлений о низком балансе) используется метод GET /finances/balance. Он возвращает только баланс и валюту аккаунта.
Пример запроса:
GET https://partners.kadam.net/api/v1/finances/balance
Authorization: Bearer YOUR_TOKEN
Кампании
Список кампаний
Для получения списка кампаний используется метод POST /campaigns
Параметры | Значение | Дополнительные атрибуты |
page | Номер страницы | int; опциональный параметр |
perPage | Количество элементов на странице | int; опциональный параметр |
sort | Сортировка. Допустимые поля: campaign, dateCreation, CPC, conversions, views, clicks, moneyOut, CPA, moneyIn, trafficback, dayMoneyLimit, dayClickLimit, ROI, CPM, CTR, CR, CPL, EPC, profit, rejects, holds | объект; опциональный параметр |
filters.dateFrom | Начало периода статистики, формат YYYY-MM-DD | строка; обязательный параметр |
filters.dateTo | Конец периода статистики, формат YYYY-MM-DD | строка; обязательный параметр |
filters.timezone | Часовой пояс, смещение в часах от UTC | int; опциональный параметр |
filters.searchQuery | Поиск по названию кампании | строка; опциональный параметр |
filters.folderId | ID папки кампаний | int; опциональный параметр |
filters.campaignId | ID кампании | int; опциональный параметр |
filters.types | Массив типов кампаний: 10 — Native, 20 — Banner, 30 — Push, 40 — Popunder, 100 — In-Page Push | массив int; опциональный параметр |
filters.statuses | Массив статусов: 0 — Paused, 10 — Active, 20 — Awaiting payment, 30 — Clicks limit, 40 — Day money limit, 45 — Group limit day money, 50 — Balance exceeded, 55 — Group limit total money, 60 — Conversions limit, 70 — Day money limit (user), 80 — Bid below minimum, 120 — Insufficient funds, 140 — Blocked, 200 — Moderation | массив int; опциональный параметр |
filters.paymentModels | Массив моделей оплаты: 0 — CPC, 2 — CPM, 4 — CPA Target | массив int; опциональный параметр |
filters.countries | Массив ID стран | массив int; опциональный параметр |
filters.archive | Фильтр по архиву: 0 — активные, 1 — архив | int; опциональный параметр |
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"page": 1,
"perPage": 50,
"sort": {"dateCreation": "desc"},
"filters": {
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"timezone": 0,
"types": [10, 30],
"statuses": [10],
"archive": 0
}
}Результат:
{ "success": true, "data": { "total": 124, "items": [ { "id": 789484, "name": "Campaign name", "type": 10, "status": 10, "paymentModel": 0, "dateCreation": "2026-03-15 12:00:00", "views": 12345, "clicks": 678, "conversions": 42, "moneyOut": 120.50, "moneyIn": 0, "CPC": 0.18, "CPM": 9.76, "CTR": 5.49, "CPA": 2.87, "ROI": 0 } ] } }
Получение кампании по ID
Для получения полных данных кампании используется метод GET /campaigns/{id}
Параметр в пути:
id — ID кампании, int; обязательный параметр
Пример запроса:
GET https://partners.kadam.net/api/v1/campaigns/789484 Authorization: Bearer YOUR_TOKEN
Результат возвращает все поля кампании в том же формате, который принимает PUT /campaigns/{id}/update. Удобно для редактирования: считать → изменить нужное поле → отправить обратно.
Создание кампании
Для создания кампании используется метод POST /campaigns/create
Content-Type: application/json Тело запроса зависит от типа кампании (поле type):
10 — Native (тизер)
20 — Banner
30 — Push
40 — Popunder
100 — In-Page Push
Обязательные общие поля:
name — название кампании, строка
type — тип кампании, int
paymentModel — модель оплаты: 0=CPC, 2=CPM, 4=CPA Target
bids — объект ставок (структура зависит от типа и модели)
countries — массив ID стран
sites — настройки площадок (whitelist/blacklist)
limits — объект с лимитами (dayMoneyLimit, dayClickLimit и т. д.)
targeting — объект таргетингов (браузеры, ОС, устройства, города)
Для получения справочников (страны, категории, push-типы и т. д.), необходимых при создании, используется GET /campaigns/options?type={type}. Полные схемы по каждому формату см. в Swagger: https://partners.kadam.net/api-doc/#/Campaigns/post_campaigns_create
Banner — схема
CampaignBannerRequestPopunder — схема
CampaignPopunderRequestIn-Page Push — схема
CampaignInPagePushRequestPush — схема
CampaignPushRequestNative / Teaser — схема
CampaignTeaserRequest
Обновление кампании
Для обновления параметров кампании используется метод PUT /campaigns/{id}/update
⚠ Важно: частичное обновление не поддерживается. В запросе нужно передать все поля (как при создании), иначе будет ошибка валидации. Типовой сценарий: GET /campaigns/{id} → изменить нужное поле → PUT /campaigns/{id}/update с полным телом. Полные схемы по форматам см. в Swagger: https://partners.kadam.net/api-doc/#/Campaigns/put_campaigns__id__update
Обновление ставки кампании
Для изменения ставок у одной кампании используется метод PUT /campaigns/{id}/bid
Content-Type: application/json
Параметры | Значение | Дополнительные атрибуты |
bids | Объект ставок. Набор полей зависит от paymentModel и type кампании (CPC/CPM/CPA, гео-ставки и т. д.). Детали в Swagger, схема CampaignBids. | объект; обязательный параметр |
Пример запроса:
PUT https://partners.kadam.net/api/v1/campaigns/789484/bid
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"bids": {
"default": 0.05
}
}Массовое обновление ставок
Для изменения ставок у нескольких кампаний одновременно используется метод PUT /campaigns/bids
Параметры | Значение | Дополнительные атрибуты |
campaignIds | Массив ID кампаний, для которых обновляются ставки | массив int; обязательный параметр |
bids | Объект ставок (схема CampaignBids — см. Swagger) | объект; обязательный параметр |
Пример запроса:
PUT https://partners.kadam.net/api/v1/campaigns/bids
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"campaignIds": [789484, 789485, 789486],
"bids": {"default": 0.05}
}Массовые действия над кампаниями
Для массового изменения статуса используются методы:
POST /campaigns/activate — активировать кампании
POST /campaigns/pause — поставить на паузу
POST /campaigns/archive — перенести в архив
Параметры | Значение | Дополнительные атрибуты |
campaignIds | Массив ID кампаний | массив int; обязательный параметр |
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/activate
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"campaignIds": [789484, 789485]}Справочники для создания кампаний
Для получения справочников (страны, категории, push-типы, модели оплаты и т. д.) используется метод GET /campaigns/options
Параметры (query):
type — тип кампании, int (10, 20, 30, 40, 100); обязательный параметр
pushType — подтип push-а (для type=30), int; опциональный параметр
Пример запроса:
GET https://partners.kadam.net/api/v1/campaigns/options?type=30 Authorization: Bearer YOUR_TOKEN
Восстановление, перемещение и удаление кампаний
Помимо активации, паузы и архивации, доступны следующие массовые методы:
POST /campaigns/restore — восстановить кампании из архива
POST /campaigns/move — перенести кампании в папку; помимо campaignIds передаётся folderId — ID папки, int; обязательный параметр
DELETE /campaigns — удалить кампании вместе с материалами. Удалить можно только кампании из архива: если в списке есть кампания не из архива, весь запрос отклоняется с ошибкой 422
campaignIds — массив ID кампаний, массив int; обязательный параметр.
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/move
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"campaignIds": [789484, 789485], "folderId": 42}
Копирование кампании
Для создания копии кампании используется метод POST /campaigns/{id}/copy. Копируются таргетинги, лимиты и ставки; статистика и расход не копируются. Скопированные материалы всегда проходят модерацию заново.
name — название копии, строка; обязательный параметр
folderId — папка для копии, int; обязательный параметр
isPauseAfterModer — оставить копию на паузе после модерации, bool; обязательный параметр
mode — какие материалы копировать: all — все, active — только активные, строка; опциональный параметр
copyAutorules — копировать автоправила, bool; опциональный параметр
paymentModel — модель оплаты копии: 0 — CPC, 2 — CPM, 4 — CPA Target, int; опциональный параметр
targetCampaignType — формат копии при копировании между Push и In-Page Push: 30 — Push, 100 — In-Page Push, int; опциональный параметр
copyBids / bids — скопировать ставки исходной кампании или задать новые; опциональные параметры
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/789484/copy
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"name": "Копия кампании", "folderId": 42, "isPauseAfterModer": true, "mode": "active"}
Проверка кампании перед созданием
Метод POST /campaigns/validate выполняет те же проверки, что и POST /campaigns/create, но ничего не создаёт. Тело запроса такое же, как при создании. Ответ 200 означает, что кампания будет принята в таком виде; ошибка 422 содержит список полей с ошибками.
Прогноз трафика
Метод POST /campaigns/forecast возвращает зависимость доступного объёма трафика от ставки для заданного таргетинга по данным вчерашнего аукциона. Используйте его перед созданием кампании или повышением ставки.
cpType — модель оплаты: 0 — CPC, 2 — CPM, int; обязательный параметр
type — тип кампании, int; опциональный параметр
campaignId — ID существующей кампании, настройки которой нужно использовать, int; опциональный параметр
regions, platformVersions, browsers, browserLanguages, categories, subAges, ssps — параметры таргетинга; опциональные параметры
Если вчера по заданному таргетингу было слишком мало трафика, в ответе вернётся пустая кривая и hasEnoughData: false. Это не ошибка и не означает, что трафика не будет.
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/forecast
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"cpType": 0, "campaignId": 789484}
RSS-фид
Метод PUT /campaigns/{id}/rss задаёт RSS-фид, из которого Native-кампания импортирует креативы (для других форматов запрос вернёт ошибку 422).
link — адрес фида, строка. Чтобы остановить импорт, передайте пустую строку; уже импортированные креативы сохранятся
notRemove — сохранять креативы, которые пропали из фида (false — такие креативы архивируются при следующем импорте), bool; обязательный параметр
isPauseAfterModer — оставлять импортированные креативы на паузе после модерации, bool; обязательный параметр
Импорт выполняется по расписанию, поэтому успешный ответ означает, что фид сохранён, а не что креативы уже добавлены.
Easy Start
Метод PUT /campaigns/{id}/easy-start включает или выключает для кампании Easy Start — показ рекламы на отобранном наборе площадок вместо всего инвентаря. Параметр: enabled — bool; обязательный параметр.
Пример запроса:
PUT https://partners.kadam.net/api/v1/campaigns/789484/easy-start
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"enabled": true}
Справочники
Метод GET /dictionaries/{type} возвращает один справочник, необходимый для создания или изменения кампании. Доступные типы: campaign-types, browsers, platforms, devices, connection-types, categories, isps, conversion-templates, countries, regions, cities.
Дополнительные query-параметры: campaignType — тип кампании; countryId — страна (для регионов); regionId — регион (для городов); search — строка поиска; page, perPage — пагинация.
Пример запроса:
GET https://partners.kadam.net/api/v1/dictionaries/countries
Authorization: Bearer YOUR_TOKEN
Папки кампаний
Список папок
Для получения списка папок кампаний используется метод POST /campaigns/folders. Тело запроса может быть пустым ({}) либо содержать стандартные поля пагинации/сортировки. Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/folders
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{}Создание папки
Для создания папки используется метод POST /campaigns/folders/create
Параметры | Значение | Дополнительные атрибуты |
name | Название папки, до 50 символов | строка; обязательный параметр |
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/folders/create
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"name": "New folder"}Настройки папки
Для управления лимитами и распределением бюджета папки используется метод PUT /campaigns/folders/{id}/settings
Параметр в пути: id — ID папки, int.
Параметры | Значение | Дополнительные атрибуты |
limitsEnabled | Включены ли лимиты в папке | bool; обязательный параметр |
groupDailyLimit | Дневной лимит, минимум 5 | число (float); опциональный |
groupTotalLimit | Общий лимит на группу | число (float); опциональный |
groupSpendingEvenly | Равномерное распределение бюджета | bool; опциональный |
Пример запроса:
PUT https://partners.kadam.net/api/v1/campaigns/folders/42/settings
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"limitsEnabled": true,
"groupDailyLimit": 5.05,
"groupTotalLimit": 10.10,
"groupSpendingEvenly": false
}Просмотр и изменение папки
Метод GET /campaigns/folders/{id} возвращает настройки папки. Метод PATCH /campaigns/folders/{id} изменяет название и лимиты папки: name, limitsEnabled, groupDailyLimit, groupTotalLimit, groupSpendingEvenly.
Пример запроса:
PATCH https://partners.kadam.net/api/v1/campaigns/folders/42
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"name": "Новое название папки"}
Массовые действия с папками
POST /campaigns/folders/activate — активировать кампании в папках
POST /campaigns/folders/pause — поставить кампании в папках на паузу
POST /campaigns/folders/archive — перенести папки в архив вместе с кампаниями
POST /campaigns/folders/restore — восстановить папки из архива вместе с кампаниями (принимаются только ID папок в архиве)
folderIds — массив ID папок, массив int; обязательный параметр.
Пример запроса:
POST https://partners.kadam.net/api/v1/campaigns/folders/pause
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"folderIds": [42, 43]}
Материалы (объявления / креативы)
Список материалов
Для получения списка материалов используется метод POST /materials
Параметры | Значение | Дополнительные атрибуты |
page | Номер страницы | int; опциональный |
perPage | Количество элементов на странице | int; опциональный |
sort | Сортировка. Допустимые поля: stakes, views, clicks, CPC, moneyOut, conversions, CPA, moneyIn, profit, ROI, holds, rejects, CPL | объект; опциональный |
filters.searchQuery | Поиск по материалу | строка; опциональный |
filters.dateFrom / filters.dateTo | Период статистики, формат YYYY-MM-DD | строка; обязательные |
filters.timezone | Часовой пояс, int | опциональный |
filters.campaignId | ID кампании для фильтрации материалов | int; опциональный |
filters.types | Массив типов материалов: 0 — Teaser (Native), 10 — Banner, 20 — Push, 30 — Clickunder (Popunder), 60 — Video, 90 — In-Page Push | массив int; опциональный |
filters.statuses | Массив статусов: 0 — On Moderation, 5 — On Moderation 2, 10 — Active, 20 — Blocked, 30 — Not Paid, 40 — Low CTR, 50 — Blocked by day limit, 60 — Banner Block, 70 — Blocked by offer owner, 80 — Paused, 90 — Video is processing, 120 — Awaiting Payment | массив int; опциональный |
filters.archive | 0 — активные, 1 — архив | int; опциональный |
Пример запроса:
POST https://partners.kadam.net/api/v1/materials
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"page": 1,
"perPage": 50,
"sort": {"views": "desc"},
"filters": {
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"timezone": 0,
"campaignId": 789484,
"statuses": [10]
}
}Получение материала по ID
Для получения данных материала используется метод GET /materials/{id}
Параметр в пути: id — ID материала, int. Пример запроса:
GET https://partners.kadam.net/api/v1/materials/123456 Authorization: Bearer YOUR_TOKEN
Создание материала
Для создания материала используется метод POST /campaigns/{id}/materials
Параметр в пути: id — ID кампании.
Content-Type: multipart/form-data (т. к. передаются файлы изображений). Тело зависит от типа материала. Общие поля:
image — основное изображение, file
rectangleImage — иконка/прямоугольная версия, file (для некоторых форматов)
title — заголовок, строка
text — описание, строка
url — ссылка перехода, строка
Полные схемы по форматам см. в Swagger: https://partners.kadam.net/api-doc/#/Materials/post_campaigns__id__materials
Banner — схема
BannerCreateRequestPush — схема
PushCreateRequestNative (Teaser) — схема
NativeCreateRequestIn-Page Push — схема
InPagePushCreateRequestHTML Banner — схема
HtmlBannerCreateRequest
Обновление материала
Для обновления материала используется метод PUT /campaigns/{id}/materials
Content-Type: application/json. Полные схемы по форматам см. в Swagger: https://partners.kadam.net/api-doc/#/Materials/put_campaigns__id__materials
Banner —
BannerUpdateRequestPush —
PushUpdateRequestNative —
NativeUpdateRequestIn-Page Push —
InPagePushUpdateRequestHTML Banner —
HtmlBannerUpdateRequest
Массовые действия над материалами
Для массового изменения статуса используются методы:
POST /materials/activate — активировать
POST /materials/pause — поставить на паузу
POST /materials/archive — перенести в архив
Параметры | Значение | Дополнительные атрибуты |
adsIds | Массив ID материалов | массив int; обязательный параметр |
Пример запроса:
POST https://partners.kadam.net/api/v1/materials/activate
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"adsIds": [100, 200, 300]}Справочник размеров баннеров
Для получения словаря размеров при создании баннеров используется метод GET /materials/options. Пример запроса:
GET https://partners.kadam.net/api/v1/materials/options Authorization: Bearer YOUR_TOKEN
Восстановление и удаление материалов
POST /materials/restore — восстановить материалы из архива. Восстановленный материал заново отправляется на модерацию. Материалы кампании, которая находится в архиве, восстановить нельзя — запрос отклоняется с ошибкой 422
DELETE /materials — удалить материалы. Удалить можно только материалы из архива, иначе весь запрос отклоняется с ошибкой 422
adsIds — массив ID материалов, массив int; обязательный параметр.
Копирование материалов
Метод POST /materials/copy копирует каждый указанный материал в каждую указанную кампанию (2 материала и 2 кампании дают 4 копии). Целевые кампании должны быть того же формата, что и исходная. Копии создаются на паузе и проходят модерацию.
adsIds — массив ID материалов; обязательный параметр
targets — целевые кампании: campaignId и url — ссылка перехода для копий (должна совпадать с доменом кампании); обязательный параметр
isPauseAfterModer — оставить копии на паузе после модерации, bool; опциональный параметр (по умолчанию false)
Пример запроса:
POST https://partners.kadam.net/api/v1/materials/copy
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"adsIds": [100, 200], "targets": [{"campaignId": 789485, "url": "https://example.com/landing"}]}
Перемещение материалов
Метод POST /materials/move переносит материалы в другую кампанию того же формата и с той же моделью оплаты. Перенесённые материалы теряют собственные ставки по странам, ставятся на паузу и заново проходят модерацию.
adsIds — массив ID материалов; обязательный параметр
campaignId — ID целевой кампании, int; обязательный параметр
url — ссылка перехода для перенесённых материалов (должна совпадать с доменом целевой кампании), строка; обязательный параметр
Ставки материалов по странам
Метод PUT /materials/bids задаёт собственные ставки материалов по странам. Список полностью заменяет ставки материалов: для стран, которых нет в списке, используется ставка кампании. Все материалы должны принадлежать одной кампании, а страны — входить в её таргетинг. Недоступно для кампаний CPA Target.
adsIds — массив ID материалов; обязательный параметр
bids — массив объектов: bid — ставка, countries — массив ID стран; обязательный параметр
Массовая загрузка материалов
Массовая загрузка выполняется в два шага, каждый из которых обрабатывается асинхронно:
POST /materials/bulk/upload (multipart/form-data) — загрузить изображения или ZIP-архивы с изображениями и проверить их на соответствие требованиям формата целевых кампаний. Параметры: campaignIds[] — ID кампаний, files[] или zip[] — файлы
GET /materials/bulk/{jobId} — проверить статус задачи. Когда статус станет done, возьмите из ответа загруженные изображения (stagedId)
POST /materials/bulk — создать материалы из загруженных изображений. Параметры: campaignIds — ID кампаний; items — строки пакета (stagedId, title, text, name, path и др.); common — общие настройки для всех строк. Каждая строка превращается в отдельный материал в каждой указанной кампании
GET /materials/bulk/{jobId} — проверить результат. Статус done означает, что обработка завершена; проверьте счётчики, так как отдельные строки могут завершиться ошибкой
Тестовая конверсия
Метод GET /materials/{id}/test-conversion возвращает ссылку для тестового клика по материалу: клик записывает click_id, подставляет макросы и перенаправляет на лендинг так же, как при реальном показе. Это позволяет проверить настройку постбэка от начала до конца. Для форматов, которые отображаются во фрейме, также возвращается previewUrl.
Пример запроса:
GET https://partners.kadam.net/api/v1/materials/123456/test-conversion
Authorization: Bearer YOUR_TOKEN
Аудитории
Список аудиторий
Для получения списка аудиторий используется метод POST /audiences
Параметры | Значение | Дополнительные атрибуты |
page | Номер страницы | int; опциональный |
perPage | Количество элементов на странице (по умолчанию 20) | int; опциональный |
sort | Сортировка. Допустимые поля: audienceId, audienceName, dateCreated, expireDays, usersCount | объект; опциональный |
filters.searchQuery | Поиск по названию аудитории | строка; опциональный |
tableFilters | Массив расширенных фильтров: [{"column": "audienceId", "include": [...], "exclude": [...], "childField": "listID"}] | массив объектов; опциональный |
Пример запроса:
POST https://partners.kadam.net/api/v1/audiences
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"page": 1,
"perPage": 20,
"sort": {"usersCount": "desc"},
"filters": {"searchQuery": "my audience"}
}Справочник для создания аудиторий
Для получения списка кампаний и аудиторий для S2S-связки используется метод GET /audiences/create-options. Параметры (query):
searchQuery — строка поиска, опциональный
Получение аудитории по ID
Для получения данных аудитории используется метод GET /audiences/{audiencesId}
Параметр в пути: audiencesId — ID аудитории, int.
Формат ответа зависит от типа аудитории (stat / pixel / S2S).
Создание аудитории
Для создания аудитории используется метод POST /audiences/create
Content-Type: application/json Тип задаётся полем type:
audience — стандартная статистическая аудитория (требует campaignsIds)
audience_code — pixel-аудитория (возвращает код трекинга)
audience_s2s — S2S-аудитория (Postback-интеграция)
Пример (стандартная аудитория):
POST https://partners.kadam.net/api/v1/audiences/create
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"type": "audience",
"name": "My audience",
"expireDays": 1,
"campaignsIds": [789484, 789485],
"hasClicks": true,
"hasConversions": false,
"hasHolds": false,
"hasRejects": false,
"usersIds": null
}Хотя бы одно из полей hasClicks / hasConversions / hasHolds / hasRejects должно быть true.
usersIds — массив ID пользователей для шаринга аудитории. Пример (pixel-аудитория):
POST https://partners.kadam.net/api/v1/audiences/create
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"type": "audience_code",
"name": "My code audience",
"expireDays": 1,
"extAudienceId": 123,
"usersIds": null
}Полные схемы (AudienceStandardRequest, AudienceCodeRequest, AudienceS2SRequest) — в Swagger: https://partners.kadam.net/api-doc/#/Audiences/post_audiences_create
Обновление аудитории
Для обновления аудитории используется метод PUT /audiences/{id}
Параметр в пути: id — ID аудитории, int.
Тело запроса аналогично созданию (без поля type; тип меняется только пересозданием). Детали в Swagger.
Удаление аудитории
Для удаления аудитории используется метод DELETE /audiences/{id}
Параметр в пути: id — ID аудитории, int. Пример запроса:
DELETE https://partners.kadam.net/api/v1/audiences/123 Authorization: Bearer YOUR_TOKEN
Параметры pixel- и S2S-аудитории
Методы GET /audiences/{id}/params и PUT /audiences/{id}/params получают и сохраняют фиксированные значения параметров, которые подставляются в код пикселя или S2S: event, paramStr, paramStr2, paramInt, paramInt2. Работают только для pixel- и S2S-аудиторий и только для владельца аудитории. PUT заменяет все значения: поле, которое не передано или передано как null, сбрасывается.
Проверка аудитории перед созданием
Метод POST /audiences/validate проверяет тело запроса так же, как POST /audiences/create, но ничего не создаёт. Принадлежность указанных в запросе кампаний и аудиторий при этом не проверяется, поэтому запрос, прошедший проверку, всё ещё может быть отклонён при создании.
Конструктор отчётов
Список сохранённых отчётов
Для получения списка сохранённых отчётов используется метод POST /custom-reports
Тело запроса может быть пустым ({}).
Получение данных отчёта
Для получения данных отчёта используется метод POST /custom-reports/data — основной метод для построения статистики.
Параметры | Значение | Дополнительные атрибуты |
groups | Массив группировок (см. ниже) | массив строк; обязательный |
metrics | Массив метрик (см. ниже) | массив строк; обязательный |
filters.dateFrom / filters.dateTo | Период, формат YYYY-MM-DD. Можно заменить на filters.period: today, yesterday, 7days, 14days, month, prevMonth | строка; обязательный |
filters.timezone | Часовой пояс (смещение от UTC) | int; опциональный |
filters.filters | Массив объектов: [{"id": "advertiser_campaign", "type": "list", "include": [id1, id2]}, ...]. Типы фильтров: list, range, value, value_like, value_combined | массив объектов; опциональный |
sort | Сортировка: {"time_day": "desc"} | объект; опциональный |
compare | Период сравнения (если используется) | массив; опциональный |
id / name | Сохранить отчёт в список под указанным именем | int / строка; опциональные |
Группировки (groups):
Время:
time_hour,time_day,time_week,time_monthТрафик:
traffic_format,traffic_pushType,traffic_region,traffic_browser,traffic_platform,traffic_platformVersion,traffic_device,traffic_deviceType,traffic_subsAge,traffic_pageCategory,traffic_macros,traffic_isp,traffic_city,traffic_subdivision,traffic_blockSize,traffic_clickability,traffic_browserLanguage,traffic_connectionTypeРекламодатель:
advertiser_paymentModel,advertiser_campaign,advertiser_campaignName,advertiser_ad,advertiser_campaignStatus,advertiser_adStatus,advertiser_campaignGroup,advertiser_dailyBudget,advertiser_totalBudget,advertiser_groupDailyBudget,advertiser_groupTotalBudgetКреативы:
adv_image,adv_title,adv_text,adv_url
Метрики (metrics):
Трафик:
traffic_visits,traffic_views,traffic_clicks,traffic_trafficbackКонверсии:
conversion_conversions,conversion_rejects,conversion_holds,conversion_cr,conversion_pvConversions,conversion_pvConversionsCPA,conversion_pcConversions,conversion_pcConversionsCPAРекламодатель:
advertiser_cpm,advertiser_cpc,advertiser_ctr,advertiser_cpa,advertiser_income,advertiser_ROI,advertiser_cpl,advertiser_epl,advertiser_epcФинансы:
finance_moneyOut(потрачено)
Пример запроса:
POST https://partners.kadam.net/api/v1/custom-reports/data
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"groups": ["time_day"],
"metrics": ["finance_moneyOut", "conversion_conversions", "conversion_holds"],
"filters": {
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"timezone": 0,
"filters": [
{"id": "advertiser_campaign", "type": "list", "include": [789484]},
{"id": "conversion_conversions", "type": "range", "range": {"from": "100", "to": null}}
]
},
"sort": {"time_day": "desc"},
"compare": null
}Примечание: отчёт возвращает только агрегированные данные. Максимальная гранулярность — по часу (time_hour). Сырые посещения/просмотры по remoteUserId — только через POST /stats/conversions (для конверсий).
Справочник значений фильтра
Для получения допустимых значений для конкретного фильтра используется метод POST /custom-reports/filter-data
Параметры | Значение | Дополнительные атрибуты |
id | Идентификатор фильтра (из OPTIONS /api/v1/custom-reports) | строка; обязательный параметр |
searchQuery | Строка поиска | строка; опциональный |
Список всех группировок, метрик и фильтров
Для получения полного списка доступных группировок, метрик и фильтров используется OPTIONS /custom-reports.
Статистика
Статистика по конверсиям (сырые события)
Для получения сырых данных по конверсиям (одна строка = одна конверсия) используется метод POST /stats/conversions.
Это единственный метод, возвращающий событийные данные с remoteUserId. ⚠ Эндпоинт называется /stats/conversions, НЕ /stats/postback — не путать.
Параметры | Значение | Дополнительные атрибуты |
page | Номер страницы | int; опциональный |
perPage | Количество элементов на странице (до 1 000 000 для bulk-экспорта) | int; опциональный |
sort | Сортировка. Допустимые поля: conversionType, campaign, campaignFolder, adId, conversionTime, auctionTime, conversionDelay, remoteUserId, audience, cpaCost, macrosId | объект; опциональный |
filters.dateFrom / dateTo | Период (до 5 лет), формат YYYY-MM-DD | строка; обязательные |
filters.timezone | Часовой пояс | int; опциональный |
filters.conversionTypes | Массив типов конверсий: 1 — Approve (postback OK), 2 — Postback error, 3 — Test, 4 — Reject, 5 — Hold, 6 — PV (post-view), 7 — PC (post-click) | массив int; опциональный |
filters.campaignIds | Массив ID кампаний | массив int; опциональный |
filters.adsIds | Массив ID материалов | массив int; опциональный |
filters.folderIds | Массив ID папок | массив int; опциональный |
filters.audIds | Массив ID аудиторий | массив int; опциональный |
Пример запроса:
POST https://partners.kadam.net/api/v1/stats/conversions
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"page": 1,
"perPage": 100,
"sort": {"conversionTime": "desc"},
"filters": {
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"timezone": 0,
"conversionTypes": [1, 6, 7],
"campaignIds": [789484]
}
}Поля ответа по строке конверсии:
conversionType, campaign (name + ID), campaignFolder, adId, conversionTime, auctionTime, conversionDelay, remoteUserId, audience, cpaCost, macrosId, clickId, url, status, callbackUri.
Статистика по площадкам
Для получения агрегированной статистики по площадкам (macrosID, PID) используется метод POST /stats/sites.
Параметры | Значение | Дополнительные атрибуты |
page | Номер страницы | int; опциональный |
perPage | Количество элементов на странице (максимум 500 за запрос) | int; опциональный |
filters.sort | Сортировка. Допустимые поля: macrosId, isInBlackList, views, clicks, holds, conversions, rejects, CTR, CPM, CPC, spending, income, earnings, ROI, CPA, bid | объект; опциональный |
filters.searchQuery | Поиск по ID площадки | строка; опциональный |
filters.dateFrom / dateTo | Период, формат YYYY-MM-DD | строка; обязательные |
filters.timezone | Часовой пояс | int; опциональный |
filters.campaignIds | Массив ID кампаний | массив int; опциональный |
filters.adIds | Массив ID материалов | массив int; опциональный |
filters.view | Представление: null — все, "blacklist" — только ЧС, "bids" — только с индивидуальными ставками | строка; опциональный |
Пример запроса:
POST https://partners.kadam.net/api/v1/stats/sites
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"page": 1,
"perPage": 50,
"filters": {
"sort": {"views": "desc"},
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"timezone": 0,
"campaignIds": [789484],
"view": null
}
}Массовое обновление ставок по площадкам
Для массового изменения ставок по площадкам используется метод PUT /stats/sites/bids
Параметры | Значение | Дополнительные атрибуты |
campaignIds | Массив ID кампаний | массив int; обязательный |
bids | Массив объектов со ставками по площадкам: [{"placementId": 123, "bid": 0.05}, ...] (детали схемы — в Swagger) | массив; обязательный |
Блокировка и разблокировка площадок
Метод POST /stats/sites/block прекращает закупку указанных площадок в указанных кампаниях (добавляет их в чёрный список кампании). Метод POST /stats/sites/unblock убирает их из чёрного списка. Блокировка действует на уровне кампании: площадка, заблокированная в одной кампании, продолжает работать в других. Повторные вызовы безопасны.
campaignIds — массив ID кампаний; обязательный параметр
zones — массив ID площадок (macrosId из POST /stats/sites), до 500 за запрос; количество пар «кампания × площадка» не должно превышать 2000; обязательный параметр
Пример запроса:
POST https://partners.kadam.net/api/v1/stats/sites/block
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"campaignIds": [789484], "zones": [123, 456]}
Финансы
Список финансовых операций
Для получения списка финансовых операций используется метод POST /finances/operations
Параметры | Значение | Дополнительные атрибуты |
page | Номер страницы | int; опциональный |
perPage | Количество элементов на странице | int; опциональный |
sort | Сортировка. Допустимые поля: date, money | объект; опциональный |
filters.dateFrom / dateTo | Период, формат YYYY-MM-DD | строка; обязательные |
filters.type | Тип операции: 1 — Impression operations (списание за показы), 2 — Deposit (пополнение), 3 — Admin deposit, 4 — Withdrawal, 5 — Admin withdrawal | int; опциональный |
Пример запроса:
POST https://partners.kadam.net/api/v1/finances/operations
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{
"page": 1,
"perPage": 20,
"sort": {"date": "desc"},
"filters": {
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"type": 2
}
}Дневной лимит аккаунта
Метод GET /finances/day-money-limit возвращает дневной лимит расходов аккаунта, его минимально допустимое значение и валюту. Метод PUT /finances/day-money-limit устанавливает лимит: limit — лимит в валюте аккаунта, число; обязательный параметр. Значение 0 снимает лимит. При повышении или снятии лимита остановленные им кампании снова активируются.
Пример запроса:
PUT https://partners.kadam.net/api/v1/finances/day-money-limit
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"limit": 100}
Платёжные системы
Метод GET /finances/payment-systems возвращает платёжные системы, доступные для пополнения этого аккаунта, с комиссией, минимальной и максимальной суммой для каждой валюты. До первого пополнения возвращается минимальная сумма первого депозита. Список зависит от аккаунта, поэтому разные рекламодатели могут получать разные ответы.
Пример запроса:
GET https://partners.kadam.net/api/v1/finances/payment-systems
Authorization: Bearer YOUR_TOKEN
Общие правила
Сортировка
Сортировка задаётся объектом {"поле": "asc"|"desc"}. Допустимые поля указаны в описании каждого метода. Пример:
"sort": {"views": "desc"}По нескольким полям:
"sort": {"views": "desc", "clicks": "asc"}Фильтрация (конструктор отчётов)
В POST /custom-reports/data фильтры описываются массивом объектов в filters.filters:
list — фильтр по списку:
{"id": "advertiser_campaign", "type": "list", "include": [id1, id2], "exclude": []}range — диапазон значений:
{"id": "conversion_conversions", "type": "range", "range": {"from": "100", "to": null}}value — точное значение
value_like — подстрока
value_combined — комбинированный
Ошибки
При ошибке ответ содержит "success": false и описание в msg:
{ "success": false, "code": 400, "msg": { "field": ["Error description"] } }
