> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streampixel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Disable Project

> Switch a project off and end every live and queued session.

Switch a project off. Every live and queued session of the project is ended: viewers receive disconnect code `4000` (Project inactive), the applications are stopped, and new viewers are refused until the project is [enabled](/resources/api-reference/enable-project) again.

The call waits until the end-session signal has been sent and reports how many sessions it reached. That is the difference from the dashboard's switch, which fires and forgets: a script can tell "disabled, 3 viewers disconnected" from "disabled, but the region did not answer".

<Info>
  Scope: `control`. Team members need the Editor role or above. Limited to 30 control calls per minute per account.
</Info>

<Warning>
  This is immediate and has no undo for the viewers it disconnects. To clear sessions without taking the project offline, use [End Sessions](/resources/api-reference/end-sessions).
</Warning>

## Path parameters

<ParamField path="projectId" type="string" required>
  The project to switch off.
</ParamField>

## Headers

<ParamField header="x-api-key" type="string" required>
  An API key issued with the `control` scope.
</ParamField>

## Response

<ResponseField name="enabled" type="boolean">Always `false` after this call.</ResponseField>
<ResponseField name="changed" type="boolean">`false` if the project was already off. Sessions are signalled either way.</ResponseField>
<ResponseField name="sessionsSignalled" type="number">Live and queued sessions told to end.</ResponseField>
<ResponseField name="regionAnswered" type="boolean">`false` when the region's session store could not be read. The project is off, but sessions may still be running; retry [End Sessions](/resources/api-reference/end-sessions).</ResponseField>
<ResponseField name="error" type="string">Only with `regionAnswered: false`: why.</ResponseField>

<RequestExample>
  ```bash cURL theme={"dark"}
  curl -X POST https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/disable \
    -H "x-api-key: $STREAMPIXEL_API_KEY"
  ```

  ```javascript Node.js theme={"dark"}
  const res = await fetch(
    'https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/disable',
    { method: 'POST', headers: { 'x-api-key': process.env.STREAMPIXEL_API_KEY } }
  );
  const r = await res.json();
  if (!r.regionAnswered) console.warn('project is off but sessions may still be running:', r.error);
  ```

  ```python Python theme={"dark"}
  import os, requests

  r = requests.post(
      "https://platform.streampixel.io/api/v1/projects/664f1a2b3c4d5e6f7a8b9c0d/disable",
      headers={"x-api-key": os.environ["STREAMPIXEL_API_KEY"]},
  ).json()
  print(f'off; {r["sessionsSignalled"]} session(s) ended')
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={"dark"}
  {
    "projectId": "664f1a2b3c4d5e6f7a8b9c0d",
    "name": "Showroom",
    "region": "Europe",
    "enabled": false,
    "changed": true,
    "sessionsSignalled": 3,
    "regionAnswered": true
  }
  ```
</ResponseExample>

## Errors

| Status | `code`          | Cause                                                                          |
| ------ | --------------- | ------------------------------------------------------------------------------ |
| `403`  | `API_KEY_SCOPE` | The key was issued without `control`.                                          |
| `403`  | —               | The project belongs to another account, or the team role cannot edit projects. |
| `404`  | `NOT_FOUND`     | No project with that id.                                                       |
| `429`  | `RATE_LIMITED`  | More than 30 control calls in a minute. `Retry-After` is set.                  |
