ДАРА
Разделы документации

ДокументацияСправочник

Справочник API

Методы API v1 с параметрами, телами запросов, ответами и схемами данных — собирается из описания OpenAPI.

Справочник собирается из описания API при каждой выкладке, поэтому совпадает с работающим сервером. Машиночитаемая схема OpenAPI — /api/v1/openapi.json, без авторизации: по ней можно сгенерировать клиент или импортировать API в Postman и Insomnia.

Обязательные поля и параметры отмечены звёздочкой. Правила и примеры интеграции — в руководствах: Объекты, События и заказы, Пользователи, Ошибки и лимиты.

Версия 1.0 · сервер https://core.daratech.ru · исходная схема — openapi.json

API ДАРА: объекты, события и заказы, пользователи, рекомендации и поиск.

Аутентификация — Authorization: Bearer <ключ проекта>; ключ в адресе не принимается. Формат — JSON в UTF-8, время — ISO-8601 с Z. Ошибки — {"error": {"code", "message", "details"?}}. Каждый ответ содержит X-Request-ID — сообщите его при обращении в поддержку.

Объекты

GET /api/v1/items/{id}

Объект с результатами анализа

Данные объекта, состояние обработки, медиа и сводка. Тяжёлые части — по include: transcript, frames, search_chunks через запятую. Удалённый объект отдаётся с deleted: true.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
id *путьstringid объекта у клиента; в пути — только [A-Za-z0-9._:-], до 191 символа. Другие id — через пакет.
до 191 знаков
includeстрока запросаstring или nulltranscript,frames,search_chunks

Ответы

КодКогдаТело
200ОбъектItemDetail
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
404Объект не найденErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

PUT /api/v1/items/{id}

Создать или заменить объект

Идемпотентная полная замена объекта. Непереданные поля очищаются, PUT удалённого объекта снимает удаление. Анализ перезапускается только для изменившихся частей: текст — сводка и векторы, медиа (url или version) — изменённые медиа и всё, что от них зависит.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
id *путьstringid объекта у клиента; в пути — только [A-Za-z0-9._:-], до 191 символа. Другие id — через пакет.
до 191 знаков

Тело запроса

JSON: ItemPutRequest. Объект целиком

ПолеТипОписание
type *stringТип объекта
одно из: video, image, audio, text, mixed
titlestring или nullЗаголовок
до 1000 знаков
descriptionstring или nullОписание
до 20000 знаков
bodystring или nullОсновной текст (статья, пост)
до 1000000 знаков
authorstring или nullid автора у клиента: близость к автору и разнообразие выдачи
до 191 знаков
urlstring или nullСсылка на объект на сайте клиента
до 2048 знаков
published_atstring или nullВремя публикации ISO-8601; по умолчанию — время создания
propertiesobject или nullПроизвольные свойства до 16 КБ; фильтруемые свойства проекта — объявленного типа
mediaMediaIn[] или nullМедиа по порядку. Для video, image, audio обязательно хотя бы одно медиа своего вида; у text медиа нет
до 50 элементов
availablebooleanМожно ли показывать объект в выдаче; null не принимается
по умолчанию true

Ответы

КодКогдаТело
200Объект обновлёнItemWriteResponse
201Объект созданItemWriteResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

PATCH /api/v1/items/{id}

Изменить часть полей объекта

Переданные поля заменяются, null очищает поле; media и available не принимают null. type через PATCH не меняется. Правила переобработки — как у PUT. Удаление PATCH не снимает.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
id *путьstringid объекта у клиента; в пути — только [A-Za-z0-9._:-], до 191 символа. Другие id — через пакет.
до 191 знаков

Тело запроса

JSON: ItemPatchRequest. Изменяемые поля

ПолеТипОписание
titlestring или nullдо 1000 знаков
descriptionstring или nullдо 20000 знаков
bodystring или nullдо 1000000 знаков
authorstring или nullдо 191 знаков
urlstring или nullдо 2048 знаков
published_atstring или null
propertiesobject или null
mediaMediaIn[]Новый список медиа целиком, по порядку; null не принимается
до 50 элементов
availablebooleanМожно ли показывать объект в выдаче; null не принимается

