ДАРА АНАЛИТИКА
Разделы документации

Документация

Ошибки и лимиты

Формат ошибок API и коды ответов, ошибки проверки отчётов и отдельных записей, лимиты запросов на ключ, размеры пачек, квоты сайта — хиты, записи сессий, хранение — и пределы тега и отчётов.

Формат ошибки

Ошибка запроса целиком приходит с HTTP-кодом 4xx или 5xx и телом:

{"error": {"code": "validation_failed", "message": "Поле date_from обязательно"}}
  • code — машинный код из таблицы ниже. Проверяйте в коде именно его.
  • message — пояснение для человека; текст может меняться.
  • details — необязательный объект с подробностями, например о полях, которые не прошли проверку.
Код HTTP Когда Что делать
invalid_request 400 тело не JSON или запрос не разобрать исправить запрос
unauthorized 401 нет ключа, ключ неверен или отозван проверить ключ, выпустить новый в настройках сайта
forbidden 403 сайт заблокирован или удалён, владелец заблокирован связаться с поддержкой
not_found 404 нет такого метода или объекта проверить адрес
payload_too_large 413 тело больше 1 МБ разбить пачку на части
validation_failed 422 поля не прошли проверку исправить поля по details
rate_limited 429 превышен лимит запросов, в том числе по ключу уже выполняются 2 запроса POST /reports повторить после паузы из заголовка Retry-After
internal 500 ошибка сервиса повторить позже; если повторяется — сообщить X-Request-ID
unavailable 503 сервис временно недоступен повторить после паузы из заголовка Retry-After

Каждый ответ содержит заголовок X-Request-ID — сохраняйте его в логах.

Проверка отчёта

POST /reports с неверным определением отвечает 422 с кодом validation_failed. В details — поле и код причины:

{"error": {"code": "validation_failed", "message": "Неизвестная метрика", "details": [{"field": "metrics[1]", "code": "unknown_metric"}]}}
Код в details Причина
unknown_dimension нет такого измерения
unknown_metric нет такой метрики
unknown_segment нет такого сегмента у сайта
incompatible метрику нельзя посчитать вместе с измерениями запроса — например, отказы по адресу ссылки
too_many больше 5 измерений, 10 метрик, 20 фильтров или 3 сортировок
bad_date неверная дата, date_from позже date_to, период длиннее 25 месяцев или дата в будущем
bad_filter неверный фильтр: оператор, число значений или регулярное выражение

Если отчёт не уложился во время даже по выборке, ответ — 503 с кодом unavailable: сократите период.

Ошибки отдельных записей

Методы пачек отвечают 202 Accepted, даже если часть записей не принята. Непринятые записи перечислены в ответе.

Метод Где Коды
POST /conversions rejected: [{"index", "code"}] unknown_goal — нет JS-цели с таким кодом; unknown_visitor — посетитель не найден; too_old — подходящий визит старше 90 дней
POST /orders rejected: [{"index", "code"}] unknown_visitor, too_old, invalid_products — ошибка в списке товаров
POST /users results: [{"index", "ok", "error"}] pii_not_allowed — в params есть ключ персональных данных; других кодов отказа у записи нет

index — номер записи в пачке, с нуля. duplicates в ответе POST /conversions и POST /orders — записи, которые уже были учтены: это не ошибка.

Ошибка формы хотя бы одного элемента POST /visitors/attributes или записи POST /users — неверный тип, длина, UUID, нет идентификатора — отклоняет весь запрос ответом 422 с кодом validation_failed, а в details — поле с номером элемента, например visitors[3].visitor_id или users[3].email. POST /users отвечает 503 с кодом unavailable, если приём временно недоступен: пачка не сохранена, её нужно отправить ещё раз.

