# Pause a project

## `POST /v1/projects/{projectId}/pause`

Pauses the project's running spicepod. The runtime is torn down and the
spicepod record is marked as paused. Settings and configuration are
preserved. Resume with POST /v1/projects/{projectId}/resume. Requires
`apps:write`.

### Path parameters

- `projectId` (integer, required): The ID of the project to pause

### Header parameters

- `Authorization` (string, required): `Bearer <token>`. [Authentication](https://spice.ai/docs/cloud/api/management#authentication) lists the tokens it accepts.
- `X-Org-Name` (string, optional): The organization to act on, by handle. Omit it to act on the organization the credential is bound to; sending it blank is a 400, not the same as omitting it. A user credential may name any organization its owner belongs to; a machine credential is pinned to its own. A portal session token is bound to none, so it must send this header on every route but `GET /v1/orgs` (400 `org_assertion_required` otherwise). Pattern: `^[A-Za-z0-9._-]{1,255}$`.

### Example request

```bash
curl -X POST "https://api.spice.ai/v1/projects/<projectId>/pause" \
  -H "Authorization: Bearer <token>"
```

```http
POST /v1/projects/<projectId>/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>
```

### Responses

**200 OK**

Project paused

Content type: `application/json`

- `id` (integer, required): The project ID
- `name` (string, required): The project name
- `paused_at` (string (date-time), required): Timestamp when the project was paused

**400 Bad Request**

Invalid project ID, missing API key, no spicepod configured, or spicepod has been deleted

**401 Unauthorized**

Unauthorized

**403 Forbidden**

Insufficient scope

**404 Not Found**

Project not found

**409 Conflict**

Project is already paused

Content type: `application/json`

- `error` (string, required)
- `paused_at` (string (date-time), required): Timestamp of the existing pause

**500 Internal Server Error**

Internal server error

## `POST /v1/orgs/{orgId}/projects/{projectId}/pause`

The org is `orgId` in the path. Pauses the project's running spicepod. The runtime is torn down and the
spicepod record is marked as paused. Settings and configuration are
preserved. Resume with POST /v1/projects/{projectId}/resume. Requires
`apps:write`.

### Path parameters

- `orgId` (integer, required): The org id from GET /v1/orgs. Minimum: `1`.
- `projectId` (integer, required): The ID of the project to pause

### Header parameters

- `Authorization` (string, required): `Bearer <token>`. [Authentication](https://spice.ai/docs/cloud/api/management#authentication) lists the tokens it accepts.
- `X-Org-Name` (string, optional): When present, X-Org-Name must name the same org as orgId. Otherwise the request returns org\_path\_mismatch (400). Pattern: `^[A-Za-z0-9._-]{1,255}$`.

### Example request

```bash
curl -X POST "https://api.spice.ai/v1/orgs/<orgId>/projects/<projectId>/pause" \
  -H "Authorization: Bearer <token>"
```

```http
POST /v1/orgs/<orgId>/projects/<projectId>/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>
```

### Responses

**200 OK**

Project paused

Content type: `application/json`

- `id` (integer, required): The project ID
- `name` (string, required): The project name
- `paused_at` (string (date-time), required): Timestamp when the project was paused

**400 Bad Request**

Invalid project ID, missing API key, no spicepod configured, or spicepod has been deleted. orgId is not a valid org id (`invalid_org_id`), or X-Org-Name does not name that org (`org_path_mismatch`).

**401 Unauthorized**

Unauthorized

**403 Forbidden**

Insufficient scope. The caller is not a member of the org (`org_forbidden`). A machine credential named a different org (`org_assertion_mismatch`). The org is deleted (`org_deleted`).

**404 Not Found**

Project not found

**409 Conflict**

Project is already paused

Content type: `application/json`

- `error` (string, required)
- `paused_at` (string (date-time), required): Timestamp of the existing pause

**500 Internal Server Error**

Internal server error

## `POST /v1/apps/{appId}/pause` (deprecated)

Legacy alias of `/v1/projects/{projectId}/pause` — projects were previously called apps. Pauses the project's running spicepod. The runtime is torn down and the
spicepod record is marked as paused. Settings and configuration are
preserved. Resume with POST /v1/projects/{projectId}/resume. Requires
`apps:write`.

### Path parameters

- `appId` (integer, required): The ID of the project to pause

### Header parameters

- `Authorization` (string, required): `Bearer <token>`. [Authentication](https://spice.ai/docs/cloud/api/management#authentication) lists the tokens it accepts.
- `X-Org-Name` (string, optional): The organization to act on, by handle. Omit it to act on the organization the credential is bound to; sending it blank is a 400, not the same as omitting it. A user credential may name any organization its owner belongs to; a machine credential is pinned to its own. A portal session token is bound to none, so it must send this header on every route but `GET /v1/orgs` (400 `org_assertion_required` otherwise). Pattern: `^[A-Za-z0-9._-]{1,255}$`.

### Example request

```bash
curl -X POST "https://api.spice.ai/v1/apps/<appId>/pause" \
  -H "Authorization: Bearer <token>"
```

```http
POST /v1/apps/<appId>/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>
```

### Responses

**200 OK**

Project paused

Content type: `application/json`

- `id` (integer, required): The project ID
- `name` (string, required): The project name
- `paused_at` (string (date-time), required): Timestamp when the project was paused

**400 Bad Request**

Invalid project ID, missing API key, no spicepod configured, or spicepod has been deleted

**401 Unauthorized**

Unauthorized

**403 Forbidden**

Insufficient scope

**404 Not Found**

Project not found

**409 Conflict**

Project is already paused

Content type: `application/json`

- `error` (string, required)
- `paused_at` (string (date-time), required): Timestamp of the existing pause

**500 Internal Server Error**

Internal server error

OpenAPI: [api.spice.ai/openapi.json](https://api.spice.ai/openapi.json)