Ответы

КодКогдаТело
200Объект обновлёнItemWriteResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
404Объект не найденErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

DELETE /api/v1/items/{id}

Удалить объект

Мягкое удаление: объект навсегда исключается из выдачи и поиска, результаты анализа и события сохраняются и участвуют в профилях. Повторный DELETE тоже отвечает 200.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
id *путьstringid объекта у клиента; в пути — только [A-Za-z0-9._:-], до 191 символа. Другие id — через пакет.
до 191 знаков

Ответы

КодКогдаТело
200Объект удалёнItemDeleteResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
404Объект не найденErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/items/batch

Пакет операций с объектами

До 500 операций put, patch, delete. Выполняются по порядку и независимо: ошибка одной не отменяет остальные. Больше лимита — 413 payload_too_large.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: BatchRequest. Операции

ПолеТипОписание
operations *BatchOperation[]До 500 операций, выполняются по порядку и независимо
до 500 элементов

Ответы

КодКогдаТело
200Результат по каждой операцииBatchResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

GET /api/v1/items

Список объектов для сверки

Объекты проекта по возрастанию updated_at, включая удалённые. Постраничный обход — cursor из next_cursor; объект, изменённый во время обхода, появится на последующих страницах снова.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
statusстрока запросаstring или nullСтатус объекта
одно из: queued, processing, ready, partial, failed, deferred
availableстрока запросаboolean или nullТолько доступные (true) или недоступные (false)
updated_sinceстрока запросаstring или nullИзменённые не раньше этого времени, ISO-8601
cursorстрока запросаstring или nullКурсор из next_cursor
до 512 знаков
limitстрока запросаintegerДо 500
от 1 до 500; по умолчанию 100

Ответы

КодКогдаТело
200Страница спискаItemListResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/items/{id}/reprocess

Переобработать объект

Шаги speech, vision, summary, embedding; без steps переобрабатывается всё, включая подготовку медиа. Зависимые шаги пересчитываются следом.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
id *путьstringid объекта у клиента; в пути — только [A-Za-z0-9._:-], до 191 символа. Другие id — через пакет.
до 191 знаков

Тело запроса

JSON: ReprocessRequest — необязательно. Шаги

ПолеТипОписание
stepsstring[] или nullШаги; без steps переобрабатывается всё, включая подготовку медиа

Ответы

КодКогдаТело
202Переобработка поставлена в очередьItemWriteResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
404Объект не найденErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

События и заказы

GET /api/v1/event-types

Типы событий проекта

Коды, режимы, веса и флаги типов событий. Типы настраиваются в кабинете.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Ответы

КодКогдаТело
200Типы событийEventTypesResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/events

Принять события

До 1000 событий за запрос. События дедуплицируются по id: повтор отвечает в duplicates и ничего не меняет. Показы (is_impression) не хранятся поштучно, только агрегируются. Отклонённые события перечислены в rejected с кодом: unknown_type, inactive_type, unknown_item, no_user, invalid_user, invalid_value, too_old, order_managed. События по удалённым и недоступным объектам принимаются.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: EventsRequest. События

ПолеТипОписание
events *EventIn[]До 1000 событий
до 1000 элементов

Ответы

КодКогдаТело
202Пакет обработанEventsResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/orders

Передать заказ

Заказ раскладывается на события типа «покупка»: строка — событие с id o: + 32 hex SHA-256 от order_id и item. Строки одного товара складываются. Повтор того же order_id заменяет состав: новые строки добавляются, пропавшие отменяются. status=cancelled снимает вклад заказа. Товар вне каталога с title заводится недоступным объектом, без title строка отклоняется unknown_item. Нет типа «покупка» — 422 no_purchase_type.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: OrderIn. Заказ

