Руководство по API ОРД v5.0

Документ содержит описание запросов API ОРД от SberAds версии 5.0 и перечень отличий от версии 4.

Документ содержит описание запросов API ОРД от SberAds версии 5.0 и перечень отличий от версии 4.

Выберите раздел в навигации слева, чтобы просмотреть конкретный раздел документа.

Общая информация по API#

Что такое ОРД и зачем нужен этот API

ОРД (оператор рекламных данных) - организация, через которую участники рынка интернет-рекламы передают сведения о рекламе в ЕРИР (Единый реестр интернет-рекламы Роскомнадзора). Обязанность передавать такие сведения установлена ст. 18.1 Федерального закона "О рекламе" (№ 38-ФЗ).

Через API ОРД от SberAds вы:

  • регистрируете контрагентов (рекламодателей, агентств, ОРС, рекламораспространителей) и их площадки;
  • регистрируете договоры между контрагентами;
  • получаете маркер (erid) для каждого рекламного креатива - без него креатив нельзя размещать;
  • отчитываетесь актами и статистикой.

Каждый объект проходит два этапа: сначала он регистрируется в ОРД, затем ОРД передаёт его в ЕРИР. Текущее положение объекта видно в поле state (см. Статусная модель).

API Endpoints

СтендEndpointОписаниеАутентификация
Sandboxhttps://sandbox.ord-lab.ru/api/v5.0Тестирование интеграции. Вы можете использовать тестовые данные, которые не передаются в ЕРИР и не тарифицируются.Bearer (JWT)
Prodhttps://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):

  1. У каждого клиента есть персональная корзина с токенами — она не влияет на корзины других клиентов.
  2. Каждый запрос расходует один токен из корзины.
  3. Корзина автоматически пополняется с заданной периодичностью.
  4. Если токенов в корзине не хватает, 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=true
POST /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-StatestringСтатус объекта в ОРД и в ЕРИР (см. "Статусная модель")
ORD-ERIR-Registered-AttimestampДата и время последней успешной регистрации объекта в ЕРИР, если таковая имела место
ORD-ERIR-ErrorstringТекст сообщения об ошибке от ЕРИР, полученный при последнем обновлении данных по объекту в ЕРИР. Отсутствует, если последнее обновление было успешным
ORD-Media-ErrorstringТекст ошибки загрузки медиаданных креатива. Отсутствует, если медиаданные загружены успешно или отсутствуют
ORD-MarkerstringМаркер (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. Часть полей объекта дублирует соответствующие заголовки ответов.

АтрибутТипОписание
idstring(uuid)Идентификатор, под которым объект зарегистрирован в ОРД
statestringСм. заголовок ORD-State
erirRegisteredAttimestampСм. заголовок ORD-ERIR-Registered-At
erirErrorstringСм. заголовок ORD-ERIR-Error
mediaErrorstringСм. заголовок ORD-Media-Error
markerstringМаркер (erid) креатива. Только для объектов типа Creative и контейнеров товарных фидов, имеющих state = APPROVED или ACCEPTED
syncErrorstringСообщение об ошибке процесса синхронизации с ЕРИР, возникшей в ходе исполнения данного запроса. Если присутствует, обычно совпадает с 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.

АтрибутТипОписание
requestIdstring(uuid); requiredУникальный идентификатор запроса. Указывайте его при обращении в техподдержку
statusint; requiredHTTP-код ответа
codestring; requiredКод ошибки (см. таблицу ниже)
titlestring; requiredКраткое описание ошибки. Одинаковое для одного и того же значения code
detailstringДетальное описание ошибки. Для ошибок формато-логического контроля. Содержит код контроля и текст нарушения. Указывайте его при обращении в техподдержку

Пример ответа при непройденном контроле:

{
  "requestId": "0e29c0f6-6d5e-4a30-9f5a-2f4d2b2a1f77",
  "status": 400,
  "code": "parameter-error",
  "title": "invalid parameter value",
  "detail": "I_185: Не передан обязательный массив \"intermediaryReportIdList\" для актов типа \"Акт на вознаграждение посредника\""
}

Коды ошибок

codeHTTPtitle
invalid-json400JSON parsing or content problem
parameter-error400invalid parameter value
precondition-failed400failed precondition (e.g. referenced entity not found)
generic400 / 500Generic or internal error (no further information available)
unauthorized401ошибка аутентификации
access-denied403доступ к объекту запрещён
not-found404requested entity not found
conflict409already exist
too-large413размер запроса превышает допустимый
too-many-requests429too many requests
unimplemented501requested function not implemented

Объект Pagination - постраничный вывод

Данный объект возвращается в составе ответа на списочные запросы (POST /{сущность}/search) в поле meta.

АтрибутТипОписание
limitintСколько элементов на странице
pageintНомер страницы
totalintОбщее количество элементов

Все фильтры поиска дополнительно поддерживают поля page, limit, sorting (массив полей сортировки) и cursor (курсорная пагинация - начать выборку с указанного элемента; предпочтительна при обходе больших выборок).

{
  "data": [ { "...": "объекты запрошенной сущности" } ],
  "meta": { "page": 1, "limit": 100, "total": 3471 }
}

Общие принципы работы с идентификаторами

Все системные идентификаторы объектов в ОРД имеют формат UUID v4. Идентификаторы генерируются автоматически при создании сущности методом POST. Задать собственное значение системного идентификатора невозможно. Но есть исключения из правил:

  1. feedId (товарный фид) - Идентификатор контейнера товарного фида генерируется клиентом и передается при создании.
  2. 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-f342a486e939https://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
Акт выполненных работ за июль 20267a459159-c38e-4f9a-a726-d209031111cb№ act-2026-07
Отчёт посредника за июль 2026b5df28a6-c5da-4474-9e38-166ffb4e3f2c№ IR-2026-07

Домены *.example, example.com и подобные зарезервированы стандартом для документации и в сети не резолвятся - в рабочих запросах указывайте собственные адреса.

Порядок вызовов при первом подключении

Полный цикл от пустого аккаунта до сданной отчётности выглядит так. Каждый шаг разобран с примерами в соответствующем разделе.

ШагВызовЧто получаете
1Интерфейс Личного кабинета ОРДПолучение токена в Личном кабинете ОРД
2POST /organizationsИдентификаторы контрагентов - обеих сторон каждого договора
3POST /contractsИдентификатор договора
4POST /creativesИдентификатор креатива и маркер (erid) - с этого момента можно размещать рекламу
5POST /platformsИдентификаторы площадок (либо сразу вложенно, на шаге 2)
6POST /invoices или POST /invoices/with-statisticИдентификатор акта за отчётный период
7POST /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

АтрибутТипОписание
daysToLiveintegerСрок жизни токена в днях. Минимум 1, максимум 3650. Если не указан, применяется значение по умолчанию сервиса

Ответ - TokenResponse

АтрибутТипОписание
idstring(uuid)Идентификатор токена. Нужен для последующего отзыва
tokenstringСам JWT-токен. Возвращается только один раз - сохраните его сразу
expiresAtstring(timestamp)Дата и время истечения срока действия
errorstringТекст ошибки, если выпуск не удался

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} - Отозвать токен

АтрибутТипОписание
idstring(uuid)Идентификатор токена, полученный при выпуске

Тела у запроса нет - идентификатор передаётся в пути.

POST /api/v5.0/tokens/revoke/36138e99-9c10-406c-a7a1-f15a098c269f

200 OK

{ "id": "36138e99-9c10-406c-a7a1-f15a098c269f" }

Отзыв действует немедленно: все последующие запросы с этим токеном получат 401 Unauthorized.

Контрагенты#

Субъекты рекламного рынка: рекламодатели (РД), агентства, операторы рекламных систем (ОРС), рекламораспространители (РР), посредники. Российские и иностранные юридические и физические лица.

Контрагент - базовая сущность: без него нельзя зарегистрировать ни договор, ни площадку. Регистрировать нужно обе стороны каждого договора.

Organization object - Контрагент

АтрибутТипОписание
idstring(uuid)Идентификатор контрагента, выданный ОРД
typestring; requiredТип контрагента (см. значения ниже)
isOrsboolean; requiredЯвляется ОРС - оператором рекламной системы
isRrboolean; requiredЯвляется РР - рекламораспространителем
innstringИНН. До 12 символов. Обязательно для типов fl, ip, ul; от остальных типов не принимается
kppstringКПП, ровно 9 цифр. Можно передавать только для российских юридических лиц (ul)
namestringОПФ и полное наименование контрагента. До 255 символов. Обязательно для типов fl, ffl, ful; для ip и ul не требуется - наименование подтягивается из государственных реестров по ИНН
addressstringАдрес регистрации / места жительства (пребывания) организации. До 500 символов. Формально необязательное, но регистрация акта, если исполнителем или заказчиком выбрано физ.лицо или ИП РФ, у которого не заполнено данное поле приведет к ошибке
mobilePhonestringАбонентский номер мобильного телефона. Обязательно для иностранных физических лиц, если не заполнен epayNumber
epayNumberstringНомер электронного средства платежа. Обязательно для иностранных физических лиц, если не заполнен mobilePhone
regNumberstringРегистрационный номер либо его аналог. Обязательно для иностранных юридических лиц, если не заполнен alternativeInn
alternativeInnstringНомер налогоплательщика либо его аналог в стране регистрации. Обязательно для иностранных юридических лиц и для иностранных физических лиц с признаком isOrs = true
oksmNumberstringКод страны регистрации в соответствии с ОКСМ, ровно 3 цифры. Обязательно для типов ffl и ful
rsUrlstringСведения об ИС и (или) программе для ЭВМ, которые предназначены и используются ОРС для организации распространения в сети "Интернет" рекламы. До 2000 символов. Обязательно, если isOrs = true
platformsOrganizationPlatform[]Сведения о площадках контрагента. Обязательно для контрагентов, являющихся РР и/или ОРС

Значения type

ЗначениеОписание
ulЮридическое лицо (РФ)
ipИндивидуальный предприниматель (РФ)
flФизическое лицо (РФ)
fulИностранное юридическое лицо
fflИностранное физическое лицо

OrganizationPlatform object - Площадка контрагента

АтрибутТипОписание
platformIdstring(uuid)Идентификатор площадки в ОРД
externalIdstring; requiredПользовательский идентификатор площадки
isOwnedboolean; requiredПлощадка принадлежит контрагенту
typestring; requiredТип площадки
namestring; requiredНазвание сайта (блога), приложения или иные способы адресации
urlstringURL площадки или приложения в сторе. Обязательно для типов site и apps

ExternalId для площадки

Поле externalId необходимо для идентификации площадки пользователем в случае одновременной регистрации нескольких площадок.

Если в рамках одного запроса POST /organizations был направлен объект с множественными вложенными площадками, в ответном объекте порядок площадок может отличаться от порядка, в котором они были переданы в запросе. При необходимости externalId может быть использован для адресации на стороне клиента. Однако следует помнить, что для первичной адресации использовать externalId нельзя: например, при регистрации акта можно указывать только platformId, генерируемый на стороне ОРД.

POST /organizations - Регистрация контрагента в ОРД

Параметры запроса

АтрибутТипОписание
requestBodyOrganizationВ теле запроса передаётся объект Organization без id
shortboolПо умолчанию false - отдавать созданный объект целиком, true - отдавать статус объекта

Ответ

HTTP StatusResponse 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} - Обновление информации о контрагенте

Параметры запроса

АтрибутТипОписание
idstring(uuid)Идентификатор контрагента, полученный в ответе от ОРД при регистрации
requestBodyOrganizationВ теле запроса передаётся объект Organization
shortboolПо умолчанию false - отдавать объект целиком, true - отдавать статус объекта

