Zum Hauptinhalt springen

Fehler

Platform-API-Fehler verwenden standardmäßige HTTP-Statuscodes. Fast jeder Fehler enthält einen stabilen Subcode-String, nach dem Clients verzweigen sollten — Statuscodes allein sind mehrdeutig (403 umfasst Scope, Produkt, Origin, IP und Schlüsseltyp).

Envelope

Die meisten Fehler geben einen FastAPI-ähnlichen Detail-Wrapper zurück:

{ "detail": "<subcode>" }

Strukturierte 429-Payloads (map_load_quota_exceeded, b2b_overloaded, org_overloaded, tile_access_restricted) sind flache Objekte auf der obersten Ebene — ohne detail-Wrapper:

{ "error": "map_load_quota_exceeded", "meter": "map_loads", "limit": 50000, "used": 50000 }

429-Fehler mit String-Detail (Map-Load-Hard-Stops) behalten den Wrapper:

{ "detail": "map_load_hard_stop" }

Einige nicht-streamenden Endpoints melden Fehler als HTTP 200 mit einem error- Key — insbesondere POST /chat/control/route. Wer nur nach Status verzweigt, behandelt diese als Erfolg. Lies immer den Body.

Tabelle

StatusSubcodeBedeutungMaßnahme
401(no detail)Fehlender / ungültiger / widerrufener / abgelaufener SchlüsselPrüfe den Schlüsselwert und ob er nicht widerrufen wurde. Viewer benötigt keinen Schlüssel.
401publishable_requires_sessionEin Publishable Key (kld_pk_…) wurde als direkter Bearer gesendetVerwende ihn über das SDK, das ihn gegen eine Session austauscht.
403insufficient_scopeGültiger Schlüssel, aber der Scope der Route fehltErstelle / erstelle erneut einen Schlüssel mit dem richtigen Scope (ai / maps / design).
403tier_capability_not_allowedDer gespeicherte Schlüssel hatte die Capability, aber der aktuelle Tier der Organisation erlaubt sie nicht mehr (typischerweise Pro→Free-Downgrade)Upgrade den Plan oder verwende ein Produkt, das der aktuelle Tier erlaubt.
403origin_requiredEin Publishable Key wurde ohne Browser-Origin verwendet (z. B. serverseitig)Publishable Keys sind nur für den Browser.
403session_origin_mismatchDer Request-Origin steht nicht in der Allowlist des SchlüsselsAktualisiere die Allowed Origins des Schlüssels (siehe API-Schlüssel erhalten).
403product_not_allowedDer Schlüssel ist für dieses Produkt nicht zugelassenErstelle einen Schlüssel mit Produktzulassung (oder verwende Viewer, der schlüssellos ist).
403server_key_in_browserEin Server Key (kld_sk_…) wurde im Browser verwendetServer Keys sind nur serverseitig; außerdem durch CORS blockiert.
403ip_not_allowedEin Server Key wurde von einer IP außerhalb seiner Allowlist verwendetAktualisiere die IP-Allowlist des Schlüssels oder rufe von einer erlaubten Adresse auf.
403publishable_key_requiredDer SDK-Session-Austausch wurde mit etwas anderem als einem Publishable Key versuchtVerwende beim Session-Exchange-Schritt einen kld_pk_…-Schlüssel.
403sessions_disabledSession-Ausgabe ist für dieses Deployment deaktiviertSupport kontaktieren — dies ist ein Betriebszustand, keine Kundeneinstellung.
403sessions_not_configuredSession-Infrastruktur ist nicht konfiguriertSupport kontaktieren.
422(various)Fehlerhafter Request-BodyKorrigiere die Payload (siehe Endpoints). Beim Mint bedeuten unknown_scope / unknown_product einen unbekannten Wert; publishable_live_requires_origins bedeutet, dass ein Live-Publishable-Key ohne Allowed Origins erstellt wurde.
429(flat) map_load_quota_exceededDas monatliche Map-Loads-Kontingent der Organisation ist aufgebrauchtUpgrade oder reduziere Basemap-Ladevorgänge.
429map_load_hard_stopBezahlte Organisation liegt beim Map-Loads-Kontingent 5× darüberDie Auslieferung stoppt hier; der Soft-Bereich oberhalb des Kontingents funktioniert weiterhin.
429(flat) tile_access_restrictedTile-Anfrage abgelehnt (meist Origin-Allowlist-Fehler). Enthält Retry-After: 3600Füge den Seiten-Origin zur Allowlist des Schlüssels hinzu; versuche es nach dem Header-Intervall erneut.
429(flat) b2b_overloadedGlobales Request-Shedding ist aktivZurückfahren und mit Jitter erneut versuchen.
429(flat) org_overloadedRequest-Shedding pro OrganisationZurückfahren und erneut versuchen.
429limiter_unavailableRate Limiter ist vorübergehend nicht erreichbarAls temporär behandeln; erneut versuchen.
429rate_limitedDerzeit zu viele AnfragenRetry-After beachten.
503(no detail)Key-Service vorübergehend nicht verfügbarTemporär — in Kürze erneut versuchen.

Schlüsselverwaltung

Fehler von POST/PATCH/DELETE /shared-api/api-keys/* (Cognito org-admin JWT, kein Plattformschlüssel):

StatusSubcodeBedeutung
403free_plan_publishable_onlyOrganisationen im Free-Tier können nur Publishable Keys erstellen.
403plan_requiredDie Organisation hat keine erkannte API-Plan-Zeile.
403tier_capability_not_allowedEin PATCH versuchte, einen Schlüssel über die Zulassung des aktuellen Tiers hinaus zu erweitern.
403vendor_scope_requires_acknowledgementDer vendor-Scope erfordert eine ausdrückliche Bestätigung pro Schlüssel.
409key_limit_reachedDie Organisation hat das planabhängige Schlüssel-Limit pro Organisation erreicht.

Siehe API-Schlüssel erhalten für den vollständigen Mint-Ablauf und den PATCH- Update-Pfad.

Streaming-Fehler

In einem SSE-Stream kommt ein endgültiger Fehler als error-Event statt als HTTP-Status an (die Response wurde bereits mit 200 gestartet):

event: error
data: { "type":"error", "message":"…", "code":"…", "partial_text":"…" }

Behandle ein error-Event als Ende dieses Streams. Ein quota-Event während des Streams ist kein Fehler — es ist der Zähler, der dir mitteilt, wie viel Budget noch übrig ist. Clients müssen unbekannte Event-Namen ignorieren — neue Events können innerhalb des stabilen Contracts ohne Versionssprung hinzugefügt werden.

CORS "blockiert" im Browser

Wenn der Browser bei einer echten Anfrage einen CORS-Block meldet, steht der Request-Origin nicht in der Allowlist des Schlüssels — es ist kein Auth-Fehler. Siehe CORS & allowed origins.