Errors

One envelope for every error, with a stable machine-readable code and a human message.

Written from the code · updated 26 Sep 2026 · Something wrong or missing? Tell us

{ "error": "entitlement_required", "message": "Guard is not enabled for this organisation", "details": { "upgrade": "/settings#plan" } }
StatuserrorWhen
400invalid_bodyBody failed validation; details.fieldErrors names the fields
400invalid_json · invalid_query · emptyMalformed JSON, bad query string, empty payload
400no_agent_build · endpoint_required · no_connectionProject not ready for a run or Guard
400invalid_cron · unknown_template · no_scenariosSchedules and runs
400missing_signature · invalid_signature · turnstile_failedWebhook and public-form verification
400config_error · invalid_provider · weak_passwordSettings validation
400restricted_key_required · invalid_key_format · stripe_key_rejected · missing_permission · mode_mismatch · account_mismatchConnecting or rotating Stripe: live keys must be restricted; details.missing names absent permissions
400project_required · egress_blocked · secret_required · not_configuredObservations and the access service
401unauthorized · invalid_credentialsMissing or wrong credential
402plan_limit_reachedMonthly runs exhausted for the plan
403forbidden · entitlement_required · wrong_passwordRole too low, capability not unlocked
404not_found · mandate_not_found · project_not_found · connection_not_found · agent_build_not_foundUnknown or not yours
409idempotency_key_reused · business_key_conflictSame key different body; same effect already proposed
409digest_mismatch · approval_expired · not_reviewable · no_pending_approval · already_decidedApprovals
409mandate_inactive · project_pausedAuthority ended, or the kill-switch is on
409slug_taken · exists · already_enabled · already_onboardedConflicts
409use_billing · billing_not_configured · already_subscribed · no_billing_accountPlan changes go through billing
409connection_in_useActive mandates or unfinished operations still use the connection
413payload_too_largeBody over the limit
422no_priced_models · no_valid_casesAI catalog or red-team input unusable
429rate_limitedToo many requests from this IP
500internal_errorUnexpected; retry once, then contact support with the request time
502sandbox_unavailable · sync_failed · stripe_unreachableA dependency did not answer

Decisions are not errors: a DENY is a 202 with decision: "DENY" and explicit decision_reasons. Verdicts are not errors either.

Errors · Docs · COLVO