{"body_shape":"{\"error\": {\"code\", \"message\", \"detail?\", \"request_id\"}}","errors":[{"code":"auth.forbidden","http_status":403,"summary":null},{"code":"auth.invalid_key","http_status":401,"summary":null},{"code":"benchmark.fermion_invalid","http_status":500,"summary":null},{"code":"benchmark.hcs_invalid","http_status":500,"summary":null},{"code":"benchmark.scaled_invalid","http_status":500,"summary":null},{"code":"benchmark.scoring_failed","http_status":500,"summary":"A run that can no longer be scored under its recorded methodology (missing result payload, missing instance document). Deterministic: the runner fails the run rather than retrying forever."},{"code":"benchmark.unknown_family","http_status":500,"summary":null},{"code":"billing.insufficient_credits","http_status":402,"summary":null},{"code":"billing.invalid_price_model","http_status":422,"summary":null},{"code":"billing.invalid_settings","http_status":422,"summary":null},{"code":"billing.invalid_statement_month","http_status":422,"summary":null},{"code":"billing.key_cap_exceeded","http_status":402,"summary":null},{"code":"billing.max_spend_exceeded","http_status":402,"summary":"The estimated debit exceeds the job's ``max_spend_usd``. The code is emitted inline at the routing exclusion and worker preflight sites, never raised as an HTTP error; the class stays as the registry entry."},{"code":"billing.monthly_cap_exceeded","http_status":402,"summary":null},{"code":"billing.payment_provider_unavailable","http_status":503,"summary":null},{"code":"billing.reconcile_invalid_input","http_status":422,"summary":null},{"code":"billing.refund_balance_unavailable","http_status":409,"summary":"Operator-side: the wallet's available balance (balance minus in-flight reservations) cannot absorb a refund's offsetting debit. Refunds never drive a wallet negative; the inbound dispute/dashboard-refund clawbacks are the deliberate exceptions. Raised only at the CLI, never as an HTTP error; the class stays as the registry entry."},{"code":"billing.refund_not_allowed","http_status":409,"summary":"Operator-side: ``pauli billing refund-payment`` refused (payment not in a refundable state, amount outside the refundable remainder, or a pending attempt that must be re-driven first). Raised only at the CLI, never as an HTTP error; the class stays as the registry entry."},{"code":"billing.stripe_error","http_status":502,"summary":null},{"code":"billing.topup_limit_exceeded","http_status":422,"summary":null},{"code":"billing.unknown_price_model","http_status":500,"summary":null},{"code":"billing.x402_payment_invalid","http_status":402,"summary":"A PAYMENT-SIGNATURE retry that cannot settle: malformed payload, a mismatch against the advertised requirements, facilitator verification failure, or a definitive first-attempt settlement refusal. No funds moved (the authorization was never executed); sign a fresh payment."},{"code":"billing.x402_settlement_unconfirmed","http_status":402,"summary":"Settlement outcome unknown: the facilitator went unreachable mid-settle, or refused a re-driven settle after a crash window, so funds MAY have moved on-chain. The caller must NOT sign a new payment: retry the SAME signature, and if this persists the operator reconciles with ``pauli x402 resolve`` after checking the chain."},{"code":"byok.credential_unavailable","http_status":502,"summary":"A BYOK job's workspace has no usable credential for the device's provider (revoked/invalidated mid-flight, or master keys changed)."},{"code":"byok.decrypt_failed","http_status":500,"summary":"Stored ciphertext cannot be decrypted under the configured master keys (rotated-away key, or tampered/moved ciphertext)."},{"code":"byok.master_key_invalid","http_status":500,"summary":"PAULI_CREDENTIAL_MASTER_KEYS is malformed (operator configuration)."},{"code":"byok.not_configured","http_status":503,"summary":null},{"code":"byok.provider_terms_required","http_status":422,"summary":null},{"code":"byok.validation_failed","http_status":422,"summary":null},{"code":"circuit.render_too_large","http_status":422,"summary":"A circuit too big to render as a gate list or ASCII drawing. The program itself is valid (it already ran or is running); only the derived view is refused, and ``format=qasm3`` always works."},{"code":"compliance.geo_unavailable","http_status":503,"summary":"The geo gate is required but the IP database cannot answer. Fails closed like the signup captcha: an outage pauses the gated surface rather than waving traffic through."},{"code":"compliance.region_blocked","http_status":403,"summary":"Hard geo block: the client IP or declared country is embargoed or a D:5 destination. Never softened to a review: the refusal itself is a compliance record (audited; OFAC recordkeeping covers rejected transactions)."},{"code":"compliance.review_required","http_status":403,"summary":"Geo red flag (VPN indicator, declared-country vs IP mismatch): the submission is refused pending manual review; the operator releases the workspace with `pauli compliance geo-review` after checking the flags."},{"code":"compliance.screening_denied","http_status":403,"summary":"The workspace is a denied party (confirmed screening match or an operator denial): money initiation refuses outright, because accepting funds from a denied party is itself a prohibited dealing. Auth's status gate does not cover this: a denial can stand while the account stays active (the no-tip-off signup posture)."},{"code":"compliance.workspace_blocked","http_status":403,"summary":"Worker-side: the workspace lost execution eligibility between admission and provider submit (suspension, or a screening hold/denial landing while the job sat queued); re-checked fresh immediately before every submit attempt. Stored on ``jobs.error``, never raised as an HTTP error; the class stays as the registry entry."},{"code":"email.unavailable","http_status":503,"summary":"The verification resend surface needs a configured mail sender; with none, minting a token that can never be delivered would only burn the caller's patience. Authenticated surface, so an honest 503 over a camouflage 404."},{"code":"internal.error","http_status":500,"summary":null},{"code":"job.execution_attempts_exhausted","http_status":500,"summary":"Worker-side: the job's execution claim count passed the configured ceiling (``execute_max_claim_attempts``), the signature of a circuit that kills the worker process before it can record any error. Stored on ``jobs.error``, never raised as an HTTP error; the class stays as the registry entry."},{"code":"job.illegal_transition","http_status":409,"summary":null},{"code":"job.not_cancellable","http_status":409,"summary":null},{"code":"job.not_ready","http_status":409,"summary":null},{"code":"job.operator_failed","http_status":409,"summary":"Operator-side: ``pauli job fail`` terminally failed a stuck job, releasing its wallet reserve (a non-terminal job pins ``reserved_usd`` forever). Stored on ``jobs.error``, never raised as an HTTP error; the class stays as the registry entry."},{"code":"program.invalid","http_status":422,"summary":null},{"code":"program.observables_not_compatible","http_status":422,"summary":null},{"code":"program.unbound_parameters","http_status":422,"summary":null},{"code":"program.unsupported_feature","http_status":422,"summary":null},{"code":"provider.azure_error","http_status":502,"summary":null},{"code":"provider.braket_error","http_status":502,"summary":null},{"code":"provider.cancelled_mid_run","http_status":502,"summary":"Worker-side: the provider reported cancellation after execution began (a cancel raced the run and provider time may have been consumed). Stored on ``jobs.error``, never raised as an HTTP error; the class stays as the registry entry."},{"code":"provider.error","http_status":502,"summary":null},{"code":"provider.ibm_error","http_status":502,"summary":null},{"code":"provider.ionq_error","http_status":502,"summary":null},{"code":"provider.iqm_error","http_status":502,"summary":null},{"code":"provider.preflight_overquote","http_status":502,"summary":null},{"code":"provider.preflight_refused","http_status":502,"summary":"A pre-submit spend guard rejected this device attempt (worker-side; the ranked fallback walk continues). Subclasses carry the stable code."},{"code":"provider.quota_exhausted","http_status":502,"summary":null},{"code":"provider.submit_failed","http_status":502,"summary":"Worker-side: the submission call to the provider failed. Stored on ``jobs.error`` via the fallback walk, never raised as an HTTP error; the class stays as the registry entry."},{"code":"ratelimit.exceeded","http_status":429,"summary":"Raisers with the bucket state at hand (api/deps.py) attach a computed Retry-After plus the X-RateLimit-* trio as instance headers; raisers without it (Redis down and failing closed) send none, because a made-up Retry-After misdirects client backoff."},{"code":"report.exists","http_status":409,"summary":null},{"code":"report.invalid_period","http_status":400,"summary":null},{"code":"request.idempotency_key_mismatch","http_status":400,"summary":"The Idempotency-Key header and the body ``idempotency_key`` were both sent and disagree: the request contradicts itself, so neither value can be trusted as the caller's intent."},{"code":"request.invalid","http_status":422,"summary":"Malformed request shape. The code is emitted by the request-validation handler (api/errors.py) and raised directly where a constraint spans surfaces the schema cannot express (e.g. the Idempotency-Key header)."},{"code":"request.invalid_cursor","http_status":422,"summary":null},{"code":"request.too_large","http_status":413,"summary":"Request body over ``max_request_bytes``. The code is emitted by BodySizeLimitMiddleware before the app runs, never raised; the class stays as the registry entry."},{"code":"resource.conflict","http_status":409,"summary":null},{"code":"resource.not_found","http_status":404,"summary":null},{"code":"routing.device_missing","http_status":422,"summary":"Worker-side: the selected device vanished from the registry before execution. Stored on ``jobs.error``, never raised as an HTTP error; the class stays as the registry entry."},{"code":"routing.fallback_exhausted","http_status":422,"summary":"Worker-side: the ranked fallback walk ran out of hops. Stored on ``jobs.error``, never raised as an HTTP error; the class stays as the registry entry."},{"code":"routing.no_feasible_device","http_status":422,"summary":null},{"code":"routing.reservation_invalid","http_status":422,"summary":"A reservation pass-through request that cannot be honored (084): reservations are provider capacity in the CUSTOMER's own account, so they require the reserved Braket device pinned without fallback, workspace Braket credentials, and no batching opt-in. One code for every refusal; the message names the failed condition."},{"code":"signup.captcha_failed","http_status":422,"summary":null},{"code":"signup.captcha_unavailable","http_status":503,"summary":null},{"code":"storage.error","http_status":500,"summary":null},{"code":"transpile.equivalence_failed","http_status":422,"summary":null},{"code":"transpile.failed","http_status":422,"summary":null},{"code":"transpile.timeout","http_status":422,"summary":"Worker-side: transpilation exceeded the per-attempt budget (``transpile_timeout_seconds``). Stored on ``jobs.error`` via the fallback walk, never raised as an HTTP error; the class stays as the registry entry."},{"code":"walkup.payment_required","http_status":402,"summary":"The keyless walk-up quote: not a wallet shortfall (no wallet exists yet) but the tier's admission ticket. The headers carry the x402 challenge; the detail carries the quote and what the payment buys (a wallet-keyed workspace, a member key shown once, and the job)."},{"code":"webhook.endpoint_limit_exceeded","http_status":422,"summary":null},{"code":"webhook.unknown_event_type","http_status":422,"summary":null},{"code":"webhook.url_forbidden","http_status":422,"summary":null},{"code":"workspace.close_blocked","http_status":409,"summary":null},{"code":"workspace.confirm_mismatch","http_status":422,"summary":null},{"code":"workspace.erase_blocked","http_status":409,"summary":null},{"code":"workspace.invalid_name","http_status":422,"summary":null}]}