ПолеТипОписание
order_id *stringid заказа, до 64 печатных символов ASCII; повтор заменяет состав
до 64 знаков
user *EndUserIds
occurred_atstring или nullВремя заказа ISO-8601; по умолчанию — время приёма, при повторе — прежнее время заказа
statusstring или nullcancelled снимает вклад всего заказа
одно из: created, cancelled; по умолчанию created
itemsOrderLineIn[] или nullДо 200 строк; для cancelled можно не передавать
до 200 элементов

Ответы

КодКогдаТело
202Заказ записанOrderResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/orders/batch

Пакет заказов

До 500 заказов и не больше 5000 строк в сумме — для переноса истории (даты до 730 дней назад). Заказы обрабатываются независимо, ответ — по каждому.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: OrdersBatchRequest. Заказы

ПолеТипОписание
orders *OrderIn[]До 500 заказов и не больше 5000 строк в сумме
до 500 элементов

Ответы

КодКогдаТело
202Результат по каждому заказуOrdersBatchResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

Пользователи

POST /api/v1/users/link

Склеить анонима с пользователем при входе

Переносит историю и данные профиля анонима (найденного по anonymous_id, а если его нет — по неспорному проверенному fingerprint_uuid) в пользователя user_id. Заполненные поля профиля пользователя не перезаписываются. Анонимная история, уже перенесённая одному пользователю, другому не переносится. fingerprint_uuid записывается как вход на устройстве.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: UserLinkRequest. Пользователь и идентификаторы устройства

ПолеТипОписание
user_id *stringАккаунт, в который вошёл пользователь
до 191 знаков
anonymous_idstring или nullБраузер или устройство до входа
до 191 знаков
fingerprint_uuidstring или nullvisitor_uuid DARA Fingerprint: записывается как вход на устройстве

Ответы

КодКогдаТело
200Результат склейкиUserLinkResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

GET /api/v1/users/profile

Прочитать профиль пользователя

Поля профиля в том виде, в каком их хранит core, attributes и дата обновления каждого поля — для сверки интеграции. Пользователь ищется без создания и без узнавания; неизвестный — 404.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Параметры

ИмяГдеТипОписание
user_idстрока запросаstring или nullАккаунт у клиента
anonymous_idстрока запросаstring или nullБраузер или устройство
fingerprint_uuidстрока запросаstring или nullvisitor_uuid DARA Fingerprint

Ответы

КодКогдаТело
200ПрофильStoredProfile
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
404Объект не найденErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/users/profile

Записать данные о пользователе

Что клиент знает о пользователе: пол, год рождения или возраст, город, интересы, любимые и скрытые авторы, отказ от персонализации, произвольные атрибуты. Действия с объектами передаются событиями. Без user_id пишется анонимный профиль, даже если пользователь узнан без входа. Персональные данные в attributes — 422 pii_not_allowed.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: ProfileRequest. Пользователь и поля профиля

ПолеТипОписание
genderstring или nullодно из: male, female
birth_yearinteger или nullОт 1900 до текущего года
от 1900
ageinteger или nullВместо birth_year: пересчитывается в год рождения
от 0 до 120
interestsstring[] или nullДо 50 строк до 200 знаков: интересы текстом на любом языке
до 50 элементов
excluded_interestsstring[] или null«Не интересно»
до 50 элементов
followed_authorsstring[] или nullid авторов: подписки
до 500 элементов
hidden_authorsstring[] или nullid авторов, которых не показывать
до 500 элементов
citystring или nullХранится в нижнем регистре без лишних пробелов
до 100 знаков
countrystring или nullдо 100 знаков
personalizationboolean или nullfalse — не персонализировать
attributesobject или nullЛюбые данные до 16 КБ, кроме персональных: ключи email, phone, name, first_name, last_name, middle_name, address, birth_date, passport на любой глубине — 422 pii_not_allowed
user *EndUserIds

Ответы

КодКогдаТело
200Профиль записанProfileResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/users/profile/batch

Пакет профилей

До 500 профилей в формате POST /users/profile, каждый обрабатывается независимо.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: ProfileBatchRequest. Профили

ПолеТипОписание
profiles *ProfileRequest[]До 500 профилей
до 500 элементов

Ответы

