Changelog

Ein öffentliches Protokoll der API-Änderungen. Additive, rückwärtskompatible Änderungen (neue optionale Felder); brechende Änderungen werden explizit markiert — bestehende Integrationen funktionieren unverändert weiter.

2026-06-30 — Multi-Provider-OCR (BYOK)

Brechend. Die OCR-Stufe nimmt jetzt ocr.{provider, model, providerKey} (vorher ocr.mistralApiKey). Wählen Sie einen beliebigen unterstützten Provider — Mistral ist der Standard (mistral-ocr-latest). model ist erforderlich. Neue OCR-Fehlermarker (provider_auth_failed, provider_key_required, rate_limited, ocr_timeout, ocr_backend_*, too_many_pages) ersetzen mistral_key_required.

2026-06-26 — Idempotenz-Schlüssel

POST /v1/jobs nimmt idempotencyKey. Eine Wiederholung mit demselben Schlüssel und identischen Parametern gibt den ursprünglichen Job zurück; derselbe Schlüssel mit anderen Parametern gibt 400 zurück.

2026-06-24 — Webhooks zum Job-Abschluss

  • Neue Felder webhookUrl und webhookSecret (beide optional) beim Erstellen eines Jobs. webhookUrl ist ein absoluter http/https-Endpunkt; der Dienst sendet ihm einmal ein POST mit einem JSON-Body (job_id, account_id, status, finished_at), wenn der Job einen terminalen Status erreicht. webhookSecret ist ein HMAC-Secret: Wenn gesetzt, enthält jede Anfrage die Header X-Hotdoc-Timestamp und X-Hotdoc-Signature (sha256=hex(hmac_sha256(secret, "<ts>.<body>"))). Beide Felder werden nur als Eingabe entgegengenommen und tauchen niemals in Antworten auf. Wiederholungsrichtlinie: bis zu 6 Versuche mit Verzögerungen von 1 m / 5 m / 15 m / 30 m / 30 m. Details siehe „Webhooks”.

2026-06-24 — strukturbewusstes Chunking und konfigurierbare Chunk-Größe

  • Strukturbewusstes Chunking des Textes. Langer erkannter Text wird jetzt entlang der Strukturgrenzen seines Formats geschnitten (Markdown / HTML / XML / plain): Tabellen werden nicht mitten in einer Zeile zerrissen (die Kopfzeile einer Tabelle wird in jedem Chunk wiederholt), und der Kontext der Abschnittsüberschriften bleibt erhalten. Das bisherige Verhalten (Chunks als separate llm[]-Zeilen mit chunkIndex / chunkTotal) bleibt unverändert — der Dienst fügt die Chunks weiterhin nicht zusammen.
  • Neues Feld neural.chunkBudgetTokens (optional) beim Erstellen eines Jobs — Token-Budget pro Chunk für das Kontextfenster Ihres Modells; Bereich 160002000000, standardmäßig der konservative Wert des Dienstes. Die Antwort gibt das tatsächlich wirksame Budget zurück.
  • Neues Feld ocr[].outputFormat im Job-Ergebnis — das Format des erkannten Textes (markdown / html / xml / plain).