Ответ

HTTP StatusResponse 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} - Получение информации о контрагенте

АтрибутТипОписание
idstring(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:00

HEAD /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

АтрибутТипОписание
idstring[]Список идентификаторов контрагентов, выданных ОРД
innstringИНН
kppstringКПП
alternativeInnstringАльтернативный ИНН
regNumberstringРегистрационный номер
mobilePhonestringАбонентский номер мобильного телефона
epayNumberstringНомер электронного средства платежа
namestringНаименование
typestring[]Тип контрагента
oksmNumberstring[]Код страны по ОКСМ
isOrsbooleanЯвляется ОРС
isRrbooleanЯвляется РР
statusstring[]Статус (см. Статусная модель)
clientIdstring[]Список идентификаторов клиента
createdstringДата создания (YYYY-MM-DD)
erirRegDatestringДата регистрации в ЕРИР (YYYY-MM-DD)
page, limit, sorting, cursor-Параметры постраничного вывода

OrganizationSearchResponse object

АтрибутТипОписание
dataOrganizationSearchItem[]Найденные контрагенты
metaPaginationПостраничный вывод

OrganizationSearchItem object - агрегат контрагента и статуса

АтрибутТипОписание
organizationOrganizationОбъект контрагента
entityStatusСтатус сущности

Пример запроса

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

АтрибутТипОписание
platformIdstring(uuid)Идентификатор площадки в ОРД
organizationIdstring(uuid)Идентификатор контрагента, к которому относится площадка
externalIdstring; requiredПользовательский идентификатор площадки
isOwnedboolean; requiredПлощадка принадлежит контрагенту. Может быть true только если указан organizationId
typestring; requiredТип площадки
namestring; requiredНазвание сайта (блога), приложения или иные способы адресации. До 100 символов
urlstring

URL площадки или приложения в сторе. До 2000 символов. 

Обязательно для типов site и apps, для smarttv и hbbtv не требуется

Значения type

ЗначениеОписание
siteСайт
appsПриложение
smarttvSmart TV
hbbtvHbbTV
is\*Информационная система

\* Значение is нельзя использовать при создании и редактировании, но оно может приходить в ответах для объектов, которые были заведены до введения этого ограничения.

PlatformListResponseItem object - агрегат площадки и статуса

АтрибутТипОписание
platformPlatformОбъект площадки
entityStatusСтатус сущности

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

АтрибутТипОписание
platformIdstringИдентификатор площадки в ОРД
organizationIdstringИдентификатор контрагента
externalIdstringПользовательский идентификатор
boolbooleanПризнак принадлежности площадки контрагенту. Имя поля именно bool - в остальных объектах тот же признак называется isOwned
namestringНаименование
urlstringURL
typestringТип площадки
statusstringСтатус
createDate, endDate, estimateDatestringДаты
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

АтрибутТипОписание
idstring(uuid)Идентификатор договора / доп. соглашения в ОРД
typestring; requiredТип договора
clientIdstring(uuid)Идентификатор контрагента-заказчика в ОРД. Обязателен, если не передан clientInn
clientInnstringИНН заказчика - альтернатива clientId
contractorIdstring(uuid)Идентификатор контрагента-исполнителя в ОРД. Обязателен, если не передан contractorInn
contractorInnstringИНН исполнителя - альтернатива contractorId
isRegReportboolean; requiredНа исполнителе лежит обязанность регистрировать креативы и подавать отчётность
actionTypestringОписание осуществляемых посредником-представителем действий
subjectTypestringСведения о предмете договора. В спецификации помечено обязательным, фактически не проверяется
numberstringНомер договора / доп. соглашения. До 255 символов
datestring(date); requiredДата договора / доп. соглашения, формат YYYY-MM-DD
endDatestring(date)Дата окончания действия договора / доп. соглашения
amountnumberЦена договора. Два знака после запятой
contractIdstring(uuid)Идентификатор родительского договора, если регистрируется доп. соглашение
agentActingForPublisherbooleanПризнак направления денежного потока в сторону принципала. Заполняется только для типа intermediary-contract
isChargePaidByAgentbooleanПризнак того, что вознаграждение удерживает агент. Заполняется только для типа intermediary-contract
cidstringИдентификатор изначального договора (ИД)
namestringНазвание договора. От 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

АтрибутТипОписание
idstring[]Список идентификаторов договоров
typestring[]Тип договора
actionTypestring[]Описание действий посредника-представителя
subjectTypestring[]Предмет договора
numberstringНомер договора
namestringНазвание договора - точное совпадение
nameContainsstringПоиск названия по подстроке
datestringДата договора
endDatestringДата окончания договора
amountnumberЦена договора
contractIdstringИдентификатор родительского договора
clientIdstring[]Список идентификаторов заказчиков
contractorIdstring[]Список идентификаторов исполнителей
isRegReportbooleanОбязанность регистрировать креативы
statusstring[]Статус
created, erirRegDatestringДата создания / регистрации в ЕРИР
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 договора

АтрибутТипОписание
idstring(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 ContentCID найден
404 Not FoundCID не найден

Формато-логический контроль

АтрибутФормато-логический контроль
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

АтрибутТипОписание
idstring(uuid)Уникальный идентификатор креатива
markerstringМаркер (erid) креатива - для креатива, зарегистрированного в ЕРИР. Длина от 1 до 100 символов
erirIdTypestring; requiredТип маркера. Не может быть изменён PUT-запросом
contractIdstring(uuid)[]Идентификаторы зарегистрированных в ОРД договоров (или доп. соглашений), в рамках которых производится размещение креатива. Массив - для поддержки кобрендинга. Обязателен, если не заданы cid и selfPromotionOrganizationId
cidstring[]Идентификаторы изначальных договоров. Должны быть не заданы, если задан contractId или selfPromotionOrganizationId
selfPromotionOrganizationIdstring(uuid)Идентификатор контрагента, для которого данный креатив является саморекламой. Должен быть null, если задан contractId
descriptionstringОбщее описание объекта рекламирования. До 1000 символов. Обязательно, если в ktu передан единственный код 30.15.1
namestringНазвание креатива. От 1 до 255 символов. Служебное поле для поиска - в ЕРИР не передаётся
formstring; requiredФорма распространения рекламы
urlstring[]

Целевые ссылки креатива. До 2000 символов каждая. 

Это конечный URL-адрес, на который переходит пользователь при клике по ссылке в рекламном объявлении. Это URL рекламодателя или страницы, которую вы продвигаете.

isSocialboolean; requiredПризнак социальной рекламы
isSocialQuotabooleanПризнак социальной рекламы по квоте. Передаётся вместе с isSocial
ktustring[]Коды справочника ККТУ (категории товаров и услуг). Пустой массив передавать нельзя. ЕРИР считает поле обязательным
targetAudienceTargetAudienceПараметры целевой аудитории рекламы
creativeDataCreativeData[]; 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-html5HTML5-баннер - рекламное сообщение, которое может включать в себя несколько различных креативных форматов, которые упакованы в архив *.zip и относятся к форме креатива - баннер.
videoВидеоролик
audio-recАудиозапись
live-videoВидеотрансляция в прямом эфире
live-audioАудиотрансляция в прямом эфире
other\*Иное

\* Значение other нельзя использовать при создании и редактировании, но оно может приходить в ответах для объектов, заведённых до введения этого ограничения.

Значения erirIdType

ЗначениеОписаниеПриём в запросах
MEDСредний маркер (11+ символов)Да
LONGДлинный маркер (56 символов)Да
SHORTКороткий маркер (6-9 символов)Нет - только в ответах по ранее заведённым объектам
PREMМаркер со словом внутриНет - только в ответах по ранее заведённым объектам

При создании и изменении креатива допустимы только значения MED и LONG; поле обязательно.

TargetAudience object - параметры целевой аудитории

АтрибутТипОписание
agestring[]Возрастные диапазоны. Пример: ["20:25", "30:35"]
geostring[]Коды регионов. Пример: ["50", "16"]
sexstring[]Пол. Пример: ["male"] или ["female"]

CreativeData object - медиаданные креатива

АтрибутТипОписание
textDatastringСодержимое текстовых медиаданных. Обязателен либо textData, либо mediaUrl - но не оба сразу
mediaUrlstring

Ссылка на медиафайл (для изображений, видео и т. п.). ОРД скачивает файл по этой ссылке и сохраняет в своём хранилище

Убедитесь, что доступ к хранилищу открыт (и должен быть открыт после загрузки на протяжении года).

mediaUrlFileTypestringТип файла, указанного в mediaUrl. Заполняется только вместе с mediaUrl
externalIdstringКлиентский идентификатор медиаданных для случаев, когда их нужно идентифицировать при редактировании

Что передавать в creativeData для разных форм распространения

Состав медиаданных определяется значением form. В одном элементе creativeData заполняется либо textData, либо mediaUrl - если нужны оба, передайте два элемента.

Форма распространенияtextDatamediaUrl
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

АтрибутТипОписание
idstring[]Список идентификаторов креативов
markerstringПоиск по маркеру
markersstring[]Поиск по списку маркеров
erirIdstring[]Поиск по идентификаторам ЕРИР
namestringНовое в v5.0. Название креатива - точное совпадение
nameContainsstringНовое в v5.0. Поиск по вхождению подстроки в названии
contractIdstring[]Список идентификаторов договоров
cidstring[]Поиск по идентификаторам изначальных договоров
selfPromotionOrganizationIdstring[]Контрагент, которому принадлежит саморекламный креатив
formstring[]Форма распространения рекламы
typestring[]Тип рекламной модели креатива
statusstring[]Статус
adsStatusstringСостояние передачи статистики: actual, expired, stopped
created, erirRegDatestringДата создания / регистрации в ЕРИР
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 - Снятие креатива с публикации

Метод предназначен для управления статусом креатива в случаях, когда он был удалён из сети или зарегистрирован в Личном кабинете, но не был опубликован в сети. 

Важно: информация о снятии с публикации используется только в Личном кабинете ОРД и не передаётся в ЕРИР.

АтрибутТипОписание
creativeIdstring(uuid); requiredИдентификатор креатива
stopDatestring(date)Дата прекращения публикации, формат YYYY-MM-DD
neverPublishedbooleanПризнак того, что креатив не публиковался. При 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 - Возобновление публикации креатива

Метод отменяет ранее выполненное снятие с публикации: креатив снова считается откручивающимся, и по нему снова можно подавать статистику.

АтрибутТипОписание
creativeIdstring(uuid); requiredИдентификатор креатива
resumePublicationDatestring(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.sexmale - мужчины, 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).

Порядок работы:

  1. Сгенерировать feedId (UUID v4).
  2. Зарегистрировать элементы фида: POST /creatives/feeds/element или пакетно POST /creatives/feeds/element/batch.
  3. Зарегистрировать контейнер с тем же feedId: POST /creatives/feeds/container - в ответе придёт маркер.

Важно. Контейнер с определённым feedId не может быть зарегистрирован в ЕРИР, пока там нет ни одного элемента фида с тем же feedId (контроль CR_30). Отправлять контейнер сразу вслед за элементами при этом можно: он подождёт их в очереди (см. Ожидание зависимостей в общем разделе). Для каждого feedId может быть создано несколько контейнеров - например, если один и тот же набор товаров размещается по разным договорам.

Ограничение, вытекающее из модели:

  • для элемента фида нельзя передавать в статистику (POST /creative-statistics, контроль S_47) и в связку акта с креативом (контроль IC_28) - там указывается контейнер.

FeedContainer object - Контейнер товарного фида

АтрибутТипОписание
idstring(uuid)Уникальный идентификатор контейнера товарного фида в ОРД
feedIdstring(uuid v4); requiredИдентификатор товарного фида. Генерируется клиентом
markerstringМаркер (erid) - для контейнера, зарегистрированного в ЕРИР
contractIdstring(uuid)[]Идентификаторы зарегистрированных в ОРД договоров (или доп. соглашений), в рамках которых производится размещение контейнера. Массив - для поддержки кобрендинга
cidstring[]Идентификаторы изначальных договоров. Должны быть не заданы, если заданы contractId или selfPromotionOrganizationId
selfPromotionOrganizationIdstring(uuid)Идентификатор контрагента, для которого фид является саморекламой. Должен быть null, если задан contractId или cid
descriptionstringОбщее описание объекта рекламирования
formstring; requiredФорма распространения рекламы
isSocialboolean; requiredПризнак социальной рекламы
isSocialQuotaboolean; requiredПризнак социальной рекламы по квоте
ktustring[]Коды справочника ККТУ
targetAudienceFeedContainerTargetAudienceПараметры целевой аудитории рекламы

Значения form - те же, что у обычного креатива (см. раздел "Креативы").

FeedContainerTargetAudience object

АтрибутТипОписание
agestring[]Возрастные диапазоны. Пример: ["20:25", "30:35"]
geostring[]Коды регионов. Пример: ["50", "16"]
sexstring[]Пол. Пример: ["male"] или ["female"]

FeedElement object - Элемент товарного фида

АтрибутТипОписание
idstring(uuid)Уникальный идентификатор элемента товарного фида в ОРД
feedIdstring(uuid v4); requiredИдентификатор товарного фида - тот же, что у контейнера
descriptionstringОбщее описание объекта рекламирования
ktustring[]Коды справочника ККТУ
urlstring[]Целевые ссылки
creativeDataFeedElementData[]; requiredМедиаданные (assets) элемента товарного фида

FeedElementData object

АтрибутТипОписание
textDatastringСодержимое текстовых медиаданных. Обязателен либо textData, либо mediaUrl - но не оба сразу
mediaUrlstringСсылка на медиафайл (для изображений, видео и т. п.)
mediaUrlFileTypestringТип файла: image, video, audio, zip, other. Заполняется только вместе с mediaUrl
externalIdstringКлиентский идентификатор медиаданных для случаев, когда их нужно идентифицировать при редактировании

POST /creatives/feeds/element - Создать элемент товарного фида

Параметры запроса

АтрибутТипОписание
requestBodyFeedElementВ теле запроса передаётся объект FeedElement без id
shortboolПо умолчанию 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

АтрибутТипОписание
feedElementsFeedElement[]; requiredМассив элементов товарного фида. От 1 до 100 элементов в одном запросе

Ответ - BatchFeedElementsResponse

АтрибутТипОписание
feedElementsBatchFeedElementsResponseItem[]Результат по каждому элементу

BatchFeedElementsResponseItem

АтрибутТипОписание
feedElementFeedElementСозданный элемент. Присутствует, если элемент обработан успешно
errorErrorResponseОшибка по элементу. Присутствует, если элемент не прошёл проверки

Пример запроса

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} - Изменить элемент товарного фида

АтрибутТипОписание
idstring(uuid)Идентификатор элемента, полученный при регистрации
requestBodyFeedElementОбъект FeedElement
shortboolСокращённый ответ

Товар подорожал или сменилась картинка - элемент обновляется, 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

АтрибутТипОписание
idstring[]Список идентификаторов элементов
feedIdstring[]Список идентификаторов фидов
erirIdstring[]Поиск по идентификаторам ЕРИР
statusstring[]Статус
created, erirRegDatestringДата создания / регистрации в ЕРИР
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} - Изменить контейнер товарного фида