КодКогдаТело
200Результат по каждому профилюProfileBatchResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

POST /api/v1/users/delete

Удалить пользователя

Удаляет данные клиента о пользователе, идентификаторы, входы на устройствах, события, заказы, сигналы, профиль и снимки выдачи — сразу. Агрегаты статистики объектов остаются обезличенными.

Авторизация: ключ проекта в заголовке Authorization: Bearer ck_…

Тело запроса

JSON: UserDeleteRequest. Пользователь

ПолеТипОписание
user *EndUserIds

Ответы

КодКогдаТело
200Результат удаленияUserDeleteResponse
400Неверный JSON или параметрыErrorResponse
401Нет ключа, ключ неверен или отозванErrorResponse
403Клиент заблокирован или проект в архивеErrorResponse
413Тело или пакет больше лимитаErrorResponse
422Поля не прошли проверкуErrorResponse
429Превышен лимит частоты; есть Retry-AfterErrorResponse
503Служба недоступна; есть Retry-AfterErrorResponse

Служебное

GET /api/v1/health

Состояние службы

Отвечает ok или degraded (БД недоступна или очередь анализа перегружена). Авторизация не нужна.

Без авторизации

Ответы

КодКогдаТело
200СостояниеHealthResponse

Схемы

BatchError

ПолеТипОписание
code *string
message *string
detailsobject[] или null

BatchOperation

ПолеТипОписание
op *stringодно из: put, patch, delete
id *stringid объекта — до 191 символа Unicode
до 191 знаков; от 1 знаков
dataobject или nullТело PUT или PATCH; для delete не нужно

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

BatchRequest

ПолеТипОписание
operations *BatchOperation[]До 500 операций, выполняются по порядку и независимо
до 500 элементов

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "operations": [
        {
            "data": {
                "title": "Заметка",
                "type": "text"
            },
            "id": "abc",
            "op": "put"
        },
        {
            "data": {
                "available": false
            },
            "id": "def",
            "op": "patch"
        },
        {
            "id": "old-1",
            "op": "delete"
        }
    ]
}

BatchResponse

ПолеТипОписание
results *BatchResult[]

Пример

{
    "results": [
        {
            "id": "abc",
            "ok": true,
            "status": "queued"
        },
        {
            "error": {
                "code": "not_found",
                "message": "Объект не найден"
            },
            "id": "def",
            "ok": false
        }
    ]
}

BatchResult

ПолеТипОписание
id *string или null
ok *boolean
statusstring или nullодно из: queued, processing, ready, partial, failed, deferred
errorBatchError или null

EndUserIds

Идентификаторы конечного пользователя (ТЗ §8): хотя бы одно поле.

ПолеТипОписание
user_idstring или nullАккаунт у клиента, до 191 символа Unicode
до 191 знаков
anonymous_idstring или nullБраузер или устройство: до 191 печатного символа ASCII
до 191 знаков
fingerprint_uuidstring или nullvisitor_uuid DARA Fingerprint (UUID); учитывается только при подключённом DARA Fingerprint

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "anonymous_id": "b7f3c9",
    "user_id": "u-42"
}

ErrorInfo

ПолеТипОписание
code *stringКод ошибки: invalid_request, unauthorized, forbidden, not_found, payload_too_large, validation_failed, rate_limited, internal, unavailable
message *stringТекст ошибки по-русски
detailsobject[] или nullОшибки по полям: [{field, code, message}]

ErrorResponse

ПолеТипОписание
error *ErrorInfo

Пример

{
    "error": {
        "code": "validation_failed",
        "details": [
            {
                "code": "invalid_url",
                "field": "media[0].url",
                "message": "допустим только адрес https"
            }
        ],
        "message": "Поля не прошли проверку"
    }
}

EventIn

