Auslieferungs-Feed abrufen
const url = 'https://api.legentio.com/v1/scans?since=2026-01-01T00%3A00%3A00Z&status=completed%2Cfailed&environment=prod&limit=50';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.legentio.com/v1/scans?since=2026-01-01T00%3A00%3A00Z&status=completed%2Cfailed&environment=prod&limit=50' \ --header 'Authorization: Bearer <token>'Der Feed ist der Auslieferungsmechanismus (Ersatz für Webhooks). Er ist eine geordnete Sicht auf abgeschlossene Produktionsläufe, sortiert nach Auslieferungszeitpunkt. Der Server merkt sich nichts als „konsumiert“; der Client speichert den zurückgegebenen nextCursor und schickt ihn beim nächsten Poll wieder mit.
Wichtige Eigenschaften:
-
Auslieferung ist at-least-once: Nach einem Absturz kann derselbe Lauf
(scanId, revision)erneut erscheinen – die Verarbeitung muss idempotent sein (Upsert nachscanId, höchsterevisiongewinnt). -
Ein Retry oder eine Korrektur erhöht
revisionund lässt den Lauf erneut im Feed auftauchen, vor jedem gespeicherten Cursor. -
status,environmentunddocumentTypesind Lesezeit-Filter über eine einzige Sequenz – der Cursor läuft auch über übersprungene Läufe hinweg weiter, Filter dürfen zwischen zwei Polls gewechselt werden.
Authorizations
Abschnitt betitelt „Authorizations“Parameters
Abschnitt betitelt „Parameters“Query Parameters
Abschnitt betitelt „Query Parameters“Opake Position aus dem nextCursor der vorherigen Antwort. Schließt since aus.
Startet den Feed an einem vergangenen Zeitpunkt (Backfill/Recovery): ISO-8601-Zeitstempel oder Millisekunden seit 1970. Schließt cursor aus. Ohne cursor und ohne since beginnt der Feed am Anfang der Historie.
Example
2026-01-01T00:00:00ZKomma-getrennte Teilmenge aus completed,failed. Standard: nur completed.
Example
completed,failedprod (Standard, nur Produktionsläufe), test (nur Testläufe) oder all (beide). Jeder Eintrag trägt zusätzlich sein eigenes environment-Feld.
Auf einen Dokumenttyp-Slug einschränken.
Seitengröße, 1–200.
true/1/yes hängt das erkannte markdown an jeden Eintrag an (aus der Inline-Kopie auf dem Lauf).
Responses
Abschnitt betitelt „Responses“Eine Seite des Feeds.
object
object
Revision des Laufs. Steigt bei Retry/Korrektur und liefert den Lauf erneut im Feed aus. Clients behalten die höchste Revision je scanId.
Im Feed nur completed/failed. In der Einzelabfrage kann zusätzlich processing (aus uploaded/processing) auftreten.
object
Slug des Dokumenttyps zum Zeitpunkt des Laufs.
Anzeigename des Dokumenttyps zum Zeitpunkt des Laufs.
Ursprünglicher Dateiname des eingereichten PDFs.
Der klassifizierte Partner (Sender) des Dokuments, falls erkannt.
true, wenn der klassifizierte Partner für diesen Dokumenttyp im Testmodus steht. Der Lauf wird normal verarbeitet und im Feed ausgeliefert, sollte aber vom Client als Testlauf behandelt und nicht produktiv weiterverarbeitet werden. false, wenn kein Partner erkannt wurde oder der Partner produktiv ist.
Gesamtkonfidenz der Erkennung, falls vorhanden.
Strukturiertes Erkennungsergebnis (nur bei status = completed vorhanden). Die Felder entsprechen dem Schema des Dokumenttyps.
Maschinenlesbarer Fehlergrund (nur bei status = failed).
Menschenlesbare Fehlermeldung (nur bei status = failed).
Zeitpunkt der Einreichung (ISO 8601).
Zeitpunkt des Abschlusses (ISO 8601).
Auslieferungszeitpunkt im Feed (ISO 8601).
true, wenn data (oder markdown) zu groß war, um inline im Feed mitgeliefert zu werden. Dann den vollständigen Wert über GET /v1/scans/{scanId} nachladen.
Erkanntes Markdown – nur enthalten, wenn ?markdown=true gesetzt wurde.
Opake Position für den nächsten Poll. Persistiere sie und sende sie als cursor beim nächsten Abruf.
Example
{ "items": [ { "status": "processing", "environment": "prod" } ]}Ungültige Parameter – z. B. cursor und since gleichzeitig, ungültiger Cursor, ungültiger status/environment-Wert oder limit außerhalb 1–200.
object
Menschenlesbare Fehlermeldung (deutsch).
Example
{ "error": "Dokumenttyp nicht gefunden."}API-Schlüssel fehlt oder ist ungültig.
object
Menschenlesbare Fehlermeldung (deutsch).
Example
{ "error": "Dokumenttyp nicht gefunden."}Der API-Schlüssel gehört zu keiner Organisation.
object
Menschenlesbare Fehlermeldung (deutsch).
Example
{ "error": "Dokumenttyp nicht gefunden."}Der über documentType angegebene Dokumenttyp wurde nicht gefunden.
object
Menschenlesbare Fehlermeldung (deutsch).
Example
{ "error": "Dokumenttyp nicht gefunden."}