Доступ
Ключ Performance API (Client ID и Client Secret) создается отдельно от ключа Seller API. По нему запрашивается токен POST /api/client/token (OAuth2 client_credentials), токен действует около 30 минут. Остальные запросы идут с заголовком Authorization: Bearer <токен>.
Какой метод что дает
| Метод | Что возвращает | Особенности |
|---|---|---|
GET /api/client/campaign | список кампаний | поле PaymentType с заглавной буквы, placement - массив |
POST /api/client/statistics | асинхронный отчет по товарам кампаний | до 10 кампаний в запросе, в ответе UUID отчета |
GET /api/client/statistics/daily/json | показы, клики, расход, заказы по кампаниям и дням | синхронно, есть кампании с оплатой за заказ |
GET /api/client/statistics/expense/json | расход по кампаниям и дням | синхронно, совпадает со списаниями в начислениях |
Синхронные методы принимают dateFrom и dateTo в формате Y-m-d, период не длиннее 62 дней (иначе ответ max statistics period: 62 days). Числа приходят строками с запятой в дробной части, например "463,35".
Асинхронный отчет по товарам
- Запрос
POST /api/client/statisticsс телом{"campaigns": [...], "from": "...", "to": "...", "groupBy": "DATE"}. Поляfromиto- время в формате RFC 3339, а не дата: на"2026-09-28"Ozon отвечаетinvalid google.protobuf.Timestamp value. - Опрос статуса
GET /api/client/statistics/{UUID}до готовности. - Загрузка
GET /api/client/statistics/report?UUID=.... Для одной кампании приходит CSV, для нескольких - ZIP-архив с CSV на каждую кампанию, имя файла начинается с ID кампании.
- Сутки в отчете московские. Если передать
toкак 23:59:59 UTC, первые 3 часа следующего дня придут отдельной неполной строкой. Границы суток:from- предыдущий день T21:00:00Z,to- последний день T20:59:59Z. - Отчеты одного рекламного кабинета Ozon готовит по одному. Пока готовится предыдущий, новый запрос получает 429. В кабинете с 60 кампаниями отчет на 10 кампаний готовился около 190 секунд.
- Не бросайте недождавшийся отчет: он продолжает занимать очередь кабинета, и следующие запросы упираются в него. Ждите готовности до 10 минут, на 429 повторяйте запрос с паузой.
- В отчете товарных кампаний строки только по товарам (sku), итоговой строки кампании за день нет: итог - сумма строк товаров.
- По кампаниям с оплатой за заказ этот отчет не строится. Их показы и расход есть в синхронных методах
daily/jsonиexpense/json.
Как сверить расход с начислениями
Ozon списывает рекламу начислениями без привязки к товару (категория NON_ITEM в /v1/finance/accrual/by-day). Сумма moneySpent из expense/json за день совпала с ними до копейки (проверено 01.10.2026).
| Тип начисления (type_id) | Что это |
|---|---|
| 41 | Оплата за клик |
| 54 | Продвижение товара, в том числе оплата за заказ |
| 75 | Трафареты |
| 19 | Внешнее продвижение |
| 33 | Рекламные услуги |
У начислений типа 54 за кампании с оплатой за заказ в поле номера отправления стоит ID кампании, по нему расход привязывается к кампании.