Fehler
Ein einheitliches Format für jeden Fehler, mit einem stabilen, maschinenlesbaren Code und einer Nachricht für Menschen.
{ "error": "entitlement_required", "message": "Guard is not enabled for this organisation", "details": { "upgrade": "/settings#plan" } }| Status | error | Wann |
|---|---|---|
| 400 | invalid_body | Body hat die Validierung nicht bestanden; details.fieldErrors nennt die Felder |
| 400 | invalid_json · invalid_query · empty | Fehlerhaftes JSON, ungültiger Query-String, leerer Payload |
| 400 | no_agent_build · endpoint_required · no_connection | Projekt nicht bereit für einen Lauf oder für Guard |
| 400 | invalid_cron · unknown_template · no_scenarios | Zeitpläne und Läufe |
| 400 | missing_signature · invalid_signature · turnstile_failed | Prüfung von Webhooks und öffentlichen Formularen |
| 400 | config_error · invalid_provider · weak_password | Validierung der Einstellungen |
| 400 | restricted_key_required · invalid_key_format · stripe_key_rejected · missing_permission · mode_mismatch · account_mismatch | Stripe verbinden oder rotieren: Live-Schlüssel müssen eingeschränkt sein; details.missing nennt fehlende Berechtigungen |
| 400 | project_required · egress_blocked · secret_required · not_configured | Beobachtungen und der Zugangsdienst |
| 401 | unauthorized · invalid_credentials | Fehlende oder falsche Zugangsdaten |
| 402 | plan_limit_reached | Monatliche Läufe des Tarifs aufgebraucht |
| 403 | forbidden · entitlement_required · wrong_password | Rolle zu niedrig, Funktion nicht freigeschaltet |
| 404 | not_found · mandate_not_found · project_not_found · connection_not_found · agent_build_not_found | Unbekannt oder nicht Ihres |
| 409 | idempotency_key_reused · business_key_conflict | Gleicher Schlüssel mit anderem Body; gleiche Wirkung bereits vorgeschlagen |
| 409 | digest_mismatch · approval_expired · not_reviewable · no_pending_approval · already_decided | Freigaben |
| 409 | mandate_inactive · project_paused | Befugnis beendet oder Kill-Switch aktiv |
| 409 | slug_taken · exists · already_enabled · already_onboarded | Konflikte |
| 409 | use_billing · billing_not_configured · already_subscribed · no_billing_account | Tarifwechsel laufen über die Abrechnung |
| 409 | connection_in_use | Aktive Mandate oder nicht abgeschlossene Operationen nutzen die Verbindung noch |
| 413 | payload_too_large | Body über dem Limit |
| 422 | no_priced_models · no_valid_cases | KI-Katalog oder Red-Team-Eingabe nicht verwendbar |
| 429 | rate_limited | Zu viele Anfragen von dieser IP |
| 500 | internal_error | Unerwartet; einmal wiederholen, dann den Support mit dem Zeitpunkt der Anfrage kontaktieren |
| 502 | sandbox_unavailable · sync_failed · stripe_unreachable | Eine Abhängigkeit hat nicht geantwortet |
Entscheidungen sind keine Fehler: Ein DENY ist ein 202 mit decision: "DENY" und expliziten decision_reasons. Auch Urteile sind keine Fehler.