Выберите раздел в навигации слева, чтобы просмотреть конкретный раздел документа.
Общая информация по API#
Что такое ОРД и зачем нужен этот API
ОРД (оператор рекламных данных) - организация, через которую участники рынка интернет-рекламы передают сведения о рекламе в ЕРИР (Единый реестр интернет-рекламы Роскомнадзора). Обязанность передавать такие сведения установлена ст. 18.1 Федерального закона "О рекламе" (№ 38-ФЗ).
Через API ОРД от SberAds вы:
- регистрируете контрагентов (рекламодателей, агентств, ОРС, рекламораспространителей) и их площадки;
- регистрируете договоры между контрагентами;
- получаете маркер (erid) для каждого рекламного креатива - без него креатив нельзя размещать;
- отчитываетесь актами и статистикой.
Каждый объект проходит два этапа: сначала он регистрируется в ОРД, затем ОРД передаёт его в ЕРИР. Текущее положение объекта видно в поле state (см. Статусная модель).
API Endpoints
| Стенд | Endpoint | Описание | Аутентификация |
|---|---|---|---|
| Sandbox | https://sandbox.ord-lab.ru/api/v5.0 | Тестирование интеграции. Вы можете использовать тестовые данные, которые не передаются в ЕРИР и не тарифицируются. | Bearer (JWT) |
| Prod | https://api.ord-lab.ru/api/v5.0 | Используйте только те данные, которые необходимо передать в ЕРИР. Помните, что вы несёте ответственность за передачу недостоверных сведений. При создании тарифицируемых событий будет начисляться плата за период. | Bearer (JWT) |
Актуальная машиночитаемая спецификация: https://api.ord-lab.ru/swagger-api-v5.0/index.html.
Версия v5.0 работает с новым API ЕРИР (v8). Версии
/api/v4.../api/v4.9продолжают работать со старым API ЕРИР (v7) и будут выведены из эксплуатации с 1 октября 2026г. Всем интеграциям рекомендуется перейти на v5.0 - перечень отличий приведён в разделе Миграция с v4 на v5.
Протокол
Для реализации API используется протокол HTTP REST. Типы данных определяются в соответствии со спецификацией OpenAPI: спецификация публикуется в двух форматах - Swagger 2.0 и OpenAPI 3.0. Тело запроса и ответа - application/json в кодировке UTF-8 (исключение - пакетная загрузка файлов, см. раздел Пакетная загрузка).
Используются следующие методы HTTP:
| Метод | Описание |
|---|---|
GET | Получение данных по существующему объекту. Получение данных по статусу существующего объекта. |
POST | Создание нового объекта. Поиск по фильтру (/search). |
PUT | Обновление информации по существующему объекту. |
HEAD | Эквивалентен запросу GET, но без передачи самих данных. Может быть использован для запроса статуса объекта - статус приходит в заголовках ответа. |
DELETE | Удаление объекта. Доступно только для статистики креативов и связок акта с креативом. |
Запросы PUT и POST могут выполняться частично асинхронно (то есть уже после возврата управления из запроса). При этом:
- регистрация объекта в ОРД выполняется всегда синхронно;
- загрузка медиафайлов в хранилище ОРД может выполняться синхронно или асинхронно;
- регистрация сущности в ЕРИР происходит после загрузки медиафайлов и также может выполняться синхронно или асинхронно.
Поэтому ответ 202 Accepted - нормальный результат: объект принят ОРД, но подтверждение от ЕРИР ещё не получено. Итоговый статус нужно опрашивать методом GET /{сущность}/{id}/status или HEAD. Подробнее о статусной модели сущностей в разделе Статусная модель сущностей.
Коды ответов HTTP
| Код ответа | Описание |
|---|---|
200 OK | Возвращается в ответ на успешные запросы GET и полностью выполненные (включая регистрацию в ЕРИР) запросы PUT |
201 Created | Возвращается в ответ на выполненные запросы POST и PUT |
202 Accepted | Возвращается в ответ на выполненные запросы POST и PUT, если ответ от ЕРИР не получен |
204 No Content | Успешный запрос без тела ответа (POST /self-organization, POST /contracts/check_cid) |
400 Bad Request | Ошибка в JSON либо в параметрах запроса, в том числе непройденный формато-логический контроль |
401 Unauthorized | Ошибка аутентификации: токен отсутствует, истёк или отозван |
403 Forbidden | Отказано в доступе к объекту, например, объект принадлежит другому клиенту. Данная ошибка может также возвращаться, если зависимый объект (например, контрагент по договору при создании последнего) не найден или не принадлежит запрашивающей стороне |
404 Not Found | Запрашиваемый объект не найден |
409 Conflict | Объект с такими данными уже существует |
413 Payload Too Large | Размер запроса превышает допустимый |
429 Too Many Requests | Превышен лимит частоты запросов - необходимо повторить запрос позже |
500 Internal Server Error | Внутренняя ошибка сервиса. Просьба обратиться в техподдержку сервиса |
501 Not Implemented | Метод не реализован. Просьба обратиться в техподдержку сервиса |
503 Service Unavailable | Данный статусный код может возвращаться при временной недоступности сервиса, например, при технологических работах |
Аутентификация
Поддерживается единственный метод аутентификации - Bearer (JWT). Токен передаётся в заголовке каждого запроса:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...В случае ошибки аутентификации возвращается ответ с кодом 401 Unauthorized.
Полный запрос целиком:
curl -X POST 'https://api.ord-lab.ru/api/v5.0/organizations' \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...' \
-H 'Content-Type: application/json' \
-d '{
"type": "ul",
"isOrs": false,
"isRr": false,
"inn": "7705008280",
"kpp": "770501001",
"name": "ООО \"Ромашка\"",
"address": "г. Москва, ул. Примерная, д. 1, оф. 5"
}'Дальше в руководстве примеры приводятся в сокращённой записи - метод, путь и тело запроса.
Токены выпускаются и отзываются через API - см. раздел Токены. Рекомендации:
- выпускайте отдельный токен на каждую интеграцию, чтобы отозвать её можно было независимо от остальных;
- храните токен как секрет: он даёт полный доступ к данным вашего namespace;
- задавайте
daysToLiveисходя из регламента ротации - максимум 3650 дней (10 лет), минимум 1 день; - при компрометации немедленно вызовите
POST /tokens/revoke/{id}.
Ограничение частоты запросов (rate limiting)
Для защиты API от перегрузки и обеспечения стабильной работы для всех клиентов применяется механизм ограничения частоты запросов (rate limit).
Ограничение реализовано по принципу корзины токенов (token bucket):
- У каждого клиента есть персональная корзина с токенами — она не влияет на корзины других клиентов.
- Каждый запрос расходует один токен из корзины.
- Корзина автоматически пополняется с заданной периодичностью.
- Если токенов в корзине не хватает, API возвращает ошибку
429 Too Many Requests
Ручки с активным Rate Limit
Ограничение частоты запросов включено для следующих эндпоинтов:
Группа 1: Удаление
| Параметр | Значение |
| Размер корзины | 150 токенов |
| Пополнение | 150 токенов в секунду |
Эндпоинты:
| Метод | Эндпоинт | Описание |
POST | /deleting-requests | Создание заявки на удаление |
DELETE | /creative-statistics/{id} | Удаление статистики |
DELETE | /invoices/creatives/{id} | Удаление связки акта и креатива |
Группа 2: Статистика в актах
| Параметр | Значение |
| Размер корзины | 5000 токенов |
| Пополнение | 500 токенов в секунду |
Эндпоинты:
| Метод | Эндпоинт | Описание |
POST | /creative-statistics | Создание статистики |
PUT | /creative-statistics/upsert | Создание или обновление статистики |
POST | /invoices/with-statistic | Создание акта со статистикой |
PUT | /invoices/with-statistic/upsert | Создание или обновление акта со статистикой |
Сокращённый ответ (short)
По умолчанию методы создания и изменения возвращают объект целиком. Если вам нужен только статус, включите сокращённый ответ - это заметно уменьшает объём трафика при массовых загрузках.
Два равнозначных способа:
POST /api/v5.0/creatives?short=truePOST /api/v5.0/creatives
Accept: application/vnd.ord-lab.ru.api.entity.short+jsonОтличие от v4. В версиях v4.x медиатип содержал номер версии:
application/vnd.ord-lab.ru.api.v3.entity.short+json. В v5.0 используется медиатип без номера версии:application/vnd.ord-lab.ru.api.entity.short+json. Параметр?short=trueработает одинаково в обеих версиях.
Расширенный ответ статистики (extended)
Для группы /creative-statistics доступен расширенный формат ответа. Включается параметром ?extended=true либо заголовком:
Accept: application/vnd.ord-lab.ru.api.v2.creative-statistics.extended+jsonЗаголовки ответов (Custom HTTP Response Headers)
Данные заголовки могут присутствовать в ответах каждого из запросов API. Они дублируют поля объекта Status и удобны для метода HEAD, у которого нет тела ответа.
| Заголовок | Тип | Описание |
|---|---|---|
ORD-State | string | Статус объекта в ОРД и в ЕРИР (см. "Статусная модель") |
ORD-ERIR-Registered-At | timestamp | Дата и время последней успешной регистрации объекта в ЕРИР, если таковая имела место |
ORD-ERIR-Error | string | Текст сообщения об ошибке от ЕРИР, полученный при последнем обновлении данных по объекту в ЕРИР. Отсутствует, если последнее обновление было успешным |
ORD-Media-Error | string | Текст ошибки загрузки медиаданных креатива. Отсутствует, если медиаданные загружены успешно или отсутствуют |
ORD-Marker | string | Маркер (erid) креатива. Присутствует только для креативов и контейнеров товарных фидов, зарегистрированных в ЕРИР |
Статусная модель
Значение state | Описание |
|---|---|
PENDING | Объект зарегистрирован в ОРД, но пока не зарегистрирован в ЕРИР (в процессе регистрации). Ориентировочные сроки проверки в ЕРИР: Организации, Договоры – 3 часа; Креативы, Акты – от 3-х до 24 часов. Регистрировать креатив можно не дожидаясь статуса "Утверждено" по Договору. Публиковать креатив на площадке можно сразу после получения маркера erid. |
ACCEPTED | Объект зарегистрирован в ОРД, передан в ЕРИР, проходит отложенные проверки качества данных со стороны ЕРИР |
APPROVED | Объект зарегистрирован в ОРД и в ЕРИР в результате проверки качества данных |
DECLINED | Объект зарегистрирован в ОРД, но отклонён ЕРИР в результате проверки качества данных, так как выявлены ошибки, либо данные не отправлены по техническим причинам |
DELETING | Объект в процессе удаления |
Если объект "завис" в PENDING из-за временной ошибки, ОРД сам поставит его в очередь на повторную отправку с интервалом от одного часа. Не дожидаясь этого, повторную попытку можно запустить вручную методом POST /{сущность}/{id}.
Типовые сценарии жизненного цикла
Жизненный цикл сущности зависит от того, зарегистрированы ли вышестоящие объекты в ЕРИР на момент её создания. Ниже описаны два основных сценария.
Сценарий 1:
Первичная регистрация всех вышестоящих объектов
Этот сценарий возникает, когда вы создаете полную цепочку сущностей "с нуля" — от организации до креатива или акта. Ни один из вышестоящих объектов еще не прошел проверку в ЕРИР.
Пример ситуации:
Вы регистрируете новую организацию, новую площадку, новый контракт и новый креатив.
Все объекты создаются последовательно, но ни один из них еще не проверен в ЕРИР.
Путь статусов
PENDING → ACCEPTED → APPROVED/DECLINED
Сценарий 2:
Создание при наличии ранее утвержденных вышестоящих объектов
Этот сценарий возникает, когда вы создаете сущность в рамках уже существующей и проверенной цепочки объектов. Вышестоящие объекты уже имеют статус APPROVED на момент создания.
Пример ситуации:
У вас уже есть контракт, успешно прошедший проверку в ЕРИР (статус APPROVED).
Вы создаете новый креатив по этому контракту.
Путь статусов
ACCEPTED → APPROVED/DECLINED
Объект Status
Данный объект возвращается в ответ на запросы POST и PUT со статусом 200, 201, 202, а также методом GET /{сущность}/{id}/status. Часть полей объекта дублирует соответствующие заголовки ответов.
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор, под которым объект зарегистрирован в ОРД |
state | string | См. заголовок ORD-State |
erirRegisteredAt | timestamp | См. заголовок ORD-ERIR-Registered-At |
erirError | string | См. заголовок ORD-ERIR-Error |
mediaError | string | См. заголовок ORD-Media-Error |
marker | string | Маркер (erid) креатива. Только для объектов типа Creative и контейнеров товарных фидов, имеющих state = APPROVED или ACCEPTED |
syncError | string | Сообщение об ошибке процесса синхронизации с ЕРИР, возникшей в ходе исполнения данного запроса. Если присутствует, обычно совпадает с erirError |
Пример:
{
"id": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-01T13:20:50.052+03:00",
"marker": "2Ranyn7YfuE"
}Методы, принимающие массив объектов (POST /creative-statistics, POST /invoices/creatives), в сокращённом режиме возвращают массив статусов:
{
"statuses": [
{ "id": "7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1", "state": "ACCEPTED" },
{ "id": "c1a6d4b8-2f37-4e55-9d0a-8b7c6e5f4a31", "state": "PENDING" }
]
}Объект Error
Данный объект возвращается в ответ на запросы, имеющие статусные коды 4xx и, в ряде случаев, 5xx.
| Атрибут | Тип | Описание |
|---|---|---|
requestId | string(uuid); required | Уникальный идентификатор запроса. Указывайте его при обращении в техподдержку |
status | int; required | HTTP-код ответа |
code | string; required | Код ошибки (см. таблицу ниже) |
title | string; required | Краткое описание ошибки. Одинаковое для одного и того же значения code |
detail | string | Детальное описание ошибки. Для ошибок формато-логического контроля. Содержит код контроля и текст нарушения. Указывайте его при обращении в техподдержку |
Пример ответа при непройденном контроле:
{
"requestId": "0e29c0f6-6d5e-4a30-9f5a-2f4d2b2a1f77",
"status": 400,
"code": "parameter-error",
"title": "invalid parameter value",
"detail": "I_185: Не передан обязательный массив \"intermediaryReportIdList\" для актов типа \"Акт на вознаграждение посредника\""
}Коды ошибок
code | HTTP | title |
|---|---|---|
invalid-json | 400 | JSON parsing or content problem |
parameter-error | 400 | invalid parameter value |
precondition-failed | 400 | failed precondition (e.g. referenced entity not found) |
generic | 400 / 500 | Generic or internal error (no further information available) |
unauthorized | 401 | ошибка аутентификации |
access-denied | 403 | доступ к объекту запрещён |
not-found | 404 | requested entity not found |
conflict | 409 | already exist |
too-large | 413 | размер запроса превышает допустимый |
too-many-requests | 429 | too many requests |
unimplemented | 501 | requested function not implemented |
Объект Pagination - постраничный вывод
Данный объект возвращается в составе ответа на списочные запросы (POST /{сущность}/search) в поле meta.
| Атрибут | Тип | Описание |
|---|---|---|
limit | int | Сколько элементов на странице |
page | int | Номер страницы |
total | int | Общее количество элементов |
Все фильтры поиска дополнительно поддерживают поля page, limit, sorting (массив полей сортировки) и cursor (курсорная пагинация - начать выборку с указанного элемента; предпочтительна при обходе больших выборок).
{
"data": [ { "...": "объекты запрошенной сущности" } ],
"meta": { "page": 1, "limit": 100, "total": 3471 }
}Общие принципы работы с идентификаторами
Все системные идентификаторы объектов в ОРД имеют формат UUID v4. Идентификаторы генерируются автоматически при создании сущности методом POST. Задать собственное значение системного идентификатора невозможно. Но есть исключения из правил:
feedId(товарный фид) - Идентификатор контейнера товарного фида генерируется клиентом и передается при создании.externalId(площадки, медиаданные креатива) - Необязательный пользовательский идентификатор. Присваивается площадке или медиаданным креатива для внутренней идентификации объекта в системе клиента. Используется исключительно для удобства самого пользователя и не влияет на логику работы API.
Специальные идентификаторы
CID - используется, когда договор в ОРД не регистрировался в вашем ЛК ОРД, но на него нужно ссылаться. Например, вы получили cid от другого участника цепочки, который зарегистрировал договор в своем ЛК ОРД.
Поля cid и contractId являются взаимоисключающими — при создании или обновлении сущности можно передать только одно из них:
contractId- если договор зарегистрирован в данном ЛК ОРД.cid- если договор был зарегистрирован в ОРД другим участником цепочки.
Данные в примерах
Все примеры в этом руководстве построены на одном наборе вымышленных участников и объектов. Идентификаторы сквозные: договор, на который ссылается акт в разделе "Акты", - тот же самый, что зарегистрирован в разделе "Договоры". Реквизиты, ссылки и наименования вымышлены; совпадения с действующими организациями и сайтами случайны.
| Объект | Идентификатор | Реквизиты |
|---|---|---|
| ООО "Ромашка" - рекламодатель, заказчик | 62ebd730-7549-42b2-aeaf-578ee82bb0fb | ИНН 7705008280, КПП 770501001 |
| ООО "Вектор-Медиа" - рекламораспространитель, исполнитель | 4fb32ac9-0eb0-418c-81b4-a9b2cd53009a | ИНН 7732222893, КПП 773201001 |
| ООО "Альфа Медиа" - агентство, посредник | b51c9ab7-993f-4573-a5e0-20ff7dfd7b37 | ИНН 7719410312, КПП 771901001 |
| Иванов Иван Иванович - физическое лицо | 86c2c281-80ca-491e-bdcd-e391cdb5cbb2 | ИНН 501181421074 |
| Marko Nikolic - иностранное физическое лицо | e7113001-0a56-4d0d-96b9-68186d4ab6ad | ОКСМ 688 |
| Danube Media d.o.o. - иностранное юридическое лицо | f48b0ee6-2e36-44c6-8b42-0dc121a5a36b | ОКСМ 688 |
| Площадка "Вектор Новости" (сайт) | 7358025f-5674-44ea-9ab1-f342a486e939 | https://news.vector.example |
| Договор оказания услуг: заказчик "Ромашка", исполнитель "Вектор-Медиа" | 18abd2e0-7a4b-49cf-a287-f401fe98e192 | № 123/26-02 от 23.05.2026 |
| Посреднический договор: заказчик "Ромашка", посредник "Альфа Медиа" | bd1a457f-8005-47f4-9659-ed4ada3a507f | № 45/26 от 12.01.2026 |
| Креатив - баннер | e524575d-6fc6-48c9-a38c-2de2d0543dab | маркер 2RanynT4kQm |
| Креатив - текстовый блок | bff52b20-a7a3-4cea-a516-2618b5e1e960 | маркер 2Ranyn7YfuE |
Товарный фид (feedId) | 78b1307a-b0ad-4cb6-a0bd-c7ddef242b12 | контейнер 0e91c3fe-9056-4cbb-812c-e2b2e63dacdd |
| Акт выполненных работ за июль 2026 | 7a459159-c38e-4f9a-a726-d209031111cb | № act-2026-07 |
| Отчёт посредника за июль 2026 | b5df28a6-c5da-4474-9e38-166ffb4e3f2c | № IR-2026-07 |
Домены *.example, example.com и подобные зарезервированы стандартом для документации и в сети не резолвятся - в рабочих запросах указывайте собственные адреса.
Порядок вызовов при первом подключении
Полный цикл от пустого аккаунта до сданной отчётности выглядит так. Каждый шаг разобран с примерами в соответствующем разделе.
| Шаг | Вызов | Что получаете |
|---|---|---|
| 1 | Интерфейс Личного кабинета ОРД | Получение токена в Личном кабинете ОРД |
| 2 | POST /organizations | Идентификаторы контрагентов - обеих сторон каждого договора |
| 3 | POST /contracts | Идентификатор договора |
| 4 | POST /creatives | Идентификатор креатива и маркер (erid) - с этого момента можно размещать рекламу |
| 5 | POST /platforms | Идентификаторы площадок (либо сразу вложенно, на шаге 2) |
| 6 | POST /invoices или POST /invoices/with-statistic | Идентификатор акта за отчётный период |
| 7 | POST /creative-statistics + POST /invoices/creatives | Статистика открутки и её связь с актом. Не нужны, если акт подан вместе со статистикой на шаге 7 |
Выдерживать паузы между шагами не нужно: достаточно соблюдать порядок вызовов, а очерёдностью отправки в ЕРИР ОРД управляет сам. Как именно - ниже.
Ожидание зависимостей
Объект, который ссылается на другие сущности, после регистрации в ОРД не уходит в ЕРИР немедленно. Сначала он попадает в очередь ожидания и остаётся в статусе PENDING, пока все объекты, на которые он ссылается, не будут зарегистрированы в ЕРИР. Только после этого ОРД отправляет его дальше.
Поэтому связанные объекты можно отправлять подряд, не дожидаясь APPROVED по каждому предыдущему. Договор допустимо зарегистрировать сразу вслед за контрагентами, акт - вслед за договором.
Кого ждёт каждая сущность:
| Сущность | Ждёт регистрации в ЕРИР |
|---|---|
| Площадка | контрагента, к которому привязана |
| Договор | контрагента-заказчика и контрагента-исполнителя |
| Креатив | договоров из contractId, контрагента из selfPromotionOrganizationId |
| Контейнер товарного фида | того же, что и креатив, плюс элементов фида с тем же feedId |
| Акт | договора акта, договоров разаллокации, договоров из rrOrderContractIdList, отчётов посредника из intermediaryReportIdList |
| Статистика | креатива, площадки, договоров и акта, если он указан |
| Связка акта и креатива | акта, договора и всех перечисленных креативов |
Что из этого следует на практике:
- Порядок вызовов всё равно важен. Ожидание снимает требование ждать
APPROVED, но не отменяет того, что ссылаться можно только на уже созданный в ОРД объект: его идентификатор нужно откуда-то взять. - Ожидание не бесконечно. Попытки повторяются с интервалом порядка трёх часов и в какой-то момент прекращаются. Если объект надолго завис в
PENDING, ищите причину среди тех, кого он ждёт. - При отклонении сущности в ЕРИР (статус
DECLINED) отказ распространяется по цепочке зависимостей вниз. Все нижестоящие сущности, которые ожидали подтверждения отклоненной сущности, также автоматически переводятся в статусDECLINED. Если ЕРИР отклоняет контракт, все креативы и акты, привязанные к нему, также получают статусDECLINED.
Разбираться нужно с первопричиной, а не с последним объектом в цепочке. После внесения изменений в объект, отклоненный ЕРИР необходимо все последующие объекты переотправить через запрос POST /{сущность}/id с тем же содержимым.
- Статус удобнее запрашивать методом
HEAD- он отдаётORD-Stateв заголовках и не тратит трафик на тело ответа.
Токены#
Доступ к API осуществляется по JWT-токену. Токены выпускаются и отзываются через API, причём сами эти методы тоже требуют авторизации: чтобы выпустить новый токен, нужен действующий. Самый первый токен выдаётся при подключении к сервису - через личный кабинет.
Практическое следствие: держите один долгоживущий токен для управления токенами и выпускайте им рабочие токены с коротким сроком жизни.
POST /tokens/issue - Создать токен
Тело запроса - TokenRequest
| Атрибут | Тип | Описание |
|---|---|---|
daysToLive | integer | Срок жизни токена в днях. Минимум 1, максимум 3650. Если не указан, применяется значение по умолчанию сервиса |
Ответ - TokenResponse
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор токена. Нужен для последующего отзыва |
token | string | Сам JWT-токен. Возвращается только один раз - сохраните его сразу |
expiresAt | string(timestamp) | Дата и время истечения срока действия |
error | string | Текст ошибки, если выпуск не удался |
POST /api/v5.0/tokens/issue
{ "daysToLive": 365 }201 Created
{
"id": "36138e99-9c10-406c-a7a1-f15a098c269f",
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresAt": "2027-08-07T00:00:00+03:00"
}Отличие от v4. В v4.x успешный выпуск токена возвращался с кодом
200 OK. В v5.0 возвращается201 Created. Если ваш код проверяетstatus === 200, его нужно поправить.
При ошибке (400, 401) возвращается тот же объект TokenResponse, но заполнено только поле error.
POST /tokens/revoke/{id} - Отозвать токен
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор токена, полученный при выпуске |
Тела у запроса нет - идентификатор передаётся в пути.
POST /api/v5.0/tokens/revoke/36138e99-9c10-406c-a7a1-f15a098c269f
200 OK
{ "id": "36138e99-9c10-406c-a7a1-f15a098c269f" }Отзыв действует немедленно: все последующие запросы с этим токеном получат 401 Unauthorized.
Контрагенты#
Субъекты рекламного рынка: рекламодатели (РД), агентства, операторы рекламных систем (ОРС), рекламораспространители (РР), посредники. Российские и иностранные юридические и физические лица.
Контрагент - базовая сущность: без него нельзя зарегистрировать ни договор, ни площадку. Регистрировать нужно обе стороны каждого договора.
Organization object - Контрагент
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор контрагента, выданный ОРД |
type | string; required | Тип контрагента (см. значения ниже) |
isOrs | boolean; required | Является ОРС - оператором рекламной системы |
isRr | boolean; required | Является РР - рекламораспространителем |
inn | string | ИНН. До 12 символов. Обязательно для типов fl, ip, ul; от остальных типов не принимается |
kpp | string | КПП, ровно 9 цифр. Можно передавать только для российских юридических лиц (ul) |
name | string | ОПФ и полное наименование контрагента. До 255 символов. Обязательно для типов fl, ffl, ful; для ip и ul не требуется - наименование подтягивается из государственных реестров по ИНН |
address | string | Адрес регистрации / места жительства (пребывания) организации. До 500 символов. Формально необязательное, но регистрация акта, если исполнителем или заказчиком выбрано физ.лицо или ИП РФ, у которого не заполнено данное поле приведет к ошибке |
mobilePhone | string | Абонентский номер мобильного телефона. Обязательно для иностранных физических лиц, если не заполнен epayNumber |
epayNumber | string | Номер электронного средства платежа. Обязательно для иностранных физических лиц, если не заполнен mobilePhone |
regNumber | string | Регистрационный номер либо его аналог. Обязательно для иностранных юридических лиц, если не заполнен alternativeInn |
alternativeInn | string | Номер налогоплательщика либо его аналог в стране регистрации. Обязательно для иностранных юридических лиц и для иностранных физических лиц с признаком isOrs = true |
oksmNumber | string | Код страны регистрации в соответствии с ОКСМ, ровно 3 цифры. Обязательно для типов ffl и ful |
rsUrl | string | Сведения об ИС и (или) программе для ЭВМ, которые предназначены и используются ОРС для организации распространения в сети "Интернет" рекламы. До 2000 символов. Обязательно, если isOrs = true |
platforms | OrganizationPlatform[] | Сведения о площадках контрагента. Обязательно для контрагентов, являющихся РР и/или ОРС |
Значения type
| Значение | Описание |
|---|---|
ul | Юридическое лицо (РФ) |
ip | Индивидуальный предприниматель (РФ) |
fl | Физическое лицо (РФ) |
ful | Иностранное юридическое лицо |
ffl | Иностранное физическое лицо |
OrganizationPlatform object - Площадка контрагента
| Атрибут | Тип | Описание |
|---|---|---|
platformId | string(uuid) | Идентификатор площадки в ОРД |
externalId | string; required | Пользовательский идентификатор площадки |
isOwned | boolean; required | Площадка принадлежит контрагенту |
type | string; required | Тип площадки |
name | string; required | Название сайта (блога), приложения или иные способы адресации |
url | string | URL площадки или приложения в сторе. Обязательно для типов site и apps |
ExternalId для площадки
Поле externalId необходимо для идентификации площадки пользователем в случае одновременной регистрации нескольких площадок.
Если в рамках одного запроса POST /organizations был направлен объект с множественными вложенными площадками, в ответном объекте порядок площадок может отличаться от порядка, в котором они были переданы в запросе. При необходимости externalId может быть использован для адресации на стороне клиента. Однако следует помнить, что для первичной адресации использовать externalId нельзя: например, при регистрации акта можно указывать только platformId, генерируемый на стороне ОРД.
POST /organizations - Регистрация контрагента в ОРД
Параметры запроса
| Атрибут | Тип | Описание |
|---|---|---|
requestBody | Organization | В теле запроса передаётся объект Organization без id |
short | bool | По умолчанию false - отдавать созданный объект целиком, true - отдавать статус объекта |
Ответ
| HTTP Status | Response Body |
|---|---|
2xx | Объект Organization (short = false) |
2xx | Объект Status (short = true) |
4xx | Объект Error |
Пример запроса: рекламодатель
Рекламодателю площадки не нужны - достаточно реквизитов.
POST /api/v5.0/organizations
{
"type": "ul",
"isOrs": false,
"isRr": false,
"inn": "7705008280",
"kpp": "770501001",
"name": "ООО \"Ромашка\"",
"address": "г. Москва, ул. Примерная, д. 1, оф. 5"
}Пример ответа (short = true)
202 Accepted
{
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"state": "ACCEPTED",
"erirRegisteredAt": "2026-08-01T13:20:50.052+03:00"
}Пример запроса: рекламораспространитель с площадками
Площадки можно завести сразу вместе с контрагентом - отдельные вызовы POST /platforms тогда не нужны.
POST /api/v5.0/organizations
{
"type": "ul",
"isOrs": false,
"isRr": true,
"inn": "7732222893",
"kpp": "773201001",
"name": "ООО \"Вектор-Медиа\"",
"address": "г. Москва, ул. Примерная, д. 14, стр. 2",
"platforms": [
{
"externalId": "vector-news",
"isOwned": true,
"type": "site",
"name": "Вектор Новости",
"url": "https://news.vector.example"
},
{
"externalId": "vector-mobile",
"isOwned": true,
"type": "apps",
"name": "Вектор Мобайл",
"url": "https://store.example/apps/vector-mobile"
}
]
}Пример ответа (short = false)
Возвращается объект целиком: у площадок появились выданные ОРД platformId, по которым на них можно ссылаться в статистике.
201 Created
{
"id": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "ul",
"isOrs": false,
"isRr": true,
"inn": "7732222893",
"kpp": "773201001",
"name": "ООО \"Вектор-Медиа\"",
"address": "г. Москва, ул. Примерная, д. 14, стр. 2",
"mobilePhone": null,
"epayNumber": null,
"regNumber": null,
"alternativeInn": null,
"oksmNumber": null,
"rsUrl": null,
"platforms": [
{
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"externalId": "vector-news",
"isOwned": true,
"type": "site",
"name": "Вектор Новости",
"url": "https://news.vector.example"
},
{
"platformId": "b526db15-0219-4460-b568-d36544eeb6fe",
"externalId": "vector-mobile",
"isOwned": true,
"type": "apps",
"name": "Вектор Мобайл",
"url": "https://store.example/apps/vector-mobile"
}
]
}Пример запроса: физическое лицо
Для физических лиц ИНН двенадцатизначный, наименование - ФИО. Поле address формально необязательно, но без него не пройдут акты, где такое лицо выступает исполнителем (контроль I_227).
POST /api/v5.0/organizations
{
"type": "fl",
"isOrs": false,
"isRr": false,
"inn": "501181421074",
"name": "Иванов Иван Иванович",
"address": "Московская область, г. Примерный, ул. Полевая, д. 7, кв. 12"
}Пример запроса: иностранное физическое лицо
ИНН и КПП не передаются, вместо них - код страны по ОКСМ и как минимум одно из полей mobilePhone / epayNumber.
POST /api/v5.0/organizations
{
"type": "ffl",
"isOrs": false,
"isRr": false,
"name": "Marko Nikolic",
"oksmNumber": "688",
"mobilePhone": "+38111234567",
"epayNumber": "RS-EPAY-004512",
"address": "Beograd, Knez Mihailova 15"
}Пример запроса: иностранное юридическое лицо, оператор рекламной системы
Для isOrs = true обязателен rsUrl - сведения о рекламной системе.
POST /api/v5.0/organizations
{
"type": "ful",
"isOrs": true,
"isRr": false,
"name": "Danube Media d.o.o.",
"oksmNumber": "688",
"regNumber": "RS-21458800",
"alternativeInn": "RS-108245771",
"rsUrl": "https://ads.danube-media.example"
}PUT /organizations/{id} - Обновление информации о контрагенте
Параметры запроса
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор контрагента, полученный в ответе от ОРД при регистрации |
requestBody | Organization | В теле запроса передаётся объект Organization |
short | bool | По умолчанию false - отдавать объект целиком, true - отдавать статус объекта |
Ответ
| HTTP Status | Response Body |
|---|---|
2xx | Объект Organization (short = false) |
2xx | Объект Status (short = true) |
4xx | Объект Error |
Изменение ИНН, типа и ряда реквизитов ограничено, если контрагент уже участвует в договорах с другой стороной с такими же реквизитами (ошибки формато-логического контроля O_77, O_81—O_84).
PUT заменяет объект целиком, а не дополняет его, поэтому в теле передаются все поля - и изменившиеся, и оставшиеся прежними. Так же работают методы обновления остальных сущностей.
PUT /api/v5.0/organizations/62ebd730-7549-42b2-aeaf-578ee82bb0fb
{
"type": "ul",
"isOrs": false,
"isRr": false,
"inn": "7705008280",
"kpp": "770501001",
"name": "ООО \"Ромашка\"",
"address": "г. Москва, Примерный проезд, д. 4, оф. 301"
}200 OK
{
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-14T09:41:02.318+03:00"
}GET /organizations/{id} - Получение информации о контрагенте
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор, под которым контрагент зарегистрирован в ОРД |
Ответ: 200 - объект Organization; 4xx - объект Error.
GET /api/v5.0/organizations/62ebd730-7549-42b2-aeaf-578ee82bb0fb
200 OK
{
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"type": "ul",
"isOrs": false,
"isRr": false,
"inn": "7705008280",
"kpp": "770501001",
"name": "ООО \"Ромашка\"",
"address": "г. Москва, ул. Примерная, д. 1, оф. 5",
"platforms": []
}Статус объекта приходит и здесь - в заголовках ответа:
ORD-State: APPROVED
ORD-ERIR-Registered-At: 2026-08-01T13:22:11.007+03:00HEAD /organizations/{id} - Получение статуса контрагента
Тела ответа нет, статус приходит в заголовках ORD-State, ORD-ERIR-Registered-At, ORD-ERIR-Error. Это самый дешёвый способ опросить статус: тело не передаётся вовсе.
HEAD /api/v5.0/organizations/62ebd730-7549-42b2-aeaf-578ee82bb0fb
Authorization: Bearer <token>
200 OK
ORD-State: APPROVED
ORD-ERIR-Registered-At: 2026-08-01T13:22:11.007+03:00Если ЕРИР отклонил объект, причина будет в ORD-ERIR-Error:
200 OK
ORD-State: DECLINED
ORD-ERIR-Error: O_10: Неверный формат данных для ИННGET /organizations/{id}/status - Статус контрагента
То же самое, но в виде объекта Status.
Ответ: 200 - объект Status; 4xx - объект Error.
GET /api/v5.0/organizations/62ebd730-7549-42b2-aeaf-578ee82bb0fb/status
200 OK
{
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-01T13:22:11.007+03:00"
}POST /organizations/{id} - Возобновление регистрации
Если после первой попытки регистрации (или обновления) сущности в ЕРИР её статус остался в значении PENDING (то есть возникла неперманентная ошибка), она отправляется в очередь для повторной отправки. Интервалы в очереди составляют один час и более.
Ответ: 200 - объект Status; 4xx - объект Error.
Тела у запроса нет:
POST /api/v5.0/organizations/62ebd730-7549-42b2-aeaf-578ee82bb0fb
200 OK
{
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"state": "ACCEPTED"
}Эти четыре метода -
GET,HEAD,GET /status,POST- устроены одинаково у всех сущностей: меняются только путь и тип объекта в ответе. Дальше в руководстве они не расписываются повторно.
POST /organizations/search - Список контрагентов
OrganizationFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Список идентификаторов контрагентов, выданных ОРД |
inn | string | ИНН |
kpp | string | КПП |
alternativeInn | string | Альтернативный ИНН |
regNumber | string | Регистрационный номер |
mobilePhone | string | Абонентский номер мобильного телефона |
epayNumber | string | Номер электронного средства платежа |
name | string | Наименование |
type | string[] | Тип контрагента |
oksmNumber | string[] | Код страны по ОКСМ |
isOrs | boolean | Является ОРС |
isRr | boolean | Является РР |
status | string[] | Статус (см. Статусная модель) |
clientId | string[] | Список идентификаторов клиента |
created | string | Дата создания (YYYY-MM-DD) |
erirRegDate | string | Дата регистрации в ЕРИР (YYYY-MM-DD) |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
OrganizationSearchResponse object
| Атрибут | Тип | Описание |
|---|---|---|
data | OrganizationSearchItem[] | Найденные контрагенты |
meta | Pagination | Постраничный вывод |
OrganizationSearchItem object - агрегат контрагента и статуса
| Атрибут | Тип | Описание |
|---|---|---|
organization | Organization | Объект контрагента |
entity | Status | Статус сущности |
Пример запроса
POST /api/v5.0/organizations/search
{
"type": ["ul"],
"status": ["APPROVED"],
"page": 1,
"limit": 100,
"sorting": ["-created"]
}Пример ответа
200 OK
{
"data": [
{
"organization": {
"id": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "ul",
"isOrs": false,
"isRr": true,
"inn": "7732222893",
"kpp": "773201001",
"name": "ООО \"Вектор-Медиа\"",
"address": "г. Москва, ул. Примерная, д. 14, стр. 2",
"platforms": [
{
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"externalId": "vector-news",
"isOwned": true,
"type": "site",
"name": "Вектор Новости",
"url": "https://news.vector.example"
}
]
},
"entity": {
"id": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"state": "APPROVED",
"erirRegisteredAt": "2026-07-14T11:02:35.401+03:00"
}
},
{
"organization": {
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"type": "ul",
"isOrs": false,
"isRr": false,
"inn": "7705008280",
"kpp": "770501001",
"name": "ООО \"Ромашка\"",
"address": "г. Москва, ул. Примерная, д. 1, оф. 5",
"platforms": []
},
"entity": {
"id": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-01T13:22:11.007+03:00"
}
}
],
"meta": { "page": 1, "limit": 100, "total": 2 }
}GET /self-organization - Поставщик данных
Возвращает объект Organization, соответствующий вашей собственной организации - поставщику данных (тому, от чьего имени вы работаете с ОРД).
GET /api/v5.0/self-organization
200 OK
{
"id": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "ul",
"isOrs": false,
"isRr": true,
"inn": "7732222893",
"kpp": "773201001",
"name": "ООО \"Вектор-Медиа\"",
"address": "г. Москва, ул. Примерная, д. 14, стр. 2"
}Формато-логический контроль
| Атрибут | Формато-логический контроль |
|---|---|
type | Возможные значения: ffl - иностранное физическое лицо; ful - иностранное юридическое лицо; ip - индивидуальный предприниматель; fl - физическое лицо; ul - юридическое лицо |
inn | Максимальная длина: 12. Обязательно для типов ip, fl, ul. Проверяется контрольное число (контроль O_10). Для fl и ip - 12-значный ИНН, для ul - 10-значный |
name | Длина от 1 до 255. Для fl: только русские буквы, допускается не более одного пробела и одного тире между словами, в начале и конце их быть не должно. Для ip / ul: русские буквы, цифры и спецсимволы. Для иностранных типов дополнительно допускаются латинские буквы |
address | Адрес регистрации / места жительства (пребывания). Для fl / ip / ul - русские буквы, цифры, дефис, точка, запятая, пробел, типографский апостроф, скобки, косая черта, римские цифры (контроль O_79). Для ffl / ful дополнительно допускаются латинские буквы (контроль O_80). Пробелы в начале и в конце не допускаются |
mobilePhone | Обязательно для типа ffl, если не заполнен epayNumber. Длина от 1 до 50, формат ^\+[0-9]{1,50}$ - начинается с +, далее только цифры |
epayNumber | Обязательно для типа ffl, если не заполнен mobilePhone. Длина от 1 до 255, шаблон ^[?!*$\-_a-zA-Z0-9]{1,255}$ |
regNumber | Обязательно для типа ful, если не заполнен alternativeInn. Длина от 1 до 255, шаблон ^[?!*$\-_a-zA-Z0-9]{1,255}$ |
alternativeInn | Обязательно для типа ful, а также для ffl при isOrs = true. Если не заполнено - должен быть заполнен regNumber. Длина от 1 до 255 |
oksmNumber | Обязательно для типов ffl и ful. Длина ровно 3 цифры, шаблон ^\d{3}$ |
rsUrl | Обязательно для всех типов при isOrs = true. Длина от 1 до 2000. Проверка URL: протокол http или https; в хосте не должно быть punycode или urlencode (символов %, &, xn-- и т. п.); в пути не должно быть urlencode |
kpp | Длина ровно 9 цифр. Только для российских юридических лиц (ul), не принимается от ip / fl / ful / ffl |
Ограничения на изменение: нельзя изменить ИНН, если в одном из договоров противоположной стороной является контрагент с таким же ИНН (O_77). Аналогичные ограничения - для реквизитов иностранных контрагентов (ошибки формато-логического контроля O_77, O_81—O_84).
Полный справочник кодов для объекта Контрагенты - в разделе Формато-логический контроль.
Площадки#
Площадка - сайт, приложение или информационная система, на которой размещается реклама. Площадки регистрируются либо вложенно, в составе контрагента (Organization.platforms), либо отдельными вызовами группы /platforms.
Platform object
| Атрибут | Тип | Описание |
|---|---|---|
platformId | string(uuid) | Идентификатор площадки в ОРД |
organizationId | string(uuid) | Идентификатор контрагента, к которому относится площадка |
externalId | string; required | Пользовательский идентификатор площадки |
isOwned | boolean; required | Площадка принадлежит контрагенту. Может быть true только если указан organizationId |
type | string; required | Тип площадки |
name | string; required | Название сайта (блога), приложения или иные способы адресации. До 100 символов |
url | string | URL площадки или приложения в сторе. До 2000 символов. Обязательно для типов |
Значения type
| Значение | Описание |
|---|---|
site | Сайт |
apps | Приложение |
smarttv | Smart TV |
hbbtv | HbbTV |
is\* | Информационная система |
\* Значение is нельзя использовать при создании и редактировании, но оно может приходить в ответах для объектов, которые были заведены до введения этого ограничения.
PlatformListResponseItem object - агрегат площадки и статуса
| Атрибут | Тип | Описание |
|---|---|---|
platform | Platform | Объект площадки |
entity | Status | Статус сущности |
POST /platforms - Регистрация площадки
POST /api/v5.0/platforms
{
"externalId": "vector-news",
"isOwned": true,
"name": "Вектор Новости",
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "site",
"url": "https://news.vector.example"
}202 Accepted
{
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"externalId": "vector-news",
"type": "site",
"isOwned": true,
"name": "Вектор Новости",
"url": "https://news.vector.example"
}Для приложения указывается ссылка на карточку в магазине приложений:
POST /api/v5.0/platforms
{
"externalId": "vector-mobile",
"isOwned": true,
"name": "Вектор Мобайл",
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "apps",
"url": "https://store.example/apps/vector-mobile"
}Для Smart TV и HbbTV поле url не требуется:
POST /api/v5.0/platforms
{
"externalId": "vector-tv",
"isOwned": true,
"name": "Вектор ТВ",
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "smarttv"
}PUT /platforms/{id} - Обновление площадки
В теле передаётся объект Platform. Ответ - объект Platform либо Error.
PUT /api/v5.0/platforms/7358025f-5674-44ea-9ab1-f342a486e939
{
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"externalId": "vector-news",
"isOwned": true,
"type": "site",
"name": "Вектор Новости",
"url": "https://news.vector.example/moscow"
}Типичный повод для такого запроса - требование уточнить URL: раздел вместо домена верхнего уровня. Список таких площадок отдаёт GET /platforms/urls_needs_extension.
GET /platforms/{id}, HEAD /platforms/{id}, GET /platforms/{id}/status
Получение площадки, её наличия и статуса - устроено так же, как у контрагентов.
GET /api/v5.0/platforms/7358025f-5674-44ea-9ab1-f342a486e939
HEAD /api/v5.0/platforms/7358025f-5674-44ea-9ab1-f342a486e939
GET /api/v5.0/platforms/7358025f-5674-44ea-9ab1-f342a486e939/statusОтветы: объект Platform, заголовки ORD-* без тела, объект Status.
POST /platforms/search - Список площадок
PlatformFilter object
| Атрибут | Тип | Описание |
|---|---|---|
platformId | string | Идентификатор площадки в ОРД |
organizationId | string | Идентификатор контрагента |
externalId | string | Пользовательский идентификатор |
bool | boolean | Признак принадлежности площадки контрагенту. Имя поля именно bool - в остальных объектах тот же признак называется isOwned |
name | string | Наименование |
url | string | URL |
type | string | Тип площадки |
status | string | Статус |
createDate, endDate, estimateDate | string | Даты |
page, limit, sorting | - | Параметры постраничного вывода |
Ответ: PlatformListResponse - data: PlatformListResponseItem[], meta: Pagination.
POST /api/v5.0/platforms/search
{
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"type": "site",
"page": 1,
"limit": 50
}200 OK
{
"data": [
{
"platform": {
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"organizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"externalId": "vector-news",
"isOwned": true,
"type": "site",
"name": "Вектор Новости",
"url": "https://news.vector.example"
},
"entity": {
"id": "7358025f-5674-44ea-9ab1-f342a486e939",
"state": "APPROVED",
"erirRegisteredAt": "2026-07-14T11:03:12.882+03:00"
}
}
],
"meta": { "page": 1, "limit": 50, "total": 1 }
}GET /platforms/urls_needs_extension - URL, требующие уточнения
Возвращает список URL площадок, которые ЕРИР требует уточнить (например, указан домен верхнего уровня вместо конкретного раздела). По каждому такому URL необходимо обновить площадку методом PUT /platforms/{id}.
GET /api/v5.0/platforms/urls_needs_extension
200 OK
{ "data": ["https://news.vector.example", "https://store.example/apps/vector-mobile"] }Формато-логический контроль
| Атрибут | Формато-логический контроль |
|---|---|
externalId | Только цифры, латинские буквы и символы - и _. Не более 255 знаков, не может быть пустым |
isOwned | Возможные значения: true / false. Значение true допустимо только при заполненном organizationId (контроль P_15) |
type | Допустимые значения: apps, site, smarttv, hbbtv |
name | Длина от 1 до 100. В начале и в конце не должно быть пробела и переноса строки |
url | Обязательно для типов site и apps (контроль P_34). Длина от 1 до 2000. Проверка URL: протокол http или https; в хосте не должно быть punycode или urlencode; в пути не должно быть urlencode |
Полный справочник кодов для объекта Площадки - в разделе Формато-логический контроль.
Договоры#
Договор связывает двух контрагентов и определяет, кто, кому и за что оказывает услуги. К договору привязываются креативы и акты.
Contract object
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор договора / доп. соглашения в ОРД |
type | string; required | Тип договора |
clientId | string(uuid) | Идентификатор контрагента-заказчика в ОРД. Обязателен, если не передан clientInn |
clientInn | string | ИНН заказчика - альтернатива clientId |
contractorId | string(uuid) | Идентификатор контрагента-исполнителя в ОРД. Обязателен, если не передан contractorInn |
contractorInn | string | ИНН исполнителя - альтернатива contractorId |
isRegReport | boolean; required | На исполнителе лежит обязанность регистрировать креативы и подавать отчётность |
actionType | string | Описание осуществляемых посредником-представителем действий |
subjectType | string | Сведения о предмете договора. В спецификации помечено обязательным, фактически не проверяется |
number | string | Номер договора / доп. соглашения. До 255 символов |
date | string(date); required | Дата договора / доп. соглашения, формат YYYY-MM-DD |
endDate | string(date) | Дата окончания действия договора / доп. соглашения |
amount | number | Цена договора. Два знака после запятой |
contractId | string(uuid) | Идентификатор родительского договора, если регистрируется доп. соглашение |
agentActingForPublisher | boolean | Признак направления денежного потока в сторону принципала. Заполняется только для типа intermediary-contract |
isChargePaidByAgent | boolean | Признак того, что вознаграждение удерживает агент. Заполняется только для типа intermediary-contract |
cid | string | Идентификатор изначального договора (ИД) |
name | string | Название договора. От 1 до 255 символов, без пробелов по краям и без управляющих символов. Служебное поле для удобства поиска - в ЕРИР не передаётся |
Обязательные поля.
type,dateиisRegReportпроверяются при каждом запросе: без них вернётся400. ПолеsubjectTypeпомечено обязательным в спецификации, но фактической проверки нет - ни на стороне ОРД, ни в требованиях ЕРИР. Заполняйте его по смыслу договора: оно попадает в отчётность.
Значения type
| Значение | Описание |
|---|---|
contract | Договор оказания услуг |
intermediary-contract | Посреднический договор |
additional-agreement | Дополнительное соглашение |
Значения actionType
| Значение | Описание |
|---|---|
distribution | Действия в целях распространения рекламы |
conclude | Заключение договоров |
commercial | Коммерческое представительство |
other | Иное |
Значения subjectType
| Значение | Описание |
|---|---|
distribution | Договор на распространение рекламы |
org-distribution | Договор на организацию распространения рекламы |
mediation | Посредничество |
representation | Представительство |
other | Иное |
POST /contracts - Регистрация договора
Пример запроса
POST /api/v5.0/contracts
{
"type": "contract",
"name": "Договор на размещение, лето 2026",
"clientId": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"contractorId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"isRegReport": true,
"actionType": "distribution",
"subjectType": "org-distribution",
"number": "123/26-02",
"date": "2026-05-23",
"amount": 1500000.00
}Пример ответа
202 Accepted
{
"id": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"state": "ACCEPTED",
"erirRegisteredAt": "2026-05-23T13:25:50.052+03:00"
}Пример: посреднический договор
Для типа intermediary-contract обязательно указывается agentActingForPublisher - в чью сторону идут деньги. Здесь агентство работает в интересах рекламодателя, поэтому признак false.
POST /api/v5.0/contracts
{
"type": "intermediary-contract",
"name": "Агентский договор с ООО \"Альфа Медиа\"",
"clientId": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"contractorId": "b51c9ab7-993f-4573-a5e0-20ff7dfd7b37",
"isRegReport": true,
"actionType": "conclude",
"subjectType": "mediation",
"agentActingForPublisher": false,
"isChargePaidByAgent": true,
"number": "45/26",
"date": "2026-01-12",
"endDate": "2026-12-31",
"amount": 5000000.00
}Пример: дополнительное соглашение
У доп. соглашения заполняется contractId - идентификатор родительского договора. Стороны должны совпадать со сторонами родительского договора (контроль C_31).
POST /api/v5.0/contracts
{
"type": "additional-agreement",
"name": "ДС №1 к договору 123/26-02",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"clientId": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"contractorId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"isRegReport": true,
"subjectType": "distribution",
"number": "123/26-02-1",
"date": "2026-06-01",
"endDate": "2026-12-31",
"amount": 300000.00
}Пример: договор по ИНН вместо идентификаторов
Если контрагенты уже зарегистрированы, вместо clientId и contractorId можно передать их ИНН. Способы адресации не смешиваются: либо идентификаторы, либо ИНН.
POST /api/v5.0/contracts
{
"type": "contract",
"clientInn": "7705008280",
"contractorInn": "7732222893",
"isRegReport": true,
"subjectType": "distribution",
"number": "124/26-02",
"date": "2026-06-15"
}PUT /contracts/{id} - Обновление договора
В теле передаётся объект Contract. Ответ - объект Contract (short = false) либо Status (short = true).
PUT /api/v5.0/contracts/18abd2e0-7a4b-49cf-a287-f401fe98e192
{
"type": "contract",
"name": "Договор на размещение, лето 2026",
"clientId": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"contractorId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"isRegReport": true,
"actionType": "distribution",
"subjectType": "org-distribution",
"number": "123/26-02",
"date": "2026-05-23",
"endDate": "2027-05-22",
"amount": 1800000.00
}200 OK
{
"id": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-14T10:05:44.912+03:00"
}GET /contracts/{id}, HEAD /contracts/{id}, GET /contracts/{id}/status
Получение договора, проверка наличия, статус и принудительная синхронизация - устроены так же, как у контрагентов.
GET /api/v5.0/contracts/18abd2e0-7a4b-49cf-a287-f401fe98e192
HEAD /api/v5.0/contracts/18abd2e0-7a4b-49cf-a287-f401fe98e192
GET /api/v5.0/contracts/18abd2e0-7a4b-49cf-a287-f401fe98e192/statusОтветы: объект Contract, заголовки ORD-* без тела, объект Status, объект Status.
POST /contracts/search - Список договоров
ContractFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Список идентификаторов договоров |
type | string[] | Тип договора |
actionType | string[] | Описание действий посредника-представителя |
subjectType | string[] | Предмет договора |
number | string | Номер договора |
name | string | Название договора - точное совпадение |
nameContains | string | Поиск названия по подстроке |
date | string | Дата договора |
endDate | string | Дата окончания договора |
amount | number | Цена договора |
contractId | string | Идентификатор родительского договора |
clientId | string[] | Список идентификаторов заказчиков |
contractorId | string[] | Список идентификаторов исполнителей |
isRegReport | boolean | Обязанность регистрировать креативы |
status | string[] | Статус |
created, erirRegDate | string | Дата создания / регистрации в ЕРИР |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
Ответ: ContractSearchResponse - data: Contract[], meta: Pagination.
POST /api/v5.0/contracts/search
{
"clientId": ["62ebd730-7549-42b2-aeaf-578ee82bb0fb"],
"type": ["contract"],
"status": ["APPROVED"],
"page": 1,
"limit": 20,
"sorting": ["-date"]
}200 OK
{
"data": [
{
"id": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"type": "contract",
"name": "Договор на размещение, лето 2026",
"clientId": "62ebd730-7549-42b2-aeaf-578ee82bb0fb",
"contractorId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"isRegReport": true,
"actionType": "distribution",
"subjectType": "org-distribution",
"number": "123/26-02",
"date": "2026-05-23",
"endDate": "2026-12-31",
"amount": 1500000.00,
"cid": null,
"contractId": null
}
],
"meta": { "page": 1, "limit": 20, "total": 1 }
}Поиск по названию удобен, когда номера договоров у вас не уникальны: "nameContains": "лето 2026" вернёт все договоры, в названии которых встречается эта строка.
Идентификатор изначального договора (CID)
cid используется, когда договор в ОРД не регистрировался в вашем ЛК ОРД, но на него нужно ссылаться. Например, вы получили cid от другого участника цепочки, который зарегистрировал договор в своем ЛК ОРД.
POST /contracts/cid - Создать CID
POST /api/v5.0/contracts/cid
{ "contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192" }GET /api/v5.0/contracts/cid/18abd2e0-7a4b-49cf-a287-f401fe98e192
200 OK
{ "cid": "4e5edf88-fdae-418b-9162-12c348fcca96" }GET /contracts/cid/{id} - Получить CID договора
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор, под которым договор зарегистрирован в ОРД |
Ответ: 200 - { "cid": "..." }; 4xx - объект Error.
POST /contracts/check_cid - Проверить наличие CID в ЕРИР
Проверка до регистрации креатива или акта: существует ли переданный вам cid в ЕРИР.
POST /api/v5.0/contracts/check_cid
{ "cid": "4e5edf88-fdae-418b-9162-12c348fcca96" }| HTTP Status | Описание |
|---|---|
204 No Content | CID найден |
404 Not Found | CID не найден |
Формато-логический контроль
| Атрибут | Формато-логический контроль |
|---|---|
type | Допустимые значения: intermediary-contract, contract, additional-agreement, self-promotion. |
clientId | В ЕРИР должен быть зарегистрирован контрагент с таким id от конкретного ОРД. Не должно быть равно contractorId. |
contractorId | В ЕРИР должен быть зарегистрирован контрагент с таким id. Договор не может быть зарегистрирован или обновлён, если идентификатор заказчика или исполнителя отправлен в сервис удаления и находится на согласовании (контроли C_52, C_54). Изменение ограничено правилом "не чаще раза в месяц" (контроль C_89) |
isRegReport | Возможные значения: true / false |
actionType | Возможные значения: other - иное; distribution - действия в целях распространения рекламы; conclude - заключение договоров; commercial - коммерческое представительство |
subjectType | Возможные значения: other - иное; org-distribution - договор на организацию распространения рекламы; mediation - посредничество; distribution - договор на распространение рекламы; representation - представительство |
number | Длина от 1 до 255. В начале и в конце не должно быть пробела и переноса строки (контроль C_21) |
date | Формат ГГГГ-ММ-ДД, шаблон ^\d{4}-(0[1-9]\|1[0-2])-(0[1-9]\|[12][0-9]\|3[01])$. Дата должна быть не ниже 01.01.1991 и меньше либо равна текущей дате |
endDate | Формат ГГГГ-ММ-ДД. Не может быть меньше даты начала договора (контроль C_62) |
amount | Положительные числа или ноль, два знака после запятой, разделитель - точка. Нельзя указывать 0 для договора с типом intermediary-contract, а также для доп. соглашения, родительский договор которого имеет тип intermediary-contract (контроль C_60) |
contractId | Указывается только для типа additional-agreement, в других случаях исключается (контроли C_33, C_64). В ЕРИР должен быть зарегистрирован договор с таким id. Заказчик и исполнитель родительского договора должны совпадать с текущим доп. соглашением (контроль C_31). Проверяется, что в цепочке доп. соглашений существует основной договор (контроль C_58). Договор не может стать доп. соглашением, если на него уже ссылаются другие доп. соглашения (контроль C_59) |
agentActingForPublisher | Если тип договора intermediary-contract - указывается явно, true или false. Для других типов игнорируется, по умолчанию false |
isChargePaidByAgent | Передаётся только для типа intermediary-contract (контроль C_65) и согласуется с agentActingForPublisher и типом контрагента-исполнителя (контроль C_68) |
name | Длина от 1 до 255. Не должно начинаться или заканчиваться пробелами, табуляцией или другими whitespace-символами. Не должно содержать управляющих символов |
Полный справочник кодов для объекта Договоры - в разделе Формато-логический контроль.
Креативы#
Креатив - рекламный материал, который размещается на площадке. Каждый креатив должен быть зарегистрирован в ЕРИР до начала размещения, в ответ ОРД выдаёт маркер (erid) - идентификатор, который показывается пользователю вместе с рекламой.
Динамическая товарная реклама регистрируется по другой модели - см. раздел Товарные фиды.
Маркировка креативов
Перед началом открутки креатив должен быть обязательно зарегистрирован в ЕРИР через ОРД. Маркер (erid) для креатива выдаёт ОРД.
Маркер возвращается в поле marker объектов Creative и Status только для креативов, зарегистрированных в ЕРИР, а также в заголовке ORD-Marker.
При изменении медиаданных креатива (правки в тексте или изображении, добавление эмодзи в пост и т.д.) требуется получение нового маркера через ОРД.
Creative object
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Уникальный идентификатор креатива |
marker | string | Маркер (erid) креатива - для креатива, зарегистрированного в ЕРИР. Длина от 1 до 100 символов |
erirIdType | string; required | Тип маркера. Не может быть изменён PUT-запросом |
contractId | string(uuid)[] | Идентификаторы зарегистрированных в ОРД договоров (или доп. соглашений), в рамках которых производится размещение креатива. Массив - для поддержки кобрендинга. Обязателен, если не заданы cid и selfPromotionOrganizationId |
cid | string[] | Идентификаторы изначальных договоров. Должны быть не заданы, если задан contractId или selfPromotionOrganizationId |
selfPromotionOrganizationId | string(uuid) | Идентификатор контрагента, для которого данный креатив является саморекламой. Должен быть null, если задан contractId |
description | string | Общее описание объекта рекламирования. До 1000 символов. Обязательно, если в ktu передан единственный код 30.15.1 |
name | string | Название креатива. От 1 до 255 символов. Служебное поле для поиска - в ЕРИР не передаётся |
form | string; required | Форма распространения рекламы |
url | string[] | Целевые ссылки креатива. До 2000 символов каждая. Это конечный URL-адрес, на который переходит пользователь при клике по ссылке в рекламном объявлении. Это URL рекламодателя или страницы, которую вы продвигаете. |
isSocial | boolean; required | Признак социальной рекламы |
isSocialQuota | boolean | Признак социальной рекламы по квоте. Передаётся вместе с isSocial |
ktu | string[] | Коды справочника ККТУ (категории товаров и услуг). Пустой массив передавать нельзя. ЕРИР считает поле обязательным |
targetAudience | TargetAudience | Параметры целевой аудитории рекламы |
creativeData | CreativeData[]; required | Медиаданные (assets) креатива |
Кобрендинг
contractId и cid - массивы. Если в массиве больше одного элемента, креатив считается кобрендинговым: один рекламный материал продвигает товары нескольких рекламодателей по разным договорам. Для кобрендингового креатива массив ktu может содержать несколько кодов; для обычного - ровно один (контроль CR_94).
Значения form
| Значение | Описание |
|---|---|
text-block | Текстовый блок |
text-video-block | Текстовый блок с видео |
text-audio-block | Текстовый блок с аудио |
text-audio-video-block | Текстовый блок с аудио и видео |
text-graphic-block | Текстово-графический блок |
text-graphic-video-block | Текстово-графический блок с видео |
text-graphic-audio-block | Текстово-графический блок с аудио |
text-graphic-audio-video-block | Текстово-графический блок с аудио и видео |
banner | Баннер |
banner-html5 | HTML5-баннер - рекламное сообщение, которое может включать в себя несколько различных креативных форматов, которые упакованы в архив *.zip и относятся к форме креатива - баннер. |
video | Видеоролик |
audio-rec | Аудиозапись |
live-video | Видеотрансляция в прямом эфире |
live-audio | Аудиотрансляция в прямом эфире |
other\* | Иное |
\* Значение other нельзя использовать при создании и редактировании, но оно может приходить в ответах для объектов, заведённых до введения этого ограничения.
Значения erirIdType
| Значение | Описание | Приём в запросах |
|---|---|---|
MED | Средний маркер (11+ символов) | Да |
LONG | Длинный маркер (56 символов) | Да |
SHORT | Короткий маркер (6-9 символов) | Нет - только в ответах по ранее заведённым объектам |
PREM | Маркер со словом внутри | Нет - только в ответах по ранее заведённым объектам |
При создании и изменении креатива допустимы только значения MED и LONG; поле обязательно.
TargetAudience object - параметры целевой аудитории
| Атрибут | Тип | Описание |
|---|---|---|
age | string[] | Возрастные диапазоны. Пример: ["20:25", "30:35"] |
geo | string[] | Коды регионов. Пример: ["50", "16"] |
sex | string[] | Пол. Пример: ["male"] или ["female"] |
CreativeData object - медиаданные креатива
| Атрибут | Тип | Описание |
|---|---|---|
textData | string | Содержимое текстовых медиаданных. Обязателен либо textData, либо mediaUrl - но не оба сразу |
mediaUrl | string | Ссылка на медиафайл (для изображений, видео и т. п.). ОРД скачивает файл по этой ссылке и сохраняет в своём хранилище Убедитесь, что доступ к хранилищу открыт (и должен быть открыт после загрузки на протяжении года). |
mediaUrlFileType | string | Тип файла, указанного в mediaUrl. Заполняется только вместе с mediaUrl |
externalId | string | Клиентский идентификатор медиаданных для случаев, когда их нужно идентифицировать при редактировании |
Что передавать в creativeData для разных форм распространения
Состав медиаданных определяется значением form. В одном элементе creativeData заполняется либо textData, либо mediaUrl - если нужны оба, передайте два элемента.
| Форма распространения | textData | mediaUrl |
|---|---|---|
text-block | обязателен | не передаётся |
text-graphic-block, text-video-block, text-graphic-video-block, text-audio-block, text-graphic-audio-block, text-audio-video-block, text-graphic-audio-video-block | обязателен | обязателен |
banner, banner-html5, video, audio-rec, live-video, live-audio | не передаётся | обязателен |
Значения mediaUrlFileType
| Значение | Описание |
|---|---|
image | Изображение |
video | Видео или gif с несколькими кадрами (анимация) |
audio | Аудио |
zip | Архив в формате zip |
other | Прочее |
POST /creatives - Регистрация креатива
Пример запроса
POST /api/v5.0/creatives
{
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"name": "Летняя РК - текстовое объявление",
"description": "Летняя распродажа спортивных товаров в магазине Ромашка",
"erirIdType": "MED",
"form": "text-block",
"isSocial": false,
"isSocialQuota": false,
"selfPromotionOrganizationId": null,
"ktu": ["30.15.1"],
"creativeData": [
{ "externalId": "asset-1", "textData": "Летняя распродажа: скидки до 40 % на спортивные товары" }
],
"targetAudience": {
"age": ["20:25"],
"geo": ["16", "50"],
"sex": ["male"]
},
"url": ["https://romashka.example/summer"]
}Пример ответа (short = true)
202 Accepted
{
"id": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-01T13:20:50.052+03:00",
"marker": "2Ranyn7YfuE"
}Пример: баннер с изображением
У форм banner, video, audio-rec текстовых данных нет - передаётся только mediaUrl. ОРД скачает файл по этой ссылке, поэтому она должна быть доступна без авторизации на момент запроса.
POST /api/v5.0/creatives
{
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"name": "Летняя РК - баннер 970x250",
"description": "Кроссовки беговые, весенне-летняя коллекция",
"erirIdType": "MED",
"form": "banner",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.2.1"],
"creativeData": [
{
"externalId": "banner-970x250",
"mediaUrl": "https://cdn.example/creatives/summer-970x250.jpg",
"mediaUrlFileType": "image"
}
],
"targetAudience": {
"age": ["25:45"],
"geo": ["77", "50"]
},
"url": ["https://romashka.example/summer"]
}202 Accepted
{
"id": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"state": "MEDIA LOADING"
}Маркера в ответе пока нет: он появится, когда медиафайл загрузится и креатив зарегистрируется в ЕРИР. Опрашивайте GET /creatives/{id}/status, пока state не станет ACCEPTED или APPROVED.
GET /api/v5.0/creatives/e524575d-6fc6-48c9-a38c-2de2d0543dab/status
200 OK
{
"id": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"state": "APPROVED",
"erirRegisteredAt": "2026-06-24T18:03:29.114+03:00",
"marker": "2RanynT4kQm"
}Пример: кобрендинговый креатив
Один материал продвигает товары двух рекламодателей, поэтому в contractId - два договора с разными рекламодателями, а в ktu - по коду на каждую категорию (контроль CR_94 требует ровно один код только для некобрендинговых креативов).
POST /api/v5.0/creatives
{
"contractId": [
"18abd2e0-7a4b-49cf-a287-f401fe98e192",
"c8d34a17-2f06-4b91-9ad5-71e0b2c4f8a3"
],
"name": "Совместная акция - видеоролик",
"description": "Совместная акция: верхняя одежда и спортивная обувь",
"erirIdType": "MED",
"form": "video",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.1.2", "1.2.1"],
"creativeData": [
{
"externalId": "video-15s",
"mediaUrl": "https://cdn.example/creatives/joint-promo-15s.mp4",
"mediaUrlFileType": "video"
}
],
"url": ["https://romashka.example/joint-promo"]
}Пример: саморекламный креатив
Реклама собственных товаров идёт без договора: вместо contractId указывается selfPromotionOrganizationId.
POST /api/v5.0/creatives
{
"selfPromotionOrganizationId": "4fb32ac9-0eb0-418c-81b4-a9b2cd53009a",
"name": "Промо подписки",
"description": "Подписка на новостной сервис",
"erirIdType": "MED",
"form": "text-graphic-block",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["30.15.1"],
"creativeData": [
{ "textData": "Подписка на Вектор Новости - первый месяц бесплатно" },
{
"mediaUrl": "https://cdn.example/creatives/subscription-banner.png",
"mediaUrlFileType": "image"
}
],
"url": ["https://news.vector.example/subscribe"]
}Форма
text-graphic-blockтребует и текст, и изображение. В одном элементеcreativeDataзаполняется что-то одно, поэтому элементов два.
PUT /creatives/{id} - Обновление креатива
В URI допускается указывать id либо маркер. В теле передаётся объект Creative.
PUT /api/v5.0/creatives/2RanynT4kQm
{
"marker": "2RanynT4kQm",
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"name": "Летняя РК - баннер 970x250",
"description": "Кроссовки беговые, весенне-летняя коллекция",
"erirIdType": "MED",
"form": "banner",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.2.1"],
"creativeData": [
{
"externalId": "banner-970x250",
"mediaUrl": "https://cdn.example/creatives/summer-970x250.jpg",
"mediaUrlFileType": "image"
}
],
"url": [
"https://romashka.example/summer",
"https://romashka.example/summer/sneakers"
]
}Новый маркер нужен только при изменении медиаданных. Для остальных правок - целевых ссылок, названия, описания, таргетинга - маркер остаётся прежним.
GET /creatives/{id}, HEAD /creatives/{id}, GET /creatives/{id}/status
Получение креатива, проверка наличия и статус. В пути допустим как id, так и маркер.
GET /api/v5.0/creatives/e524575d-6fc6-48c9-a38c-2de2d0543dab
GET /api/v5.0/creatives/2RanynT4kQm
HEAD /api/v5.0/creatives/e524575d-6fc6-48c9-a38c-2de2d0543dab
GET /api/v5.0/creatives/e524575d-6fc6-48c9-a38c-2de2d0543dab/statusОтветы: объект Creative, он же, заголовки ORD-* без тела, объект Status.
POST /creatives/search - Список креативов
CreativeFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Список идентификаторов креативов |
marker | string | Поиск по маркеру |
markers | string[] | Поиск по списку маркеров |
erirId | string[] | Поиск по идентификаторам ЕРИР |
name | string | Новое в v5.0. Название креатива - точное совпадение |
nameContains | string | Новое в v5.0. Поиск по вхождению подстроки в названии |
contractId | string[] | Список идентификаторов договоров |
cid | string[] | Поиск по идентификаторам изначальных договоров |
selfPromotionOrganizationId | string[] | Контрагент, которому принадлежит саморекламный креатив |
form | string[] | Форма распространения рекламы |
type | string[] | Тип рекламной модели креатива |
status | string[] | Статус |
adsStatus | string | Состояние передачи статистики: actual, expired, stopped |
created, erirRegDate | string | Дата создания / регистрации в ЕРИР |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
Ответ: CreativeSearchResponse - data: Creative[], meta: Pagination.
POST /api/v5.0/creatives/search
{
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"status": ["APPROVED"],
"page": 1,
"limit": 20,
"sorting": ["-created"]
}200 OK
{
"data": [
{
"id": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"marker": "2RanynT4kQm",
"erirIdType": "MED",
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"cid": null,
"selfPromotionOrganizationId": null,
"name": "Летняя РК - баннер 970x250",
"description": "Кроссовки беговые, весенне-летняя коллекция",
"form": "banner",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.2.1"],
"url": ["https://romashka.example/summer"],
"targetAudience": { "age": ["25:45"], "geo": ["77", "50"], "sex": null },
"creativeData": [
{
"externalId": "banner-970x250",
"textData": null,
"mediaUrl": "https://cdn.example/creatives/summer-970x250.jpg",
"mediaUrlFileType": "image"
}
]
}
],
"meta": { "page": 1, "limit": 20, "total": 1 }
}Фильтр adsStatus помогает найти креативы, по которым пора подавать статистику: actual - откручиваются, stopped - сняты с публикации, expired - срок размещения истёк.
POST /creatives/stop_publication - Снятие креатива с публикации
Метод предназначен для управления статусом креатива в случаях, когда он был удалён из сети или зарегистрирован в Личном кабинете, но не был опубликован в сети.
Важно: информация о снятии с публикации используется только в Личном кабинете ОРД и не передаётся в ЕРИР.
| Атрибут | Тип | Описание |
|---|---|---|
creativeId | string(uuid); required | Идентификатор креатива |
stopDate | string(date) | Дата прекращения публикации, формат YYYY-MM-DD |
neverPublished | boolean | Признак того, что креатив не публиковался. При true поле stopDate не требуется |
Признак neverPublished закрывает частый случай: маркер получен "про запас", но размещение не состоялось. Раньше такой креатив приходилось снимать датой, что искажало отчётность.
POST /api/v5.0/creatives/stop_publication
{
"creativeId": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"neverPublished": true
}Ответ: 200 OK с пустым телом; 400, 404, 500 - объект Error.
POST /creatives/resume_publication - Возобновление публикации креатива
Метод отменяет ранее выполненное снятие с публикации: креатив снова считается откручивающимся, и по нему снова можно подавать статистику.
| Атрибут | Тип | Описание |
|---|---|---|
creativeId | string(uuid); required | Идентификатор креатива |
resumePublicationDate | string(date) | Дата возобновления публикации, формат YYYY-MM-DD |
POST /api/v5.0/creatives/resume_publication
{
"creativeId": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"resumePublicationDate": "2026-09-01"
}Ответ: 200 OK с пустым телом; 400, 404, 500 - объект Error.
Формато-логический контроль
| Атрибут | Формато-логический контроль |
|---|---|
contractId | В ЕРИР должен быть зарегистрирован договор с таким id от конкретного ОРД. Креатив не может быть зарегистрирован или обновлён, если договор отправлен на удаление (контроль CR_76) |
description | Длина от 1 до 1000, шаблон ^(?!\s*$)[\s\S]{1,1000}$. В начале и в конце не должно быть пробела и переноса строки (контроль CR_6). Обязательно, если в массиве ktu передан единственный элемент 30.15.1 (контроль CR_99) |
selfPromotionOrganizationId | В ЕРИР должен быть зарегистрирован контрагент с таким id. Для элемента товарного фида передавать запрещено. Креатив не может быть зарегистрирован, если контрагент отправлен на удаление (контроль CR_77) |
url | Длина от 1 до 2000. Проверка URL: протокол http или https; в хосте не должно быть punycode или urlencode; в пути не должно быть urlencode (контроль CR_20) |
ktu | Массив не может быть пустым (контроль CR_98). Код содержит только цифры и точку (контроль CR_95), должен присутствовать в справочнике ККТУ (контроль CR_96). Ровно один элемент, если креатив не кобрендинговый (контроль CR_94) |
targetAudience.geo | Коды регионов, до 2 цифр. Пустой массив означает геотаргетинг на всю Россию |
targetAudience.sex | male - мужчины, female - женщины. Если таргетинг не зависит от пола, параметр не передаётся |
targetAudience.age | Формат <минимальный возраст>:<максимальный возраст>, оба - целые числа от 0 до 100, максимальный не меньше минимального. Например, "25:45" |
feedId | Контейнер товарного фида не может быть зарегистрирован, если не зарегистрирован ни один элемент фида с таким же feedId (контроль CR_30) |
cid | Может содержать символ -, латинские буквы a-z и цифры 0-9 |
id | Креатив не может быть зарегистрирован или обновлён, если его идентификатор отправлен в сервис удаления и находится на согласовании (контроль CR_75) |
Медиаданные креатива (CreativeData)
| Атрибут | Формато-логический контроль |
|---|---|
textData | Заполняется, только если пусто mediaUrl; в другом случае исключается (контроль CR_47). Длина от 1 до 65 000. В начале и в конце не должно быть пробела и переноса строки (контроль CR_23). Если у креатива несколько медиаданных, сумма всех текстовых данных не должна превышать 65 000 символов (контроль CR_24) |
mediaUrl | Заполняется, только если пусто textData. Проверка URL: обязателен протокол http или https (контроль CR_26) |
mediaUrlFileType | Допустимые значения: image, video, audio, zip, other (контроль CR_81). Не должно быть заполнено при отсутствии mediaUrl (контроль CR_82). Для анимационного GIF выбирается video, для векторного изображения - other. Значение zip допустимо только при form = banner-html5 |
externalId | Пользовательские идентификаторы медиаданных внутри одного креатива не должны повторяться |
Полный справочник кодов для объекта Креативы - в разделе Формато-логический контроль.
Товарные фиды#
Что такое товарный фид
Товарный фид - это способ маркировки динамической товарной рекламы, когда одно рекламное место показывает разные товары разным пользователям. Регистрировать каждую комбинацию как отдельный креатив невозможно, поэтому ЕРИР предусматривает двухуровневую модель.
Товарный фид представляет собой определённый тип креатива, который состоит из элементов фида и контейнера:
- Элемент фида - карточка одного товара: его описание, ссылка, изображение. Маркер элементам не выдаётся.
- Контейнер - техническая сущность, которая объединяет элементы и привязывает их к договору. Маркер (erid) выдаётся именно контейнеру и указывается в рекламном блоке.
Контейнер и элементы объединяются идентификатором feedId. Он генерируется на стороне клиента (UUID v4).
Порядок работы:
- Сгенерировать
feedId(UUID v4). - Зарегистрировать элементы фида:
POST /creatives/feeds/elementили пакетноPOST /creatives/feeds/element/batch. - Зарегистрировать контейнер с тем же
feedId:POST /creatives/feeds/container- в ответе придёт маркер.
Важно. Контейнер с определённым
feedIdне может быть зарегистрирован в ЕРИР, пока там нет ни одного элемента фида с тем жеfeedId(контроль CR_30). Отправлять контейнер сразу вслед за элементами при этом можно: он подождёт их в очереди (см. Ожидание зависимостей в общем разделе). Для каждогоfeedIdможет быть создано несколько контейнеров - например, если один и тот же набор товаров размещается по разным договорам.
Ограничение, вытекающее из модели:
- для элемента фида нельзя передавать в статистику (
POST /creative-statistics, контроль S_47) и в связку акта с креативом (контроль IC_28) - там указывается контейнер.
FeedContainer object - Контейнер товарного фида
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Уникальный идентификатор контейнера товарного фида в ОРД |
feedId | string(uuid v4); required | Идентификатор товарного фида. Генерируется клиентом |
marker | string | Маркер (erid) - для контейнера, зарегистрированного в ЕРИР |
contractId | string(uuid)[] | Идентификаторы зарегистрированных в ОРД договоров (или доп. соглашений), в рамках которых производится размещение контейнера. Массив - для поддержки кобрендинга |
cid | string[] | Идентификаторы изначальных договоров. Должны быть не заданы, если заданы contractId или selfPromotionOrganizationId |
selfPromotionOrganizationId | string(uuid) | Идентификатор контрагента, для которого фид является саморекламой. Должен быть null, если задан contractId или cid |
description | string | Общее описание объекта рекламирования |
form | string; required | Форма распространения рекламы |
isSocial | boolean; required | Признак социальной рекламы |
isSocialQuota | boolean; required | Признак социальной рекламы по квоте |
ktu | string[] | Коды справочника ККТУ |
targetAudience | FeedContainerTargetAudience | Параметры целевой аудитории рекламы |
Значения form - те же, что у обычного креатива (см. раздел "Креативы").
FeedContainerTargetAudience object
| Атрибут | Тип | Описание |
|---|---|---|
age | string[] | Возрастные диапазоны. Пример: ["20:25", "30:35"] |
geo | string[] | Коды регионов. Пример: ["50", "16"] |
sex | string[] | Пол. Пример: ["male"] или ["female"] |
FeedElement object - Элемент товарного фида
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Уникальный идентификатор элемента товарного фида в ОРД |
feedId | string(uuid v4); required | Идентификатор товарного фида - тот же, что у контейнера |
description | string | Общее описание объекта рекламирования |
ktu | string[] | Коды справочника ККТУ |
url | string[] | Целевые ссылки |
creativeData | FeedElementData[]; required | Медиаданные (assets) элемента товарного фида |
FeedElementData object
| Атрибут | Тип | Описание |
|---|---|---|
textData | string | Содержимое текстовых медиаданных. Обязателен либо textData, либо mediaUrl - но не оба сразу |
mediaUrl | string | Ссылка на медиафайл (для изображений, видео и т. п.) |
mediaUrlFileType | string | Тип файла: image, video, audio, zip, other. Заполняется только вместе с mediaUrl |
externalId | string | Клиентский идентификатор медиаданных для случаев, когда их нужно идентифицировать при редактировании |
POST /creatives/feeds/element - Создать элемент товарного фида
Параметры запроса
| Атрибут | Тип | Описание |
|---|---|---|
requestBody | FeedElement | В теле запроса передаётся объект FeedElement без id |
short | bool | По умолчанию false - отдавать объект целиком, true - отдавать статус объекта |
Пример запроса
POST /api/v5.0/creatives/feeds/element
{
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"description": "Кроссовки беговые, модель X",
"ktu": ["1.2.1"],
"url": ["https://shop.example/catalog/sneakers-x"],
"creativeData": [
{
"externalId": "sku-10045",
"mediaUrl": "https://cdn.example/img/sneakers-x.jpg",
"mediaUrlFileType": "image"
}
]
}Пример ответа
202 Accepted
{
"id": "9e55eb19-8e53-439e-b312-f7d268b8aadb",
"state": "PENDING"
}POST /creatives/feeds/element/batch - Создать элементы товарного фида пакетом
Регистрирует до 100 элементов одним запросом. Ответ содержит результат по каждому элементу в том же порядке: либо созданный объект, либо ошибку по нему. Если элементов больше, разбейте их на несколько запросов.
Тело запроса - BatchFeedElements
| Атрибут | Тип | Описание |
|---|---|---|
feedElements | FeedElement[]; required | Массив элементов товарного фида. От 1 до 100 элементов в одном запросе |
Ответ - BatchFeedElementsResponse
| Атрибут | Тип | Описание |
|---|---|---|
feedElements | BatchFeedElementsResponseItem[] | Результат по каждому элементу |
BatchFeedElementsResponseItem
| Атрибут | Тип | Описание |
|---|---|---|
feedElement | FeedElement | Созданный элемент. Присутствует, если элемент обработан успешно |
error | ErrorResponse | Ошибка по элементу. Присутствует, если элемент не прошёл проверки |
Пример запроса
POST /api/v5.0/creatives/feeds/element/batch
{
"feedElements": [
{
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"description": "Кроссовки беговые, модель X",
"ktu": ["1.2.1"],
"url": ["https://shop.example/catalog/sneakers-x"],
"creativeData": [
{ "mediaUrl": "https://cdn.example/img/sneakers-x.jpg", "mediaUrlFileType": "image" }
]
},
{
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"description": "Куртка ветрозащитная, модель Y",
"ktu": ["1.1.2"],
"url": ["https://shop.example/catalog/jacket-y"],
"creativeData": [
{ "textData": "Куртка ветрозащитная Y - новая коллекция" }
]
}
]
}Пример ответа с частичной ошибкой
201 Created
{
"feedElements": [
{
"feedElement": {
"id": "9e55eb19-8e53-439e-b312-f7d268b8aadb",
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"description": "Кроссовки беговые, модель X"
}
},
{
"error": {
"requestId": "0e29c0f6-6d5e-4a30-9f5a-2f4d2b2a1f77",
"status": 400,
"code": "parameter-error",
"title": "invalid parameter value",
"detail": "CR_96: Не найден код в справочнике ККТУ"
}
}
]
}Обрабатывайте ответ поэлементно: успешные элементы уже зарегистрированы, повторно отправлять нужно только те, по которым вернулась ошибка.
PUT /creatives/feeds/element/{id} - Изменить элемент товарного фида
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор элемента, полученный при регистрации |
requestBody | FeedElement | Объект FeedElement |
short | bool | Сокращённый ответ |
Товар подорожал или сменилась картинка - элемент обновляется, feedId остаётся прежним. Маркер контейнера при этом не меняется.
PUT /api/v5.0/creatives/feeds/element/9e55eb19-8e53-439e-b312-f7d268b8aadb
{
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"description": "Кроссовки беговые, модель X, новая расцветка",
"ktu": ["1.2.1"],
"url": ["https://shop.example/catalog/sneakers-x"],
"creativeData": [
{
"externalId": "sku-10045",
"mediaUrl": "https://cdn.example/img/sneakers-x-blue.jpg",
"mediaUrlFileType": "image"
}
]
}GET /creatives/feeds/element/{id}, HEAD /creatives/feeds/element/{id}, GET /creatives/feeds/element/{id}/status
Получение элемента, проверка наличия и статус.
GET /api/v5.0/creatives/feeds/element/9e55eb19-8e53-439e-b312-f7d268b8aadb
HEAD /api/v5.0/creatives/feeds/element/9e55eb19-8e53-439e-b312-f7d268b8aadb
GET /api/v5.0/creatives/feeds/element/9e55eb19-8e53-439e-b312-f7d268b8aadb/statusОтветы: объект FeedElement, заголовки ORD-* без тела, объект Status. Маркера у элемента нет - он есть только у контейнера.
POST /creatives/feeds/element/search - Список элементов товарных фидов
FeedElementFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Список идентификаторов элементов |
feedId | string[] | Список идентификаторов фидов |
erirId | string[] | Поиск по идентификаторам ЕРИР |
status | string[] | Статус |
created, erirRegDate | string | Дата создания / регистрации в ЕРИР |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
Ответ: FeedElementSearchResponse - data: FeedElement[], meta: Pagination.
POST /api/v5.0/creatives/feeds/element/search
{
"feedId": ["78b1307a-b0ad-4cb6-a0bd-c7ddef242b12"],
"status": ["APPROVED"],
"page": 1,
"limit": 100
}200 OK
{
"data": [
{
"id": "9e55eb19-8e53-439e-b312-f7d268b8aadb",
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"description": "Кроссовки беговые, модель X",
"ktu": ["1.2.1"],
"url": ["https://shop.example/catalog/sneakers-x"],
"creativeData": [
{
"externalId": "sku-10045",
"textData": null,
"mediaUrl": "https://cdn.example/img/sneakers-x.jpg",
"mediaUrlFileType": "image"
}
]
}
],
"meta": { "page": 1, "limit": 100, "total": 1 }
}POST /creatives/feeds/container - Создать контейнер товарного фида
Пример запроса
POST /api/v5.0/creatives/feeds/container
{
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"description": "Товарная витрина интернет-магазина",
"form": "banner",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.1.2", "1.2.1"]
}Пример ответа (short = false)
202 Accepted
{
"id": "0e91c3fe-9056-4cbb-812c-e2b2e63dacdd",
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"description": "Товарная витрина интернет-магазина",
"targetAudience": { "age": null, "geo": null, "sex": null },
"isSocial": false,
"isSocialQuota": false,
"selfPromotionOrganizationId": null,
"cid": null,
"marker": "2RanyoGXu92",
"form": "banner",
"ktu": ["1.1.2"]
}Пример ответа (short = true)
202 Accepted
{
"id": "0e91c3fe-9056-4cbb-812c-e2b2e63dacdd",
"state": "PENDING",
"marker": "2RanyoGXu92"
}PUT /creatives/feeds/container/{id} - Изменить контейнер товарного фида
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор контейнера, полученный при регистрации |
requestBody | FeedContainer | Объект FeedContainer |
short | bool | Сокращённый ответ |
PUT /api/v5.0/creatives/feeds/container/0e91c3fe-9056-4cbb-812c-e2b2e63dacdd
{
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"description": "Товарная витрина интернет-магазина, осенняя коллекция",
"form": "banner",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.1.2", "1.2.1"],
"targetAudience": {
"age": ["25:45"],
"geo": ["77"]
}
}GET /creatives/feeds/container/{id}, HEAD /creatives/feeds/container/{id}, GET /creatives/feeds/container/{id}/status
Получение контейнера, проверка наличия и статус.
GET /api/v5.0/creatives/feeds/container/0e91c3fe-9056-4cbb-812c-e2b2e63dacdd
HEAD /api/v5.0/creatives/feeds/container/0e91c3fe-9056-4cbb-812c-e2b2e63dacdd
GET /api/v5.0/creatives/feeds/container/0e91c3fe-9056-4cbb-812c-e2b2e63dacdd/statusОтветы: объект FeedContainer, заголовки ORD-* без тела (включая ORD-Marker), объект Status с маркером.
POST /creatives/feeds/container/search - Список контейнеров товарных фидов
FeedContainerFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Список идентификаторов контейнеров |
feedId | string[] | Список идентификаторов фидов |
contractId | string[] | Список идентификаторов договоров |
cid | string[] | Список идентификаторов изначальных договоров |
selfPromotionOrganizationId | string[] | Контрагент, которому принадлежит саморекламный фид |
markers | string[] | Поиск по маркерам |
erirId | string[] | Поиск по идентификаторам ЕРИР |
form | string[] | Форма распространения рекламы |
status | string[] | Статус |
created, erirRegDate | string | Дата создания / регистрации в ЕРИР |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
Ответ: FeedContainerSearchResponse - data: FeedContainer[], meta: Pagination.
POST /api/v5.0/creatives/feeds/container/search
{
"feedId": ["78b1307a-b0ad-4cb6-a0bd-c7ddef242b12"],
"page": 1,
"limit": 20
}200 OK
{
"data": [
{
"id": "0e91c3fe-9056-4cbb-812c-e2b2e63dacdd",
"feedId": "78b1307a-b0ad-4cb6-a0bd-c7ddef242b12",
"marker": "2RanyoGXu92",
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"cid": null,
"selfPromotionOrganizationId": null,
"description": "Товарная витрина интернет-магазина",
"form": "banner",
"isSocial": false,
"isSocialQuota": false,
"ktu": ["1.1.2", "1.2.1"],
"targetAudience": { "age": null, "geo": null, "sex": null }
}
],
"meta": { "page": 1, "limit": 20, "total": 1 }
}Формато-логический контроль
Товарные фиды используют тот же набор контролей, что и обычные креативы (префикс CR_), с дополнительными правилами для двухуровневой модели.
| Атрибут | Формато-логический контроль |
|---|---|
feedId | Обязателен и у контейнера, и у элемента. Контейнер не может быть зарегистрирован, если не зарегистрирован ни один элемент фида с таким же feedId (контроль CR_30) |
contractId | Только у контейнера. В ЕРИР должен быть зарегистрирован договор с таким id. Контейнер не регистрируется, если договор отправлен на удаление (контроль CR_76) |
selfPromotionOrganizationId | Только у контейнера. Для элемента фида передавать запрещено (контроль CR_77) |
ktu | Массив не может быть пустым (контроль CR_98). Код содержит только цифры и точку (контроль CR_95) и должен присутствовать в справочнике ККТУ (контроль CR_96). У элемента фида - ровно один код; у контейнера допустимо несколько (контроль CR_94) |
description | Длина от 1 до 1000, без пробелов и переносов по краям (контроль CR_6). Обязательно, если в ktu передан единственный код 30.15.1 (контроль CR_99) |
url | Длина от 1 до 2000. Проверка URL: протокол http или https; в хосте не должно быть punycode или urlencode; в пути не должно быть urlencode (контроль CR_20) |
creativeData.textData | Заполняется, только если пусто mediaUrl (контроль CR_47). Длина от 1 до 65 000 (контроль CR_23), суммарно по всем медиаданным - не более 65 000 символов (контроль CR_24) |
creativeData.mediaUrl | Заполняется, только если пусто textData. Обязателен протокол http или https (контроль CR_26) |
creativeData.mediaUrlFileType | Допустимые значения: image, video, audio, zip, other (контроль CR_81). Не должно быть заполнено при отсутствии mediaUrl (контроль CR_82) |
Дополнительно за пределами группы /creatives/feeds:
- элемент фида запрещено передавать в статистику (контроль S_47);
- элемент фида запрещено передавать в связку акта с креативом (контроль IC_28).
Полный справочник кодов для объекта Креативы - в разделе Формато-логический контроль.
Акты#
Акт - документ, которым закрывается период оказания рекламных услуг по договору за период.
Данные по актам необходимо регистрировать в течение 30 дней после его получения.
Статистику можно передавать двумя способами: внутри акта (/invoices/with-statistic) либо отдельно (/creative-statistics, см. раздел "Статистика выполнения РК"). Какой способ выбрать - ниже.
Логика работы с актами и статистикой
Предполагается три сценария работы:
- Акты раз в месяц. Если акты формируются раз в месяц, так же как и статистика, рекомендуется передавать статистику вместе с актом через
POST /invoices/with-statistic. - Акты реже, чем раз в месяц (например, квартальный акт):
- в течение 30 дней с момента окончания месяца направлять статистику по каждому креативу по каждой площадке за весь период через
POST /creative-statistics; - по составлении акта в конце периода зарегистрировать его через
POST /invoices; - зарегистрировать связку акта с креативом, указав каждый креатив по каждому изначальному договору, через
POST /invoices/creatives. Дожидаться, пока акт получитAPPROVED, не нужно: связка сама подождёт акт (см. "Ожидание зависимостей" в общем разделе).
- в течение 30 дней с момента окончания месяца направлять статистику по каждому креативу по каждой площадке за весь период через
- Акты чаще, чем раз в месяц (например, раз в неделю):
- по составлении каждого акта он регистрируется в ЕРИР через
POST /invoices; - в течение 30 дней после окончания отчётного периода регистрируется статистика через
POST /creative-statistics; - регистрируются связки каждого акта с креативом через
POST /invoices/creatives.
- по составлении каждого акта он регистрируется в ЕРИР через
Invoice object - Акт
Объект используется методами группы /invoices (акт без статистики). Объект InvoiceWithStatistic группы /invoices/with-statistic отличается только тем, что в items[].creatives[] дополнительно передаётся статистика открутки.
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор акта, выданный ОРД |
type | string; required | Тип акта |
contractId | string(uuid); required | Идентификатор зарегистрированного в ОРД договора (или доп. соглашения), к которому относится акт |
number | string | Номер акта |
date | string(date); required | Дата акта |
startDate | string(date); required | Дата начала периода оказания услуг |
endDate | string(date); required | Дата окончания периода оказания услуг |
clientRole | string; required | Роль заказчика в акте. Не требуется только при irRelevant = true |
contractorRole | string; required | Роль исполнителя в акте. Не требуется только при irRelevant = true |
amount | InvoiceAmount; required | Сведения о суммах акта / отчёта |
items | InvoiceItem[] | Разаллокация акта по атрибутам изначального договора |
rrOrderContractIdList | string(uuid)[] | Список идентификаторов посреднических договоров, по поручению которых был заключён договор оказания услуг |
isSocial | boolean | Признак "Социальная реклама". Передаётся только вместе с isSocialQuota |
isSocialQuota | boolean | Признак "Социальная реклама по квоте". Передаётся только вместе с isSocial |
irRelevant | boolean | Отметить акт как неактуальный |
Значения type
| Значение | Описание |
|---|---|
invoice | Акт выполненных работ |
intermediary-report | Отчёт посредника (поверенного / комиссионера / агента) |
commission-invoice | Новое в v5.0. Акт на вознаграждение посредника |
Тип акта жёстко связан с типом договора:
- по договору
contractи доп. соглашениям к нему подаётся актinvoice(контроль I_125); - по договору
intermediary-contractи доп. соглашениям к нему -intermediary-reportлибоcommission-invoice(контроль I_126).
Подробный сценарий работы с commission-invoice - в разделе "Сценарии: посреднические акты".
Значения clientRole и contractorRole
| Значение | Описание |
|---|---|
rd | Рекламодатель (только для clientRole) |
ra | Рекламное агентство |
rr | Рекламораспространитель |
ors | Оператор рекламной системы |
psr | Посредник |
InvoiceAmount object - Сведения о суммах акта
| Атрибут | Тип | Описание |
|---|---|---|
services | InvoiceAmountServices | Детализация суммы акта за услуги |
commission | InvoiceAmountCommission | Детализация вознаграждения посредника. Обязателен для типов intermediary-report и commission-invoice, запрещён для invoice (контроли I_136, I_138) |
InvoiceAmountServices object
| Атрибут | Тип | Описание |
|---|---|---|
excludingVat | number | Сумма акта / отчёта без учёта НДС, 2 знака после запятой |
vatRate | number | Ставка НДС, 2 знака после запятой |
vat | number | Сумма НДС в акте / отчёте, 2 знака после запятой |
includingVat | number | Сумма акта / отчёта, включая НДС, 2 знака после запятой |
intermediaryReportIdList | string(uuid)[] | Новое в v5.0. Массив идентификаторов актов типа "Отчёт посредника", к которым относится данный акт на вознаграждение. Обязателен для типа commission-invoice, запрещён для invoice и intermediary-report (контроли I_185, I_187) |
Для типа
commission-invoiceполяexcludingVat,vatRate,vat,includingVatблокаservicesне передаются - в этом акте есть только вознаграждение (контроли I_192, I_193, I_195, I_197).
InvoiceAmountCommission object
| Атрибут | Тип | Описание |
|---|---|---|
isInvoice | boolean | Новое в v5.0. Признак отдельного акта на вознаграждение. Передаётся только для типа intermediary-report (контроль I_198) |
excludingVat | number | Сумма вознаграждения посредника без учёта НДС, 2 знака после запятой |
vatRate | number | Ставка НДС, 2 знака после запятой |
vat | number | Сумма НДС для вознаграждения посредника, 2 знака после запятой |
includingVat | number | Сумма вознаграждения посредника, включая НДС, 2 знака после запятой |
Логика isInvoice в отчёте посредника:
isInvoice = falseили не передан - вознаграждение включено в этот же отчёт, поэтому суммыexcludingVat,vatRate,vat,includingVatобязательны (контроли I_199, I_201, I_203, I_205);isInvoice = true- вознаграждение будет подано отдельным актомcommission-invoice, поэтому те же поля передавать запрещено (контроли I_200, I_202, I_204, I_206).
Отличие от v4. Поля
amount.commission.numberиamount.commission.dateв v5.0 удалены: номер и дата акта на вознаграждение теперь берутся из полейnumberиdateотдельного актаcommission-invoice.
InvoiceItem object - Разаллокация акта
| Атрибут | Тип | Описание |
|---|---|---|
contractId | string(uuid) | Идентификатор изначального договора / доп. соглашения в ОРД |
cid | string | Идентификатор изначального договора. Обязан быть null, если задан contractId, и наоборот |
amount | InvoiceItemAmount | Сумма в привязке к каждому изначальному договору |
isSocial | boolean | Признак "Социальная реклама" в детализации акта |
isSocialQuota | boolean | Признак "Социальная реклама по квоте" в детализации акта |
InvoiceItemAmount object
| Атрибут | Тип | Описание |
|---|---|---|
excludingVat | number | Сумма детализации без учёта НДС, 2 знака после запятой |
vatRate | number | Ставка НДС, 2 знака после запятой |
vat | number | Сумма НДС в детализации, 2 знака после запятой |
includingVat | number | Сумма детализации, включая НДС, 2 знака после запятой |
InvoiceItemWithStatistic object
Используется в /invoices/with-statistic. Дополняет InvoiceItem разаллокацией по креативам:
| Атрибут | Тип | Описание |
|---|---|---|
contractId, cid, amount, isSocial, isSocialQuota | - | См. InvoiceItem |
creatives | InvoiceItemCreative[] | Разаллокация по креативам за период акта |
InvoiceItemCreative object
| Атрибут | Тип | Описание |
|---|---|---|
creativeId | string(uuid) | Идентификатор креатива |
marker | string | Маркер креатива. Только в запросах POST / PUT и только если не указан creativeId |
platforms | InvoiceItemCreativePlatform[] | Статистика по креативу в разрезе площадок |
InvoiceItemCreativePlatform object
| Атрибут | Тип | Описание |
|---|---|---|
platformId | string; required | Идентификатор площадки |
campaignType | string; required | Тип рекламной кампании |
impsPlan | int64; required | Количество показов по акту |
dateStartPlan | string(date); required | Дата начала показов по акту |
dateEndPlan | string(date); required | Дата окончания показов по акту |
impsFact | int64; required | Количество показов фактическое |
dateStartFact | string(date); required | Дата начала показов фактическая |
dateEndFact | string(date); required | Дата окончания показов фактическая |
amount | InvoiceItemCreativePlatformAmount; required | Стоимость оказанных услуг |
amountPerShow | number; required | Стоимость единицы оказания услуг |
externalId | string | Пользовательский идентификатор |
Значения campaignType
| Значение | Описание |
|---|---|
cpm | Оплата за показы |
cpc | Оплата за клики |
cpa | Оплата за действия |
other | Иное |
InvoiceItemCreativePlatformAmount object
| Атрибут | Тип | Описание |
|---|---|---|
excludingVat | number | Стоимость оказанных услуг без учёта НДС, 5 знаков после запятой |
vatRate | number | Ставка НДС, 2 знака после запятой |
vat | number | Сумма НДС для стоимости оказанных услуг, 5 знаков после запятой |
includingVat | number | Стоимость оказанных услуг, включая НДС, 5 знаков после запятой |
POST /invoices - Регистрация акта
Пример запроса
POST /api/v5.0/invoices
{
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
}
]
}Пример ответа
202 Accepted
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"state": "ACCEPTED",
"erirRegisteredAt": "2026-08-05T21:26:18+03:00"
}PUT /invoices/{id} - Обновление акта
В теле передаётся объект Invoice. Ответ - объект Invoice (short = false) либо Status (short = true).
PUT /api/v5.0/invoices/7a459159-c38e-4f9a-a726-d209031111cb
{
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 90163.93,
"vatRate": 22.00,
"vat": 19836.07,
"includingVat": 110000.00
}
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 90163.93,
"vatRate": 22.00,
"vat": 19836.07,
"includingVat": 110000.00
}
}
]
}Ошибочно поданный акт не удаляется, а помечается неактуальным - для этого достаточно передать irRelevant:
PUT /api/v5.0/invoices/7a459159-c38e-4f9a-a726-d209031111cb
{
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"irRelevant": true,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
}
}При
irRelevant = trueроли сторон не требуются - это единственный случай, когдаclientRoleиcontractorRoleможно не передавать.
PUT /invoices/upsert - Создать или изменить акт
Идемпотентный метод: если акт с переданным идентификатором уже существует, он будет обновлён, иначе - создан. Удобен для повторной выгрузки без предварительной проверки существования.
Ответ: 200 (обновлён), 201 (создан) либо 202 (принят, ответ ЕРИР не получен).
Поле id здесь обязательно и должно быть корректным UUID v4 - без него метод вернёт 400. Именно по нему принимается решение: акт с таким идентификатором есть - обновляем, нет - создаём с этим же идентификатором. Это единственная группа методов, где идентификатор задаёт клиент; сгенерируйте его на своей стороне и сохраните, чтобы повторная выгрузка того же акта не создала дубликат.
PUT /api/v5.0/invoices/upsert
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
}
]
}200 OK
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-06T12:11:03.560+03:00"
}GET /invoices/{id}, HEAD /invoices/{id}, GET /invoices/{id}/status
Получение акта, проверка наличия, статус и принудительная синхронизация.
GET /api/v5.0/invoices/7a459159-c38e-4f9a-a726-d209031111cb
HEAD /api/v5.0/invoices/7a459159-c38e-4f9a-a726-d209031111cb
GET /api/v5.0/invoices/7a459159-c38e-4f9a-a726-d209031111cb/statusОтветы: объект Invoice, заголовки ORD-* без тела, объект Status, объект Status.
Те же четыре запроса по пути /invoices/with-statistic/{id} вернут акт вместе со статистикой:
GET /api/v5.0/invoices/with-statistic/7a459159-c38e-4f9a-a726-d209031111cb
HEAD /api/v5.0/invoices/with-statistic/7a459159-c38e-4f9a-a726-d209031111cb
GET /api/v5.0/invoices/with-statistic/7a459159-c38e-4f9a-a726-d209031111cb/statusPOST /invoices/search - Список актов
InvoiceFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Список идентификаторов актов |
type | string | Тип акта: invoice, intermediary-report, commission-invoice |
number | string | Номер акта |
contractId | string[] | Список идентификаторов договоров |
clientRole, contractorRole | string[] | Роли сторон |
date, startDate, endDate | string | Дата акта, даты начала и окончания периода |
amount | number | Сумма |
isSocial | boolean | Признак "Социальная реклама" |
isSocialQuota | boolean | Признак "Социальная реклама по квоте" |
status | string[] | Статус |
created, erirRegDate | string | Дата создания / регистрации в ЕРИР |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
Ответ: InvoiceSearchResponse - data: Invoice[], meta: Pagination.
POST /api/v5.0/invoices/search
{
"contractId": ["18abd2e0-7a4b-49cf-a287-f401fe98e192"],
"type": "invoice",
"status": ["APPROVED"],
"page": 1,
"limit": 50,
"sorting": ["-date"]
}200 OK
{
"data": [
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"irRelevant": false,
"rrOrderContractIdList": null,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00,
"intermediaryReportIdList": null
},
"commission": null
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"cid": null,
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
}
]
}
],
"meta": { "page": 1, "limit": 50, "total": 1 }
}Чтобы найти акты на вознаграждение, укажите "type": "commission-invoice".
Акты со статистикой
Группа /invoices/with-statistic работает с объектом InvoiceWithStatistic - актом, внутри которого сразу передана вся статистика открутки.
| Метод | Назначение |
|---|---|
POST /invoices/with-statistic | Создать акт со статистикой |
PUT /invoices/with-statistic/{id} | Изменить акт со статистикой |
PUT /invoices/with-statistic/upsert | Создать или изменить акт со статистикой |
GET /invoices/with-statistic/{id} | Получить акт со статистикой |
HEAD /invoices/with-statistic/{id} | Проверить наличие акта |
GET /invoices/with-statistic/{id}/status | Статус акта |
Метод upsert этой группы, как и PUT /invoices/upsert, требует, чтобы id акта передал клиент.
Пример запроса
POST /api/v5.0/invoices/with-statistic
{
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
},
"creatives": [
{
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platforms": [
{
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 98450,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.83258,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}
]
}
]
}
]
}Пример ответа
202 Accepted
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"state": "ACCEPTED",
"erirRegisteredAt": "2026-08-05T21:26:18+03:00"
}Отдельных идентификаторов у статистики здесь не появляется: она хранится внутри акта. Если статистику нужно адресовать самостоятельно - подавайте её через /creative-statistics.
Изменение акта со статистикой
PUT заменяет акт целиком вместе со статистикой: массив creatives передаётся полностью, а не только изменившиеся строки. Ниже уточнён фактический объём показов.
PUT /api/v5.0/invoices/with-statistic/7a459159-c38e-4f9a-a726-d209031111cb
{
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
},
"creatives": [
{
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platforms": [
{
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 99870,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.82074,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}
]
}
]
}
]
}Создание или изменение акта со статистикой
PUT /invoices/with-statistic/upsert принимает тот же объект, но с обязательным id, который задаёт клиент, - правило то же, что у PUT /invoices/upsert.
PUT /api/v5.0/invoices/with-statistic/upsert
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"number": "act-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "rr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
},
"items": [
{
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
},
"creatives": [
{
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platforms": [
{
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 99870,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.82074,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}
]
}
]
}
]
}200 OK
{
"id": "7a459159-c38e-4f9a-a726-d209031111cb",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-06T12:14:52.318+03:00"
}Суммы в акте и в статистике связаны: amount по всем площадкам и креативам одного элемента items должна сходиться с суммой самого элемента. В примере amountPerShow рассчитана как сумма без НДС, делённая на число фактических показов: 81 967,21311 / 98 450 = 0,83258 руб. с округлением до пяти знаков.
Формато-логический контроль
| Атрибут | Формато-логический контроль |
|---|---|
type | Допустимые значения: invoice, intermediary-report, commission-invoice (контроль I_124). Для договора типа contract допустим только invoice (контроль I_125); для договора типа intermediary-contract - только intermediary-report или commission-invoice (контроль I_126) |
contractId | В ЕРИР должен быть зарегистрирован договор с таким id. Если договор относится к саморекламе, во всех пунктах разаллокации должен быть указан тот же договор. Требуется заполненный address: у заказчика - если он ФЛ или ИП РФ, а исполнитель иностранное лицо (контроль I_226); у исполнителя - если он ФЛ или ИП РФ (контроль I_227) |
number | Длина от 1 до 255. В начале и в конце не должно быть пробела и переноса строки (контроль I_36) |
clientRole | Допустимые значения: ra, rr, ors, rd, psr (контроль I_8). Сочетания ролей ограничены: если роль заказчика rd, роль исполнителя может быть ra, ors, rr. Если договор посреднический с agentActingForPublisher = true, роль rd использовать нельзя (контроль I_120) |
contractorRole | Допустимые значения: ra, rr, ors, psr (контроль I_16). Роль rr не может быть у исполнителя-агента (контроль I_121) |
date | Формат ГГГГ-ММ-ДД. Дата должна быть не ниже 01.01.1991 и меньше либо равна текущей дате (контроль I_20) |
startDate, endDate | Формат ГГГГ-ММ-ДД. Дата окончания периода не может быть раньше даты начала (контроль I_29) |
items | Допустим только один объект, если роль заказчика - рекламодатель (clientRole = rd, контроль I_82). Передавать запрещено для типа commission-invoice (контроль I_207) |
isSocial, isSocialQuota | Передаются только парой - и на уровне акта (контроли I_181, I_182), и на уровне items (контроли I_183, I_184) |
cid | Может содержать символ -, латинские буквы a-z и цифры 0-9. Не может быть заполнен при наличии contractId, и наоборот. Указанный cid должен быть ранее выдан |
amount.services.excludingVat | Положительные числа или ноль, 2 знака после запятой, максимум 10 000 000 000.00 (контроль I_127). Должна быть не меньше суммы значений excludingVat в items минус количество items, умноженное на 0,01 (контроль I_128). Обязательно для типов invoice и intermediary-report (контроль I_191), запрещено для commission-invoice (контроль I_192) |
amount.services.vatRate | Допустимые ставки: 0, 5, 7, 10, 20, 22, 100 (без НДС) - контроль I_163. Обязательно для типов invoice и intermediary-report (контроли I_164, I_165, I_193) |
amount.services.vat | Должна быть равна произведению суммы без НДС на ставку с учётом погрешностей (контроль I_167). Должна быть равна 0, если ставка "Без НДС" или 0 % (контроль I_168). Если расчётная сумма НДС меньше 0,10 руб., допускается 0 (контроль I_166) |
amount.services.includingVat | Должна быть равна сумме excludingVat и vat (контроль I_135). Больше нуля, если сумма в договоре больше нуля или не указана (контроли I_129, I_130) |
amount.services.intermediaryReportIdList | Обязателен для типа commission-invoice (I_185), не может быть пустым (I_186), запрещён для invoice и intermediary-report (I_187). Элементы - корректные UUID (I_188), без дублей (I_189), зарегистрированные в ЕРИР (I_190), с совпадающим contractId (I_208) и признаком isInvoice = true (I_231) |
amount.commission | Обязателен для типов intermediary-report и commission-invoice (контроль I_136), запрещён для invoice (контроль I_138) |
amount.commission.isInvoice | Передаётся только для типа intermediary-report (контроль I_198) |
amount.commission.excludingVat | Обязательно при isInvoice = false или если признак не передан (контроль I_199); запрещено при isInvoice = true (контроль I_200). Формат: 2 знака после запятой, максимум 10 000 000 000.00 (контроль I_139) |
amount.commission.vatRate | Обязательно при isInvoice = false (I_201), запрещено при isInvoice = true (I_202). Допустимые ставки - см. amount.services.vatRate (контроль I_169) |
amount.commission.vat | Обязательно при isInvoice = false (I_203), запрещено при isInvoice = true (I_204). Проверяется соответствие ставке (контроли I_170, I_171) |
amount.commission.includingVat | Обязательно при isInvoice = false (I_205), запрещено при isInvoice = true (I_206). Должна быть равна сумме excludingVat и vat (контроль I_151) |
items[].amount.* | Те же правила формата, что для amount.services (контроли I_145, I_147, I_149, I_150). Ставка НДС в детализации должна совпадать со ставкой суммы акта для типа invoice (I_228) и для intermediary-report при agentActingForPublisher = true (I_229) |
rrOrderContractIdList | Допустим только для типа invoice либо для intermediary-report с agentActingForPublisher = true (I_212). Не может быть пустым (I_209), элементы - корректные идентификаторы (I_210) без дублей (I_211). Соответствие сторон - контроли I_213, I_214. Договор должен быть зарегистрирован в ЕРИР, иметь тип intermediary-contract и agentActingForPublisher = true (I_215). Запрещено, если заказчик по посредническому договору - иностранное лицо (I_216) |
irRelevant | Признак неактуальности записи. Возможные значения: true / false |
Ставки НДС в переходный период
| Условие | Ограничение |
|---|---|
| Дата акта < 01.01.2026 | Ставка 22 % запрещена - контроли I_217 (services), I_220 (commission), I_223 (items) |
| Дата акта 01.01.2026 и позже, период оказания услуг раньше 2026 года | Ставка 22 % запрещена - контроли I_218, I_221, I_224 |
| Дата акта 01.01.2026 и позже, период оказания услуг 2026 год и позже | Ставка 20 % запрещена - контроли I_219, I_222, I_225 |
Полный справочник кодов для объекта Акты - в разделе Формато-логический контроль.
Статистика#
Статистика — данные о количестве показов рекламного креатива, зафиксированные в результате его демонстрации на рекламных площадках за отчетный период. Статистика подлежит регистрации в ЕРИР в течение 30 календарных дней, следующих за месяцем показа креатива.
Если статистика подаётся отдельно от акта, используется группа /creative-statistics.
CreativeStatistic object
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор статистики в ОРД |
creativeId | string(uuid); required | Идентификатор креатива, по которому передаётся статистика. Можно заменить на marker |
marker | string | Маркер креатива. Только в запросах POST / PUT и только если не указан creativeId |
platformId | string; required | Идентификатор площадки. До 255 символов |
campaignType | string; required | Тип рекламной кампании: cpm, cpc, cpa, other |
impsPlan | int64; required | Количество показов по акту |
dateStartPlan | string(date); required | Дата начала показов по акту |
dateEndPlan | string(date); required | Дата окончания показов по акту |
impsFact | int64; required | Количество показов фактическое |
dateStartFact | string(date); required | Дата начала показов фактическая. Единственная из дат, обязательная всегда |
dateEndFact | string(date); required | Дата окончания показов фактическая |
amount | CreativeStatisticAmount; required | Стоимость оказанных услуг |
amountPerShow | number; required | Стоимость единицы оказания услуг |
invoiceId | string(uuid) | Идентификатор акта в ОРД |
contractId | string(uuid) | Идентификатор изначального договора в ОРД |
cid | string | Идентификатор изначального договора. Взаимоисключающ с contractId |
externalId | string | Пользовательский идентификатор |
Отличие от v4. Поле
irRelevantв объекте статистики удалено. Для исключения ошибочно поданной статистики используйтеDELETE /creative-statistics/{id}.
CreativeStatisticAmount object
| Атрибут | Тип | Описание |
|---|---|---|
excludingVat | number | Стоимость оказанных услуг без учёта НДС, 5 знаков после запятой |
vatRate | number | Ставка НДС, 2 знака после запятой |
vat | number | Сумма НДС для стоимости оказанных услуг, 5 знаков после запятой |
includingVat | number | Стоимость оказанных услуг, включая НДС, 5 знаков после запятой |
POST /creative-statistics - Передача статистики
В теле передаётся объект CreativeStatistics - обёртка с массивом statistics.
POST /api/v5.0/creative-statistics
{
"statistics": [
{
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"campaignType": "cpa",
"impsPlan": 101,
"impsFact": 100,
"dateStartPlan": "2026-07-12",
"dateEndPlan": "2026-07-26",
"dateStartFact": "2026-07-10",
"dateEndFact": "2026-07-25",
"amountPerShow": 0.81967,
"amount": {
"excludingVat": 81.96721,
"vatRate": 22.00,
"vat": 18.03279,
"includingVat": 100.00000
}
}
]
}202 Accepted
{
"statuses": [
{
"id": "7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1",
"state": "ACCEPTED",
"erirRegisteredAt": "2026-08-05T20:15:12+03:00"
}
]
}В этом примере статистика подана без привязки к акту: акт ещё не зарегистрирован, связь будет установлена позже через POST /invoices/creatives. Если акт уже есть, укажите его сразу - тогда отдельная связка не понадобится:
POST /api/v5.0/creative-statistics
{
"statistics": [
{
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 98450,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.83258,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}
]
}Одним запросом можно передать статистику сразу по нескольким креативам и площадкам - массив statistics не ограничен одним элементом. Учтите ограничение частоты вызовов: метод относится к "тяжёлым".
PUT /creative-statistics/upsert - Создать или изменить статистику
Принимает тот же объект CreativeStatistics. Элементы, уже существующие в ОРД, обновляются, остальные создаются.
Поле id обязательно для каждого элемента массива и должно быть корректным UUID v4 - как и в PUT /invoices/upsert, его задаёт клиент. Есть элемент с таким идентификатором - он обновляется, нет - создаётся. Удобно, когда открутка продолжается и цифры за период уточняются: тот же запрос отправляется повторно с новыми значениями.
PUT /api/v5.0/creative-statistics/upsert
{
"statistics": [
{
"id": "7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1",
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 99870,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.82074,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}
]
}200 OK
{
"statuses": [
{
"id": "7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1",
"state": "APPROVED",
"erirRegisteredAt": "2026-08-06T09:30:41+03:00"
}
]
}PUT /creative-statistics/{id} - Обновление одного элемента статистики
В теле передаётся объект CreativeStatistic - без обёртки statistics.
PUT /api/v5.0/creative-statistics/7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1
{
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 99870,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.82074,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}DELETE /creative-statistics/{id} - Удаление статистики
Удаляет ошибочно поданный элемент статистики. Метод ограничен по частоте вызовов (429 при превышении).
Ответ: 200 - объект Status; 400, 401, 429, 500 - объект Error.
DELETE /api/v5.0/creative-statistics/7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1
200 OK
{
"id": "7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1",
"state": "DELETING"
}GET /creative-statistics/{id}, HEAD /creative-statistics/{id}, GET /creative-statistics/{id}/status
Получение элемента статистики, проверка наличия и статус. Метода sync у статистики нет.
GET /api/v5.0/creative-statistics/7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1
HEAD /api/v5.0/creative-statistics/7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1
GET /api/v5.0/creative-statistics/7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1/statusОтветы: объект CreativeStatistic, заголовки ORD-* без тела, объект Status. Расширенный набор полей включается параметром ?extended=true.
POST /creative-statistics/search - Список статистики
CreativeStatisticFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Идентификаторы статистики |
creativeId | string | Идентификатор креатива |
marker | string[] | Маркеры креативов |
platformId | string | Идентификатор площадки |
platform | string[] | Название площадки |
invoiceId | string | Идентификатор акта |
contractId | string | Идентификатор договора |
cid | string | Идентификатор изначального договора |
date | string | Дата статистики |
planStartDate, planEndDate | string | Даты показов по акту |
factStartDate, factEndDate | string | Фактические даты показов |
status | string[] | Статус |
created, registered | string | Дата создания / регистрации |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
POST /api/v5.0/creative-statistics/search
{
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"status": ["APPROVED"],
"page": 1,
"limit": 100
}200 OK
{
"data": [
{
"id": "7d04bccb-1a0e-4ce1-9b30-ae06ca51cbf1",
"creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab",
"marker": "2RanynT4kQm",
"platformId": "7358025f-5674-44ea-9ab1-f342a486e939",
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"cid": null,
"campaignType": "cpm",
"impsPlan": 100000,
"impsFact": 99870,
"dateStartPlan": "2026-07-01",
"dateEndPlan": "2026-07-31",
"dateStartFact": "2026-07-01",
"dateEndFact": "2026-07-31",
"amountPerShow": 0.82074,
"amount": {
"excludingVat": 81967.21311,
"vatRate": 22.00,
"vat": 18032.78689,
"includingVat": 100000.00000
}
}
],
"meta": { "page": 1, "limit": 100, "total": 1 }
}При обходе больших выборок вместо page используйте cursor: страничная пагинация на десятках тысяч записей заметно медленнее.
Формато-логический контроль
| Атрибут | Формато-логический контроль |
|---|---|
creativeId | В ЕРИР должен быть зарегистрирован креатив с таким id. Элементы товарного фида передавать запрещено - только обычные креативы и контейнеры фидов (контроль S_47). Статистика не регистрируется, если креатив отправлен на удаление (контроль S_80) |
platformId | Длина от 1 до 255. В ЕРИР должна быть зарегистрирована площадка с таким id. Площадка с isOwned = true должна быть зарегистрирована у контрагента, указанного в креативе (контроль S_97). Статистика не регистрируется, если площадка отправлена на удаление (контроль S_81) |
invoiceId | Обязательно (контроль S_51). Статистика не регистрируется, если акт отправлен на удаление (контроль S_78) или заблокирован (контроль S_85) |
contractId | Обязательно, если не заполнен cid (контроль S_54). Идентификатор изначального договора должен быть указан в качестве изначального у данного акта (контроль S_58). Статистика не регистрируется, если договор отправлен на удаление (контроль S_79) |
cid | Заполняется вместо contractId (контроль S_73) |
dateStartPlan, dateEndPlan | Формат ГГГГ-ММ-ДД. Дата начала не позже даты окончания (контроль S_26), дата окончания не позже текущей (контроль S_32) |
dateStartFact, dateEndFact | Формат ГГГГ-ММ-ДД. Дата начала не позже даты окончания (контроль S_16) и не позже текущей (контроль S_17); дата окончания не позже текущей (контроль S_22). Дата начала периода в акте не может быть позже даты начала статистики (контроль S_57) |
amountPerShow | Положительные числа или ноль, до 5 знаков после запятой. Если деньги списываются за клик - указывается стоимость клика, за действие - стоимость действия (контроли S_37, S_46) |
amount.excludingVat | Положительные числа или ноль, до 5 знаков после запятой, максимум 10 000 000 000.00000 (контроли S_86, S_87) |
amount.vatRate | Допустимые ставки: 0, 5, 7, 10, 20, 22, 100 (без НДС) - контроль S_98. Ставка 22 % запрещена, если dateStartPlan меньше 01.01.2026 (контроль S_102); ставка 20 % запрещена, если dateStartPlan больше либо равна 01.01.2026 (контроль S_103) |
amount.vat | До 5 знаков после запятой. Должна быть равна произведению суммы без НДС на ставку с учётом погрешностей (контроль S_99), либо 0 при ставке "Без НДС" или 0 % (контроль S_100) |
amount.includingVat | До 5 знаков после запятой. Должна быть равна сумме excludingVat и vat (контроль S_93) |
Полный справочник кодов для объекта Статистика показов - в разделе Формато-логический контроль.
Связка акта и креатива#
Если акт и статистика поданы раздельно, их необходимо связать: указать, какие креативы по какому изначальному договору относятся к акту.
InvoiceCreatives object
| Атрибут | Тип | Описание |
|---|---|---|
creatives | InvoiceCreativesItem[] | Список связок |
InvoiceCreativesItem object
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid) | Идентификатор связки |
invoiceId | string(uuid); required | Идентификатор акта, выданный ОРД |
contractId | string(uuid) | Идентификатор изначального договора. Обязателен, если не указан cid |
cid | string | Идентификатор изначального договора. Обязан быть null, если задан contractId |
creatives | Creatives[] | Идентификаторы креативов |
Creatives object
| Атрибут | Тип | Описание |
|---|---|---|
creativeId | string(uuid) | Идентификатор креатива. Должен быть пуст, если передан marker |
marker | string | Маркер креатива. Только в запросах POST / PUT и только если не указан creativeId |
POST /invoices/creatives - Создание связок
POST /api/v5.0/invoices/creatives
{
"creatives": [
{
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"cid": "4e5edf88-fdae-418b-9162-12c348fcca96",
"creatives": [
{ "creativeId": "bff52b20-a7a3-4cea-a516-2618b5e1e960" },
{ "creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab" }
]
}
]
}202 Accepted
{
"statuses": [
{ "id": "0c6b02d6-5056-487a-9928-79810678f67d", "state": "PENDING" }
]
}Если изначальный договор зарегистрирован в ОРД, вместо cid указывается contractId - так связка выглядит в типичном случае:
POST /api/v5.0/invoices/creatives
{
"creatives": [
{
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"creatives": [
{ "creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab" },
{ "creativeId": "bff52b20-a7a3-4cea-a516-2618b5e1e960" }
]
}
]
}Креативы можно адресовать маркерами - это удобно, когда в своей системе вы храните именно их:
POST /api/v5.0/invoices/creatives
{
"creatives": [
{
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"creatives": [
{ "marker": "2RanynT4kQm" },
{ "marker": "2Ranyn7YfuE" }
]
}
]
}PUT /invoices/creatives - Изменение связок
Принимает тот же объект InvoiceCreatives. Существующая связка опознаётся по полю id.
PUT /api/v5.0/invoices/creatives
{
"creatives": [
{
"id": "0c6b02d6-5056-487a-9928-79810678f67d",
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"creatives": [
{ "creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab" }
]
}
]
}DELETE /invoices/creatives/{id} - Удаление связки
Метод ограничен по частоте вызовов (429 при превышении).
DELETE /api/v5.0/invoices/creatives/0c6b02d6-5056-487a-9928-79810678f67d
200 OK
{
"id": "0c6b02d6-5056-487a-9928-79810678f67d",
"state": "DELETING"
}POST /invoices/creatives/invoice_items - Список связок
InvoiceCreativesItemsFilter object
| Атрибут | Тип | Описание |
|---|---|---|
id | string[] | Идентификаторы связок |
invoiceId | string | Идентификатор акта |
created, registered | string | Дата создания / регистрации |
page, limit, sorting, cursor | - | Параметры постраничного вывода |
POST /api/v5.0/invoices/creatives/invoice_items
{
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"page": 1,
"limit": 50
}200 OK
{
"data": [
{
"id": "0c6b02d6-5056-487a-9928-79810678f67d",
"invoiceId": "7a459159-c38e-4f9a-a726-d209031111cb",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"cid": null,
"creatives": [
{ "creativeId": "e524575d-6fc6-48c9-a38c-2de2d0543dab", "marker": "2RanynT4kQm" },
{ "creativeId": "bff52b20-a7a3-4cea-a516-2618b5e1e960", "marker": "2Ranyn7YfuE" }
]
}
],
"meta": { "page": 1, "limit": 50, "total": 1 }
}GET /invoices/creatives/{id}, HEAD /invoices/creatives/{id}, GET /invoices/creatives/{id}/status
Получение связки, проверка наличия и статус. В пути указывается идентификатор связки - тот, что пришёл в statuses[].id при создании.
GET /api/v5.0/invoices/creatives/0c6b02d6-5056-487a-9928-79810678f67d
HEAD /api/v5.0/invoices/creatives/0c6b02d6-5056-487a-9928-79810678f67d
GET /api/v5.0/invoices/creatives/0c6b02d6-5056-487a-9928-79810678f67d/statusОтветы: объект InvoiceCreatives с одной связкой в массиве creatives, заголовки ORD-* без тела, объект Status.
Связку можно отправлять сразу после акта, не дожидаясь его регистрации в ЕРИР: пока акт, договор и креативы не получат
APPROVED, связка полежит в очереди ожидания. Элементы товарного фида в связках передавать запрещено (контроль IC_28) - вместо них указывается контейнер фида.
Формато-логический контроль
| Атрибут | Тип контроля | Формато-логический контроль |
|---|---|---|
invoiceId | Форматный | Длина от 1 до 255, шаблон ^[-_a-zA-Z0-9]{1,255}$. Обязательно |
invoiceId | Логический | В ЕРИР должен быть зарегистрирован акт с таким id. Связка не может быть зарегистрирована или обновлена, если акт отправлен в сервис удаления |
contractId | Логический | В ЕРИР должен быть зарегистрирован договор с таким id. В разаллокации акта должен присутствовать этот идентификатор изначального договора (контроль IC_6) |
cid | Форматный | Не может быть заполнен при наличии contractId, и наоборот (контроль IC_26). Указанный cid должен быть ранее выдан |
creativeId | Логический | В ЕРИР должен быть зарегистрирован креатив с таким id. Элементы товарного фида передавать запрещено (контроль IC_28) |
Полный справочник кодов для связки акта и креатива - в разделе Формато-логический контроль.
Заявки на удаление сущностей#
Раздел описывает механизмы удаления сущностей из системы ОРД. В зависимости от типа сущности, удаление выполняется одним из двух способов:
- Через создание заявки на удаление (для организаций, площадок, договоров, креативов).
- Напрямую (для актов и статистики).
Общие принципы:
- Статус сущности: Заявка может быть создана только для сущности, находящейся в статусе
APPROVED. - Зависимости: Невозможно удалить сущность, от которой зависят другие объекты (например, контракт, по которому уже зарегистрированы креативы или акты). При попытке удаления возвращается ошибка со списком зависимых объектов. Удаление возможно только после последовательного удаления всех зависимых сущностей по цепочке снизу вверх.
- Блокировки на время согласования: Пока заявка находится на согласовании (статус
PENDING), целевая сущность и все объекты, ссылающиеся на неё, блокируются на изменение. Любая попытка регистрации или обновления заблокированной сущности возвращает ошибку с соответствующим кодом. - Ограничение частоты запросов: Метод создания заявки имеет ограничение по частоте вызовов. При превышении допустимого количества запросов API возвращает
HTTP-статус 429 Too Many Requests.
Способы удаления сущностей:
| Сущность | Метод удаления | Запрос | Примечание |
| Организация | Заявка на удаление | POST /deleting-requests | Только для сущностей в статусе APPROVED. |
| Площадка | Заявка на удаление | POST /deleting-requests | Только для сущностей в статусе APPROVED. |
| Договор | Заявка на удаление | POST /deleting-requests | Только для сущностей в статусе APPROVED. |
| Креатив | Заявка на удаление | POST /deleting-requests | Только для сущностей в статусе APPROVED. |
| Акт | Прямое обновление | PUT /invoices/{id} | Необходимо передать параметр "irRelevant": true. |
| Статистика | Прямое удаление | DELETE /creative-statistics/{id} | Выполняется напрямую, без создания заявки. |
POST /deleting-requests - Создать заявку
Тело запроса - CreateDeleteRequestRequest
| Атрибут | Тип | Описание |
|---|---|---|
id | string(uuid); required | Идентификатор удаляемой сущности в ОРД |
cause | string; required | Причина удаления. Заполняется в свободной форме, читается оператором при рассмотрении |
Ответ - CreateDeleteRequestResponse
| Атрибут | Тип | Описание |
|---|---|---|
id | string | Идентификатор заявки |
entityId | string | Идентификатор удаляемой сущности |
entityType | string | Тип сущности |
status | string | Статус заявки. Перечень значений задаётся сервисом удаления; пока заявка не обработана, сущность заблокирована на изменение |
cause | string | Причина удаления |
created | string(timestamp) | Дата и время создания заявки |
updated | string(timestamp) | Дата и время последнего изменения заявки |
errorMessage | string | Текст ошибки, если обработка заявки завершилась неуспешно |
POST /api/v5.0/deleting-requests
{
"id": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"cause": "Креатив зарегистрирован по ошибке, размещение не состоялось"
}201 Created
{
"id": "1042",
"entityId": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"entityType": "CRE",
"status": "NEW",
"cause": "Креатив зарегистрирован по ошибке, размещение не состоялось",
"created": "2026-08-07T10:15:00+03:00"
}Пример ошибки при наличии зависимых объектов:
400 Bad Request
{
"requestId": "7c1e0b2a-3f45-4d9c-8a71-0b5e6f2d4c33",
"status": 400,
"code": "precondition-failed",
"title": "failed precondition (e.g. referenced entity not found)",
"detail": "CON: entity have dependents: INV 7a459159-c38e-4f9a-a726-d209031111cb"
}Типы сущностей (entityType)
| Значение | Сущность |
|---|---|
ORG | Контрагент |
PLA | Площадка |
CON | Договор |
CRE | Креатив |
INV | Акт |
STA | Статистика креатива |
ICR | Связка акта и креатива |
GET /deleting-requests/{id} - Получить заявку
| Атрибут | Тип | Описание |
|---|---|---|
id | integer | Идентификатор заявки на удаление |
Ответ: объект GetDeleteRequestResponse - те же поля, что и у CreateDeleteRequestResponse.
GET /api/v5.0/deleting-requests/1042
200 OK
{
"id": "1042",
"entityId": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"entityType": "CRE",
"status": "APPROVED",
"cause": "Креатив зарегистрирован по ошибке, размещение не состоялось",
"created": "2026-08-07T10:15:00+03:00",
"updated": "2026-08-08T14:22:37+03:00",
"errorMessage": null
}Обратите внимание: идентификатор заявки - не UUID, а число. Он приходит в ответе на создание заявки и в списке.
POST /deleting-requests/list - Список заявок
Тело запроса - GetDeleteRequestsRequest
| Атрибут | Тип | Описание |
|---|---|---|
page | integer | Номер страницы |
limit | integer | Сколько элементов на странице |
sorting | string[] | Сортировки |
Ответ - GetDeleteRequestsResponse
| Атрибут | Тип | Описание |
|---|---|---|
data | GetDeleteRequestsResponseItem[] | Найденные заявки |
meta.total | integer | Общее количество заявок |
Обратите внимание на формат полей. В элементах списка используется
snake_case:entity_id,entity_type,error_message. В ответахPOST /deleting-requestsиGET /deleting-requests/{id}те же поля приходят вcamelCase.
POST /api/v5.0/deleting-requests/list
{ "page": 1, "limit": 50, "sorting": ["-created"] }200 OK
{
"data": [
{
"id": "1042",
"entity_id": "bff52b20-a7a3-4cea-a516-2618b5e1e960",
"entity_type": "CRE",
"status": "NEW",
"cause": "Креатив зарегистрирован по ошибке",
"created": "2026-08-07T10:15:00+03:00",
"updated": null,
"error_message": null
}
],
"meta": { "total": 1 }
}Справочник ККТУ#
ККТУ - классификатор категорий товаров и услуг. С 1 декабря 2024 года код ККТУ обязателен при регистрации креатива: он заменил использовавшиеся ранее коды ОКВЭД и указывает, к какой группе товаров или услуг относится объект рекламирования.
Справочник иерархический, коды имеют вид 1, 1.1, 1.1.2 - от широкой категории к узкой. В креативе указывается код конечного уровня.
Правила заполнения поля ktu:
- массив не может быть пустым (контроль CR_98);
- код может содержать только цифры и точку (контроль CR_95);
- код должен существовать в справочнике (контроль CR_96);
- для обычного (некобрендингового) креатива и элемента фида передаётся ровно один код; несколько кодов допустимы только для кобрендинга и контейнеров фида (контроль CR_94);
- если передан единственный код
30.15.1, полеdescriptionстановится обязательным (контроль CR_99).
GET /ktu - Получить справочник ККТУ
Возвращает справочник целиком, в виде дерева. Рекомендуется кешировать результат на своей стороне и обновлять периодически, а не запрашивать перед каждой регистрацией креатива.
Ответ - KtuListResponse
| Атрибут | Тип | Описание |
|---|---|---|
data | KtuNode[] | Корневые узлы справочника |
KtuNode
| Атрибут | Тип | Описание |
|---|---|---|
value | string | Код ККТУ |
title | string | Наименование категории |
children | KtuNode[] | Вложенные категории. Отсутствует у листовых узлов |
GET /api/v5.0/ktu
200 OK
{
"data": [
{
"value": "1",
"title": "Одежда, обувь и аксессуары",
"children": [
{
"value": "1.1",
"title": "Одежда",
"children": [
{ "value": "1.1.2", "title": "Верхняя одежда" }
]
},
{
"value": "1.2",
"title": "Обувь",
"children": [
{ "value": "1.2.1", "title": "Спортивная обувь" }
]
}
]
}
]
}Пакетная загрузка#
Назначение
Пакетная загрузка (или Массовые загрузки в ЛК) принимает большой объём данных одним файлом, без поштучных вызовов API. Формат - та же таблица, которую вы загружаете через личный кабинет: CSV, XLSX или XLS.
Типовые случаи применения:
- первичная миграция данных при подключении к ОРД;
- ежемесячная загрузка статистики, когда её удобнее выгрузить из своей системы в таблицу, чем передавать через REST;
- загрузка справочных сущностей (контрагентов, площадок) силами бухгалтерии без участия разработчиков.
Обработка асинхронная: загрузка файла возвращает идентификатор задания, дальше нужно опрашивать статус и, по завершении, скачать отчёт с результатами построчной обработки.
Эти методы не описаны в Swagger-спецификации, но доступны в API v5.0 по базовому пути
/api/v5.0/batch.
POST /batch/registration - Загрузить файл
Content-Type: multipart/form-data
| Поле формы | Тип | Описание |
|---|---|---|
batch | file; required | Файл в формате CSV, XLSX или XLS. Формат определяется по содержимому файла, а не по расширению |
entityType | string; required | Тип загружаемой сущности |
Значения entityType
Поддерживаются те же типы сущностей, для которых в личном кабинете публикуются шаблоны файлов:
| Значение | Сущность |
|---|---|
organization | Контрагенты |
platform | Площадки |
contract | Договоры |
creative | Креативы |
invoice | Акты |
statistic | Статистика креативов |
Значение
entityTypeпроверяется сервисом пакетной обработки, а не самим API. Актуальный перечень и структура колонок для каждого типа приведены в шаблонах файлов в личном кабинете ОРД.
Пример запроса
curl -X POST 'https://api.ord-lab.ru/api/v5.0/batch/registration' \
-H 'Authorization: Bearer <token>' \
-F 'entityType=creative' \
-F 'batch=@creatives-2026-07.xlsx'Пример ответа
200 OK
{ "id": "b5f1d20c-9a3e-4f77-8c21-7e6a1d5b9033" }Возвращённый id - идентификатор задания. По нему отслеживается ход обработки.
Ошибки
| Ситуация | Ответ |
|---|---|
| Файл не передан или пуст | 400, detail: empty file |
Не указан entityType | 400, detail: empty entity type |
| Формат файла не CSV / XLSX / XLS | 400, detail: unsupported file format |
| Размер файла превышает лимит | 413 Payload Too Large |
POST /batch/list - Список заданий и их статусы
Тело запроса - фильтр
| Атрибут | Тип | Описание |
|---|---|---|
id | string | Идентификатор задания |
type | string | Тип сущности (см. entityType) |
status | string | Статус задания |
createDate | string | Дата создания |
createdFrom, createdTo | string | Диапазон дат создания |
endDate | string | Дата завершения |
estimateDate | string | Расчётная дата завершения |
page, limit, sorting | - | Параметры постраничного вывода |
Ответ
| Атрибут | Тип | Описание |
|---|---|---|
data | batchReport[] | Список заданий |
meta | - | Постраничный вывод |
Элемент списка
| Атрибут | Тип | Описание |
|---|---|---|
id | string | Идентификатор задания |
url | string | Ссылка на отчёт о результатах обработки |
status | string | Статус обработки. Перечень значений задаётся сервисом пакетной обработки; ориентируйтесь на пару total / processed и на непустой endDate как признак завершения |
type | string | Тип сущности |
createDate | string | Дата и время постановки задания |
estimateDate | string | Расчётная дата и время завершения |
endDate | string | Фактическая дата и время завершения |
total | uint64 | Всего строк в файле |
processed | uint64 | Обработано строк |
POST /api/v5.0/batch/list
{ "type": "creative", "page": 1, "limit": 20, "sorting": ["-createDate"] }200 OK
{
"data": [
{
"id": "b5f1d20c-9a3e-4f77-8c21-7e6a1d5b9033",
"url": "https://storage.ord-lab.ru/reports/b5f1d20c.xlsx",
"status": "DONE",
"type": "creative",
"createDate": "2026-08-07T10:00:00+03:00",
"estimateDate": "2026-08-07T10:12:00+03:00",
"endDate": "2026-08-07T10:09:41+03:00",
"total": 1500,
"processed": 1500
}
],
"meta": { "page": 1, "limit": 20, "total": 1 }
}Пара total / processed позволяет показывать прогресс обработки.
GET /batch/download_report/{id} - Ссылка на отчёт
| Атрибут | Тип | Описание |
|---|---|---|
id | string | Идентификатор задания |
Возвращает подписанную ссылку на файл отчёта. Отчёт повторяет структуру исходного файла и дополняет каждую строку результатом: идентификатором созданной сущности либо текстом ошибки.
200 OK
{ "data": "https://storage.ord-lab.ru/reports/b5f1d20c.xlsx?signature=..." }Рекомендуемый порядок работы
POST /batch/registration- загрузить файл, получитьid.- Периодически (например, раз в минуту) вызывать
POST /batch/listс фильтром по этомуidи смотретьstatus,total,processed. - По завершении -
GET /batch/download_report/{id}, скачать отчёт по полученной ссылке. - Разобрать отчёт: строки с ошибками исправить и загрузить повторно отдельным файлом.
Шаблоны файлов для каждого типа сущности доступны в личном кабинете ОРД - они содержат корректные заголовки колонок и примеры заполнения.
Сценарии: посреднические акты#
Кто такой посредник и почему для него отдельные акты
Посредник (агент, комиссионер, поверенный) - участник цепочки, который заключает договоры и покупает размещение не от своего имени и не за свой счёт, а по поручению принципала. Его собственный доход - не вся сумма договора, а только вознаграждение.
Из этого следует, что в отчётности нужно разделять два денежных потока:
- суммы за услуги - деньги, которые прошли через посредника к рекламораспространителю;
- вознаграждение посредника - то, что посредник оставил себе.
Договор посредника регистрируется с типом intermediary-contract. По такому договору можно подавать акты только двух типов: intermediary-report (отчёт посредника) и commission-invoice (акт на вознаграждение) - контроль I_126.
Две схемы отчётности по вознаграждению
Схема А: вознаграждение внутри отчёта посредника
Классический вариант, работавший и в v4. Отчёт посредника содержит и суммы за услуги, и вознаграждение.
POST /api/v5.0/invoices
{
"type": "intermediary-report",
"contractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f",
"number": "IR-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "psr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
},
"commission": {
"isInvoice": false,
"excludingVat": 8196.72,
"vatRate": 22.00,
"vat": 1803.28,
"includingVat": 10000.00
}
},
"items": [
{
"contractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
}
]
}Здесь amount.commission.isInvoice = false (или поле не передано вовсе) - значит суммы вознаграждения обязаны быть заполнены в этом же акте (контроли I_199, I_201, I_203, I_205).
Схема Б: вознаграждение отдельным актом - новое в v5.0
Если посредник выставляет на вознаграждение отдельный первичный документ, в v5.0 это отражается двумя связанными актами.
Шаг 1. Отчёт посредника с признаком isInvoice = true. Суммы вознаграждения в нём не передаются - они будут в отдельном акте (контроли I_200, I_202, I_204, I_206).
POST /api/v5.0/invoices
{
"type": "intermediary-report",
"contractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f",
"number": "IR-2026-07",
"date": "2026-08-05",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "psr",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"services": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
},
"commission": {
"isInvoice": true
}
},
"items": [
{
"contractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f",
"isSocial": false,
"isSocialQuota": false,
"amount": {
"excludingVat": 81967.21,
"vatRate": 22.00,
"vat": 18032.79,
"includingVat": 100000.00
}
}
]
}202 Accepted
{
"id": "b5df28a6-c5da-4474-9e38-166ffb4e3f2c",
"state": "ACCEPTED"
}Шаг 2. Акт на вознаграждение commission-invoice. Он ссылается на один или несколько отчётов посредника через amount.services.intermediaryReportIdList.
POST /api/v5.0/invoices
{
"type": "commission-invoice",
"contractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f",
"number": "CI-2026-07",
"date": "2026-08-06",
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"clientRole": "rd",
"contractorRole": "psr",
"amount": {
"services": {
"intermediaryReportIdList": [
"b5df28a6-c5da-4474-9e38-166ffb4e3f2c"
]
},
"commission": {
"excludingVat": 8196.72,
"vatRate": 22.00,
"vat": 1803.28,
"includingVat": 10000.00
}
}
}202 Accepted
{
"id": "500fa05e-a62f-4e85-895f-ea976fbccf3f",
"state": "ACCEPTED"
}Один акт на вознаграждение может закрывать несколько отчётов сразу - например, помесячные отчёты за квартал:
POST /api/v5.0/invoices
{
"type": "commission-invoice",
"contractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f",
"number": "CI-2026-Q3",
"date": "2026-10-05",
"startDate": "2026-07-01",
"endDate": "2026-09-30",
"clientRole": "rd",
"contractorRole": "psr",
"amount": {
"services": {
"intermediaryReportIdList": [
"b5df28a6-c5da-4474-9e38-166ffb4e3f2c",
"d2b47e91-8c05-4a63-b7f1-3e6905ca2b84",
"a7f39d02-64b1-4c8e-8f52-9b0d1e2c3a44"
]
},
"commission": {
"excludingVat": 24590.16,
"vatRate": 22.00,
"vat": 5409.84,
"includingVat": 30000.00
}
}
}Что вернётся, если отчёт ещё не зарегистрирован в ЕРИР
400 Bad Request
{
"requestId": "3a91c74e-5b02-4f8d-9c16-7d4e2b8a0f53",
"status": 400,
"code": "parameter-error",
"title": "invalid parameter value",
"detail": "I_190: Идентификатор акта с типом \"Отчет посредника\" (intermediaryReportIdList) не зарегистрирован в ЕРИР"
}Что запрещено в акте commission-invoice
| Поле | Контроль | Причина |
|---|---|---|
items | I_207 | Разаллокация по изначальным договорам относится к услугам, а не к вознаграждению |
amount.services.excludingVat | I_192 | В акте на вознаграждение нет суммы за услуги |
amount.services.vatRate | I_193 | То же |
amount.services.vat | I_195 | То же |
amount.services.includingVat | I_197 | То же |
amount.commission.isInvoice | I_198 | Признак имеет смысл только в отчёте посредника |
При этом amount.commission.excludingVat, vatRate, vat, includingVat - обязательны, а amount.services.intermediaryReportIdList не может быть пустым или отсутствовать (контроли I_185, I_186).
Проверки списка intermediaryReportIdList
| Контроль | Проверка |
|---|---|
| I_185 | Массив обязателен для типа commission-invoice |
| I_186 | Если массив передан, он не может быть пустым |
| I_187 | Массив запрещён для типов invoice и intermediary-report |
| I_188 | Каждый элемент - корректный UUID |
| I_189 | Дубликаты в массиве запрещены |
| I_190 | Каждый акт из списка должен быть зарегистрирован в ЕРИР |
| I_208 | У каждого акта из списка contractId должен совпадать с contractId акта на вознаграждение |
| I_231 | У каждого акта из списка признак amount.commission.isInvoice должен быть равен true |
Отправлять акт на вознаграждение сразу вслед за отчётом можно: пока отчёты из intermediaryReportIdList не зарегистрированы в ЕРИР, акт полежит в очереди ожидания и уйдёт следом за ними. Ошибку I_190 вы увидите, только если сослались на отчёт, которого в ОРД нет вовсе, либо если он был отклонён.
Как выбрать схему
| Ситуация | Схема |
|---|---|
| Посредник включает вознаграждение в тот же отчёт | А: isInvoice = false или поле не передаётся |
| Посредник выставляет на вознаграждение отдельный документ | Б: isInvoice = true + отдельный commission-invoice |
| Один акт на вознаграждение закрывает несколько отчётов за период | Б, в intermediaryReportIdList перечисляются все отчёты |
Схема Б выбирается один раз для конкретного отчёта: изменить isInvoice после того, как на отчёт уже сослался акт на вознаграждение, не получится - сработает контроль I_231.
Цепочка договоров: rrOrderContractIdList
Отдельный механизм - поле rrOrderContractIdList в акте. Оно нужно, когда договор оказания услуг был заключён по поручению посредника, действующего в интересах рекламораспространителя.
Смысл: ЕРИР должен видеть, что этот акт - часть цепочки, начинающейся с посреднического договора. Поле содержит идентификаторы посреднических договоров.
Где допустимо (контроль I_212):
- в акте типа
invoice; - в акте типа
intermediary-report, если договор акта имеет признакagentActingForPublisher = true.
Проверки элементов списка:
| Контроль | Проверка |
|---|---|
| I_209 | Если массив передан, он не может быть пустым |
| I_210 | Каждый элемент - корректный идентификатор договора |
| I_211 | Дубликаты в массиве запрещены |
| I_213 | Для типа invoice: исполнитель по договору акта должен совпадать с исполнителем по посредническому договору |
| I_214 | Для типа intermediary-report: заказчик по договору акта должен совпадать с исполнителем по посредническому договору |
| I_215 | Каждый договор из списка должен быть зарегистрирован в ЕРИР, иметь тип intermediary-contract и признак agentActingForPublisher = true |
| I_216 | Запрещено, если в посредническом договоре заказчик - иностранное лицо |
Отличие от v4. До версии v4.5 передавался единственный идентификатор в поле
rrOrderContractId(строка). Начиная с v4.5 и в v5.0 используется массивrrOrderContractIdList. Старое поле удалено.
{
"type": "invoice",
"contractId": "18abd2e0-7a4b-49cf-a287-f401fe98e192",
"rrOrderContractIdList": [
"bd1a457f-8005-47f4-9659-ed4ada3a507f"
],
"...": "остальные поля акта"
}Социальная реклама в актах
Признаки isSocial и isSocialQuota передаются только парой - и на уровне акта, и на уровне каждого элемента items (контроли I_181-I_184). Передача одного без другого приводит к ошибке.
| Комбинация | Смысл |
|---|---|
isSocial = false, isSocialQuota = false | Обычная коммерческая реклама |
isSocial = true, isSocialQuota = false | Социальная реклама, размещена на коммерческой основе |
isSocial = true, isSocialQuota = true | Социальная реклама, размещённая в счёт обязательной 5-процентной квоты |
Ставки НДС на стыке 2025 и 2026 годов
С 1 января 2026 года основная ставка НДС в России повышена с 20 % до 22 % (Федеральный закон № 425-ФЗ). Поскольку акты за декабрь 2025 года подаются в январе 2026-го, ОРД проверяет соответствие ставки не только дате акта, но и периоду оказания услуг.
Допустимые значения vatRate: 0, 5, 7, 10, 20, 22, 100 (значение 100 означает "Без НДС").
| Условие | Ставка |
|---|---|
Дата акта (date) < 01.01.2026 | 22 % запрещена (контроли I_217, I_220, I_223) |
| Дата акта 01.01.2026 и позже, период оказания услуг раньше 2026 года | 22 % запрещена (контроли I_218, I_221, I_224) |
| Дата акта 01.01.2026 и позже, период оказания услуг 2026 год и позже | 20 % запрещена (контроли I_219, I_222, I_225) |
Аналогичное правило действует для статистики: ставка привязана к дате начала показов по акту dateStartPlan (контроли S_102, S_103).
Проверки применяются независимо к трём блокам сумм: amount.services, amount.commission и items[].amount. Дополнительно контроли I_228 и I_229 требуют, чтобы ставка НДС в детализации совпадала со ставкой в сумме акта - для типа invoice всегда, для intermediary-report при agentActingForPublisher = true.
Формато-логический контроль#
Как работают проверки
Данные проходят два рубежа контроля.
На стороне ОРД. Часть проверок выполняется до отправки в ЕРИР - при обработке вашего запроса. Такой запрос отклоняется сразу, с кодом 400 и текстом контроля в поле detail:
{
"requestId": "0e29c0f6-6d5e-4a30-9f5a-2f4d2b2a1f77",
"status": 400,
"code": "parameter-error",
"title": "invalid parameter value",
"detail": "C_60: Сумма договора не может быть равна 0, так как тип договора равен intermediary-contract (посреднический договор)"
}На стороне ЕРИР. Остальные проверки выполняются уже после того, как ОРД принял объект. Запрос при этом завершается успешно (201 или 202), но объект переходит в статус DECLINED, а текст нарушения приходит в поле erirError объекта Status и в заголовке ORD-ERIR-Error. Именно поэтому недостаточно проверить код ответа - нужно дождаться финального статуса.
По характеру проверки делятся на форматные (длина, шаблон, формат даты, число знаков после запятой, допустимые значения перечислений) и логические (согласованность с уже зарегистрированными данными: существует ли договор, совпадают ли стороны, не отправлена ли сущность на удаление).
Префикс кода указывает на сущность:
| Префикс | Сущность |
|---|---|
GV_ | Общие проверки, применимые к любой сущности |
O_ | Контрагент |
P_ | Площадка |
C_ | Договор |
CR_ | Креатив |
I_ | Акт |
IC_ | Связка акта и креатива |
S_ | Статистика креатива |
Правила по атрибутам конкретной сущности приведены в конце её раздела. Здесь - сводный справочник всех кодов.
Фигурные скобки в текстах ошибок ({id}, {contractId}) - подстановка конкретного значения из вашего запроса.
Все тексты приведены к полям и методам API ОРД: сверяться с формулировками ЕРИР не нужно. Проверки по служебным атрибутам, которые ОРД добавляет к объекту сам, в справочник не включены - своим запросом такую ошибку вызвать нельзя.
Коды, действовавшие в прежних версиях и отменённые (I_152-I_156, I_158, I_160, I_161, I_178-I_180, C_35), перечислены в разделе "Миграция с v4 на v5" - на том шаге, где они были удалены.
Справочник кодов
Общие проверки
| Код | Поле | Текст ошибки |
|---|---|---|
| GV_1 | - | Переданное значение в поле не соответствует типу данных |
| GV_2 | - | Поле не распознано |
| GV_3 | - | Не заполнено обязательное поле |
| GV_4 | - | Не передан обязательный массив |
Контрагенты
| Код | Поле | Текст ошибки |
|---|---|---|
| GV_3 | id, type, isOrs, isRr | Не заполнено обязательное поле |
| O_1 | id | Поле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым |
| O_3 | type | Неверное значение для типа контрагента (type). Допустимые значения fl/ip/ul/ffl/ful |
| O_10 | inn | Не пройдена проверка ИНН на контрольное число для ФЛ/ИП/ЮЛ (inn) |
| O_13 | inn | Не заполнено поле "ИНН" (inn) для типа контрагента ФЛ/ИП/ЮЛ |
| O_14 | name | Неверный формат данных для наименования контрагента (name) |
| O_16 | mobilePhone | Неверный формат данных для абонентского номера мобильного телефона (mobilePhone) |
| O_18 | mobilePhone, epayNumber | Для иностранного физического лица (type = ffl) одно из полей должно быть заполнено: mobilePhone, epayNumber |
| O_19 | epayNumber | Неверный формат данных для номера электронного средства платежа (epayNumber) |
| O_21 | regNumber | Неверный формат данных для регистрационного номера либо его аналога (regNumber) |
| O_22 | regNumber, alternativeInn | Для иностранного юридического лица (type = ful) одно из полей должно быть заполнено: regNumber, alternativeInn |
| O_23 | alternativeInn | Неверный формат данных для номера налогоплательщика либо его аналога в стране регистрации |
| O_24 | alternativeInn | Для иностранного физического лица (type = ffl) при наличии признака isOrs = true поле alternativeInn должно быть заполнено |
| O_25 | oksmNumber | Неверный формат данных для кода страны регистрации юрлица в соответствии с ОКСМ (oksmNumber) |
| O_26 | oksmNumber | Для иностранного физического лица (type = ffl) и иностранного юридического лица (type = ful) поле oksmNumber должно быть заполнено |
| O_27 | rsUrl | Неверный формат данных для сведений об ИС и (или) программе для ЭВМ (rsUrl) |
| O_28 | rsUrl | Не заполнено поле "Сведения об ИС и (или) программе для ЭВМ, которые предназначены и используются ОРС для организации распространения в сети «Интернет» рекламы" (rsUrl) |
| U_O_62 | cid | Изменение данных по контрагенту (id = {id}) запрещено, так как найден договор (id = {id}) с выданным уникальным идентификатором изначального договора (cid), где он является Заказчиком |
| U_O_63 | cid | Изменение данных по контрагенту (id = {id}) запрещено, так как найден договор (id = {id}) с выданным уникальным идентификатором изначального договора (cid), где он является Исполнителем |
| O_69 | inn, epayNumber, regNumber, alternativeInn | Поле не должно быть заполнено |
| O_70 | id | Организация не может быть зарегистрирована/обновлена, так как идентификатор организации (id = {id}) был отправлен в сервис удаления и находится на согласовании. |
| O_72 | inn | Не найден ИНН организации (inn={id}) в ЕГРЮЛ/ЕГРИП |
| O_73 | name | Не заполнено обязательное поле |
| O_74 | kpp | Поле может содержать только цифры, должно быть 9 знаков, не может быть пустым |
| O_75 | kpp | Не должно быть заполнено, так как тип контрагента не Юридическое лицо (ul) |
| O_77 | inn | Не может быть изменен ИНН контрагента (id={id}), так как в одном из договоров противоположной стороной является контрагент с таким же ИНН |
| O_79 | address | Неверный формат данных для Адреса места жительства (нахождения) контрагента (address) для типа контрагента ФЛ/ИП/ЮЛ |
| O_80 | address | Неверный формат данных для Адреса места жительства (нахождения) контрагента (address) для типа контрагента Иностранное ФЛ/ Иностранное ЮЛ |
| O_81 | mobilePhone | Не может быть обновлен контрагент (id={id}) с типом ИФЛ (ffl), так как в одном из договоров противоположной стороной является контрагент с таким же типом, ОКСМ и номером мобильного телефона. |
| O_82 | epayNumber | Не может быть обновлен контрагент (id={id}) с типом ИФЛ (ffl), так как в одном из договоров противоположной стороной является контрагент с таким же типом, ОКСМ и номером электронного средства платежа. |
| O_83 | regNumber | Не может быть обновлен контрагент (id={id}) с типом ИЮЛ (ful), так как в одном из договоров противоположной стороной является контрагент с таким же типом, ОКСМ и регистрационным номером. |
| O_84 | alternativeInn | Не может быть обновлен контрагент (id={id}) с типом ИФЛ (ffl) или ИЮЛ (ful), так как в одном из договоров противоположной стороной является контрагент с тем же типом, ОКСМ и номером налогоплательщика или его аналогом. |
Площадки
| Код | Поле | Текст ошибки |
|---|---|---|
| GV_3 | platformId, type, isOwned, name | Не заполнено обязательное поле |
| P_1 | organizationId | Поле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым |
| P_2 | organizationId | Идентификатор контрагента не зарегистрирован в ЕРИР (organizationId) |
| P_5 | platformId | Неверный формат данных для идентификатора площадки (platformId) |
| P_7 | type | Неверное значение для типа площадки (type). Допустимые значения apps/site/smarttv/hbbtv |
| P_11 | name | Неверный формат данных для наименования площадки (name) |
| P_13 | url | Неверный формат данных для URL площадки или приложения (url). Отсутствует протокол http|https |
| P_15 | isOwned | Неверное значение для признака принадлежности площадки контрагенту (isOwned). Допустимые значение false, так как не указан Идентификатор контрагента в ОРД (organizationId) |
| P_30 | organizationId | Площадка не может быть зарегистрирована/обновлена, так как идентификатор организации (organizationId={id}) был отправлен в сервис удаления и находится на согласовании |
| P_31 | platformId | Площадка не может быть зарегистрирована/обновлена, так как идентификатор площадки (platformId={id}) был отправлен в сервис удаления и находится на согласовании |
| P_33 | url | В URL площадки не указана детализация |
| P_34 | url | Не заполнено поле "URL площадки или приложения" (url) для типов площадок приложение/сайт |
Договоры
| Код | Поле | Текст ошибки |
|---|---|---|
| C_1 | id | Поле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым |
| C_3 | type | Неверное значение для типа договора (type). Допустимые значения intermediary-contract/contract/additional-agreement |
| C_04 | clientId | Неверный формат данных для идентификатора Контрагента-заказчика (clientId) |
| C_5 | clientId | Идентификатор Контрагента-заказчика не зарегистрирован в ЕРИР (clientId) |
| C_10 | contractorId | Неверный формат данных для идентификатора Контрагента-исполнителя (contractorId) |
| C_11 | contractorId | Идентификатор Контрагента-исполнителя не зарегистрирован в ЕРИР (contractorId) |
| C_16 | agentActingForPublisher | Не заполнено поле "Признак направления денежного потока в сторону принципала" (agentActingForPublisher) для посреднического договора |
| C_17 | actionType | Неверное значение для описания осуществляемых посредником-представителем действий (actionType). Допустимые значения other/distribution/conclude/commercial |
| C_19 | subjectType | Неверное значение для cведений о предмете договора (subjectType). Допустимые значения other/org-distribution/mediation/distribution/representation |
| C_21 | number | Неверный формат данных для номера договора / доп.соглашения (number) |
| C_22 | date | Неверный формат данных для даты договора / доп.соглашения (date) |
| C_23 | date | Дата договора / доп.соглашения (date) должна быть не ниже, чем 01.01.1991 |
| C_24 | date | Дата договора / доп.соглашения (date) должна быть меньше или равна текущей дате |
| C_26 | amount | Неверное значение для суммы договора / доп.соглашения (amount): допустимы нулевые значения и положительные не больше 999 999 999 999.99, а также должны иметь 2 знака после точки. |
| C_29 | contractId | Неверный формат данных для идентификатора родительского договора (contractId) |
| C_30 | contractId | Идентификатор родительского договора не зарегистрирован в ЕРИР (contractId) |
| C_31 | clientId | Идентификатор Контрагента-заказчика в ОРД (clientId) и идентификатор Контрагента-исполнителя в ОРД (contractorId) не совпадает с идентификаторами в доп. соглашении |
| C_33 | contractId | Не заполнено поле "Идентификатор родительского договора, если регистрируется доп.соглашение" (contractId) для дополнительного соглашения |
| C_34 | clientId | Идентификатор Контрагента-заказчика в ОРД (clientId) совпадает с идентификатором Контрагента-исполнителя в ОРД (contractorId) |
| U_C_48 | cid | Изменение идентификатора Контрагента-заказчика в договоре (id = {id}) запрещено, так как найден уникальный идентификатор изначального договора (cid) |
| U_C_49 | cid | Изменение идентификатора Контрагента-исполнителя в договоре (id = {id}) запрещено, так как найден уникальный идентификатор изначального договора (cid) |
| C_52 | id | Договор не может быть зарегистрирован/обновлен, так как идентификатор договора (id={id}) был отправлен в сервис удаления и находится на согласовании |
| C_53 | clientId | Договор не может быть зарегистрирован/обновлен, так как идентификатор Контрагента-заказчика (clientId={id}) был отправлен в сервис удаления и находится на согласовании |
| C_54 | contractorId | Договор не может быть зарегистрирован/обновлен, так как идентификатор Контрагента-исполнителя (contractorId={id}) был отправлен в сервис удаления и находится на согласовании |
| C_55 | contractId | Договор не может быть зарегистрирован/обновлен, так как идентификатор родительского договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании |
| C_57 | contractId | Идентификатор дополнительного соглашения "id" равен идентификатору родительского договора "contractId" |
| C_58 | contractId | В поле "contractId" не должно быть указано дополнительное соглашение (contractId={id}) |
| C_59 | id | Договор (id = {id}) не может быть дополнительным соглашением, так как на него ссылаются другие дополнительные соглашения, например, договор с id = {id}. |
| C_60 | amount | Сумма договора не может быть равна 0, так как тип договора равен intermediary-contract (посреднический договор) |
| C_61 | endDate | Неверный формат данных для даты окончания срока действия договора (endDate) |
| C_62 | date | Дата в endDate должна быть позже, либо равна дате договора (date) |
| C_63 | amount | Сумма доп.соглашения не может быть равна 0, так как родительский договор с типом intermediary-contract |
| C_64 | contractId | Поле не должно передаваться, так как регистрируется договор с типом "intermediary-contract" или "contract" |
| C_65 | agentActingForPublisher | Поле должно передаваться только в типе договора "Посреднический договор" и Признаке направления денежного потока в сторону принципала (agentActingForPublisher) равным false. |
| C_68 | contractorId | Поле isChargePaidByAgent может содержать только значение false, так как исполнитель по договору (contractorId) является иностранным лицом. |
| C_87 | type | Запрещается изменять тип договора, так как последнее изменение типа договора было зарегистрировано в текущем месяце |
| C_88 | clientId | Запрещается изменять контрагента-заказчика, так как последнее изменение контрагента-заказчика договора было зарегистрировано в текущем месяце |
| C_89 | contractorId | Запрещается изменять контрагента-исполнителя, так как последнее изменение контрагента-исполнителя договора было зарегистрировано в текущем месяце |
| C_90 | mobilePhone | Договор не может быть зарегистрирован/обновлен, так как Заказчик и Исполнитель либо лица РФ, которые имеют один и тот же ИНН, либо иностраннные лица, у которых указана одинаковая информация в полях "Абонентский номер мобильного телефона" (mobilePhone), "Номер электронного средства платежа" (epayNumber), "Регистрационный номер либо его аналог" (regNumber), "Номер налогоплательщика либо его аналог в стране регистрации" (alternativeInn). |
| GV_1 | isChargePaidByAgent | Переданное значение в поле не соответствует типу данных |
| GV_3 | id, type, clientId, contractorId | Не заполнено обязательное поле |
Креативы
| Код | Поле | Текст ошибки |
|---|---|---|
| CR_1 | id | Поле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым |
| CR_3 | contractId | Неверный формат данных для идентификатора изначального договора/доп.соглашения (contractId={id}) |
| CR_4 | contractId | Идентификатор изначального договора/доп.соглашения не зарегистрирован в ЕРИР (contractId={id}) |
| CR_6 | description | Неверный формат данных для общего описания объекта рекламирования (description) |
| CR_10 | form | Неверное значение для формы распространения рекламы (form). Допустимые значения video/text-graphic-block/text-block/live-video/live-audio/banner/audio-rec/text-video-block/text-graphic-video-block/text-audio-block/text-graphic-audio-block/text-audio-video-block/text-graphic-audio-video-block/banner-html5 |
| CR_11 | form | Не заполнено обязательное поле "Форма распространения рекламы" (form) для креатива и контейнера товарного фида |
| CR_13 | isSocial | Не заполнено обязательное поле "Признак социальной рекламы" (isSocial) для креатива и контейнера товарного фида |
| CR_20 | url | Неверный формат данных для целевой ссылки (url). |
| CR_21 | type | Неверное значение для типа целевой аудитории рекламы (type). Допустимые значения geo/sex/age |
| CR_22 | targetAudience | Неверный формат данных для значения целевой аудитории рекламы (targetAudience) |
| CR_23 | textData | Неверный формат данных для текстовых данных креатива (textData) |
| CR_24 | textData | Сумма всех текстовых данных превышает 65 000 символов |
| CR_26 | mediaUrl | Неверный формат данных для ссылки на образец (mediaUrl). Отсутствует протокол http|https |
| CR_29 | - | Неверный тип объекта. Тип задаётся методом: /creatives - креатив, /creatives/feeds/element - элемент товарного фида, /creatives/feeds/container - контейнер товарного фида |
| CR_30 | feedId | Не найден элемент товарного фида с таким же feedId |
| CR_32 | feedId | Неверный формат данных для идентификатора товарного фида (feedId) |
| CR_33 | feedId | Поле "Идентификатор товарного фида" нельзя передавать в креативе |
| CR_34 | contractId | Поле "Изначальный договор/доп.соглашение" нельзя передавать в элементе товарного фида |
| CR_35 | selfPromotionOrganizationId | Неверный формат данных для идентификатора контрагента, которому принадлежит саморекламный креатив (selfPromotionOrganizationId) |
| CR_36 | selfPromotionOrganizationId | Поле "Идентификатор контрагента, которому принадлежит саморекламный креатив" нельзя передавать в элементе товарного фида |
| CR_38 | form | Поле "Форма распространения рекламы" нельзя передавать в элементе товарного фида |
| CR_39 | isSocial | Поле "Признак социальной рекламы" нельзя передавать в элементе товарного фида |
| CR_42 | url | Поле "Целевая ссылка" нельзя передавать в контейнере товарного фида |
| CR_43 | targetAudience | Поле "Параметры целевой аудитории рекламы" нельзя передавать в элементе товарного фида |
| CR_44 | creativeData | Поле "Медиаданные креатива" нельзя передавать в контейнере товарного фида |
| CR_47 | textData, mediaUrl | Только одно из следующих полей может быть заполнено и оба не могут быть пустыми: mediaUrl, textData |
| CR_60 | contractId | Должно быть заполнено или "Изначальный договор" (contractId), или "Уникальный идентификатор изначального договора" (cid) |
| CR_63 | cid | Не найден уникальный идентификатор изначального договора (cid) |
| CR_64 | contractId | Должно быть заполнено одно из полей "Идентификатор контрагента, которому принадлежит саморекламный креатив" (selfPromotionOrganizationId - только для креативов саморекламы), или "Изначальный договор/доп.соглашение" (contractId), или "Уникальный идентификатор изначального договора" (cid) |
| CR_65 | cid | Поле "Уникальный идентификатор изначального договора" нельзя передавать в элементе товарного фида |
| CR_67 | marker | Неверный формат данных для токена креатива (marker={id}) |
| CR_68 | marker | Идентификатор креатива = {id}, полученный из marker, не совпадает с идентификатором креатива (id= {id}) |
| CR_69 | marker | Не заполнено обязательное поле "Токен креатива" (marker) для креатива и контейнера товарного фида |
| CR_72 | selfPromotionOrganizationId | Идентификатор Контрагента, указанный в креативе саморекламы, не зарегистрирован в ЕРИР (selfPromotionOrganizationId={id}) |
| CR_73 | ktu | Массив идентификаторов изначальных договров должен содержать один элемент, так как креатив не кобрендинговый |
| CR_74 | contractId | Массив уникальных идентификаторов изначальных договров должен содержать один элемент, так как креатив не кобрендинговый |
| CR_75 | id | Креатив не может быть зарегистрирован/обновлен, так как идентификатор креатива (id={id}) был отправлен в сервис удаления и находится на согласовании |
| CR_76 | contractId | Креатив не может быть зарегистрирован/обновлен, так как идентификатор договора (contractId={id}) был отправлен на удаление |
| CR_77 | selfPromotionOrganizationId | Креатив не может быть зарегистрирован/обновлен, так как идентификатор организации (selfPromotionOrganizationId={id}) был отправлен в сервис удаления и находится на согласовании |
| CR_79 | geo | Неверное значение для типа целевой аудитории рекламы "geo" |
| CR_81 | mediaUrlFileType | Неверное значение типа файла (mediaUrlFileType). Допустимые значения image/video/audio/zip/other |
| CR_82 | mediaUrlFileType | Поле не должно быть заполнено, так как отсутствует mediaUrl |
| CR_83 | creativeData | Не передано обязательное поле "creativeData" для креатива и элемента товарного фида |
| CR_84 | creativeData | Недопустимо передавать пустой массив "creativeData" для креатива и элемента товарного фида |
| CR_85 | creativeData | В массиве "creativeData" отсутствует хотя бы один элемент с текстовыми данными креатива ("textData"), так как форма креатива form={form} |
| CR_86 | creativeData | В массиве "creativeData" отсутствует хотя бы один элемент с ссылкой на образец креатива ("mediaUrl"), так как форма креатива form={form} |
| CR_89 | mediaUrlFileType | Поле должно быть заполнено, так как передано значение в mediaUrl |
| CR_91 | mediaUrlFileType | Неверное значение типа файла (mediaUrlFileType) для формы распространения креатива form={form} |
| CR_92 | targetAudience | В массиве "targetAudience" не может быть несколько элементов с одинаковым значением в поле "targetAudience" |
| CR_94 | ktu | Массив должен содержать один элемент, так как креатив не кобрендинговый, и это не контейнер товарного фида |
| CR_95 | ktu | Неверный формат данных для кода ККТУ (ktu). Поле может содержать только цифры и символ '.' и не может быть пустым |
| CR_96 | ktu | Не найден код в справочнике ККТУ |
| CR_97 | ktu | Не передан обязательный массив "ktu" для креатива и контейнера товарного фида |
| CR_98 | ktu | Недопустимо передавать пустой массив "ktu" |
| CR_99 | ktu | Не заполнено обязательное поле "Общее описание объекта рекламирования", так как передан код ККТУ (ktu) равным "30.15.1" или в элементе товарного фида не передан код ККТУ (ktu) |
| CR_100 | isSocialQuota | Не заполнено обязательное поле "Признак социальной рекламы по квоте" (isSocialQuota) для креатива и контейнера товарного фида |
| CR_101 | isSocialQuota | Поле "Признак социальной рекламы по квоте" нельзя передавать в элементе товарного фида |
| CR_102 | feedId | Поле должно передаваться для элемента и контейнера товарного фида |
| GV_3 | id, type | Не заполнено обязательное поле |
| GV_4 | targetAudience | Не передан обязательный массив |
Акты
| Код | Поле | Текст ошибки |
|---|---|---|
| GV_1 | irRelevant, isSocial, isSocialQuota, isInvoice | Переданное значение в поле не соответствует типу данных |
| GV_3 | id, contractId, clientRole, contractorRole | Не заполнено обязательное поле |
| I_1 | id | Поле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым |
| I_3 | contractId | Неверный формат данных для идентификатора договора (contractId) |
| I_4 | contractId | Идентификатор договора не зарегистрирован в ЕРИР (contractId) |
| I_8 | clientRole | Неверное значение для роли заказчика в акте (clientRole). Допустимые значения ra/rr/ors/rd/psr |
| I_9 | clientRole | Неверно указана роль исполнителя для заказчика с ролью РД. Должна быть РА/ОРС/РР/Посредник |
| I_10 | clientRole | Неверно указана роль исполнителя для заказчика с ролью РА. Должна быть РА/ОРС/РР/Посредник |
| I_11 | clientRole | Неверно указана роль исполнителя для заказчика с ролью ОРС. Должна быть РА/ОРС/РР/Посредник |
| I_12 | clientRole | Заказчик не может быть в роли РР |
| I_13 | clientRole | Неверно указана роль исполнителя для заказчика с ролью РР. Должна быть РА, Посредник или ОРС |
| I_16 | contractorRole | Неверное значение для роли исполнителя в акте (contractorRole). Допустимые значения ra/rr/ors/psr |
| I_18 | date | Неверный формат данных для даты акта (date) |
| I_19 | date | Дата акта (date) должна быть не ниже, чем 01.01.1991 |
| I_20 | date | Дата акта (date) должна быть меньше или равна текущей дате |
| I_22 | startDate | Неверный формат данных для даты начала периода (startDate) |
| I_23 | startDate | Дата начала периода (startDate) должна быть не ниже, чем 01.01.1991 |
| I_24 | startDate | Дата начала периода (startDate) должна быть меньше или равна текущей дате |
| I_27 | endDate | Неверный формат данных для даты окончания периода (endDate) |
| I_28 | endDate | Дата окончания периода (endDate) должна быть не ниже, чем 01.01.1991 |
| I_29 | endDate | Дата окончания периода (endDate) должна быть больше или равна, чем дата начала периода (startDate) |
| I_30 | endDate | Поле endDate не должно содержать дату позже 2100-12-31 |
| I_36 | number | Неверный формат данных для номера акта (number) |
| I_39 | contractId | Неверный формат данных для идентификатора изначального договора / доп.соглашения в детализации акта (contractId) |
| I_40 | contractId | Идентификатор изначального договора / доп.соглашения, указанный в детализации акта, не зарегистрирован в ЕРИР (contractId) |
| I_41 | contractId | Не заполнено обязательное поле "Идентификатор изначального договора / доп.соглашения в ОРД" в детализации акта (contractId) |
| I_82 | items | Неверное количество объектов разаллокации (items). Допустим только один объект, так как Роль заказчика в акте = Рекламодатель (clientRole=rd) |
| I_89 | description | Неверный формат данных для сведений о выявленных несоответствиях в предоставленной (description) |
| I_91 | contractId | Неверное значение для поля "Идентификатор изначального договора / доп.соглашения в ОРД" в детализации акта (contractId). Если передается Роль заказчика в акте = Рекламодатель (clientRole=rd), то contractId (договор акта) должен быть равен items.contractId (изначальный договор) или contractId должен являться дополнительным соглашением к items.contractId. |
| I_93 | contractId | В разаллокации акта дублируется "Идентификатор изначального договора / доп.соглашения в ОРД" (contractId) |
| I_94 | items | Неверное значение для массива "Детализация акта по атрибутам изначального договора" (items). Необходимо передать значения в массиве или исключить |
| I_107 | contractId | Неверное значение для идентификатора изначального договора / доп.соглашения в ОРД в детализации акта (contractId). Должно быть пустое, так как указан "Уникальный идентификатор изначального договора" в детализации акта (cid) |
| I_110 | cid | Не найден уникальный идентификатор изначального договора в детализации акта (cid) |
| I_111 | cid | Не заполнено обязательное поле "Уникальный идентификатор изначального договора" в детализации акта (cid) |
| I_112 | cid | В разаллокации акта дублируется "Уникальный идентификатор изначального договора " (cid) |
| I_115 | contractId | Акт не может быть зарегистрирован/обновлен, так как идентификатор договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании |
| I_116 | contractId | Акт не может быть зарегистрирован/обновлен, так как идентификатор изначального договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании |
| I_118 | id | Акт не может быть зарегистрирован/обновлен, так как идентификатор акта (id={id}) был отправлен в сервис удаления и находится на согласовании |
| I_120 | clientRole | Неверно указана роль исполнителя или заказчика. Должна быть не равна РД |
| I_121 | contractorRole | Неверно указана роль исполнителя. Должна быть РА, Посредник или ОРС |
| I_123 | id | Акт не может быть изменен, так как идентификатор акта (id={id}) используется в подписанных расчетах отчислений |
| I_124 | type | Неверное значение для типа акта (type). Допустимые значения invoice/intermediary-report/commission-invoice |
| I_125 | type | Неверный тип акта. Должен быть "Акт выполненных работ" (invoice), так как договор акта имеет тип "Договор оказания услуг" (contract) или акт регистрируется к "Дополнительному соглашению" (additional-agreement), у которого родительский договор с типом "Договор оказания услуг" (contract) |
| I_126 | type | Неверный тип акта. Должен быть "Отчет посредника" (intermediary-report) или "Акт на вознаграждение посредника" (commission-invoice), так как договор акта имеет тип "Посреднический договор" (intermediary-contract) или акт регистрируется к "Дополнительному соглашению" (additional-agreement), у которого родительский договор с типом "Посреднический договор" (intermediary-contract). |
| I_127 | excludingVat | Неверное значение для суммы акта/отчета без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00, а также должны иметь 2 знака после точки. |
| I_128 | excludingVat | Неверное значение поля amount: Значение поля excludingVat акта не должно быть меньше суммы значений поля excludingVat в items минус (количество items, умноженное на 0,01) |
| I_129 | includingVat | Сумма акта/отчета, включая НДС, должна быть больше нуля, так как сумма в договоре или дополнительном соглашении больше нуля или не указана |
| I_130 | includingVat | Сумма акта/отчета, включая НДС, должна быть больше нуля |
| I_132 | vat | Неверное значение для суммы НДС в акте/отчете (vat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки. |
| I_134 | includingVat | Неверное значение для суммы акт/отчета, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки. |
| I_135 | includingVat | "Сумма акта/отчета, включая НДС", не равна сумме полей "Сумма акта/отчета без учета НДС" и "Сумма НДС в акте/отчете" |
| I_136 | type | Должно быть заполнено, так как тип акта (type) равен intermediary-report или commission-invoice |
| I_137 | commission | Неверное значение для "Детализация суммы акта, если отчет включает вознаграждение посредника или составлен отдельный акт на вознаграждение посредника" (commission). Необходимо передать значения или исключить |
| I_138 | includingVat | Не должно передаваться, так как тип акта не равен intermediary-report или commission-invoice |
| I_139 | excludingVat | Неверное значение для суммы вознаграждения посредника без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00, а также должны иметь 2 знака после точки. |
| I_141 | vat | Неверное значение для суммы НДС для вознаграждения посредника (vat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки. |
| I_143 | includingVat | Неверное значение для суммы вознаграждения посредника, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки. |
| I_145 | excludingVat | Неверное значение для суммы детализации без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00, а также должны иметь 2 знака после точки. |
| I_147 | vat | Неверное значение для суммы НДС в детализации (vat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки. |
| I_149 | includingVat | Неверное значение для суммы детализации, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки. |
| I_150 | includingVat | Сумма детализации, включая НДС, не равна сумме полей "Сумма детализации без учета НДС" и "Сумма НДС в детализации" |
| I_151 | includingVat | Сумма вознаграждения посредника, включая НДС, не равна сумме полей "Сумма вознаграждения посредника без учета НДС" и "Сумма НДС для вознаграждения посредника" |
| I_162 | contractId | Акт не может быть зарегистрирован, так как в договоре (contractId={id}) Заказчик и Исполнитель либо лица РФ, которые имеют один и тот же ИНН, либо иностраннные лица, у которых указана одинаковая информация в полях "Абонентский номер мобильного телефона" (mobilePhone), "Номер электронного средства платежа" (epayNumber), "Регистрационный номер либо его аналог" (regNumber), "Номер налогоплательщика либо его аналог в стране регистрации" (alternativeInn) |
| I_163 | vatRate | Значение "Ставки НДС" не соответствует ставкам, определенным Налоговым Кодексом РФ. Возможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%» |
| I_164 | vatRate | Не заполнено поле "Ставка НДС" |
| I_165 | amount.services.vatRate | Не заполнено поле "Ставка НДС" (amount.services.vatRate) |
| I_166 | vat | Если "Расчетная сумма НДС" меньше 0.10 руб., то Сумма НДС в акте/отчете может равняться 0. Иначе "Сумма НДС в акте/отчете" должна быть больше 0 и не должна быть больше произведения "Сумма акта/отчета без учета НДС" на максимальную ставку НДС в РФ (20% при дате акта до 01.01.2026, 22% при дате акта начиная с 01.01.2026) с учетом предусмотренных погрешностей. |
| I_167 | vat | Сумма НДС в акте/отчете должна быть равна произведению "Сумма акта/отчета без учета НДС" и "Ставка НДС" с учетом предусмотренных погрешностей |
| I_168 | vat | Сумма НДС в акте/отчете должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%» |
| I_169 | vatRate | Значение ставки не соответствует ставкам, определенным Налоговым Кодексом РФ. Взможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%» |
| I_170 | vat | Сумма НДС для вознаграждения посредника должна быть равна произведению "Сумма вознаграждения посредника без учета НДС" и "Ставка НДС" с учетом предусмотренных погрешностей |
| I_171 | vat | Сумма НДС для вознаграждения посредника должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%» |
| I_172 | vatRate | Значение "Ставки НДС" не соответствует ставкам, определенным Налоговым Кодексом РФ. Возможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%» |
| I_173 | vatRate | Не заполнено поле "Ставка НДС" |
| I_174 | items.amount.vatRate | Не заполнено поле "Ставка НДС" (items.amount.vatRate) |
| I_175 | vat | Если "Расчетная Сумма НДС" меньше 0.10 руб., то "Сумма НДС в детализации" может равняться 0. Иначе "Сумма НДС в детализации" должна быть больше 0 и не должна быть больше произведения "Суммы детализации без учета НДС" на максимальную ставку НДС в РФ (20% при дате акта до 01.01.2026, 22% при дате акта начиная с 01.01.2026) с учетом предусмотренных погрешностей |
| I_176 | vat | Сумма НДС в детализации должна быть равна произведению "Суммы детализации без учета НДС" на "Ставку НДС" с учетом предусмотренных погрешностей" |
| I_177 | vat | "Сумма НДС" в детализации должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%» |
| I_181 | isSocial | Должно быть передано поле «Признак социальной рекламы» (isSocial), так как передано поле «Признак социальной рекламы по квоте» (isSocialQuota) |
| I_182 | isSocialQuota | Должно быть передано поле «Признак социальной рекламы по квоте» (isSocialQuota), так как передано поле «Признак социальной рекламы» (isSocial) |
| I_183 | items.isSocial | Должно быть передано поле «Признак социальной рекламы в детализации акта» (items.isSocial), так как передано поле «Признак социальной рекламы по квоте в детализации акта» (items.isSocialQuota) |
| I_184 | items.isSocialQuota | Должно быть передано поле «Признак социальной рекламы по квоте в детализации акта» (items.isSocialQuota), так как передано поле «Признак социальной рекламы в детализации акта» (items.isSocial) |
| I_185 | intermediaryReportIdList | Не передан обязательный массив "intermediaryReportIdList" для актов типа "Акт на вознаграждение посредника" |
| I_186 | intermediaryReportIdList | Неверное значение для массива "Массив идентификаторов актов типа «Отчет посредника»" (intermediaryReportIdList). Необходимо передать значения в массиве |
| I_187 | intermediaryReportIdList | Запрещено передавать поле "intermediaryReportIdList" в актах с типом "Акт выполненных работ" и "Отчет посредника" |
| I_188 | amount.services.intermediaryReportIdList[] | Неверный формат данных для идентификатора акта типа "Отчет посредника" в массиве intermediaryReportIdList |
| I_189 | amount.services.intermediaryReportIdList[] | Идентификатор акта {id} дублируется в массиве intermediaryReportIdList |
| I_190 | amount.services.intermediaryReportIdList[] | Идентификатор акта с типом "Отчет посредника" (intermediaryReportIdList) не зарегистрирован в ЕРИР |
| I_191 | excludingVat | Не заполнено обязательное поле, так как тип акта "Акт выполненных работ" или "Отчет посредника" |
| I_192 | excludingVat | Запрещено передавать поле excludingVat, если тип акта "Акт на вознаграждение посредника" |
| I_193 | vatRate | Запрещено передавать поле vatRate, если тип акта "Акт на вознаграждение посредника" |
| I_194 | vat | Не заполнено обязательное поле, так как тип акта "Акт выполненных работ" или "Отчет посредника" |
| I_195 | vat | Запрещено передавать поле vat, если тип акта "Акт на вознаграждение посредника" |
| I_196 | includingVat | Не заполнено обязательное поле, так как тип акта "Акт выполненных работ" или "Отчет посредника" |
| I_197 | includingVat | Запрещено передавать поле includingVat, если тип акта "Акт на вознаграждение посредника" |
| I_198 | isInvoice | Запрещено передавать поле, если тип акта не равен "Отчет посредника" |
| I_199 | excludingVat | Не заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан |
| I_200 | excludingVat | Запрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true |
| I_201 | vatRate | Не заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан |
| I_202 | vatRate | Запрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true |
| I_203 | vat | Не заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан |
| I_204 | vat | Запрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true |
| I_205 | includingVat | Не заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан |
| I_206 | includingVat | Запрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true |
| I_207 | items | Запрещено передавать поле "items", если тип акта "Акт на вознаграждение посредника" |
| I_208 | contractId | Идентификатор договора акта (contractId) в отчете посредника (intermediaryReportIdList = {id}) не равен идентификатору договора акта на вознаграждение посредника |
| I_209 | rrOrderContractIdList | Неверное значение для массива идентификаторов посреднических договоров, по поручению которого был заключен договор (rrOrderContractIdList). Необходимо передать значения в массиве |
| I_210 | rrOrderContractIdList[] | Неверный формат данных для идентификатора посреднического договора в массиве rrOrderContractIdList |
| I_211 | rrOrderContractIdList[] | Идентификатор договора {id} дублируется в массиве rrOrderContractIdList |
| I_212 | rrOrderContractIdList | Поле "Идентификатор посреднического договора, по поручению которого был заключен договор" (rrOrderContractIdList) может передаваться только в типе акта "Акт выполненных работ" (invoice), либо "Отчет посредника" (intermediary-report), договор которого имеет признак agentActingForPublisher=true |
| I_213 | contractId | Идентификатор Исполнителя по договору акта (contractId={id}) должен быть равен идентификатору Исполнителя по посредническому договору (rrOrderContractIdList={id}), так как тип акта "Акт выполненных работ" |
| I_214 | contractId | Идентификатор Заказчика по договору акта (contractId={id}) должен быть равен идентификатору Исполнителя по посредническому договору (rrOrderContractIdList={id}), так как тип акта "Отчет посредника" |
| I_215 | rrOrderContractIdList[] | Идентификатор Договора (rrOrderContractIdList={id}), указанный в массиве "rrOrderContractIdList", не зарегистрирован в ЕРИР или не имеет тип "Посреднический договор" с признаком "agentActingForPublisher" равным true |
| I_216 | rrOrderContractIdList[] | Запрещено передавать "Идентификатор посреднического договора, по поручению которого был заключен договор" (rrOrderContractIdList={id}) в массиве "rrOrderContractIdList", так как в переданном посредническом договоре Заказчик является иностранным лицом |
| I_217 | date | Запрещено передавать ставку НДС "22%", если дата акта (date) меньше 01.01.2026 |
| I_218 | date | Запрещено передавать ставку НДС "22%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг раньше 2026 года. |
| I_219 | date | Запрещено передавать ставку НДС "20%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг 2026 год и позже. |
| I_220 | date | Запрещено передавать ставку НДС "22%", если дата акта (date) меньше 01.01.2026 |
| I_221 | date | Запрещено передавать ставку НДС "22%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг раньше 2026 года. |
| I_222 | date | Запрещено передавать ставку НДС "20%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг 2026 год и позже. |
| I_223 | date | Запрещено передавать ставку НДС "22%", если дата акта (date) меньше 01.01.2026 |
| I_224 | date | Запрещено передавать ставку НДС "22%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг раньше 2026 года. |
| I_225 | date | Запрещено передавать ставку НДС "20%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг 2026 год и позже. |
| I_226 | contractId | У контрагента-Заказчика в договоре акта не заполнено поле "Адрес регистрации/ места жительства (пребывания) контрагента", так как он является физическим лицом РФ или индивидуальным предпринимателем РФ |
| I_227 | contractId | У контрагента-Исполнителя в договоре акта не заполнено поле "Адрес регистрации/ места жительства (пребывания) контрагента", так как он является физическим лицом РФ или индивидуальным предпринимателем РФ |
| I_228 | vatRate | Ставка НДС в детализации не равна Ставке НДС суммы акта, так как тип акта "Акт выполненных работ" |
| I_229 | vatRate | Ставка НДС в детализации не равна Ставке НДС суммы акта, так как тип акта "Отчет посреника" и договор акта имеет признак agentActingForPublisher = true |
| I_231 | amount.services.intermediaryReportIdList[] | В акте с типом "Отчет посредника" (intermediaryReportIdList = {id}) признак отдельного акта на вознаграждение (amount.commission.isInvoice) равен false |
Статистика
| Код | Поле | Текст ошибки |
|---|---|---|
| GV_3 | creativeId, platformId, dateStartFact, campaignType | Не заполнено обязательное поле |
| S_1 | creativeId | Неверный формат данных для идентификатора креатива (creativeId) |
| S_2 | creativeId | Идентификатор креатива не зарегистрирован в ЕРИР (creativeId) |
| S_4 | platformId | Неверный формат данных для идентификатора площадки (platformId) |
| S_5 | platformId | Идентификатор площадки не зарегистрирован в ЕРИР (platformId) |
| S_7 | impsFact | Неверный формат данных для количества фактических показов (impsFact) |
| S_10 | impsFact | Не заполнено обязательное поле "Количество показов фактическое" (impsFact) |
| S_11 | impsPlan | Неверный формат данных для количества показов по акту (impsPlan) |
| S_13 | impsPlan | Не заполнено обязательное поле "Количество показов по акту" (impsPlan) |
| S_14 | dateStartFact | Неверный формат данных для фактической даты начала показов (dateStartFact) |
| S_15 | dateStartFact | Фактическая дата начала показов (dateStartFact) должна быть не ниже, чем 01.01.1991 |
| S_16 | dateStartFact | Фактическая дата начала показов (dateStartFact) должна быть меньше или равна, чем фактическая дата окончания показов (dateEndFact) |
| S_17 | dateStartFact | Фактическая дата начала показов (dateStartFact) должна быть меньше или равна текущей дате |
| S_19 | dateEndFact | Неверный формат данных для фактической даты окончания периода (dateEndFact) |
| S_20 | dateEndFact | Фактическая дата окончания показов (dateEndFact) должна быть не ниже, чем 01.01.1991 |
| S_22 | dateEndFact | Фактическая дата окончания показов (dateEndFact) должна быть меньше или равна текущей дате |
| S_23 | dateEndFact | Не заполнено обязательное поле "Дата окончания показов фактическая" (dateEndFact) |
| S_24 | dateStartPlan | Неверный формат данных для даты начала показов по акту (dateStartPlan) |
| S_25 | dateStartPlan | Дата начала показов по акту (dateStartPlan) должна быть не ниже, чем 01.01.1991 |
| S_26 | dateStartPlan | Дата начала показов по акту (dateStartPlan) должна быть меньше или равна, чем дата окончания показов по акту (dateEndPlan) |
| S_27 | dateStartPlan | Дата начала показов по акту (dateStartPlan) должна быть меньше или равна текущей дате |
| S_28 | dateStartPlan | Не заполнено обязательное поле "Дата начала показов по акту" (dateStartPlan) |
| S_29 | dateEndPlan | Неверный формат данных для даты окончания периода по акту (dateEndPlan) |
| S_30 | dateEndPlan | Дата окончания показов по акту (dateEndPlan) должна быть не ниже, чем 01.01.1991 |
| S_32 | dateEndPlan | Дата окончания показов по акту (dateEndPlan) должна быть меньше или равна текущей дате |
| S_33 | dateEndPlan | Не заполнено обязательное поле "Дата окончания показов по акту" (dateEndPlan) |
| S_37 | amountPerShow | Неверное значение для cтоимости единицы оказания услуг (amountPerShow): допустимы нулевые значения и положительные не больше 10 000 000 000.00000, а также должны иметь 5 знаков после точки. |
| S_39 | amountPerShow | Не заполнено обязательное поле "Стоимость единицы оказания услуг" (amountPerShow) |
| S_43 | dateEndFact | Фактическая дата окончания показов (dateEndFact) должна быть в том же месяце, что и Фактическая дата начала показов (dateStartFact), так как invoiceId пустое |
| S_44 | dateEndPlan | Дата окончания показов по акту (dateEndPlan) должна быть в том же месяце, что и Дата начала показов по акту (dateStartPlan), так как invoiceId пустое |
| S_46 | amountPerShow | Неверное значение для cтоимости единицы оказания услуг (amountPerShow). Допустимое значение "0", так как креатив относится к саморекламе |
| S_47 | creativeId | Нельзя передавать элемент товарного фида |
| S_49 | invoiceId | Поле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым |
| S_50 | invoiceId | Идентификатор акта не зарегистрирован в ЕРИР (invoiceId) |
| S_51 | invoiceId | Не заполнено обязательное поле "Идентификатор акта" (invoiceId). Должно быть заполнено, так как передан "Идентификатор изначального договора" (contractId) или "Уникальный идентификатор изначального договора" (cid) |
| S_52 | contractId | Неверный формат данных для идентификатора изначального договора(contractId) |
| S_53 | contractId | Идентификатор изначального договора не зарегистрирован в ЕРИР (contractId) |
| S_54 | contractId | Не заполнено обязательное поле "Идентификатор изначального договора" (contractId) или "Уникальный идентификатор изначального договора" (cid). Должно быть заполнено, так как передан "Идентификатор акта" (invoiceId) |
| S_57 | invoiceId | Дата начала периода в акте (invoiceId={id}) позже даты начала статистики (dateStartFact) |
| S_58 | contractId | Идентификатор изначального договора (contractId) не указан в качестве изначального у данного акта (invoiceId) |
| S_73 | contractId | Должно быть заполнено или "Изначальный договор" (contractId), или "Уникальный идентификатор изначального договора" (cid) |
| S_74 | cid | Не найден уникальный идентификатор изначального договора (cid) |
| S_75 | dateEndFact | Фактическая дата окончания показов (dateEndFact) должна быть в том же месяце, что и Фактическая дата начала показов (dateStartFact), так как dateEndFact > 30.09.2023 и invoiceId заполнено |
| S_76 | dateEndPlan | Дата окончания показов по акту (dateEndPlan) должна быть в том же месяце, что и Дата начала показов по акту (dateStartPlan), так как dateEndPlan > 30.09.2023 и invoiceId заполнено |
| S_77 | campaignType | Неверное значение для типа РК (type). Допустимые значения other/cpm/cpc/cpa |
| S_78 | invoiceId | Статистика не может быть зарегистрирована/обновлена, так как идентификатор акта (invoiceId={id}) был отправлен в сервис удаления и находится на согласовании |
| S_79 | contractId | Статистика не может быть зарегистрирована/обновлена, так как идентификатор изначального договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании |
| S_80 | creativeId | Статистика не может быть зарегистрирована/обновлена, так как идентификатор креатива (creativeId={id}) был отправлен в сервис удаления и находится на согласовании |
| S_81 | platformId | Статистика не может быть зарегистрирована/обновлена, так как идентификатор площадки (platformId={id}) был отправлен в сервис удаления и находится на согласовании |
| S_84 | campaignType | Не заполнено обязательное поле "Тип РК" (type) |
| S_85 | invoiceId | Статистика не может быть зарегистрирована и изменена, так как идентификатор акта (invoiceId={id}) используется в подписанных расчетах отчислений |
| S_86 | excludingVat | Неверное значение для cтоимости оказанных услуг без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00000, а также должны иметь 5 знаков после точки. |
| S_87 | excludingVat | Неверное значение для cтоимости оказанных услуг без учета НДС (excludingVat). Допустимое значение "0", так как креатив относится к саморекламе |
| S_88 | excludingVat | Статистика не может быть зарегистрирована, так как стоимость оказанных услуг без учета НДС переданных статистик по акту (invoiceId = ) и изначальному договору (contractId = ) не должна быть больше суммы детализации (или акта) без учета НДС, указанной в этом акте для соответствующего изначального договора |
| S_90 | vat | Неверное значение для суммы НДС для стоимости оказанных услуг (vat): допустимы нулевые значения и положительные, а также должны иметь 5 знаков после точки. |
| S_92 | includingVat | Неверное значение для cтоимости оказанных услуг, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 5 знаков после точки. |
| S_93 | includingVat | Стоимость оказанных услуг, включая НДС, не равна сумме полей "Стоимость оказанных услуг без учета НДС" и "Сумма НДС для стоимости оказанных услуг" |
| S_97 | platformId | Статистика не может быть зарегистрирована, потому что площадка (platformId={id}) с признаком isOwned=true не зарегистрирована у контрагента, указанного в креативе |
| S_98 | vatRate | Значение ставки не соответствует ставкам, определенным Налоговым Кодексом РФ. Взможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%» |
| S_99 | vat | Сумма НДС для стоимости оказанных услуг должна быть равна произведению "Стоимость оказанных услуг без учета НДС" на "Ставку НДС" с учетом предусмотренных погрешностей |
| S_100 | vat | "Сумма НДС для стоимости оказанных услуг" должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%» |
| S_102 | dateStartPlan | Запрещено передавать ставку 22%, так как Дата начала показов по акту (dateStartPlan) меньше 01.01.2026 |
| S_103 | dateStartPlan | Запрещено передавать ставку 20%, так как Дата начала показов по акту (dateStartPlan) больше либо равна 01.01.2026 |
Связка акта и креатива
| Код | Поле | Текст ошибки |
|---|---|---|
| GV_3 | invoiceId, creatives[].creativeId | Не заполнено обязательное поле |
| GV_4 | cid | Не передан обязательный массив |
| IC_2 | invoiceId | Идентификатор акта не зарегистрирован в ЕРИР (invoiceId) |
| IC_3 | invoiceId | Неверный формат данных для идентификатора акта (id) |
| IC_4 | contractId | Неверный формат данных для идентификатора договора (contractId) |
| IC_5 | contractId | Идентификатор договора не зарегистрирован в ЕРИР (contractId) |
| IC_6 | contractId | Идентификатор договора не зарегистрирован в разаллокации акта |
| IC_7 | contractId | Не заполнено обязательное поле "Идентификатор договора в ОРД" (contractId) |
| IC_9 | creativeId | Идентификатор креатива не зарегистрирован в ЕРИР (creativeId) |
| IC_10 | creativeId | Неверный формат данных для идентификатора креатива (creativeId) |
| IC_26 | contractId | Должно быть заполнено или "Изначальный договор" (contractId), или "Уникальный идентификатор изначального договора" (cid) |
| IC_27 | cid | Не найден уникальный идентификатор изначального договора (cid) |
| IC_28 | creatives[].creativeId | Нельзя передавать элемент товарного фида |
| IC_29 | invoiceId | Сущность invoices-creatives не может быть зарегистрирована/обновлена, так как идентификатор акта (invoiceId={id}), был отправлен в сервис удаления и находится на согласовании |
| IC_30 | contractId | Сущность invoices-creatives не может быть зарегистрирована/обновлена, так как идентификатор договора (contractId={id}), был отправлен в сервис удаления и находится на согласовании |
| IC_31 | creativeId | Сущность invoices-creatives не может быть зарегистрирована/обновлена, так как идентификатор креатива (creativeId={id}), был отправлен в сервис удаления и находится на согласовании |
Миграция с v4 на v5#
Как устроены версии API
Каждая версия - отдельный базовый путь (/api/v4, /api/v4.1, ..., /api/v5.0) со своим набором схем. Версии кумулятивны: версия наследует поведение предыдущей и переопределяет только те сущности, которые в ней изменились. Например, договоры менялись в v4.2, v4.3, v4.7 и v5.0 - во всех промежуточных версиях действует схема из последней изменённой.
Данные общие для всех версий: идентификаторы объектов, выданные в v4, действительны в v5.0, перерегистрировать сущности не нужно. Откат на предыдущую версию тоже возможен - подробности в конце раздела.
Ниже - пошаговый разбор: что изменилось на каждом шаге и что нужно сделать в коде. Если вы переходите, например, с v4.5 сразу на v5.0, прочитайте шаги начиная с "С v4.5 на v4.6".
Карта изменений по версиям
| Переход | Что затронуто | Ломающие изменения |
|---|---|---|
| с v4 на v4.1 | Акты | нет |
| с v4.1 на v4.2 | Договоры | нет |
| с v4.2 на v4.3 | Договоры | да - обязательность полей |
| с v4.3 на v4.4 | Акты | нет |
| с v4.4 на v4.5 | Акты | да - rrOrderContractId заменён массивом |
| с v4.5 на v4.6 | Контрагенты | нет |
| с v4.6 на v4.7 | Договоры | нет |
| с v4.7 на v4.8 | Креативы | нет |
| с v4.8 на v4.9 | Креативы | нет |
| с v4.9 на v5.0 | Акты, статистика, токены, инфраструктура | да - см. шаг |
Сущности, не упомянутые в таблице (площадки, товарные фиды, связки акта и креатива, справочники, пакетная загрузка, заявки на удаление), между v4 и v5.0 не менялись.
С v4 на v4.1
Затронуто: акты (/invoices, /invoices/with-statistic).
Добавлено
| Поле | Объект | Тип | Назначение |
|---|---|---|---|
rrOrderContractId | Invoice, InvoiceWithStatistic | string | Идентификатор посреднического договора, по поручению которого был заключён договор оказания услуг |
Новые контроли
I_160, I_161, I_178, I_179, I_180 - проверки формата, существования договора в ЕРИР, его типа и признака agentActingForPublisher, а также запрет на иностранного заказчика.
Что делать
Ничего, если вы не работаете с цепочками посреднических договоров. Поле необязательное.
С v4.1 на v4.2
Затронуто: договоры (/contracts).
Добавлено
| Поле | Объект | Тип | Назначение |
|---|---|---|---|
isChargePaidByAgent | Contract | boolean | Признак того, что вознаграждение удерживает агент |
Новые контроли
| Код | Проверка |
|---|---|
| C_65 | Поле передаётся только для типа договора intermediary-contract |
| C_68 | Значение согласуется с agentActingForPublisher и типом контрагента-исполнителя |
Что делать
Ничего, если вы не регистрируете посреднические договоры. Для посреднических договоров поле стоит заполнять - оно влияет на состав допустимых актов.
С v4.2 на v4.3
Затронуто: договоры (/contracts).
Ломающее: обязательность полей
Четыре поля объекта Contract стали обязательными:
| Поле | Было | Стало |
|---|---|---|
type | необязательное | required |
date | необязательное | required |
isRegReport | необязательное | required |
subjectType | необязательное | required |
Запрос без любого из них отклоняется с 400.
Новые контроли
C_21 - формат номера договора: длина от 1 до 255, без пробелов и переносов строки по краям.
Что делать
- Убедиться, что все четыре поля передаются при создании и обновлении договора.
- Проверить, что номера договоров не содержат ведущих и завершающих пробелов - раньше такие значения проходили.
С v4.3 на v4.4
Затронуто: акты (/invoices, /invoices/with-statistic).
Добавлено
| Поле | Объект | Тип |
|---|---|---|
isSocial | Invoice, InvoiceWithStatistic | boolean |
isSocialQuota | Invoice, InvoiceWithStatistic | boolean |
isSocial | InvoiceItem, InvoiceItemWithStatistic | boolean |
isSocialQuota | InvoiceItem, InvoiceItemWithStatistic | boolean |
Новые контроли
| Код | Проверка |
|---|---|
| I_181 | Должно быть передано isSocial, так как передано isSocialQuota |
| I_182 | Должно быть передано isSocialQuota, так как передано isSocial |
| I_183 | То же для items[].isSocial |
| I_184 | То же для items[].isSocialQuota |
Что делать
Если передаёте признаки социальной рекламы - передавайте строго парой, и на уровне акта, и на уровне каждого элемента items. Передача одного поля без второго приводит к ошибке.
С v4.4 на v4.5
Затронуто: акты (/invoices, /invoices/with-statistic).
Ломающее: поле rrOrderContractId заменено массивом rrOrderContractIdList
Строковое поле заменено массивом. Старое поле удалено - передача его в v4.5+ игнорируется.
- "rrOrderContractId": "bd1a457f-8005-47f4-9659-ed4ada3a507f"
+ "rrOrderContractIdList": ["bd1a457f-8005-47f4-9659-ed4ada3a507f"]Добавлено
| Поле | Объект | Тип |
|---|---|---|
isSocial | InvoiceFilter | boolean |
isSocialQuota | InvoiceFilter | boolean |
Изменение контролей
Контроли I_160, I_161, I_178, I_179, I_180 (проверки одиночного поля) заменены на набор для массива:
| Код | Проверка |
|---|---|
| I_209 | Если массив передан, он не может быть пустым |
| I_210 | Каждый элемент - корректный идентификатор договора |
| I_211 | Дубликаты в массиве запрещены |
| I_212 | Массив допустим только для типа invoice либо intermediary-report с agentActingForPublisher = true |
| I_213 | Для типа invoice: исполнитель по договору акта совпадает с исполнителем по посредническому договору |
| I_214 | Для типа intermediary-report: заказчик по договору акта совпадает с исполнителем по посредническому договору |
| I_215 | Договор зарегистрирован в ЕРИР, имеет тип intermediary-contract и признак agentActingForPublisher = true |
| I_216 | Запрещено, если заказчик по посредническому договору - иностранное лицо |
Что делать
- Заменить поле на массив во всех местах, где оно формируется и разбирается.
- Учесть, что теперь можно указать несколько посреднических договоров.
С v4.5 на v4.6
Затронуто: контрагенты (/organizations, /self-organization).
Добавлено
| Поле | Объект | Тип | Назначение |
|---|---|---|---|
address | Organization | string | Адрес регистрации / места жительства (пребывания) контрагента |
Новые контроли
| Код | Проверка |
|---|---|
| O_79 | Формат адреса для типов fl / ip / ul: русские буквы, цифры, дефис, точка, запятая, пробел, типографский апостроф, скобки, косая черта, римские цифры. Пробелы по краям не допускаются |
| O_80 | Формат адреса для типов ffl / ful: дополнительно допускаются латинские буквы |
Что делать
Поле формально необязательное, но с версии v5.0 акт не пройдёт, если адрес не заполнен у исполнителя - физлица или ИП РФ (контроль I_227), либо у такого же заказчика, когда исполнитель иностранное лицо (контроль I_226). Дозаполните адреса заранее - это самая частая причина отказов при переходе на v5.0.
С v4.6 на v4.7
Затронуто: договоры (/contracts).
Добавлено
| Поле | Объект | Тип | Назначение |
|---|---|---|---|
name | Contract | string | Название договора |
name | ContractFilter | string | Поиск по точному совпадению названия |
nameContains | ContractFilter | string | Поиск названия по подстроке |
Название - служебное поле для навигации на вашей стороне и в личном кабинете, в ЕРИР не передаётся. Ограничения: от 1 до 255 символов, без пробелов и других whitespace-символов по краям, без управляющих символов.
Что делать
Ничего обязательного. Заполнение названия заметно упрощает последующий поиск договоров через POST /contracts/search.
С v4.7 на v4.8
Затронуто: креативы (/creatives).
Добавлено
| Поле | Объект | Тип | Назначение |
|---|---|---|---|
name | Creative | string | Название креатива |
name | CreativeFilter | string | Поиск по точному совпадению названия |
nameContains | CreativeFilter | string | Поиск по вхождению подстроки |
Ограничения те же, что у названия договора: от 1 до 255 символов, без whitespace по краям, без управляющих символов. В ЕРИР не передаётся.
Что делать
Ничего обязательного.
С v4.8 на v4.9
Затронуто: креативы (/creatives).
Добавлено
| Поле / метод | Назначение |
|---|---|
neverPublished в CreativeStopPublicationRequest | Признак того, что креатив не публиковался вообще. При true поле stopDate не требуется |
POST /creatives/resume_publication | Возобновление публикации креатива, ранее снятого с публикации |
Метод
resume_publicationдоступен в v4.9, но не отражён в опубликованной спецификации v4.9 - она не пересобиралась после его добавления. В спецификации он появляется начиная с v5.0. Сам метод в v4.9 работает.
Тело запроса возобновления:
| Атрибут | Тип | Описание |
|---|---|---|
creativeId | string(uuid); required | Идентификатор креатива |
resumePublicationDate | string(date) | Дата возобновления публикации |
Что делать
Ничего обязательного. Если у вас есть сценарий "маркер получен, размещение не состоялось" - используйте neverPublished: true вместо снятия с публикации произвольной датой.
С v4.9 на v5.0
Самый крупный шаг: меняется версия API ЕРИР, появляется новый тип акта и две ломающие технические правки.
Ломающее: базовый путь
- https://api.ord-lab.ru/api/v4.9/creatives
+ https://api.ord-lab.ru/api/v5.0/creativesЛомающее: версия API ЕРИР
Версии v4.x работают со старым API ЕРИР (v7), v5.0 - с новым (v8). Это внутренняя интеграция ОРД, но она определяет состав и проверки передаваемых данных, поэтому все изменения ниже связаны именно с ней.
Ломающее: медиатип сокращённого ответа
- Accept: application/vnd.ord-lab.ru.api.v3.entity.short+json
+ Accept: application/vnd.ord-lab.ru.api.entity.short+jsonСтарый медиатип в v5.0 игнорируется - вы молча получите полный объект вместо статуса.
В спецификациях v4.x этот заголовок описывался как
...api.v4.entity.short+json, что не соответствовало реализации: фактически работал вариант сv3. В v5.0 описание и поведение приведены в соответствие.
Параметр запроса ?short=true работает одинаково во всех версиях - если используете его, править нечего.
Ломающее: код ответа при выпуске токена
POST /tokens/issue возвращает 201 Created вместо 200 OK. Проверки вида if (status === 200) нужно заменить на проверку диапазона 2xx.
Ломающее: удалены поля вознаграждения посредника
Из блока amount.commission объектов Invoice и InvoiceWithStatistic удалены:
"amount": {
"commission": {
- "number": "AAAAA",
- "date": "2026-01-01",
"excludingVat": 8196.72,
"vatRate": 22.00,
"vat": 1803.28,
"includingVat": 10000.00
}
}Вместе с ними удалены контроли I_152-I_156, проверявшие формат номера и даты. Номер и дата вознаграждения теперь берутся из полей number и date отдельного акта типа commission-invoice.
Ломающее: удалено поле irRelevant в статистике
В объекте CreativeStatistic поле irRelevant больше не принимается. Для исключения ошибочно поданной статистики используйте DELETE /creative-statistics/{id}.
В объектах Invoice и InvoiceWithStatistic поле irRelevant сохранено.
Добавлено: тип акта commission-invoice
| Поле | Объект | Назначение |
|---|---|---|
type: "commission-invoice" | Invoice, InvoiceWithStatistic, InvoiceFilter | Акт на вознаграждение посредника |
amount.commission.isInvoice | Invoice, InvoiceWithStatistic | Признак того, что вознаграждение будет подано отдельным актом. Только для intermediary-report |
amount.services.intermediaryReportIdList | Invoice, InvoiceWithStatistic | Список отчётов посредника, которые закрывает акт на вознаграждение. Только для commission-invoice |
Полный сценарий с примерами - в разделе "Сценарии: посреднические акты".
Обратная совместимость. Если отдельные акты на вознаграждение вам не нужны, не передавайте isInvoice и intermediaryReportIdList - поведение останется прежним: вознаграждение внутри отчёта посредника.
Новые контроли
| Область | Коды | Суть |
|---|---|---|
| Акт на вознаграждение | I_185-I_190, I_198-I_208, I_231 | Проверки новой схемы: обязательность и состав intermediaryReportIdList, взаимоисключаемость полей при isInvoice |
| Адрес контрагента в акте | I_226, I_227 | У сторон договора - физлиц и ИП РФ - должен быть заполнен address |
| Согласованность ставок НДС | I_228, I_229 | Ставка в детализации должна совпадать со ставкой в сумме акта |
| Изменение реквизитов договора | C_87, C_88, C_89 | Нельзя менять тип, заказчика и исполнителя чаще раза в месяц. 26.06.2026 ЕРИР эти контроли отменил, но ОРД пока их выполняет |
| Совпадение сторон договора | C_90 | Заказчик и исполнитель не могут быть одним лицом - по ИНН для резидентов, по ОКСМ и реквизитам для иностранных лиц |
| Реквизиты контрагентов | O_81-O_84 | Ограничения на изменение реквизитов иностранных контрагентов, участвующих в договорах |
Контроль C_35 (совпадение alternativeInn у сторон) в v5.0 из проверок договора исключён.
Ставки НДС 22 % с 2026 года
С 1 января 2026 года основная ставка НДС повышена с 20 % до 22 %. Контроли I_217-I_225 и S_102, S_103 проверяют соответствие ставки не только дате акта, но и периоду оказания услуг. Правила приведены в разделе "Акты".
Формально эти контроли работают и в v4.x, но при переходе на v5.0 их стоит перепроверить: они срабатывают на границе отчётных периодов.
Что делать
- Заменить базовый путь на
/api/v5.0. - Обновить медиатип в заголовке
Accept(или перейти на?short=true). - Исправить проверку кода ответа
POST /tokens/issueна2xx. - Убрать
amount.commission.numberиamount.commission.dateиз актов. - Убрать
irRelevantиз объектов статистики креатива. - Дозаполнить
addressу контрагентов-физлиц и ИП РФ. - Проверить логику ставок НДС на границе 2025/2026.
- При необходимости внедрить сценарий отдельного акта на вознаграждение.
Сводный чек-лист перехода с v4 на v5.0
Если вы мигрируете сразу с базовой v4, выполнить нужно всё перечисленное:
| № | Действие | Откуда изменение |
|---|---|---|
| 1 | Заменить базовый путь на /api/v5.0 | v5.0 |
| 2 | Обновить медиатип сокращённого ответа либо перейти на ?short=true | v5.0 |
| 3 | Исправить проверку кода ответа POST /tokens/issue на 2xx | v5.0 |
| 4 | Передавать type, date, isRegReport, subjectType в каждом договоре | v4.3 |
| 5 | Убрать пробелы по краям в номерах договоров | v4.3 |
| 6 | Использовать rrOrderContractIdList (массив) вместо rrOrderContractId | v4.5 |
| 7 | Передавать isSocial и isSocialQuota строго парой, включая items | v4.4 |
| 8 | Дозаполнить address у контрагентов-физлиц и ИП РФ | v4.6 + v5.0 |
| 9 | Убрать amount.commission.number и amount.commission.date | v5.0 |
| 10 | Убрать irRelevant из статистики креатива | v5.0 |
| 11 | Проверить ставки НДС на границе 2025/2026 | v5.0 |
| 12 | Прогнать полный цикл на https://sandbox.ord-lab.ru/api/v5.0 | - |
| 13 | Спланировать переключение по договорам целиком, чтобы не держать в коде две ветки формирования сумм | - |
Опционально, по мере необходимости:
- заполнять
nameу договоров и креативов для удобного поиска (v4.7, v4.8); - использовать
neverPublishedпри снятии несостоявшегося размещения (v4.9); - использовать
POST /creatives/resume_publication(v4.9); - заполнять
isChargePaidByAgentв посреднических договорах (v4.2); - внедрить отдельный акт на вознаграждение
commission-invoice(v5.0).
Можно ли вернуться на v4.x
Короткий ответ: да, ограничений нет.
С 1 июня 2026 года ЕРИР ненадолго запрещал такой откат - контроли C_91 (для договоров) и I_230 (для актов) не давали работать через API v7 с объектом, который уже прошёл через v8. 26 июня 2026 года оба контроля из требований исключили.
Поэтому версии можно совмещать: одна интеграция вправе использовать v4.x для одних сущностей и v5.0 для других, а при необходимости откатиться. Идентификаторы объектов общие - договор, зарегистрированный в v4, доступен по тому же id в v5.0.
Тем не менее переключать поток целиком по договору удобнее: схемы актов в v4.x и v5.0 различаются, и держать в коде две ветки формирования сумм ради одного договора смысла мало.
Период параллельной работы
Версии /api/v4 ... /api/v4.9 остаются доступны и продолжают работать с API ЕРИР v7. Дата их отключения объявляется отдельно. Новая функциональность - тип акта commission-invoice - в v4.x не добавляется.
Change log#
V 3.0.0 - API v5.0
Релиз документации API v5.0.
- Документация переведена на версию API v5.0 (
/api/v5.0), работающую с новым API ЕРИР (v8). Описание версий v3 и v4 из основного текста исключено - перечень отличий вынесен в раздел "Миграция с v4 на v5". - Обновлён раздел "Общая информация по API": добавлены аутентификация по токенам, ограничение частоты запросов, расширенный ответ статистики, заголовки аудита, справочник кодов ошибок, коды
204,409,413. - Изменён медиатип сокращённого ответа:
application/vnd.ord-lab.ru.api.entity.short+json(ранее - с указанием версии). - Раздел "Акты и статистика выполнения РК": добавлен тип акта
commission-invoice- акт на вознаграждение посредника; добавлены поляamount.commission.isInvoiceиamount.services.intermediaryReportIdList; удаленыamount.commission.numberиamount.commission.date. - Раздел "Акты и статистика выполнения РК": добавлены признаки
isSocialиisSocialQuotaна уровне акта и детализации; полеrrOrderContractIdзаменено массивомrrOrderContractIdList. - Раздел "Статистика": удалён параметр
irRelevant; описан методDELETE /creative-statistics/{id}. - Раздел "Креативы": добавлен метод
POST /creatives/resume_publication; добавлено полеneverPublishedв снятие с публикации; добавлены поляnameи фильтрыname/nameContains; описаны кобрендинг и коды ККТУ. - Раздел "Договоры": добавлены поля
nameиisChargePaidByAgent, фильтрыname/nameContains; зафиксирована обязательностьtype,date,isRegReport,subjectType. - Раздел "Контрагенты": добавлено поле
address. - Раздел "Токены":
POST /tokens/issueвозвращает201 Createdвместо200 OK. - Добавлен раздел "Товарные фиды" - ранее существовал только отдельным документом.
- Добавлены разделы "Токены", "Заявки на удаление сущностей", "Справочник ККТУ" - ранее эти методы нигде не описывались.
- Добавлен раздел "Пакетная загрузка" - методы группы
/batch. - Добавлен раздел "Сценарии: посреднические акты" со сквозными примерами.
- Раздел "Формато-логический контроль" пересобран по спецификации РКН "HLS. Описание для ОРД" для API ЕРИР v8: справочник содержит все коды с текстами ошибок. Тексты ошибок и названия полей приведены к API ОРД: сверяться с формулировками ЕРИР не требуется. Проверки по служебным атрибутам, которые ОРД добавляет к объекту сам, в справочник не включены. Описаны правила ставок НДС в переходный период 2025/2026.
- Документ переструктурирован: каждая сущность вынесена в собственный раздел - "Контрагенты", "Площадки", "Договоры", "Креативы", "Товарные фиды", "Акты", "Статистика выполнения РК", "Связка акта и креатива", "Токены", "Заявки на удаление сущностей", "Справочник ККТУ". Правила формато-логического контроля по атрибутам перенесены в конец раздела соответствующей сущности; в разделе "Формато-логический контроль" остался сводный справочник кодов.
- Уточнены обязательность и предельные длины полей по спецификации ЕРИР: наименование контрагента не требуется для ИП и юрлиц РФ, адрес - до 500 символов, URL площадки не нужен для типов
smarttvиhbbtv, составcreativeDataзависит от формы распространения рекламы. - Добавлен раздел "Миграция с v4 на v5": пошаговый разбор каждого перехода, от v4 к v4.1 и далее вплоть до v5.0, с указанием затронутых сущностей, изменённых полей, новых и отменённых контролей, указанием на возможность отката, а также сводный чек-лист перехода с базовой v4.
- Каждый метод снабжён примерами запроса и ответа. Примеры построены на одном наборе вымышленных участников и объектов со сквозными идентификаторами: договор, на который ссылается акт, - тот же самый, что зарегистрирован в разделе "Договоры". Состав участников приведён в разделе "Общая информация по API". Добавлены порядок вызовов при первом подключении и примеры для случаев, которые раньше не были показаны: контрагенты-физлица и иностранные лица, посреднический договор и доп. соглашение, кобрендинговый и саморекламный креативы, обновление и поиск по каждой сущности, пометка акта неактуальным.
- Уточнено поведение методов
upsert(/invoices/upsert,/invoices/with-statistic/upsert,/creative-statistics/upsert): идентификатор объекта обязателен и задаётся клиентом - по нему метод решает, создавать объект или обновлять. Это единственная группа методов, где идентификатор приходит от клиента, помимоfeedIdтоварного фида. - Уточнён порядок выпуска токенов: метод
POST /tokens/issueтребует действующего токена, самый первый выдаётся при подключении к сервису. - Исправлены расхождения прежней документации с фактическим API: методы
POST /invoices/creatives/{id}/syncиPOST /creative-statistics/{id}/syncне существуют - синхронизация доступна только для контрагентов, договоров, креативов и актов; уточнён список допустимых при регистрации значенийerirIdType(MED,LONG); имена методов статистики приведены к фактическому виду/creative-statistics(ранее в тексте встречалось/creativeStatistics).
V 2.0.0
- Обновлён раздел "Общая информация по API" - дополнена информация по объектам
Status,Pagination, убран объектEntityInfo. - Обновлён раздел "Креативы" - убраны устаревшие параметры
type,creativeData.description,isNative, добавлен параметрisSocialQuota. - Обновлён раздел "Акты" - добавлен параметр
type, изменены объектыamount. - Обновлён раздел "Статистика" - изменён объект
amount.
V 1.0.2
- Обновлён раздел "Общая информация по API" - дополнена информация по объекту
Status. - Обновлён раздел "Креативы" - убран устаревший параметр
targetGeo.
V 1.0.1
- Обновлён раздел "Регистрация Организации в ОРД".
- Обновлён раздел "Обновление информации об Организации в ОРД".
V 1.0.0
Релиз документации v3 API.




