API-Referenz

API-Übersicht

Basis-URL, Authentifizierung, Fehlerformat und vollständige Fehlercode-Referenz

Basis-URL

https://openapi.thunderbit.com/openapi/v1

Authentifizierung

Alle Endpunkte verwenden HTTP Bearer (API Key):

Authorization: Bearer YOUR_API_KEY

Hol dir deinen Key im Thunderbit Dashboard. Keys sind widerrufbar und pro Umgebung getrennt — bette niemals einen Produktions-Key in Client-Code ein.

Fehler-Envelope

Alle Fehlerantworten teilen sich denselben Envelope. Standardmäßig (LEGACY-Format):

{
  "success": false,
  "error": {
    "code":    "INVALID_URL",
    "status":  400,
    "message": "The provided URL is not valid",
    "details": null
  }
}

Note: Zuvor wurde ein alternatives GOOGLE_RPC-Envelope dokumentiert, bei dem code und status ihre Typen tauschten (string ↔ number). Es ist veraltet und nicht empfohlen — stark typisierte Clients (OpenAPI codegen, Pydantic, serde, encoding/json) scheitern beim Deserialisieren. Nutzen Sie das LEGACY-Format oben; künftige Updates halten code: string und status: number stabil. Das Feld details kann strukturierten Kontext enthalten — zum Beispiel feldbezogene Validierungsfehler als { field: message }-Paare bei INVALID_PARAMETER.

Kanonische Fehlercodes

HTTPCodeBedeutung
400INVALID_URLURL-Format ist ungültig
400INVALID_SCHEMAJSON Schema ist ungültig
400INVALID_PARAMETERMindestens ein Anfrageparameter ist ungültig
400SCHEMA_OR_PROMPT_REQUIREDschema (oder prompt) ist für die Extraktion erforderlich
400SCHEMA_AND_PROMPT_EXCLUSIVEschema und prompt können nicht gleichzeitig angegeben werden
400BATCH_SIZE_EXCEEDEDBatch-Anfrage überschreitet das Limit von 100 URLs
400MALFORMED_REQUEST_BODYAnfrage-Body ist kein gültiges JSON
401API_KEY_MISSINGAuthorization-Header fehlt
401API_KEY_INVALID_FORMATAPI-Key-Format ist ungültig
401API_KEY_NOT_FOUNDAPI-Key wurde im System nicht gefunden
401API_KEY_REVOKEDAPI-Key wurde widerrufen
401API_KEY_DISABLEDAPI-Key wurde deaktiviert
401API_KEY_EXPIREDAPI-Key ist abgelaufen
401INVALID_API_KEY(veraltet, verwende stattdessen die spezifischen API_KEY_*-Codes)
402INSUFFICIENT_CREDITSNicht genügend Guthaben auf dem Konto
404JOB_NOT_FOUNDBatch-Job nicht gefunden
404RESOURCE_NOT_FOUNDRessource nicht gefunden
408REQUEST_TIMEOUTAPI-Anfrage hat Zeitlimit überschritten
408SCRAPE_TIMEOUTZielseite hat zu lange gebraucht
422SCRAPE_SSL_ERRORZielseite hat SSL-/TLS-Probleme
422SCRAPE_DNS_RESOLUTION_ERRORZiel-Hostname konnte nicht aufgelöst werden
422SCRAPE_SITE_ERRORZielseite hat einen Fehler zurückgegeben
422SCRAPE_EMPTY_CONTENTZielseite hat leeren Inhalt geliefert
422SCRAPE_CONTENT_TOO_LARGEZielseite überschreitet Größenlimits
422SCRAPE_TARGET_FORBIDDENZielseite hat den Zugriff verweigert (403)
422SCRAPE_TARGET_NOT_FOUNDZiel-URL liefert 404
422SCRAPE_UNSUPPORTED_FILEZiel-Dateityp wird nicht unterstützt
429RATE_LIMIT_EXCEEDEDKonto-Ratenlimit ausgelöst
429SCRAPE_TARGET_RATE_LIMITEDZielseite hat unsere Anfrage drosseln lassen
500INTERNAL_ERRORAllgemeiner interner Fehler
500DISTILL_FAILEDDestillations-Pipeline ist fehlgeschlagen
500EXTRACT_FAILEDExtraktions-Pipeline ist fehlgeschlagen
500PIPELINE_ERRORPipeline-Schritt meldet Fehler
500AI_EXTRACTION_FAILEDKI-Extraktionsschritt ist fehlgeschlagen
500MARKDOWN_CONVERSION_FAILEDHTML-zu-Markdown-Konvertierung fehlgeschlagen
502SCRAPE_ALL_PROVIDERS_FAILEDAlle Scraping-Provider sind fehlgeschlagen
502UPSTREAM_BAD_GATEWAYUpstream hat eine ungültige Antwort geliefert
503SCRAPE_PROVIDER_UNAVAILABLEScraping-Provider nicht verfügbar
503AI_SERVICE_UNAVAILABLEKI-Dienst nicht verfügbar
503DOWNSTREAM_SERVICE_UNAVAILABLEDownstream-Dienst vorübergehend nicht verfügbar
504UPSTREAM_TIMEOUTUpstream-Gateway-Zeitlimit überschritten
504AI_TIMEOUTKI-Dienst-Aufruf hat Zeitlimit überschritten

Wiederholungsstrategie

FehlerklasseWiederholen?Wie
4xx (deine Eingabe)❌ NeinAnfrage korrigieren und erneut senden
401 (Auth)❌ NeinAPI-Key rotieren / neu ausstellen
402 (Guthaben)❌ NeinAufladen
408 / 504 (Timeout)✅ JaExponentielles Backoff, max. 3 Versuche
429 (Rate-Limit)✅ JaBis X-RateLimit-Reset warten — siehe Rate Limits
5xx (Server)✅ JaExponentielles Backoff, max. 3 Versuche
SCRAPE_TARGET_* (Zielseite)⚠️ VielleichtEinmal erneut versuchen mit höherem renderMode