Повторы

  • Повторяйте при сетевой ошибке, 429, 500 и 503 — с растущей паузой, а при Retry-After — не раньше указанного времени.
  • Не повторяйте без исправления остальные ответы 4xx: результат будет тем же.
  • Пачки конверсий и заказов можно отправлять повторно без риска задвоить данные: конверсии узнаются по id, заказы — по transaction_id.
  • Пачку POST /users тоже можно повторить: поля заменяются теми же значениями. Только interests при каждом повторе снова усиливают свои темы.

Лимиты запросов

Что Лимит
/users, /conversions, /orders 20 запросов в секунду на ключ — общий лимит трёх методов
/visitors/attributes, /visitors/{visitor_id}, /network 50 в секунду на ключ — общий лимит трёх методов
/reports 2 одновременных запроса и 60 в минуту на ключ
все запросы к /api/ с одного IP 3000 в минуту

Сверх лимита, в том числе при третьем одновременном запросе отчёта, сразу приходит ответ 429 с кодом rate_limited и заголовком Retry-After. Ответ /visitors/* из кеша тоже расходует лимит.

Размеры пачек

Метод В одном запросе
POST /conversions до 1000 конверсий
POST /orders до 500 заказов
POST /users до 500 записей
POST /visitors/attributes до 100 посетителей
POST /reports до 5 измерений, 10 метрик и 10 000 строк
любой запрос тело до 1 МБ

Квоты сайта

Сервис бесплатный, нагрузку ограничивают квоты. Администратор ДАРА может изменить квоты для сайта или пользователя.

Квота По умолчанию Что при превышении
хитов сайта в сутки по Москве 1 000 000 до конца суток хиты принимаются от 10 % посетителей с весом 10; отправки форм, цели из тега, покупки, возвраты и dara('user') принимаются от всех посетителей
записей сессий сайта в сутки по Москве 1000 до конца суток новые визиты не записываются, начатые записи продолжаются; короткие записи в квоту не входят
хранение хитов и визитов 13 месяцев данные старше удаляются
хранение записей сессий 15 дней, не больше 90; избранные — 90 дней запись пропадает из списка и плеера и удаляется
сайтов у пользователя 30 новый сайт не создаётся, кабинет показывает пояснение

Роботы учитываются в квоте хитов: они тоже нагружают сервер. Как считаются отчёты сверх квоты — в разделе Отчёты и метрики.

Пределы тега

Что Предел
целей на сайте 200
код цели латинские буквы в нижнем регистре, цифры, _ и -, до 64 знаков
params в dara('goal') 2 КБ
params в dara('event') 2 КБ
user_id в dara('user') до 191 символа
email, phone, city в dara('user') до 254, 32 и 128 символов
age в dara('user') от 5 до 100
children в dara('user') до 10 детей, age ребёнка — от 0 до 17
interests в dara('user') до 50 строк, строка — до 200 символов
params в dara('user') до 4 КБ в JSON; больше — params не отправляются
пачка хитов до 50 событий и 64 КБ
кусок записи сессии до 1024 КБ в сжатом виде; больший кусок не отправляется
запросы с одного посетителя до 60 за 10 секунд и до 1000 событий в час
опоздавшие события старше 24 часов отбрасываются

Посетитель, который превысил лимиты запросов, получает отметку робота с причиной «Частота», а лишние события отбрасываются.

Лишние элементы children и interests и строки длиннее предела тег обрезает, а поля dara('user') с неверным значением не отправляет — остальные поля команды уходят. В POST /users пределы строк шире — phone до 64 символов, city до 200 — а превышение даёт 422.

Пределы отчётов

Что Предел
время расчёта отчёта 30 секунд, затем автоматический повтор по выборке 10 % посетителей
одновременных отчётов пользователя 2
конструктор до 5 группировок и 10 метрик
выгрузка XLSX до 100 000 строк; больше 10 000 — в фоне, ссылка приходит письмом и действует 7 дней
хранение файла выгрузки 7 дней, потом файл удаляется
выгрузки сайта одновременно собирается одна, в очереди — до 5
избранные записи сессий до 100 на сайт
ссылка режима карты действует 1 час