Эта инструкция для рекламодателей, чьи скрипты и интеграции вызывают старый API на api.kadam.net (параметры app_id и secret_key, подпись запросов, методы вида ads.campaigns.get). Здесь описано, как перенести интеграцию на новый API, чем заменить каждый старый метод и что в новом API не поддерживается.
Описание нового API: API Рекламодателей и Swagger.
Важно: 16 ноября 2026 года старый API будет отключён. После этой даты запросы к api.kadam.net перестанут работать.
Алгоритм переезда
API полностью переработано, обратной совместимости нет. Каждый вызов нужно перенести на новый API. В следующих разделах таблица с базовыми отличиями, а спецификация каждого метода (параметры, тела запросов, ответы) есть в документации нового API.
Составьте список вызовов. Найдите в своём коде все обращения к
api.kadam.netи выпишите методы (ads.campaigns.get,ads.materials.putи так далее).Найдите каждый метод в таблицах ниже. У каждого метода один из трёх статусов:
• Прямая замена — для той же задачи есть эндпоинт нового API.
• Альтернатива — той же операции нет, но цель достижима другим способом через API.
• Не поддерживается в новом API — через новый API цель достичь нельзя.
Получите токен. Откройте кабинет рекламодателя, раздел «Профиль и настройки», скопируйте токен. Храните его как пароль. Сбросить токен можно методом
POST /api/users/token-reset.Замените авторизацию. Удалите вызов
auth.token, расчётsignatureи параметрыapp_id,client_id. Добавьте в каждый запрос заголовокAuthorization: Bearer <токен>.Замените адреса и форматы методов. Переведите вызовы по таблицам.
Замените идентификаторы из справочников. Типы кампаний, статусы, страны, регионы, браузеры берите из справочников нового API (
GET /dictionaries/{type},GET /campaigns/options). Не переносите числовые константы из старого кода.Переделайте разбор ответа. Данные теперь лежат в
data, а признак ошибки —success: falseи текст вmsg.Сверьте результат с кабинетом. Сравните данные, которые вернул новый API, с кабинетом: списки кампаний и материалов, статистику, баланс.
Запустите интеграцию. Уберите из кода остатки вызовов старого API и включите задачи, которые вы останавливали.
Пример авторизации.
Было:
GET https://api.kadam.net/auth.token?app_id=12345&secret_key=SECRET
GET https://api.kadam.net/ads.campaigns.get?app_id=12345&client_id=12345&limit=50&offset=0&signature=<md5 подписи>
Стало:
POST https://partners.kadam.net/api/v1/campaigns
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
{"page": 1, "perPage": 50, "sort": {"dateCreation": "desc"}}
Базовые отличия нового API от старого
| Старый API | Новый API |
Адрес |
|
|
Ключи |
| Один Bearer-токен |
Получение токена | Запрос | Токен берётся в кабинете, раздел «Профиль и настройки», срок действия не ограничен |
Авторизация запроса | Параметр | Заголовок |
Формат вызова | Метод в имени ресурса ( | REST: путь и HTTP-метод ( |
Клиент |
| Не нужен: токен привязан к вашему аккаунту |
Успешный ответ |
|
|
Ошибка |
|
|
Пагинация |
|
|
Сортировка | Строка в параметре | Объект |
Даты и часовой пояс |
|
|
Соответствие методов
В колонке «Новый API» указаны путь и HTTP-метод. Параметры и схемы тел запросов смотрите в Swagger.
Аккаунт и финансы
Старый метод | Статус | Новый API | Замечания |
| Прямая замена |
|
|
| Прямая замена |
| Список зависит от вашего аккаунта: валюты, комиссии и минимальные суммы уже посчитаны для вас. |
| Альтернатива |
| Отдельных справочников нет. Тип операции задаётся в |
Кампании
Старый метод | Статус | Новый API | Замечания |
| Прямая замена |
| Фильтры в |
| Прямая замена |
| Ответ в том же формате, который принимает |
| Прямая замена |
| Тело зависит от типа кампании: Native, Banner, Push, Popunder, In-Page Push. Заранее проверить тело без создания можно методом |
| Прямая замена |
| Частичного обновления нет: пропущенное поле сбрасывается в значение по умолчанию. Получите кампанию через |
| Прямая замена |
| Старый метод переносил кампанию в архив. В новом API архивирование делает |
| Прямая замена |
| Статус каждой кампании приходит в списке. Для одной кампании используйте |
| Альтернатива |
| Это пауза и запуск, а не техническая блокировка со старым статусом. |
| Прямая замена |
| Чёрный список: |
| Не поддерживается в новом API | — | URL постбэка берётся из документации или из интерфейса редактирования кампании. |
| Альтернатива |
| В старом API эти методы уже отключены. Статистика по площадкам: |
| Альтернатива |
| Ставка для площадок: число, |
| Прямая замена |
|
|
| Прямая замена |
| Типы: 10 Native, 20 Banner, 30 Push, 40 Popunder, 100 In-Page Push. |
| Прямая замена |
|
|
| Не поддерживается в новом API | — | В новом API нет ни тегов, ни цены за тег. |
Ставки кампании меняются отдельными методами: PUT /campaigns/{id}/bid для одной кампании и PUT /campaigns/bids для нескольких.
Материалы
Старый метод | Статус | Новый API | Замечания |
| Прямая замена |
| Фильтры: |
| Прямая замена |
|
|
| Прямая замена |
| Файл изображения передаётся прямо в запросе ( |
| Прямая замена |
|
|
| Прямая замена |
| Сначала материал нужно отправить в архив, потом его можно удалить. |
| Прямая замена |
|
|
| Альтернатива |
| Отдельной загрузки файла нет: файл идёт в запросе на создание материала. Для пачки изображений есть двухшаговая массовая загрузка: |
| Не поддерживается в новом API | — |
|
Для массовых действий над материалами есть методы POST /materials/activate, /materials/pause, /materials/archive, /materials/restore, /materials/copy, /materials/move. Они принимают список в поле adsIds.
Аудитории
Старый метод | Статус | Новый API | Замечания |
| Прямая замена |
|
|
| Прямая замена |
| Типы аудиторий: |
| Прямая замена |
|
|
| Прямая замена |
|
|
Статистика
Старый метод | Статус | Новый API | Замечания |
| Прямая замена |
| Группировки и метрики выбираются в теле запроса. Список доступных группировок и метрик возвращает запрос |
| Прямая замена |
| То же. |
| Прямая замена |
|
|
| Альтернатива |
|
|
| Альтернатива |
| В старом API эти методы уже отключены. |
| Альтернатива |
| Сырых кликов нет. Агрегированные клики есть в отчётах, сырые конверсии отдаёт |
Справочники
Старый метод | Статус | Новый API | Замечания |
| Прямая замена |
|
|
| Прямая замена |
|
|
| Прямая замена |
|
|
| Прямая замена |
|
|
| Прямая замена |
| Страна передаётся параметром |
| Прямая замена |
|
|
| Прямая замена |
|
|
| Прямая замена |
|
|
| Альтернатива |
| Старый метод возвращал список режимов CPA. В новом API режим не выбирается отдельно: статусы постбэка задаются полями |
Все справочники GET /dictionaries/{type} принимают параметры search, page и perPage (до 500).
Не поддерживается в новом API
Для первого метода ниже есть другой способ получить ту же информацию. Остальные относятся к функциональности, которой в Kadam уже давно нет, — переносить их не нужно.
ads.campaigns.cpa.mode.get: URL постбэка берётся из документации или из интерфейса редактирования кампании. Если нужно что-то ещё, напишите своему менеджеру или в поддержку.ads.campaigns.tags.get,ads.tags.get— теги кампаний и материалов с ценой за тег, в Kadam этого давно нет.ads.materials.partners.get— в Kadam этого давно нет.ads.offers.*иads.offers.landings.*— офферы и лендинги как отдельные сущности, в Kadam этого давно нет. Ссылка перехода задаётся в самой кампании или материале.server.time.get,about.methods.get,about.version.get— служебные методы, не связанные с бизнес-функциональностью.ads.clients.*— управление балансом и клиентами агентских аккаунтов, в Kadam этого давно нет.
Что учесть при переносе
Обновление кампании только целиком.
PUT /campaigns/{id}/updateзаменяет кампанию полностью. Пропущенное поле вернётся к значению по умолчанию, например пропущенныйdayMoneyLimitснимет дневной лимит. Всегда сначала получайте кампанию черезGET /campaigns/{id}.Справочники вместо констант. Идентификаторы статусов, типов и стран берите из справочников нового API.
Часовой пояс. Параметр
timezoneв новом API целое число от -12 до 12, а не строка+00:00.Названия полей. Массовые методы принимают списки в полях
campaignIdsиadsIds, а не вids.Пустой результат. Старый API отвечал HTTP 204. В новом API для списков ожидайте
success: trueи пустой набор строк вdata, а не отдельный код ответа.Файлы материалов отправляются в самом запросе создания или изменения материала.
Ошибки
Старый код | Смысл | Ближайший случай в новом API |
0 | Неизвестная ошибка |
|
1 | Метод не найден | Не применимо: используйте пути из этой инструкции. Если объект (кампания, материал) не найден, API отвечает HTTP 404 |
2, 7, 9 | Не указаны параметры, неверные данные, устаревшие макросы | HTTP 422, поля с ошибками перечислены в |
3, 8 | Клиент или ключ не найден, неверный токен | HTTP 401 |
4, 5 | Токен истёк, неверная подпись | Не применимо: токен бессрочный, подписи нет |
6 | Доступ запрещён | HTTP 403 |
10 | Слишком много запросов | HTTP 429 |
Соответствие приблизительное: ориентируйтесь на success и msg. Новый API при ошибке возвращает {"success": false, "code": 400, "msg": {"поле": ["описание ошибки"]}}.
Что нового вам даёт новый API
Автоправила для управления ставками в CPC-кампаниях (
/autorules,/campaigns/{campaignId}/autorules).Прогноз трафика по ставке до запуска кампании или повышения ставки (
POST /campaigns/forecast).Проверка кампании или аудитории без создания (
POST /campaigns/validate,POST /audiences/validate).Оптимизация ставок по срезам статистики (
/stats/extended).Массовые ставки и блокировка площадок, ставки материалов по странам (
PUT /stats/sites/bids,POST /stats/sites/block,PUT /materials/bids).Массовая загрузка материалов из изображений и ZIP-архивов (
/materials/bulk/upload,/materials/bulk).Копирование кампаний и материалов, папки кампаний с массовыми действиями (
POST /campaigns/{id}/copy,/materials/copy,/campaigns/folders).Дневной лимит расходов аккаунта, Easy Start, импорт креативов из RSS, конструктор отчётов (
/finances/day-money-limit,PUT /campaigns/{id}/easy-start,PUT /campaigns/{id}/rss,/custom-reports).
