---
title: live_mode_forbidden — Live mode forbidden
description: "HTTP 403 live_mode_forbidden: Live mode requires production access."
canonical_url: "https://cascades.crscreditapi.com/docs/api/errors/live_mode_forbidden"
doc_version: "1.0.0"
last_updated: "2026-10-09T18:04:24Z"
http_status: 403
source: config/api_error_codes.yml
---

# `live_mode_forbidden` — Live mode forbidden

**HTTP 403 Forbidden**

Message: "Live mode requires production access."

Envelope schema: `ErrorEnvelope` in [openapi.json](https://cascades.crscreditapi.com/openapi.json#/components/schemas/ErrorEnvelope) ([YAML](https://cascades.crscreditapi.com/openapi.yaml)).

## What causes it
- The request asked for `execution_mode: "live"` (trigger, batch create) but the account has not been approved for production data.
- The request used a docs key (the key these docs pages mint for you when you are signed in). Docs keys are sandbox-only: they never run live, even on an approved account. The message then reads "Docs keys are sandbox-only, so they never run live. Use a key from /api-keys for live mode."
- A live-mode batch or execution is being resumed, retried, or re-evaluated by an account that no longer holds production access.
- A live-mode review decision was attempted, either by an account without production access or after the original submitter lost it ("Live-mode review cannot resume because the original submitter no longer has production access.").

## How to fix it
1. Omit `execution_mode` or send `"test"`. Test mode runs every cascade at no charge, on mock data or on a registered test subject's authored reports.
2. With a docs key, use a key from /api-keys (or the Cascades app) for live runs. Keep the docs key for test mode.
3. Request production approval from your Cascades contact. Approval is manual; there is no self-serve switch. Once approved, your /api-keys key works for live mode. Docs keys never do.
4. For a blocked review resume, have an approved user on the account record the decision.

## Operations that return it
- [POST /workflows/{id}/trigger](/docs/api/workflows/trigger-workflow) — Trigger a workflow
- [POST /workflows/{id}/batches](/docs/api/batches/create-batch) — Create a batch from N rows
- [POST /batches/{id}/resume](/docs/api/batches/resume-batch) — Resume an interrupted batch
- [POST /batches/{id}/retry_failed](/docs/api/batches/retry-failed-batch) — Retry failed and skipped rows
- [POST /executions/{id}/re_evaluations](/docs/api/executions/re-evaluate-execution) — Re-evaluate an execution
- [POST /executions/{id}/review_decisions](/docs/api/executions/submit-review-decision) — Approve or deny a paused review

## Example response

```http
HTTP/1.1 403 Forbidden
Content-Type: application/json
```

```json
{
  "error": {
    "code": "live_mode_forbidden",
    "message": "Live mode requires production access.",
    "details": [
      {
        "field": "execution_mode",
        "message": "live mode requires production access"
      }
    ],
    "request_id": "6f1c2a3e-8d4b-4c5e-9f0a-1b2c3d4e5f60",
    "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/live_mode_forbidden"
  }
}
```

## Related
- [/docs/concepts/sandbox-vs-live](/docs/concepts/sandbox-vs-live)

[All error codes](https://cascades.crscreditapi.com/docs/api/errors.md)

## Sitemap

See the full [sitemap](https://cascades.crscreditapi.com/sitemap.md) for all pages.