ПолеТипОписание
id *stringУникальный id события в проекте, до 64 печатных символов ASCII; повтор — дубль
до 64 знаков
type *stringКод типа события проекта (GET /event-types)
item *stringid объекта
до 191 знаков
user *EndUserIds
valuenumber или nullpercent — 0…100; watch_seconds — секунды просмотра ≥ 0; number — любое число; для состояний 1 или 0 (по умолчанию 1); у типов без значения не учитывается
occurred_atstring или nullВремя события ISO-8601 с Z; по умолчанию — время приёма. Больше чем на 5 минут в будущем — время приёма; старше 730 дней — отказ too_old
recommendation_idstring или nullid выдачи, из которой пришёл пользователь
surfacestring или nullМесто показа: feed, next, …
до 16 знаков
positioninteger или nullПозиция в выдаче, с 0
от 0 до 65535
order_idstring или nullЗаказ: строки одного заказа образуют пары «вместе»
до 64 знаков
quantitynumber или nullКоличество в строке заказа
от 0
pricenumber или nullЦена за единицу
от 0

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "id": "evt-1001",
    "item": "v-123",
    "occurred_at": "2026-09-14T12:00:00.250Z",
    "position": 3,
    "recommendation_id": "01J8Z3K4M5N6P7Q8R9S0T1V2W3",
    "surface": "feed",
    "type": "watch",
    "user": {
        "user_id": "u-42"
    },
    "value": 184
}

EventRejection

ПолеТипОписание
index *integerНомер события в запросе, с 0
id *string или nullid события, если он строка
code *stringодно из: unknown_type, inactive_type, unknown_item, no_user, invalid_user, invalid_value, too_old, order_managed

EventTypeOut

ПолеТипОписание
code *string
title *string
mode *stringfact — факты с окном дедупликации; max — наибольшее значение; state — последнее значение
одно из: fact, max, state
weight *numberВес в профиле; может быть отрицательным
value_kind *stringодно из: none, number, percent, watch_seconds
value_map *object или nullПороги множителя по вовлечённости
dedup_window_sec *integerОкно дедупликации для fact, секунды
suppress_similar_days *integerСколько дней после события не показывать объект и похожие
is_impression *boolean
is_open *boolean
is_goal *boolean
is_purchase *boolean
hides_item *boolean
is_active *boolean

EventTypesResponse

Тип: EventTypeOut[]

Пример

[
    {
        "code": "view",
        "dedup_window_sec": 86400,
        "hides_item": false,
        "is_active": true,
        "is_goal": false,
        "is_impression": false,
        "is_open": true,
        "is_purchase": false,
        "mode": "fact",
        "suppress_similar_days": 0,
        "title": "Открытие",
        "value_kind": "none",
        "weight": 0.2
    }
]

EventsRequest

ПолеТипОписание
events *EventIn[]До 1000 событий
до 1000 элементов

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

EventsResponse

ПолеТипОписание
accepted *integerПринято новых событий
duplicates *integerУже присланные ранее (по id) — не учитываются повторно
rejected *EventRejection[]

Пример

{
    "accepted": 998,
    "duplicates": 1,
    "rejected": [
        {
            "code": "unknown_item",
            "id": "evt-1018",
            "index": 17
        }
    ]
}

FrameOut

ПолеТипОписание
media_position *integer
ts *number
duplicate_of_tsnumber или nullВремя исходного кадра, если это дубль
descriptionstring или null
tagsstring[] или null
ocr_textstring или null
safetyobject или null
image_urlstring или nullПодписанная ссылка на 1 час

HealthResponse

ПолеТипОписание
status *stringодно из: ok, degraded

ItemDeleteResponse

ПолеТипОписание
id *string
deleted *boolean

Пример

{
    "deleted": true,
    "id": "abc"
}

ItemDetail

ПолеТипОписание
id *string
type *stringодно из: video, image, audio, text, mixed
titlestring или null
descriptionstring или null
authorstring или null
urlstring или null
published_atstring или null
propertiesobject или null
origin *stringодно из: api, import, order
available *boolean
deleted *boolean
status *stringодно из: queued, processing, ready, partial, failed, deferred
processing *Processing
updated_at *string
media *MediaOut[]
summarySummaryOut или null
transcriptTranscriptOut[] или nullПри include=transcript
framesFrameOut[] или nullПри include=frames
search_chunksSearchChunkOut[] или nullПри include=search_chunks

