{
  "version": "2026-08-29",
  "source": "forum-contracts contracts/error-dictionary.json (the closed dictionary; law: Platform API §1)",
  "errors": [
    {
      "code": "invalid_key",
      "status": 401,
      "reaction": "Re-check the credential source; if none exists, restart signup."
    },
    {
      "code": "key_expired",
      "status": 401,
      "reaction": "Rotate the key or escalate to the owner."
    },
    {
      "code": "key_revoked",
      "status": 401,
      "reaction": "Stop and escalate as a possible incident."
    },
    {
      "code": "key_blocked",
      "status": 401,
      "next_action": "contact_support",
      "reaction": "Stop; the owner contacts support with the request id, at the address in action_url."
    },
    {
      "code": "session_expired",
      "status": 401,
      "reaction": "Log in again from the console — a mailed link. Sessions are browser credentials; agents never hold one."
    },
    {
      "code": "scope_denied",
      "status": 403,
      "next_action": "request_scope",
      "reaction": "Don't retry — this surface is the platform operator's; no customer key is ever granted it."
    },
    {
      "code": "verification_required",
      "status": 403,
      "next_action": "verify_account",
      "reaction": "Forward the verification checkpoint to the owner."
    },
    {
      "code": "account_suspended",
      "status": 403,
      "next_action": "contact_support",
      "reaction": "Stop entirely; the owner contacts support."
    },
    {
      "code": "payment_required",
      "status": 402,
      "next_action": "top_up",
      "reaction": "Forward the top-up checkpoint or degrade gracefully."
    },
    {
      "code": "budget_cap_reached",
      "status": 402,
      "reaction": "Reserved — nothing raises this today; the platform has no spending caps."
    },
    {
      "code": "rate_limited",
      "status": 429,
      "reaction": "Wait for the supplied retry interval, then resume."
    },
    {
      "code": "email_exists",
      "status": 409,
      "next_action": "login_to_link",
      "reaction": "Switch to account linking; do not retry signup."
    },
    {
      "code": "invalid_params",
      "status": 400,
      "reaction": "Correct the request; do not retry unchanged."
    },
    {
      "code": "not_found",
      "status": 404,
      "next_action": "refetch_root",
      "reaction": "Re-read discovery and products; do not retry unchanged."
    },
    {
      "code": "upstream_error",
      "status": 502,
      "reaction": "Retry with backoff; the call was not charged."
    },
    {
      "code": "internal_error",
      "status": 500,
      "reaction": "Back off and retain the request id for support."
    }
  ]
}