АтрибутТипОписание
idstring(uuid)Идентификатор контейнера, полученный при регистрации
requestBodyFeedContainerОбъект FeedContainer
shortboolСокращённый ответ

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

АтрибутТипОписание
idstring[]Список идентификаторов контейнеров
feedIdstring[]Список идентификаторов фидов
contractIdstring[]Список идентификаторов договоров
cidstring[]Список идентификаторов изначальных договоров
selfPromotionOrganizationIdstring[]Контрагент, которому принадлежит саморекламный фид
markersstring[]Поиск по маркерам
erirIdstring[]Поиск по идентификаторам ЕРИР
formstring[]Форма распространения рекламы
statusstring[]Статус
created, erirRegDatestringДата создания / регистрации в ЕРИР
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, см. раздел "Статистика выполнения РК"). Какой способ выбрать - ниже.

Логика работы с актами и статистикой

Предполагается три сценария работы:

  1. Акты раз в месяц. Если акты формируются раз в месяц, так же как и статистика, рекомендуется передавать статистику вместе с актом через POST /invoices/with-statistic.
  2. Акты реже, чем раз в месяц (например, квартальный акт):
    • в течение 30 дней с момента окончания месяца направлять статистику по каждому креативу по каждой площадке за весь период через POST /creative-statistics;
    • по составлении акта в конце периода зарегистрировать его через POST /invoices;
    • зарегистрировать связку акта с креативом, указав каждый креатив по каждому изначальному договору, через POST /invoices/creatives. Дожидаться, пока акт получит APPROVED, не нужно: связка сама подождёт акт (см. "Ожидание зависимостей" в общем разделе).
  3. Акты чаще, чем раз в месяц (например, раз в неделю):
    • по составлении каждого акта он регистрируется в ЕРИР через POST /invoices;
    • в течение 30 дней после окончания отчётного периода регистрируется статистика через POST /creative-statistics;
    • регистрируются связки каждого акта с креативом через POST /invoices/creatives.

Invoice object - Акт

Объект используется методами группы /invoices (акт без статистики). Объект InvoiceWithStatistic группы /invoices/with-statistic отличается только тем, что в items[].creatives[] дополнительно передаётся статистика открутки.

АтрибутТипОписание
idstring(uuid)Идентификатор акта, выданный ОРД
typestring; requiredТип акта
contractIdstring(uuid); requiredИдентификатор зарегистрированного в ОРД договора (или доп. соглашения), к которому относится акт
numberstringНомер акта
datestring(date); requiredДата акта
startDatestring(date); requiredДата начала периода оказания услуг
endDatestring(date); requiredДата окончания периода оказания услуг
clientRolestring; requiredРоль заказчика в акте. Не требуется только при irRelevant = true
contractorRolestring; requiredРоль исполнителя в акте. Не требуется только при irRelevant = true
amountInvoiceAmount; requiredСведения о суммах акта / отчёта
itemsInvoiceItem[]Разаллокация акта по атрибутам изначального договора
rrOrderContractIdListstring(uuid)[]Список идентификаторов посреднических договоров, по поручению которых был заключён договор оказания услуг
isSocialbooleanПризнак "Социальная реклама". Передаётся только вместе с isSocialQuota
isSocialQuotabooleanПризнак "Социальная реклама по квоте". Передаётся только вместе с isSocial
irRelevantbooleanОтметить акт как неактуальный

Значения 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 - Сведения о суммах акта

АтрибутТипОписание
servicesInvoiceAmountServicesДетализация суммы акта за услуги
commissionInvoiceAmountCommissionДетализация вознаграждения посредника. Обязателен для типов intermediary-report и commission-invoice, запрещён для invoice (контроли I_136, I_138)

InvoiceAmountServices object

АтрибутТипОписание
excludingVatnumberСумма акта / отчёта без учёта НДС, 2 знака после запятой
vatRatenumberСтавка НДС, 2 знака после запятой
vatnumberСумма НДС в акте / отчёте, 2 знака после запятой
includingVatnumberСумма акта / отчёта, включая НДС, 2 знака после запятой
intermediaryReportIdListstring(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

АтрибутТипОписание
isInvoicebooleanНовое в v5.0. Признак отдельного акта на вознаграждение. Передаётся только для типа intermediary-report (контроль I_198)
excludingVatnumberСумма вознаграждения посредника без учёта НДС, 2 знака после запятой
vatRatenumberСтавка НДС, 2 знака после запятой
vatnumberСумма НДС для вознаграждения посредника, 2 знака после запятой
includingVatnumberСумма вознаграждения посредника, включая НДС, 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 - Разаллокация акта

АтрибутТипОписание
contractIdstring(uuid)Идентификатор изначального договора / доп. соглашения в ОРД
cidstringИдентификатор изначального договора. Обязан быть null, если задан contractId, и наоборот
amountInvoiceItemAmountСумма в привязке к каждому изначальному договору
isSocialbooleanПризнак "Социальная реклама" в детализации акта
isSocialQuotabooleanПризнак "Социальная реклама по квоте" в детализации акта

InvoiceItemAmount object

АтрибутТипОписание
excludingVatnumberСумма детализации без учёта НДС, 2 знака после запятой
vatRatenumberСтавка НДС, 2 знака после запятой
vatnumberСумма НДС в детализации, 2 знака после запятой
includingVatnumberСумма детализации, включая НДС, 2 знака после запятой

InvoiceItemWithStatistic object

Используется в /invoices/with-statistic. Дополняет InvoiceItem разаллокацией по креативам:

АтрибутТипОписание
contractId, cid, amount, isSocial, isSocialQuota-См. InvoiceItem
creativesInvoiceItemCreative[]Разаллокация по креативам за период акта

InvoiceItemCreative object

АтрибутТипОписание
creativeIdstring(uuid)Идентификатор креатива
markerstringМаркер креатива. Только в запросах POST / PUT и только если не указан creativeId
platformsInvoiceItemCreativePlatform[]Статистика по креативу в разрезе площадок

InvoiceItemCreativePlatform object

АтрибутТипОписание
platformIdstring; requiredИдентификатор площадки
campaignTypestring; requiredТип рекламной кампании
impsPlanint64; requiredКоличество показов по акту
dateStartPlanstring(date); requiredДата начала показов по акту
dateEndPlanstring(date); requiredДата окончания показов по акту
impsFactint64; requiredКоличество показов фактическое
dateStartFactstring(date); requiredДата начала показов фактическая
dateEndFactstring(date); requiredДата окончания показов фактическая
amountInvoiceItemCreativePlatformAmount; requiredСтоимость оказанных услуг
amountPerShownumber; requiredСтоимость единицы оказания услуг
externalIdstringПользовательский идентификатор

Значения campaignType

ЗначениеОписание
cpmОплата за показы
cpcОплата за клики
cpaОплата за действия
otherИное

InvoiceItemCreativePlatformAmount object

АтрибутТипОписание
excludingVatnumberСтоимость оказанных услуг без учёта НДС, 5 знаков после запятой
vatRatenumberСтавка НДС, 2 знака после запятой
vatnumberСумма НДС для стоимости оказанных услуг, 5 знаков после запятой
includingVatnumberСтоимость оказанных услуг, включая НДС, 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/status

POST /invoices/search - Список актов

InvoiceFilter object

АтрибутТипОписание
idstring[]Список идентификаторов актов
typestringТип акта: invoice, intermediary-report, commission-invoice
numberstringНомер акта
contractIdstring[]Список идентификаторов договоров
clientRole, contractorRolestring[]Роли сторон
date, startDate, endDatestringДата акта, даты начала и окончания периода
amountnumberСумма
isSocialbooleanПризнак "Социальная реклама"
isSocialQuotabooleanПризнак "Социальная реклама по квоте"
statusstring[]Статус
created, erirRegDatestringДата создания / регистрации в ЕРИР
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

АтрибутТипОписание
idstring(uuid)Идентификатор статистики в ОРД
creativeIdstring(uuid); requiredИдентификатор креатива, по которому передаётся статистика. Можно заменить на marker
markerstringМаркер креатива. Только в запросах POST / PUT и только если не указан creativeId
platformIdstring; requiredИдентификатор площадки. До 255 символов
campaignTypestring; requiredТип рекламной кампании: cpm, cpc, cpa, other
impsPlanint64; requiredКоличество показов по акту
dateStartPlanstring(date); requiredДата начала показов по акту
dateEndPlanstring(date); requiredДата окончания показов по акту
impsFactint64; requiredКоличество показов фактическое
dateStartFactstring(date); requiredДата начала показов фактическая. Единственная из дат, обязательная всегда
dateEndFactstring(date); requiredДата окончания показов фактическая
amountCreativeStatisticAmount; requiredСтоимость оказанных услуг
amountPerShownumber; requiredСтоимость единицы оказания услуг
invoiceIdstring(uuid)Идентификатор акта в ОРД
contractIdstring(uuid)Идентификатор изначального договора в ОРД
cidstringИдентификатор изначального договора. Взаимоисключающ с contractId
externalIdstringПользовательский идентификатор

Отличие от v4. Поле irRelevant в объекте статистики удалено. Для исключения ошибочно поданной статистики используйте DELETE /creative-statistics/{id}.

CreativeStatisticAmount object

АтрибутТипОписание
excludingVatnumberСтоимость оказанных услуг без учёта НДС, 5 знаков после запятой
vatRatenumberСтавка НДС, 2 знака после запятой
vatnumberСумма НДС для стоимости оказанных услуг, 5 знаков после запятой
includingVatnumberСтоимость оказанных услуг, включая НДС, 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

АтрибутТипОписание
idstring[]Идентификаторы статистики
creativeIdstringИдентификатор креатива
markerstring[]Маркеры креативов
platformIdstringИдентификатор площадки
platformstring[]Название площадки
invoiceIdstringИдентификатор акта
contractIdstringИдентификатор договора
cidstringИдентификатор изначального договора
datestringДата статистики
planStartDate, planEndDatestringДаты показов по акту
factStartDate, factEndDatestringФактические даты показов
statusstring[]Статус
created, registeredstringДата создания / регистрации
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

АтрибутТипОписание
creativesInvoiceCreativesItem[]Список связок

InvoiceCreativesItem object

АтрибутТипОписание
idstring(uuid)Идентификатор связки
invoiceIdstring(uuid); requiredИдентификатор акта, выданный ОРД
contractIdstring(uuid)Идентификатор изначального договора. Обязателен, если не указан cid
cidstringИдентификатор изначального договора. Обязан быть null, если задан contractId
creativesCreatives[]Идентификаторы креативов

Creatives object

АтрибутТипОписание
creativeIdstring(uuid)Идентификатор креатива. Должен быть пуст, если передан marker
markerstringМаркер креатива. Только в запросах 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

АтрибутТипОписание
idstring[]Идентификаторы связок
invoiceIdstringИдентификатор акта
created, registeredstringДата создания / регистрации
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

АтрибутТипОписание
idstring(uuid); requiredИдентификатор удаляемой сущности в ОРД
causestring; requiredПричина удаления. Заполняется в свободной форме, читается оператором при рассмотрении

Ответ - CreateDeleteRequestResponse

АтрибутТипОписание
idstringИдентификатор заявки
entityIdstringИдентификатор удаляемой сущности
entityTypestringТип сущности
statusstringСтатус заявки. Перечень значений задаётся сервисом удаления; пока заявка не обработана, сущность заблокирована на изменение
causestringПричина удаления
createdstring(timestamp)Дата и время создания заявки
updatedstring(timestamp)Дата и время последнего изменения заявки
errorMessagestringТекст ошибки, если обработка заявки завершилась неуспешно

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} - Получить заявку

