---
title: activation_forbidden — Activation forbidden
description: "HTTP 403 activation_forbidden: Activating a cascade requires production access. It stays a draft, which runs in test mode."
canonical_url: "https://cascades.crscreditapi.com/docs/api/errors/activation_forbidden"
doc_version: "1.0.0"
last_updated: "2026-10-09T18:04:24Z"
http_status: 403
source: config/api_error_codes.yml
---

# `activation_forbidden` — Activation forbidden

**HTTP 403 Forbidden**

Message: "Activating a cascade requires production access. It stays a draft, which runs in test mode."

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
- `PATCH /workflows/{id}` sent `active: true` from an account without production access. An explicit activation is refused rather than silently dropped.
- The request used a docs key (the key these docs pages mint for you when you are signed in). Docs keys are sandbox-only, so they cannot activate a cascade even on an approved account. The message then reads "Docs keys are sandbox-only, so they cannot activate a cascade. Activate it in the app or with a key from /api-keys. It stays a draft, which runs in test mode."
- Note that `POST /workflows` and `POST /workflows/generate` do not raise this — they save the cascade as a draft and add a `note` to the response instead.

## How to fix it
1. Leave `active` out of the update; a draft cascade can still be triggered in test mode.
2. With a docs key, activate the cascade in the Cascades app, or send the same request with a key from /api-keys.
3. Without production access, request production approval, then activate.

## Operations that return it
- [PATCH /workflows/{id}](/docs/api/workflows/update-workflow) — Update a workflow

## Example response

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

```json
{
  "error": {
    "code": "activation_forbidden",
    "message": "Activating a cascade requires production access. It stays a draft, which runs in test mode.",
    "details": [
      {
        "field": "active",
        "message": "requires production access"
      }
    ],
    "request_id": "6f1c2a3e-8d4b-4c5e-9f0a-1b2c3d4e5f60",
    "doc_url": "https://cascades.crscreditapi.com/docs/api/errors/activation_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.
