Changelog

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

2026-06-30 — Мульти-провайдерный OCR (BYOK)

Ломающее изменение. Этап OCR теперь принимает ocr.{provider, model, providerKey} (было ocr.mistralApiKey). Выберите любого поддерживаемого провайдера — Mistral используется по умолчанию (mistral-ocr-latest). Поле model обязательно. Новые маркеры ошибок OCR (provider_auth_failed, provider_key_required, rate_limited, ocr_timeout, ocr_backend_*, too_many_pages) заменяют mistral_key_required.

2026-06-26 — Идемпотентные ключи

POST /v1/jobs принимает idempotencyKey. Повторный запрос с тем же ключом и идентичными параметрами возвращает исходную задачу; тот же ключ с другими параметрами возвращает 400.

2026-06-24 — вебхуки о завершении задачи

  • Новые поля webhookUrl и webhookSecret (оба опциональные) при создании задачи. webhookUrl — абсолютный http/https-адрес вашего эндпоинта; сервис отправит на него POST-запрос с JSON-телом (job_id, account_id, status, finished_at) ровно один раз, когда задача достигнет терминального статуса. webhookSecret — HMAC-секрет: при его наличии к каждому запросу добавляются заголовки X-Hotdoc-Timestamp и X-Hotdoc-Signature (sha256=hex(hmac_sha256(secret, "<ts>.<body>"))). Оба поля принимаются только на вход, в ответах не появляются. Политика повторов: до 6 попыток с задержками 1 м / 5 м / 15 м / 30 м / 30 м. Подробнее — в разделе «Вебхуки».

2026-06-24 — структурно-осведомлённое разбиение на части и настраиваемый их размер

  • Структурно-осведомлённое деление текста на части. Длинный распознанный текст теперь режется по границам структуры формата (Markdown / HTML / XML / plain): таблицы не рвутся посреди строк (заголовок таблицы повторяется в каждой части), сохраняется контекст заголовков-секций. Прежнее поведение (части в отдельных строках llm[] по chunkIndex / chunkTotal) сохранено — сервис по-прежнему не склеивает части.
  • Новое поле neural.chunkBudgetTokens (опциональное) при создании задачи — бюджет одной части в токенах под контекстное окно вашей модели; диапазон 160002000000, по умолчанию — консервативное значение сервиса. В ответе эхается фактический эффективный бюджет.
  • Новое поле ocr[].outputFormat в результате задачи — формат распознанного текста (markdown / html / xml / plain).