ItemListEntry

ПолеТипОписание
id *string
status *stringодно из: queued, processing, ready, partial, failed, deferred
available *boolean
deleted *boolean
updated_at *string

ItemListResponse

ПолеТипОписание
items *ItemListEntry[]
next_cursor *string или nullКурсор следующей страницы; null — страниц больше нет

Пример

{
    "items": [
        {
            "available": true,
            "deleted": false,
            "id": "abc",
            "status": "ready",
            "updated_at": "2026-09-14T12:00:00.123Z"
        }
    ]
}

ItemPatchRequest

Частичное обновление: переданные поля заменяются, null очищает поле, кроме media и available; type не меняется.

ПолеТипОписание
titlestring или nullдо 1000 знаков
descriptionstring или nullдо 20000 знаков
bodystring или nullдо 1000000 знаков
authorstring или nullдо 191 знаков
urlstring или nullдо 2048 знаков
published_atstring или null
propertiesobject или null
mediaMediaIn[]Новый список медиа целиком, по порядку; null не принимается
до 50 элементов
availablebooleanМожно ли показывать объект в выдаче; null не принимается

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "available": false
}

ItemPutRequest

Объект целиком. Непереданные поля очищаются.

ПолеТипОписание
type *stringТип объекта
одно из: video, image, audio, text, mixed
titlestring или nullЗаголовок
до 1000 знаков
descriptionstring или nullОписание
до 20000 знаков
bodystring или nullОсновной текст (статья, пост)
до 1000000 знаков
authorstring или nullid автора у клиента: близость к автору и разнообразие выдачи
до 191 знаков
urlstring или nullСсылка на объект на сайте клиента
до 2048 знаков
published_atstring или nullВремя публикации ISO-8601; по умолчанию — время создания
propertiesobject или nullПроизвольные свойства до 16 КБ; фильтруемые свойства проекта — объявленного типа
mediaMediaIn[] или nullМедиа по порядку. Для video, image, audio обязательно хотя бы одно медиа своего вида; у text медиа нет
до 50 элементов
availablebooleanМожно ли показывать объект в выдаче; null не принимается
по умолчанию true

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "author": "channel-42",
    "available": true,
    "description": "Обзор городских моделей",
    "media": [
        {
            "kind": "video",
            "url": "https://cdn.example.ru/abc.mp4",
            "version": "1"
        }
    ],
    "properties": {
        "category": "sport"
    },
    "published_at": "2026-09-14T12:00:00Z",
    "title": "Как выбрать велосипед",
    "type": "video",
    "url": "https://example.ru/v/abc"
}

ItemWriteResponse

ПолеТипОписание
id *string
status *stringодно из: queued, processing, ready, partial, failed, deferred
available *boolean
deleted *boolean
processing *Processing

Пример

{
    "available": true,
    "deleted": false,
    "id": "abc",
    "processing": {
        "embedding": "queued",
        "prepare": "queued",
        "speech": "queued",
        "summary": "queued",
        "vision": "queued"
    },
    "status": "queued"
}

MediaIn

ПолеТипОписание
kind *stringВид медиа
одно из: video, audio, image
url *stringАдрес https, откуда core заберёт медиа
до 2048 знаков
versionstring или nullВерсия от клиента: изменилась — медиа переобрабатывается
до 64 знаков

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

MediaOut

ПолеТипОписание
position *integer
kind *stringодно из: video, audio, image
url *string
duration_secnumber или null
widthinteger или null
heightinteger или null
status *stringодно из: new, ready, failed

Moderation

ПолеТипОписание
levelstring или nullодно из: none, low, medium, high
categoriesobject или null
evidenceobject[] или null

OrderIn