АтрибутТипОписание
idintegerИдентификатор заявки на удаление

Ответ: объект 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

АтрибутТипОписание
pageintegerНомер страницы
limitintegerСколько элементов на странице
sortingstring[]Сортировки

Ответ - GetDeleteRequestsResponse

АтрибутТипОписание
dataGetDeleteRequestsResponseItem[]Найденные заявки
meta.totalintegerОбщее количество заявок

Обратите внимание на формат полей. В элементах списка используется 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

АтрибутТипОписание
dataKtuNode[]Корневые узлы справочника

KtuNode

АтрибутТипОписание
valuestringКод ККТУ
titlestringНаименование категории
childrenKtuNode[]Вложенные категории. Отсутствует у листовых узлов

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

Поле формыТипОписание
batchfile; requiredФайл в формате CSV, XLSX или XLS. Формат определяется по содержимому файла, а не по расширению
entityTypestring; 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
Не указан entityType400, detail: empty entity type
Формат файла не CSV / XLSX / XLS400, detail: unsupported file format
Размер файла превышает лимит413 Payload Too Large

POST /batch/list - Список заданий и их статусы

Тело запроса - фильтр

АтрибутТипОписание
idstringИдентификатор задания
typestringТип сущности (см. entityType)
statusstringСтатус задания
createDatestringДата создания
createdFrom, createdTostringДиапазон дат создания
endDatestringДата завершения
estimateDatestringРасчётная дата завершения
page, limit, sorting-Параметры постраничного вывода

Ответ

АтрибутТипОписание
databatchReport[]Список заданий
meta-Постраничный вывод

Элемент списка

АтрибутТипОписание
idstringИдентификатор задания
urlstringСсылка на отчёт о результатах обработки
statusstringСтатус обработки. Перечень значений задаётся сервисом пакетной обработки; ориентируйтесь на пару total / processed и на непустой endDate как признак завершения
typestringТип сущности
createDatestringДата и время постановки задания
estimateDatestringРасчётная дата и время завершения
endDatestringФактическая дата и время завершения
totaluint64Всего строк в файле
processeduint64Обработано строк

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} - Ссылка на отчёт

АтрибутТипОписание
idstringИдентификатор задания

Возвращает подписанную ссылку на файл отчёта. Отчёт повторяет структуру исходного файла и дополняет каждую строку результатом: идентификатором созданной сущности либо текстом ошибки.

200 OK

{ "data": "https://storage.ord-lab.ru/reports/b5f1d20c.xlsx?signature=..." }

Рекомендуемый порядок работы

  1. POST /batch/registration - загрузить файл, получить id.
  2. Периодически (например, раз в минуту) вызывать POST /batch/list с фильтром по этому id и смотреть status, total, processed.
  3. По завершении - GET /batch/download_report/{id}, скачать отчёт по полученной ссылке.
  4. Разобрать отчёт: строки с ошибками исправить и загрузить повторно отдельным файлом.

Шаблоны файлов для каждого типа сущности доступны в личном кабинете ОРД - они содержат корректные заголовки колонок и примеры заполнения.

Сценарии: посреднические акты#

Кто такой посредник и почему для него отдельные акты

Посредник (агент, комиссионер, поверенный) - участник цепочки, который заключает договоры и покупает размещение не от своего имени и не за свой счёт, а по поручению принципала. Его собственный доход - не вся сумма договора, а только вознаграждение.

Из этого следует, что в отчётности нужно разделять два денежных потока:

  • суммы за услуги - деньги, которые прошли через посредника к рекламораспространителю;
  • вознаграждение посредника - то, что посредник оставил себе.

Договор посредника регистрируется с типом 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

