Changelog

Um registro público das mudanças da API. Mudanças aditivas e compatíveis com versões anteriores (novos campos opcionais); mudanças incompatíveis são sinalizadas explicitamente — as integrações existentes continuam funcionando sem alterações.

2026-06-30 — OCR multiprovedor (BYOK)

Incompatível. O estágio de OCR agora recebe ocr.{provider, model, providerKey} (era ocr.mistralApiKey). Escolha qualquer provedor suportado — o Mistral é o padrão (mistral-ocr-latest). O model é obrigatório. Novos marcadores de erro de OCR (provider_auth_failed, provider_key_required, rate_limited, ocr_timeout, ocr_backend_*, too_many_pages) substituem mistral_key_required.

2026-06-26 — Chaves de idempotência

POST /v1/jobs aceita idempotencyKey. Repetir com a mesma chave e parâmetros idênticos retorna o job original; a mesma chave com parâmetros diferentes retorna 400.

2026-06-24 — webhooks de conclusão de job

  • Novos campos webhookUrl e webhookSecret (ambos opcionais) na criação do job. webhookUrl é um endpoint http/https absoluto; o serviço faz um POST nele uma única vez, com um corpo JSON (job_id, account_id, status, finished_at), quando o job atinge um status terminal. webhookSecret é um segredo HMAC: quando definido, cada requisição inclui os cabeçalhos X-Hotdoc-Timestamp e X-Hotdoc-Signature (sha256=hex(hmac_sha256(secret, "<ts>.<body>"))). Ambos os campos são aceitos apenas como entrada e nunca aparecem nas respostas. Política de retentativas: até 6 tentativas com atrasos de 1 m / 5 m / 15 m / 30 m / 30 m. Veja “Webhooks” para detalhes.

2026-06-24 — chunking consciente da estrutura e tamanho de chunk configurável

  • Chunking de texto consciente da estrutura. O texto reconhecido longo agora é cortado ao longo dos limites da estrutura do seu formato (Markdown / HTML / XML / plain): as tabelas não são rasgadas no meio de uma linha (o cabeçalho de uma tabela é repetido em cada chunk), e o contexto dos títulos de seção é preservado. O comportamento anterior (chunks como linhas llm[] separadas, identificadas por chunkIndex / chunkTotal) permanece inalterado — o serviço continua não mesclando os chunks.
  • Novo campo neural.chunkBudgetTokens (opcional) na criação do job — orçamento de tokens por chunk para a janela de contexto do seu modelo; faixa 160002000000, com padrão no valor conservador do serviço. A resposta ecoa o orçamento efetivo real.
  • Novo campo ocr[].outputFormat no resultado do job — o formato do texto reconhecido (markdown / html / xml / plain).