ПолеТипОписание
order_id *stringid заказа, до 64 печатных символов ASCII; повтор заменяет состав
до 64 знаков
user *EndUserIds
occurred_atstring или nullВремя заказа ISO-8601; по умолчанию — время приёма, при повторе — прежнее время заказа
statusstring или nullcancelled снимает вклад всего заказа
одно из: created, cancelled; по умолчанию created
itemsOrderLineIn[] или nullДо 200 строк; для cancelled можно не передавать
до 200 элементов

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "items": [
        {
            "item": "sku-1",
            "price": 990,
            "quantity": 2
        },
        {
            "item": "sku-2",
            "price": 450
        },
        {
            "item": "sku-new",
            "properties": {
                "brand": "Дом"
            },
            "title": "Кружка керамическая"
        }
    ],
    "occurred_at": "2026-09-14T12:00:00Z",
    "order_id": "A-100500",
    "user": {
        "user_id": "u-42"
    }
}

OrderLineIn

ПолеТипОписание
item *stringid объекта (товара)
до 191 знаков
quantitynumber или nullКоличество, по умолчанию 1
pricenumber или nullЦена за единицу
от 0
titlestring или nullНазвание: товара нет в каталоге — заводится недоступный объект
до 1000 знаков
propertiesobject или nullСвойства для такого объекта, до 16 КБ

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

OrderLineRejection

ПолеТипОписание
index *integerНомер строки в items, с 0
item *string или null
code *stringодно из: unknown_item, invalid_value

OrderResponse

ПолеТипОписание
order_id *string
accepted *integerПринято строк
rejected *OrderLineRejection[]

Пример

{
    "accepted": 2,
    "order_id": "A-100500",
    "rejected": [
        {
            "code": "unknown_item",
            "index": 2,
            "item": "sku-x"
        }
    ]
}

OrdersBatchRequest

ПолеТипОписание
orders *OrderIn[]До 500 заказов и не больше 5000 строк в сумме
до 500 элементов

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

OrdersBatchResponse

ПолеТипОписание
results *OrdersBatchResult[]

Пример

{
    "results": [
        {
            "accepted": 3,
            "index": 0,
            "ok": true,
            "order_id": "A-1",
            "rejected": []
        },
        {
            "error": {
                "code": "validation_failed",
                "details": [
                    {
                        "code": "too_old",
                        "field": "occurred_at",
                        "message": "заказ старше 730 дней"
                    }
                ],
                "message": "Поля не прошли проверку"
            },
            "index": 1,
            "ok": false,
            "order_id": "A-2"
        }
    ]
}

OrdersBatchResult

ПолеТипОписание
index *integer
order_id *string или null
ok *boolean
acceptedinteger или null
rejectedOrderLineRejection[] или null
errorBatchError или null

Processing

ПолеТипОписание
prepare *stringодно из: queued, running, done, skipped, failed, deferred, waiting
speech *stringодно из: queued, running, done, skipped, failed, deferred, waiting
vision *stringодно из: queued, running, done, skipped, failed, deferred, waiting
summary *stringодно из: queued, running, done, skipped, failed, deferred, waiting
embedding *stringодно из: queued, running, done, skipped, failed, deferred, waiting

ProfileBatchRequest

ПолеТипОписание
profiles *ProfileRequest[]До 500 профилей
до 500 элементов

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

ProfileBatchResponse

ПолеТипОписание
results *ProfileBatchResult[]

Пример

{
    "results": [
        {
            "index": 0,
            "ok": true
        },
        {
            "error": {
                "code": "validation_failed",
                "details": [
                    {
                        "code": "pii_not_allowed",
                        "field": "attributes.email",
                        "message": "персональные данные не принимаются"
                    }
                ],
                "message": "Поля не прошли проверку"
            },
            "index": 1,
            "ok": false
        }
    ]
}

ProfileBatchResult

ПолеТипОписание
index *integer
ok *boolean
errorBatchError или null

ProfileRequest

Переданные поля заменяются, null очищает поле, непереданные не меняются.