ПолеКонтрольПричина
itemsI_207Разаллокация по изначальным договорам относится к услугам, а не к вознаграждению
amount.services.excludingVatI_192В акте на вознаграждение нет суммы за услуги
amount.services.vatRateI_193То же
amount.services.vatI_195То же
amount.services.includingVatI_197То же
amount.commission.isInvoiceI_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.202622 % запрещена (контроли 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_3id, type, isOrs, isRrНе заполнено обязательное поле
O_1idПоле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым
O_3typeНеверное значение для типа контрагента (type). Допустимые значения fl/ip/ul/ffl/ful
O_10innНе пройдена проверка ИНН на контрольное число для ФЛ/ИП/ЮЛ (inn)
O_13innНе заполнено поле "ИНН" (inn) для типа контрагента ФЛ/ИП/ЮЛ
O_14nameНеверный формат данных для наименования контрагента (name)
O_16mobilePhoneНеверный формат данных для абонентского номера мобильного телефона (mobilePhone)
O_18mobilePhone, epayNumberДля иностранного физического лица (type = ffl) одно из полей должно быть заполнено: mobilePhone, epayNumber
O_19epayNumberНеверный формат данных для номера электронного средства платежа (epayNumber)
O_21regNumberНеверный формат данных для регистрационного номера либо его аналога (regNumber)
O_22regNumber, alternativeInnДля иностранного юридического лица (type = ful) одно из полей должно быть заполнено: regNumber, alternativeInn
O_23alternativeInnНеверный формат данных для номера налогоплательщика либо его аналога в стране регистрации
O_24alternativeInnДля иностранного физического лица (type = ffl) при наличии признака isOrs = true поле alternativeInn должно быть заполнено
O_25oksmNumberНеверный формат данных для кода страны регистрации юрлица в соответствии с ОКСМ (oksmNumber)
O_26oksmNumberДля иностранного физического лица (type = ffl) и иностранного юридического лица (type = ful) поле oksmNumber должно быть заполнено
O_27rsUrlНеверный формат данных для сведений об ИС и (или) программе для ЭВМ (rsUrl)
O_28rsUrlНе заполнено поле "Сведения об ИС и (или) программе для ЭВМ, которые предназначены и используются ОРС для организации распространения в сети «Интернет» рекламы" (rsUrl)
U_O_62cidИзменение данных по контрагенту (id = {id}) запрещено, так как найден договор (id = {id}) с выданным уникальным идентификатором изначального договора (cid), где он является Заказчиком
U_O_63cidИзменение данных по контрагенту (id = {id}) запрещено, так как найден договор (id = {id}) с выданным уникальным идентификатором изначального договора (cid), где он является Исполнителем
O_69inn, epayNumber, regNumber, alternativeInnПоле не должно быть заполнено
O_70idОрганизация не может быть зарегистрирована/обновлена, так как идентификатор организации (id = {id}) был отправлен в сервис удаления и находится на согласовании.
O_72innНе найден ИНН организации (inn={id}) в ЕГРЮЛ/ЕГРИП
O_73nameНе заполнено обязательное поле
O_74kppПоле может содержать только цифры, должно быть 9 знаков, не может быть пустым
O_75kppНе должно быть заполнено, так как тип контрагента не Юридическое лицо (ul)
O_77innНе может быть изменен ИНН контрагента (id={id}), так как в одном из договоров противоположной стороной является контрагент с таким же ИНН
O_79addressНеверный формат данных для Адреса места жительства (нахождения) контрагента (address) для типа контрагента ФЛ/ИП/ЮЛ
O_80addressНеверный формат данных для Адреса места жительства (нахождения) контрагента (address) для типа контрагента Иностранное ФЛ/ Иностранное ЮЛ
O_81mobilePhoneНе может быть обновлен контрагент (id={id}) с типом ИФЛ (ffl), так как в одном из договоров противоположной стороной является контрагент с таким же типом, ОКСМ и номером мобильного телефона.
O_82epayNumberНе может быть обновлен контрагент (id={id}) с типом ИФЛ (ffl), так как в одном из договоров противоположной стороной является контрагент с таким же типом, ОКСМ и номером электронного средства платежа.
O_83regNumberНе может быть обновлен контрагент (id={id}) с типом ИЮЛ (ful), так как в одном из договоров противоположной стороной является контрагент с таким же типом, ОКСМ и регистрационным номером.
O_84alternativeInnНе может быть обновлен контрагент (id={id}) с типом ИФЛ (ffl) или ИЮЛ (ful), так как в одном из договоров противоположной стороной является контрагент с тем же типом, ОКСМ и номером налогоплательщика или его аналогом.

Площадки

КодПолеТекст ошибки
GV_3platformId, type, isOwned, nameНе заполнено обязательное поле
P_1organizationIdПоле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым
P_2organizationIdИдентификатор контрагента не зарегистрирован в ЕРИР (organizationId)
P_5platformIdНеверный формат данных для идентификатора площадки (platformId)
P_7typeНеверное значение для типа площадки (type). Допустимые значения apps/site/smarttv/hbbtv
P_11nameНеверный формат данных для наименования площадки (name)
P_13urlНеверный формат данных для URL площадки или приложения (url). Отсутствует протокол http|https
P_15isOwnedНеверное значение для признака принадлежности площадки контрагенту (isOwned). Допустимые значение false, так как не указан Идентификатор контрагента в ОРД (organizationId)
P_30organizationIdПлощадка не может быть зарегистрирована/обновлена, так как идентификатор организации (organizationId={id}) был отправлен в сервис удаления и находится на согласовании
P_31platformIdПлощадка не может быть зарегистрирована/обновлена, так как идентификатор площадки (platformId={id}) был отправлен в сервис удаления и находится на согласовании
P_33urlВ URL площадки не указана детализация
P_34urlНе заполнено поле "URL площадки или приложения" (url) для типов площадок приложение/сайт

Договоры

КодПолеТекст ошибки
C_1idПоле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым
C_3typeНеверное значение для типа договора (type). Допустимые значения intermediary-contract/contract/additional-agreement
C_04clientIdНеверный формат данных для идентификатора Контрагента-заказчика (clientId)
C_5clientIdИдентификатор Контрагента-заказчика не зарегистрирован в ЕРИР (clientId)
C_10contractorIdНеверный формат данных для идентификатора Контрагента-исполнителя (contractorId)
C_11contractorIdИдентификатор Контрагента-исполнителя не зарегистрирован в ЕРИР (contractorId)
C_16agentActingForPublisherНе заполнено поле "Признак направления денежного потока в сторону принципала" (agentActingForPublisher) для посреднического договора
C_17actionTypeНеверное значение для описания осуществляемых посредником-представителем действий (actionType). Допустимые значения other/distribution/conclude/commercial
C_19subjectTypeНеверное значение для cведений о предмете договора (subjectType). Допустимые значения other/org-distribution/mediation/distribution/representation
C_21numberНеверный формат данных для номера договора / доп.соглашения (number)
C_22dateНеверный формат данных для даты договора / доп.соглашения (date)
C_23dateДата договора / доп.соглашения (date) должна быть не ниже, чем 01.01.1991
C_24dateДата договора / доп.соглашения (date) должна быть меньше или равна текущей дате
C_26amountНеверное значение для суммы договора / доп.соглашения (amount): допустимы нулевые значения и положительные не больше 999 999 999 999.99, а также должны иметь 2 знака после точки.
C_29contractIdНеверный формат данных для идентификатора родительского договора (contractId)
C_30contractIdИдентификатор родительского договора не зарегистрирован в ЕРИР (contractId)
C_31clientIdИдентификатор Контрагента-заказчика в ОРД (clientId) и идентификатор Контрагента-исполнителя в ОРД (contractorId) не совпадает с идентификаторами в доп. соглашении
C_33contractIdНе заполнено поле "Идентификатор родительского договора, если регистрируется доп.соглашение" (contractId) для дополнительного соглашения
C_34clientIdИдентификатор Контрагента-заказчика в ОРД (clientId) совпадает с идентификатором Контрагента-исполнителя в ОРД (contractorId)
U_C_48cidИзменение идентификатора Контрагента-заказчика в договоре (id = {id}) запрещено, так как найден уникальный идентификатор изначального договора (cid)
U_C_49cidИзменение идентификатора Контрагента-исполнителя в договоре (id = {id}) запрещено, так как найден уникальный идентификатор изначального договора (cid)
C_52idДоговор не может быть зарегистрирован/обновлен, так как идентификатор договора (id={id}) был отправлен в сервис удаления и находится на согласовании
C_53clientIdДоговор не может быть зарегистрирован/обновлен, так как идентификатор Контрагента-заказчика (clientId={id}) был отправлен в сервис удаления и находится на согласовании
C_54contractorIdДоговор не может быть зарегистрирован/обновлен, так как идентификатор Контрагента-исполнителя (contractorId={id}) был отправлен в сервис удаления и находится на согласовании
C_55contractIdДоговор не может быть зарегистрирован/обновлен, так как идентификатор родительского договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании
C_57contractIdИдентификатор дополнительного соглашения "id" равен идентификатору родительского договора "contractId"
C_58contractIdВ поле "contractId" не должно быть указано дополнительное соглашение (contractId={id})
C_59idДоговор (id = {id}) не может быть дополнительным соглашением, так как на него ссылаются другие дополнительные соглашения, например, договор с id = {id}.
C_60amountСумма договора не может быть равна 0, так как тип договора равен intermediary-contract (посреднический договор)
C_61endDateНеверный формат данных для даты окончания срока действия договора (endDate)
C_62dateДата в endDate должна быть позже, либо равна дате договора (date)
C_63amountСумма доп.соглашения не может быть равна 0, так как родительский договор с типом intermediary-contract
C_64contractIdПоле не должно передаваться, так как регистрируется договор с типом "intermediary-contract" или "contract"
C_65agentActingForPublisherПоле должно передаваться только в типе договора "Посреднический договор" и Признаке направления денежного потока в сторону принципала (agentActingForPublisher) равным false.
C_68contractorIdПоле isChargePaidByAgent может содержать только значение false, так как исполнитель по договору (contractorId) является иностранным лицом.
C_87typeЗапрещается изменять тип договора, так как последнее изменение типа договора было зарегистрировано в текущем месяце
C_88clientIdЗапрещается изменять контрагента-заказчика, так как последнее изменение контрагента-заказчика договора было зарегистрировано в текущем месяце
C_89contractorIdЗапрещается изменять контрагента-исполнителя, так как последнее изменение контрагента-исполнителя договора было зарегистрировано в текущем месяце
C_90mobilePhoneДоговор не может быть зарегистрирован/обновлен, так как Заказчик и Исполнитель либо лица РФ, которые имеют один и тот же ИНН, либо иностраннные лица, у которых указана одинаковая информация в полях "Абонентский номер мобильного телефона" (mobilePhone), "Номер электронного средства платежа" (epayNumber), "Регистрационный номер либо его аналог" (regNumber), "Номер налогоплательщика либо его аналог в стране регистрации" (alternativeInn).
GV_1isChargePaidByAgentПереданное значение в поле не соответствует типу данных
GV_3id, type, clientId, contractorIdНе заполнено обязательное поле

Креативы

КодПолеТекст ошибки
CR_1idПоле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым
CR_3contractIdНеверный формат данных для идентификатора изначального договора/доп.соглашения (contractId={id})
CR_4contractIdИдентификатор изначального договора/доп.соглашения не зарегистрирован в ЕРИР (contractId={id})
CR_6descriptionНеверный формат данных для общего описания объекта рекламирования (description)
CR_10formНеверное значение для формы распространения рекламы (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_11formНе заполнено обязательное поле "Форма распространения рекламы" (form) для креатива и контейнера товарного фида
CR_13isSocialНе заполнено обязательное поле "Признак социальной рекламы" (isSocial) для креатива и контейнера товарного фида
CR_20urlНеверный формат данных для целевой ссылки (url).
CR_21typeНеверное значение для типа целевой аудитории рекламы (type). Допустимые значения geo/sex/age
CR_22targetAudienceНеверный формат данных для значения целевой аудитории рекламы (targetAudience)
CR_23textDataНеверный формат данных для текстовых данных креатива (textData)
CR_24textDataСумма всех текстовых данных превышает 65 000 символов
CR_26mediaUrlНеверный формат данных для ссылки на образец (mediaUrl). Отсутствует протокол http|https
CR_29-Неверный тип объекта. Тип задаётся методом: /creatives - креатив, /creatives/feeds/element - элемент товарного фида, /creatives/feeds/container - контейнер товарного фида
CR_30feedIdНе найден элемент товарного фида с таким же feedId
CR_32feedIdНеверный формат данных для идентификатора товарного фида (feedId)
CR_33feedIdПоле "Идентификатор товарного фида" нельзя передавать в креативе
CR_34contractIdПоле "Изначальный договор/доп.соглашение" нельзя передавать в элементе товарного фида
CR_35selfPromotionOrganizationIdНеверный формат данных для идентификатора контрагента, которому принадлежит саморекламный креатив (selfPromotionOrganizationId)
CR_36selfPromotionOrganizationIdПоле "Идентификатор контрагента, которому принадлежит саморекламный креатив" нельзя передавать в элементе товарного фида
CR_38formПоле "Форма распространения рекламы" нельзя передавать в элементе товарного фида
CR_39isSocialПоле "Признак социальной рекламы" нельзя передавать в элементе товарного фида
CR_42urlПоле "Целевая ссылка" нельзя передавать в контейнере товарного фида
CR_43targetAudienceПоле "Параметры целевой аудитории рекламы" нельзя передавать в элементе товарного фида
CR_44creativeDataПоле "Медиаданные креатива" нельзя передавать в контейнере товарного фида
CR_47textData, mediaUrlТолько одно из следующих полей может быть заполнено и оба не могут быть пустыми: mediaUrl, textData
CR_60contractIdДолжно быть заполнено или "Изначальный договор" (contractId), или "Уникальный идентификатор изначального договора" (cid)
CR_63cidНе найден уникальный идентификатор изначального договора (cid)
CR_64contractIdДолжно быть заполнено одно из полей "Идентификатор контрагента, которому принадлежит саморекламный креатив" (selfPromotionOrganizationId - только для креативов саморекламы), или "Изначальный договор/доп.соглашение" (contractId), или "Уникальный идентификатор изначального договора" (cid)
CR_65cidПоле "Уникальный идентификатор изначального договора" нельзя передавать в элементе товарного фида
CR_67markerНеверный формат данных для токена креатива (marker={id})
CR_68markerИдентификатор креатива = {id}, полученный из marker, не совпадает с идентификатором креатива (id= {id})
CR_69markerНе заполнено обязательное поле "Токен креатива" (marker) для креатива и контейнера товарного фида
CR_72selfPromotionOrganizationIdИдентификатор Контрагента, указанный в креативе саморекламы, не зарегистрирован в ЕРИР (selfPromotionOrganizationId={id})
CR_73ktuМассив идентификаторов изначальных договров должен содержать один элемент, так как креатив не кобрендинговый
CR_74contractIdМассив уникальных идентификаторов изначальных договров должен содержать один элемент, так как креатив не кобрендинговый
CR_75idКреатив не может быть зарегистрирован/обновлен, так как идентификатор креатива (id={id}) был отправлен в сервис удаления и находится на согласовании
CR_76contractIdКреатив не может быть зарегистрирован/обновлен, так как идентификатор договора (contractId={id}) был отправлен на удаление
CR_77selfPromotionOrganizationIdКреатив не может быть зарегистрирован/обновлен, так как идентификатор организации (selfPromotionOrganizationId={id}) был отправлен в сервис удаления и находится на согласовании
CR_79geoНеверное значение для типа целевой аудитории рекламы "geo"
CR_81mediaUrlFileTypeНеверное значение типа файла (mediaUrlFileType). Допустимые значения image/video/audio/zip/other
CR_82mediaUrlFileTypeПоле не должно быть заполнено, так как отсутствует mediaUrl
CR_83creativeDataНе передано обязательное поле "creativeData" для креатива и элемента товарного фида
CR_84creativeDataНедопустимо передавать пустой массив "creativeData" для креатива и элемента товарного фида
CR_85creativeDataВ массиве "creativeData" отсутствует хотя бы один элемент с текстовыми данными креатива ("textData"), так как форма креатива form={form}
CR_86creativeDataВ массиве "creativeData" отсутствует хотя бы один элемент с ссылкой на образец креатива ("mediaUrl"), так как форма креатива form={form}
CR_89mediaUrlFileTypeПоле должно быть заполнено, так как передано значение в mediaUrl
CR_91mediaUrlFileTypeНеверное значение типа файла (mediaUrlFileType) для формы распространения креатива form={form}
CR_92targetAudienceВ массиве "targetAudience" не может быть несколько элементов с одинаковым значением в поле "targetAudience"
CR_94ktuМассив должен содержать один элемент, так как креатив не кобрендинговый, и это не контейнер товарного фида
CR_95ktuНеверный формат данных для кода ККТУ (ktu). Поле может содержать только цифры и символ '.' и не может быть пустым
CR_96ktuНе найден код в справочнике ККТУ
CR_97ktuНе передан обязательный массив "ktu" для креатива и контейнера товарного фида
CR_98ktuНедопустимо передавать пустой массив "ktu"
CR_99ktuНе заполнено обязательное поле "Общее описание объекта рекламирования", так как передан код ККТУ (ktu) равным "30.15.1" или в элементе товарного фида не передан код ККТУ (ktu)
CR_100isSocialQuotaНе заполнено обязательное поле "Признак социальной рекламы по квоте" (isSocialQuota) для креатива и контейнера товарного фида
CR_101isSocialQuotaПоле "Признак социальной рекламы по квоте" нельзя передавать в элементе товарного фида
CR_102feedIdПоле должно передаваться для элемента и контейнера товарного фида
GV_3id, typeНе заполнено обязательное поле
GV_4targetAudienceНе передан обязательный массив

Акты

КодПолеТекст ошибки
GV_1irRelevant, isSocial, isSocialQuota, isInvoiceПереданное значение в поле не соответствует типу данных
GV_3id, contractId, clientRole, contractorRoleНе заполнено обязательное поле
I_1idПоле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым
I_3contractIdНеверный формат данных для идентификатора договора (contractId)
I_4contractIdИдентификатор договора не зарегистрирован в ЕРИР (contractId)
I_8clientRoleНеверное значение для роли заказчика в акте (clientRole). Допустимые значения ra/rr/ors/rd/psr
I_9clientRoleНеверно указана роль исполнителя для заказчика с ролью РД. Должна быть РА/ОРС/РР/Посредник
I_10clientRoleНеверно указана роль исполнителя для заказчика с ролью РА. Должна быть РА/ОРС/РР/Посредник
I_11clientRoleНеверно указана роль исполнителя для заказчика с ролью ОРС. Должна быть РА/ОРС/РР/Посредник
I_12clientRoleЗаказчик не может быть в роли РР
I_13clientRoleНеверно указана роль исполнителя для заказчика с ролью РР. Должна быть РА, Посредник или ОРС
I_16contractorRoleНеверное значение для роли исполнителя в акте (contractorRole). Допустимые значения ra/rr/ors/psr
I_18dateНеверный формат данных для даты акта (date)
I_19dateДата акта (date) должна быть не ниже, чем 01.01.1991
I_20dateДата акта (date) должна быть меньше или равна текущей дате
I_22startDateНеверный формат данных для даты начала периода (startDate)
I_23startDateДата начала периода (startDate) должна быть не ниже, чем 01.01.1991
I_24startDateДата начала периода (startDate) должна быть меньше или равна текущей дате
I_27endDateНеверный формат данных для даты окончания периода (endDate)
I_28endDateДата окончания периода (endDate) должна быть не ниже, чем 01.01.1991
I_29endDateДата окончания периода (endDate) должна быть больше или равна, чем дата начала периода (startDate)
I_30endDateПоле endDate не должно содержать дату позже 2100-12-31
I_36numberНеверный формат данных для номера акта (number)
I_39contractIdНеверный формат данных для идентификатора изначального договора / доп.соглашения в детализации акта (contractId)
I_40contractIdИдентификатор изначального договора / доп.соглашения, указанный в детализации акта, не зарегистрирован в ЕРИР (contractId)
I_41contractIdНе заполнено обязательное поле "Идентификатор изначального договора / доп.соглашения в ОРД" в детализации акта (contractId)
I_82itemsНеверное количество объектов разаллокации (items). Допустим только один объект, так как Роль заказчика в акте = Рекламодатель (clientRole=rd)
I_89descriptionНеверный формат данных для сведений о выявленных несоответствиях в предоставленной (description)
I_91contractIdНеверное значение для поля "Идентификатор изначального договора / доп.соглашения в ОРД" в детализации акта (contractId). Если передается Роль заказчика в акте = Рекламодатель (clientRole=rd), то contractId (договор акта) должен быть равен items.contractId (изначальный договор) или contractId должен являться дополнительным соглашением к items.contractId.
I_93contractIdВ разаллокации акта дублируется "Идентификатор изначального договора / доп.соглашения в ОРД" (contractId)
I_94itemsНеверное значение для массива "Детализация акта по атрибутам изначального договора" (items). Необходимо передать значения в массиве или исключить
I_107contractIdНеверное значение для идентификатора изначального договора / доп.соглашения в ОРД в детализации акта (contractId). Должно быть пустое, так как указан "Уникальный идентификатор изначального договора" в детализации акта (cid)
I_110cidНе найден уникальный идентификатор изначального договора в детализации акта (cid)
I_111cidНе заполнено обязательное поле "Уникальный идентификатор изначального договора" в детализации акта (cid)
I_112cidВ разаллокации акта дублируется "Уникальный идентификатор изначального договора " (cid)
I_115contractIdАкт не может быть зарегистрирован/обновлен, так как идентификатор договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании
I_116contractIdАкт не может быть зарегистрирован/обновлен, так как идентификатор изначального договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании
I_118idАкт не может быть зарегистрирован/обновлен, так как идентификатор акта (id={id}) был отправлен в сервис удаления и находится на согласовании
I_120clientRoleНеверно указана роль исполнителя или заказчика. Должна быть не равна РД
I_121contractorRoleНеверно указана роль исполнителя. Должна быть РА, Посредник или ОРС
I_123idАкт не может быть изменен, так как идентификатор акта (id={id}) используется в подписанных расчетах отчислений
I_124typeНеверное значение для типа акта (type). Допустимые значения invoice/intermediary-report/commission-invoice
I_125typeНеверный тип акта. Должен быть "Акт выполненных работ" (invoice), так как договор акта имеет тип "Договор оказания услуг" (contract) или акт регистрируется к "Дополнительному соглашению" (additional-agreement), у которого родительский договор с типом "Договор оказания услуг" (contract)
I_126typeНеверный тип акта. Должен быть "Отчет посредника" (intermediary-report) или "Акт на вознаграждение посредника" (commission-invoice), так как договор акта имеет тип "Посреднический договор" (intermediary-contract) или акт регистрируется к "Дополнительному соглашению" (additional-agreement), у которого родительский договор с типом "Посреднический договор" (intermediary-contract).
I_127excludingVatНеверное значение для суммы акта/отчета без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00, а также должны иметь 2 знака после точки.
I_128excludingVatНеверное значение поля amount: Значение поля excludingVat акта не должно быть меньше суммы значений поля excludingVat в items минус (количество items, умноженное на 0,01)
I_129includingVatСумма акта/отчета, включая НДС, должна быть больше нуля, так как сумма в договоре или дополнительном соглашении больше нуля или не указана
I_130includingVatСумма акта/отчета, включая НДС, должна быть больше нуля
I_132vatНеверное значение для суммы НДС в акте/отчете (vat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки.
I_134includingVatНеверное значение для суммы акт/отчета, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки.
I_135includingVat"Сумма акта/отчета, включая НДС", не равна сумме полей "Сумма акта/отчета без учета НДС" и "Сумма НДС в акте/отчете"
I_136typeДолжно быть заполнено, так как тип акта (type) равен intermediary-report или commission-invoice
I_137commissionНеверное значение для "Детализация суммы акта, если отчет включает вознаграждение посредника или составлен отдельный акт на вознаграждение посредника" (commission). Необходимо передать значения или исключить
I_138includingVatНе должно передаваться, так как тип акта не равен intermediary-report или commission-invoice
I_139excludingVatНеверное значение для суммы вознаграждения посредника без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00, а также должны иметь 2 знака после точки.
I_141vatНеверное значение для суммы НДС для вознаграждения посредника (vat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки.
I_143includingVatНеверное значение для суммы вознаграждения посредника, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки.
I_145excludingVatНеверное значение для суммы детализации без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00, а также должны иметь 2 знака после точки.
I_147vatНеверное значение для суммы НДС в детализации (vat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки.
I_149includingVatНеверное значение для суммы детализации, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 2 знака после точки.
I_150includingVatСумма детализации, включая НДС, не равна сумме полей "Сумма детализации без учета НДС" и "Сумма НДС в детализации"
I_151includingVatСумма вознаграждения посредника, включая НДС, не равна сумме полей "Сумма вознаграждения посредника без учета НДС" и "Сумма НДС для вознаграждения посредника"
I_162contractIdАкт не может быть зарегистрирован, так как в договоре (contractId={id}) Заказчик и Исполнитель либо лица РФ, которые имеют один и тот же ИНН, либо иностраннные лица, у которых указана одинаковая информация в полях "Абонентский номер мобильного телефона" (mobilePhone), "Номер электронного средства платежа" (epayNumber), "Регистрационный номер либо его аналог" (regNumber), "Номер налогоплательщика либо его аналог в стране регистрации" (alternativeInn)
I_163vatRateЗначение "Ставки НДС" не соответствует ставкам, определенным Налоговым Кодексом РФ. Возможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%»
I_164vatRateНе заполнено поле "Ставка НДС"
I_165amount.services.vatRateНе заполнено поле "Ставка НДС" (amount.services.vatRate)
I_166vatЕсли "Расчетная сумма НДС" меньше 0.10 руб., то Сумма НДС в акте/отчете может равняться 0. Иначе "Сумма НДС в акте/отчете" должна быть больше 0 и не должна быть больше произведения "Сумма акта/отчета без учета НДС" на максимальную ставку НДС в РФ (20% при дате акта до 01.01.2026, 22% при дате акта начиная с 01.01.2026) с учетом предусмотренных погрешностей.
I_167vatСумма НДС в акте/отчете должна быть равна произведению "Сумма акта/отчета без учета НДС" и "Ставка НДС" с учетом предусмотренных погрешностей
I_168vatСумма НДС в акте/отчете должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%»
I_169vatRateЗначение ставки не соответствует ставкам, определенным Налоговым Кодексом РФ. Взможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%»
I_170vatСумма НДС для вознаграждения посредника должна быть равна произведению "Сумма вознаграждения посредника без учета НДС" и "Ставка НДС" с учетом предусмотренных погрешностей
I_171vatСумма НДС для вознаграждения посредника должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%»
I_172vatRateЗначение "Ставки НДС" не соответствует ставкам, определенным Налоговым Кодексом РФ. Возможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%»
I_173vatRateНе заполнено поле "Ставка НДС"
I_174items.amount.vatRateНе заполнено поле "Ставка НДС" (items.amount.vatRate)
I_175vatЕсли "Расчетная Сумма НДС" меньше 0.10 руб., то "Сумма НДС в детализации" может равняться 0. Иначе "Сумма НДС в детализации" должна быть больше 0 и не должна быть больше произведения "Суммы детализации без учета НДС" на максимальную ставку НДС в РФ (20% при дате акта до 01.01.2026, 22% при дате акта начиная с 01.01.2026) с учетом предусмотренных погрешностей
I_176vatСумма НДС в детализации должна быть равна произведению "Суммы детализации без учета НДС" на "Ставку НДС" с учетом предусмотренных погрешностей"
I_177vat"Сумма НДС" в детализации должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%»
I_181isSocialДолжно быть передано поле «Признак социальной рекламы» (isSocial), так как передано поле «Признак социальной рекламы по квоте» (isSocialQuota)
I_182isSocialQuotaДолжно быть передано поле «Признак социальной рекламы по квоте» (isSocialQuota), так как передано поле «Признак социальной рекламы» (isSocial)
I_183items.isSocialДолжно быть передано поле «Признак социальной рекламы в детализации акта» (items.isSocial), так как передано поле «Признак социальной рекламы по квоте в детализации акта» (items.isSocialQuota)
I_184items.isSocialQuotaДолжно быть передано поле «Признак социальной рекламы по квоте в детализации акта» (items.isSocialQuota), так как передано поле «Признак социальной рекламы в детализации акта» (items.isSocial)
I_185intermediaryReportIdListНе передан обязательный массив "intermediaryReportIdList" для актов типа "Акт на вознаграждение посредника"
I_186intermediaryReportIdListНеверное значение для массива "Массив идентификаторов актов типа «Отчет посредника»" (intermediaryReportIdList). Необходимо передать значения в массиве
I_187intermediaryReportIdListЗапрещено передавать поле "intermediaryReportIdList" в актах с типом "Акт выполненных работ" и "Отчет посредника"
I_188amount.services.intermediaryReportIdList[]Неверный формат данных для идентификатора акта типа "Отчет посредника" в массиве intermediaryReportIdList
I_189amount.services.intermediaryReportIdList[]Идентификатор акта {id} дублируется в массиве intermediaryReportIdList
I_190amount.services.intermediaryReportIdList[]Идентификатор акта с типом "Отчет посредника" (intermediaryReportIdList) не зарегистрирован в ЕРИР
I_191excludingVatНе заполнено обязательное поле, так как тип акта "Акт выполненных работ" или "Отчет посредника"
I_192excludingVatЗапрещено передавать поле excludingVat, если тип акта "Акт на вознаграждение посредника"
I_193vatRateЗапрещено передавать поле vatRate, если тип акта "Акт на вознаграждение посредника"
I_194vatНе заполнено обязательное поле, так как тип акта "Акт выполненных работ" или "Отчет посредника"
I_195vatЗапрещено передавать поле vat, если тип акта "Акт на вознаграждение посредника"
I_196includingVatНе заполнено обязательное поле, так как тип акта "Акт выполненных работ" или "Отчет посредника"
I_197includingVatЗапрещено передавать поле includingVat, если тип акта "Акт на вознаграждение посредника"
I_198isInvoiceЗапрещено передавать поле, если тип акта не равен "Отчет посредника"
I_199excludingVatНе заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан
I_200excludingVatЗапрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true
I_201vatRateНе заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан
I_202vatRateЗапрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true
I_203vatНе заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан
I_204vatЗапрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true
I_205includingVatНе заполнено обязательное поле, так как "Признак отдельного акта на вознаграждение" равен false или не передан
I_206includingVatЗапрещено передавать поле, если "Признак отдельного акта на вознаграждение" равен true
I_207itemsЗапрещено передавать поле "items", если тип акта "Акт на вознаграждение посредника"
I_208contractIdИдентификатор договора акта (contractId) в отчете посредника (intermediaryReportIdList = {id}) не равен идентификатору договора акта на вознаграждение посредника
I_209rrOrderContractIdListНеверное значение для массива идентификаторов посреднических договоров, по поручению которого был заключен договор (rrOrderContractIdList). Необходимо передать значения в массиве
I_210rrOrderContractIdList[]Неверный формат данных для идентификатора посреднического договора в массиве rrOrderContractIdList
I_211rrOrderContractIdList[]Идентификатор договора {id} дублируется в массиве rrOrderContractIdList
I_212rrOrderContractIdListПоле "Идентификатор посреднического договора, по поручению которого был заключен договор" (rrOrderContractIdList) может передаваться только в типе акта "Акт выполненных работ" (invoice), либо "Отчет посредника" (intermediary-report), договор которого имеет признак agentActingForPublisher=true
I_213contractIdИдентификатор Исполнителя по договору акта (contractId={id}) должен быть равен идентификатору Исполнителя по посредническому договору (rrOrderContractIdList={id}), так как тип акта "Акт выполненных работ"
I_214contractIdИдентификатор Заказчика по договору акта (contractId={id}) должен быть равен идентификатору Исполнителя по посредническому договору (rrOrderContractIdList={id}), так как тип акта "Отчет посредника"
I_215rrOrderContractIdList[]Идентификатор Договора (rrOrderContractIdList={id}), указанный в массиве "rrOrderContractIdList", не зарегистрирован в ЕРИР или не имеет тип "Посреднический договор" с признаком "agentActingForPublisher" равным true
I_216rrOrderContractIdList[]Запрещено передавать "Идентификатор посреднического договора, по поручению которого был заключен договор" (rrOrderContractIdList={id}) в массиве "rrOrderContractIdList", так как в переданном посредническом договоре Заказчик является иностранным лицом
I_217dateЗапрещено передавать ставку НДС "22%", если дата акта (date) меньше 01.01.2026
I_218dateЗапрещено передавать ставку НДС "22%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг раньше 2026 года.
I_219dateЗапрещено передавать ставку НДС "20%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг 2026 год и позже.
I_220dateЗапрещено передавать ставку НДС "22%", если дата акта (date) меньше 01.01.2026
I_221dateЗапрещено передавать ставку НДС "22%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг раньше 2026 года.
I_222dateЗапрещено передавать ставку НДС "20%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг 2026 год и позже.
I_223dateЗапрещено передавать ставку НДС "22%", если дата акта (date) меньше 01.01.2026
I_224dateЗапрещено передавать ставку НДС "22%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг раньше 2026 года.
I_225dateЗапрещено передавать ставку НДС "20%", если дата акта (date) больше, либо равна 01.01.2026, а период оказания услуг 2026 год и позже.
I_226contractIdУ контрагента-Заказчика в договоре акта не заполнено поле "Адрес регистрации/ места жительства (пребывания) контрагента", так как он является физическим лицом РФ или индивидуальным предпринимателем РФ
I_227contractIdУ контрагента-Исполнителя в договоре акта не заполнено поле "Адрес регистрации/ места жительства (пребывания) контрагента", так как он является физическим лицом РФ или индивидуальным предпринимателем РФ
I_228vatRateСтавка НДС в детализации не равна Ставке НДС суммы акта, так как тип акта "Акт выполненных работ"
I_229vatRateСтавка НДС в детализации не равна Ставке НДС суммы акта, так как тип акта "Отчет посреника" и договор акта имеет признак agentActingForPublisher = true
I_231amount.services.intermediaryReportIdList[]В акте с типом "Отчет посредника" (intermediaryReportIdList = {id}) признак отдельного акта на вознаграждение (amount.commission.isInvoice) равен false

Статистика

КодПолеТекст ошибки
GV_3creativeId, platformId, dateStartFact, campaignTypeНе заполнено обязательное поле
S_1creativeIdНеверный формат данных для идентификатора креатива (creativeId)
S_2creativeIdИдентификатор креатива не зарегистрирован в ЕРИР (creativeId)
S_4platformIdНеверный формат данных для идентификатора площадки (platformId)
S_5platformIdИдентификатор площадки не зарегистрирован в ЕРИР (platformId)
S_7impsFactНеверный формат данных для количества фактических показов (impsFact)
S_10impsFactНе заполнено обязательное поле "Количество показов фактическое" (impsFact)
S_11impsPlanНеверный формат данных для количества показов по акту (impsPlan)
S_13impsPlanНе заполнено обязательное поле "Количество показов по акту" (impsPlan)
S_14dateStartFactНеверный формат данных для фактической даты начала показов (dateStartFact)
S_15dateStartFactФактическая дата начала показов (dateStartFact) должна быть не ниже, чем 01.01.1991
S_16dateStartFactФактическая дата начала показов (dateStartFact) должна быть меньше или равна, чем фактическая дата окончания показов (dateEndFact)
S_17dateStartFactФактическая дата начала показов (dateStartFact) должна быть меньше или равна текущей дате
S_19dateEndFactНеверный формат данных для фактической даты окончания периода (dateEndFact)
S_20dateEndFactФактическая дата окончания показов (dateEndFact) должна быть не ниже, чем 01.01.1991
S_22dateEndFactФактическая дата окончания показов (dateEndFact) должна быть меньше или равна текущей дате
S_23dateEndFactНе заполнено обязательное поле "Дата окончания показов фактическая" (dateEndFact)
S_24dateStartPlanНеверный формат данных для даты начала показов по акту (dateStartPlan)
S_25dateStartPlanДата начала показов по акту (dateStartPlan) должна быть не ниже, чем 01.01.1991
S_26dateStartPlanДата начала показов по акту (dateStartPlan) должна быть меньше или равна, чем дата окончания показов по акту (dateEndPlan)
S_27dateStartPlanДата начала показов по акту (dateStartPlan) должна быть меньше или равна текущей дате
S_28dateStartPlanНе заполнено обязательное поле "Дата начала показов по акту" (dateStartPlan)
S_29dateEndPlanНеверный формат данных для даты окончания периода по акту (dateEndPlan)
S_30dateEndPlanДата окончания показов по акту (dateEndPlan) должна быть не ниже, чем 01.01.1991
S_32dateEndPlanДата окончания показов по акту (dateEndPlan) должна быть меньше или равна текущей дате
S_33dateEndPlanНе заполнено обязательное поле "Дата окончания показов по акту" (dateEndPlan)
S_37amountPerShowНеверное значение для cтоимости единицы оказания услуг (amountPerShow): допустимы нулевые значения и положительные не больше 10 000 000 000.00000, а также должны иметь 5 знаков после точки.
S_39amountPerShowНе заполнено обязательное поле "Стоимость единицы оказания услуг" (amountPerShow)
S_43dateEndFactФактическая дата окончания показов (dateEndFact) должна быть в том же месяце, что и Фактическая дата начала показов (dateStartFact), так как invoiceId пустое
S_44dateEndPlanДата окончания показов по акту (dateEndPlan) должна быть в том же месяце, что и Дата начала показов по акту (dateStartPlan), так как invoiceId пустое
S_46amountPerShowНеверное значение для cтоимости единицы оказания услуг (amountPerShow). Допустимое значение "0", так как креатив относится к саморекламе
S_47creativeIdНельзя передавать элемент товарного фида
S_49invoiceIdПоле может содержать только цифры, латинские буквы и символы '-' и '_', не должно превышать 255 знаков, не может быть пустым
S_50invoiceIdИдентификатор акта не зарегистрирован в ЕРИР (invoiceId)
S_51invoiceIdНе заполнено обязательное поле "Идентификатор акта" (invoiceId). Должно быть заполнено, так как передан "Идентификатор изначального договора" (contractId) или "Уникальный идентификатор изначального договора" (cid)
S_52contractIdНеверный формат данных для идентификатора изначального договора(contractId)
S_53contractIdИдентификатор изначального договора не зарегистрирован в ЕРИР (contractId)
S_54contractIdНе заполнено обязательное поле "Идентификатор изначального договора" (contractId) или "Уникальный идентификатор изначального договора" (cid). Должно быть заполнено, так как передан "Идентификатор акта" (invoiceId)
S_57invoiceIdДата начала периода в акте (invoiceId={id}) позже даты начала статистики (dateStartFact)
S_58contractIdИдентификатор изначального договора (contractId) не указан в качестве изначального у данного акта (invoiceId)
S_73contractIdДолжно быть заполнено или "Изначальный договор" (contractId), или "Уникальный идентификатор изначального договора" (cid)
S_74cidНе найден уникальный идентификатор изначального договора (cid)
S_75dateEndFactФактическая дата окончания показов (dateEndFact) должна быть в том же месяце, что и Фактическая дата начала показов (dateStartFact), так как dateEndFact > 30.09.2023 и invoiceId заполнено
S_76dateEndPlanДата окончания показов по акту (dateEndPlan) должна быть в том же месяце, что и Дата начала показов по акту (dateStartPlan), так как dateEndPlan > 30.09.2023 и invoiceId заполнено
S_77campaignTypeНеверное значение для типа РК (type). Допустимые значения other/cpm/cpc/cpa
S_78invoiceIdСтатистика не может быть зарегистрирована/обновлена, так как идентификатор акта (invoiceId={id}) был отправлен в сервис удаления и находится на согласовании
S_79contractIdСтатистика не может быть зарегистрирована/обновлена, так как идентификатор изначального договора (contractId={id}) был отправлен в сервис удаления и находится на согласовании
S_80creativeIdСтатистика не может быть зарегистрирована/обновлена, так как идентификатор креатива (creativeId={id}) был отправлен в сервис удаления и находится на согласовании
S_81platformIdСтатистика не может быть зарегистрирована/обновлена, так как идентификатор площадки (platformId={id}) был отправлен в сервис удаления и находится на согласовании
S_84campaignTypeНе заполнено обязательное поле "Тип РК" (type)
S_85invoiceIdСтатистика не может быть зарегистрирована и изменена, так как идентификатор акта (invoiceId={id}) используется в подписанных расчетах отчислений
S_86excludingVatНеверное значение для cтоимости оказанных услуг без учета НДС (excludingVat): допустимы нулевые значения и положительные не больше 10 000 000 000.00000, а также должны иметь 5 знаков после точки.
S_87excludingVatНеверное значение для cтоимости оказанных услуг без учета НДС (excludingVat). Допустимое значение "0", так как креатив относится к саморекламе
S_88excludingVatСтатистика не может быть зарегистрирована, так как стоимость оказанных услуг без учета НДС переданных статистик по акту (invoiceId = ) и изначальному договору (contractId = ) не должна быть больше суммы детализации (или акта) без учета НДС, указанной в этом акте для соответствующего изначального договора
S_90vatНеверное значение для суммы НДС для стоимости оказанных услуг (vat): допустимы нулевые значения и положительные, а также должны иметь 5 знаков после точки.
S_92includingVatНеверное значение для cтоимости оказанных услуг, включая НДС (includingVat): допустимы нулевые значения и положительные, а также должны иметь 5 знаков после точки.
S_93includingVatСтоимость оказанных услуг, включая НДС, не равна сумме полей "Стоимость оказанных услуг без учета НДС" и "Сумма НДС для стоимости оказанных услуг"
S_97platformIdСтатистика не может быть зарегистрирована, потому что площадка (platformId={id}) с признаком isOwned=true не зарегистрирована у контрагента, указанного в креативе
S_98vatRateЗначение ставки не соответствует ставкам, определенным Налоговым Кодексом РФ. Взможные значения: «Без НДС», «0%», «5%», «7%», «10%», «20%», «22%»
S_99vatСумма НДС для стоимости оказанных услуг должна быть равна произведению "Стоимость оказанных услуг без учета НДС" на "Ставку НДС" с учетом предусмотренных погрешностей
S_100vat"Сумма НДС для стоимости оказанных услуг" должна быть равна 0, так как в поле «Ставка НДС» передано одно из значений: «Без НДС» или «0%»
S_102dateStartPlanЗапрещено передавать ставку 22%, так как Дата начала показов по акту (dateStartPlan) меньше 01.01.2026
S_103dateStartPlanЗапрещено передавать ставку 20%, так как Дата начала показов по акту (dateStartPlan) больше либо равна 01.01.2026

Связка акта и креатива

КодПолеТекст ошибки
GV_3invoiceId, creatives[].creativeIdНе заполнено обязательное поле
GV_4cidНе передан обязательный массив
IC_2invoiceIdИдентификатор акта не зарегистрирован в ЕРИР (invoiceId)
IC_3invoiceIdНеверный формат данных для идентификатора акта (id)
IC_4contractIdНеверный формат данных для идентификатора договора (contractId)
IC_5contractIdИдентификатор договора не зарегистрирован в ЕРИР (contractId)
IC_6contractIdИдентификатор договора не зарегистрирован в разаллокации акта
IC_7contractIdНе заполнено обязательное поле "Идентификатор договора в ОРД" (contractId)
IC_9creativeIdИдентификатор креатива не зарегистрирован в ЕРИР (creativeId)
IC_10creativeIdНеверный формат данных для идентификатора креатива (creativeId)
IC_26contractIdДолжно быть заполнено или "Изначальный договор" (contractId), или "Уникальный идентификатор изначального договора" (cid)
IC_27cidНе найден уникальный идентификатор изначального договора (cid)
IC_28creatives[].creativeIdНельзя передавать элемент товарного фида
IC_29invoiceIdСущность invoices-creatives не может быть зарегистрирована/обновлена, так как идентификатор акта (invoiceId={id}), был отправлен в сервис удаления и находится на согласовании
IC_30contractIdСущность invoices-creatives не может быть зарегистрирована/обновлена, так как идентификатор договора (contractId={id}), был отправлен в сервис удаления и находится на согласовании
IC_31creativeIdСущность 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).

Добавлено

ПолеОбъектТипНазначение
rrOrderContractIdInvoice, InvoiceWithStatisticstringИдентификатор посреднического договора, по поручению которого был заключён договор оказания услуг

Новые контроли

I_160, I_161, I_178, I_179, I_180 - проверки формата, существования договора в ЕРИР, его типа и признака agentActingForPublisher, а также запрет на иностранного заказчика.

Что делать

Ничего, если вы не работаете с цепочками посреднических договоров. Поле необязательное.


С v4.1 на v4.2

Затронуто: договоры (/contracts).

Добавлено

ПолеОбъектТипНазначение
isChargePaidByAgentContractbooleanПризнак того, что вознаграждение удерживает агент

Новые контроли

КодПроверка
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, без пробелов и переносов строки по краям.

Что делать

  1. Убедиться, что все четыре поля передаются при создании и обновлении договора.
  2. Проверить, что номера договоров не содержат ведущих и завершающих пробелов - раньше такие значения проходили.

С v4.3 на v4.4

Затронуто: акты (/invoices, /invoices/with-statistic).

Добавлено

ПолеОбъектТип
isSocialInvoice, InvoiceWithStatisticboolean
isSocialQuotaInvoice, InvoiceWithStatisticboolean
isSocialInvoiceItem, InvoiceItemWithStatisticboolean
isSocialQuotaInvoiceItem, InvoiceItemWithStatisticboolean

Новые контроли

КодПроверка
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"]

Добавлено

ПолеОбъектТип
isSocialInvoiceFilterboolean
isSocialQuotaInvoiceFilterboolean

Изменение контролей

Контроли 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Запрещено, если заказчик по посредническому договору - иностранное лицо

Что делать

  1. Заменить поле на массив во всех местах, где оно формируется и разбирается.
  2. Учесть, что теперь можно указать несколько посреднических договоров.

С v4.5 на v4.6

Затронуто: контрагенты (/organizations, /self-organization).

Добавлено

ПолеОбъектТипНазначение
addressOrganizationstringАдрес регистрации / места жительства (пребывания) контрагента

Новые контроли

КодПроверка
O_79Формат адреса для типов fl / ip / ul: русские буквы, цифры, дефис, точка, запятая, пробел, типографский апостроф, скобки, косая черта, римские цифры. Пробелы по краям не допускаются
O_80Формат адреса для типов ffl / ful: дополнительно допускаются латинские буквы

Что делать

Поле формально необязательное, но с версии v5.0 акт не пройдёт, если адрес не заполнен у исполнителя - физлица или ИП РФ (контроль I_227), либо у такого же заказчика, когда исполнитель иностранное лицо (контроль I_226). Дозаполните адреса заранее - это самая частая причина отказов при переходе на v5.0.


С v4.6 на v4.7

Затронуто: договоры (/contracts).

Добавлено

ПолеОбъектТипНазначение
nameContractstringНазвание договора
nameContractFilterstringПоиск по точному совпадению названия
nameContainsContractFilterstringПоиск названия по подстроке

Название - служебное поле для навигации на вашей стороне и в личном кабинете, в ЕРИР не передаётся. Ограничения: от 1 до 255 символов, без пробелов и других whitespace-символов по краям, без управляющих символов.

Что делать

Ничего обязательного. Заполнение названия заметно упрощает последующий поиск договоров через POST /contracts/search.


С v4.7 на v4.8

Затронуто: креативы (/creatives).

Добавлено

ПолеОбъектТипНазначение
nameCreativestringНазвание креатива
nameCreativeFilterstringПоиск по точному совпадению названия
nameContainsCreativeFilterstringПоиск по вхождению подстроки

Ограничения те же, что у названия договора: от 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 работает.

Тело запроса возобновления:

АтрибутТипОписание
creativeIdstring(uuid); requiredИдентификатор креатива
resumePublicationDatestring(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.isInvoiceInvoice, InvoiceWithStatisticПризнак того, что вознаграждение будет подано отдельным актом. Только для intermediary-report
amount.services.intermediaryReportIdListInvoice, 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 их стоит перепроверить: они срабатывают на границе отчётных периодов.

Что делать

  1. Заменить базовый путь на /api/v5.0.
  2. Обновить медиатип в заголовке Accept (или перейти на ?short=true).
  3. Исправить проверку кода ответа POST /tokens/issue на 2xx.
  4. Убрать amount.commission.number и amount.commission.date из актов.
  5. Убрать irRelevant из объектов статистики креатива.
  6. Дозаполнить address у контрагентов-физлиц и ИП РФ.
  7. Проверить логику ставок НДС на границе 2025/2026.
  8. При необходимости внедрить сценарий отдельного акта на вознаграждение.

Сводный чек-лист перехода с v4 на v5.0

Если вы мигрируете сразу с базовой v4, выполнить нужно всё перечисленное:

№ДействиеОткуда изменение
1Заменить базовый путь на /api/v5.0v5.0
2Обновить медиатип сокращённого ответа либо перейти на ?short=truev5.0
3Исправить проверку кода ответа POST /tokens/issue на 2xxv5.0
4Передавать type, date, isRegReport, subjectType в каждом договореv4.3
5Убрать пробелы по краям в номерах договоровv4.3
6Использовать rrOrderContractIdList (массив) вместо rrOrderContractIdv4.5
7Передавать isSocial и isSocialQuota строго парой, включая itemsv4.4
8Дозаполнить address у контрагентов-физлиц и ИП РФv4.6 + v5.0
9Убрать amount.commission.number и amount.commission.datev5.0
10Убрать irRelevant из статистики креативаv5.0
11Проверить ставки НДС на границе 2025/2026v5.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.

decor--1decor--2decor--3decor--4decor--5