ПолеТипОписание
genderstring или nullодно из: male, female
birth_yearinteger или nullОт 1900 до текущего года
от 1900
ageinteger или nullВместо birth_year: пересчитывается в год рождения
от 0 до 120
interestsstring[] или nullДо 50 строк до 200 знаков: интересы текстом на любом языке
до 50 элементов
excluded_interestsstring[] или null«Не интересно»
до 50 элементов
followed_authorsstring[] или nullid авторов: подписки
до 500 элементов
hidden_authorsstring[] или nullid авторов, которых не показывать
до 500 элементов
citystring или nullХранится в нижнем регистре без лишних пробелов
до 100 знаков
countrystring или nullдо 100 знаков
personalizationboolean или nullfalse — не персонализировать
attributesobject или nullЛюбые данные до 16 КБ, кроме персональных: ключи email, phone, name, first_name, last_name, middle_name, address, birth_date, passport на любой глубине — 422 pii_not_allowed
user *EndUserIds

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "age": 29,
    "attributes": {
        "subscriptions": 3,
        "tier": "gold"
    },
    "city": "Казань",
    "followed_authors": [
        "channel-7"
    ],
    "gender": "female",
    "interests": [
        "горные велосипеды",
        "фотография"
    ],
    "user": {
        "user_id": "u-42"
    }
}

ProfileResponse

ПолеТипОписание
identity *stringодно из: user, anonymous
updated_fields *string[]Поля, значение которых изменилось

Пример

{
    "identity": "user",
    "updated_fields": [
        "gender",
        "birth_year"
    ]
}

ReprocessRequest

ПолеТипОписание
stepsstring[] или nullШаги; без steps переобрабатывается всё, включая подготовку медиа

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "steps": [
        "summary",
        "embedding"
    ]
}

SearchChunkOut

ПолеТипОписание
media_positioninteger или null
start_secnumber или null
end_secnumber или null
text *string

StoredProfile

ПолеТипОписание
identity *stringодно из: user, anonymous
gender *string или nullодно из: male, female
birth_year *integer или null
city *string или null
country *string или null
interests *string[] или null
excluded_interests *string[] или null
followed_authors *string[] или null
hidden_authors *string[] или null
personalization *boolean
attributes *object или null
fields_updated_at *objectДата последнего изменения каждого поля

Пример

{
    "attributes": {
        "tier": "gold"
    },
    "birth_year": 1997,
    "city": "казань",
    "fields_updated_at": {
        "birth_year": "2026-09-14T12:00:00Z",
        "gender": "2026-09-14T12:00:00Z"
    },
    "followed_authors": [
        "channel-7"
    ],
    "gender": "female",
    "identity": "user",
    "interests": [
        "горные велосипеды"
    ],
    "personalization": true
}

SummaryOut

ПолеТипОписание
summarystring или null
descriptionstring или null
topicsstring[]по умолчанию []
tagsstring[]по умолчанию []
entitiesobject[]по умолчанию []
languagestring или null
age_ratingstring или nullодно из: 0+, 6+, 12+, 16+, 18+
moderationModeration или null

TranscriptOut

ПолеТипОписание
media_position *integer
languagestring или null
timestamps *stringодно из: model, estimated
text *string
segmentsTranscriptSegment[]по умолчанию []

TranscriptSegment

ПолеТипОписание
start *number
end *number
text *string
speakerstring или null

UserDeleteRequest

ПолеТипОписание
user *EndUserIds

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "user": {
        "user_id": "u-42"
    }
}

UserDeleteResponse

ПолеТипОписание
deleted *booleanfalse — пользователь неизвестен

Пример

{
    "deleted": true
}

UserLinkRequest

ПолеТипОписание
user_id *stringАккаунт, в который вошёл пользователь
до 191 знаков
anonymous_idstring или nullБраузер или устройство до входа
до 191 знаков
fingerprint_uuidstring или nullvisitor_uuid DARA Fingerprint: записывается как вход на устройстве

Другие поля не принимаются: неизвестное поле — ошибка unknown_field.

Пример

{
    "anonymous_id": "b7f3c9",
    "fingerprint_uuid": "0b8f6a52-3f3e-4a57-9d51-6c1a1f0e7a01",
    "user_id": "u-42"
}

UserLinkResponse

ПолеТипОписание
merged *booleanfalse — анонима нет или его история уже перенесена другому пользователю
events_moved *integer

Пример

{
    "events_moved": 12,
    "merged": true
}