Management APIs / Projects

Pause a project

POSThttps://api.spice.ai/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.

Authorizations

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Path parameters

  • projectIdintegerRequired

    The ID of the project to pause

Header parameters

  • X-Org-Namestring

    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}$

Responses

200Project pausedapplication/json
  • idintegerRequired

    The project ID

  • namestringRequired

    The project name

  • paused_atstring (date-time)Required

    Timestamp when the project was paused

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

401Unauthorized

403Insufficient scope

404Project not found

409Project is already pausedapplication/json
  • errorstringRequired

  • paused_atstring (date-time)Required

    Timestamp of the existing pause

500Internal server error

curl -X POST "https://api.spice.ai/v1/projects/<projectId>/pause" \
  -H "Authorization: Bearer <token>"
{
  "id": 0,
  "name": "string",
  "paused_at": "2026-01-01T00:00:00Z"
}

application/json

POSThttps://api.spice.ai/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.

Authorizations

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Path parameters

  • orgIdintegerRequired

    The org id from GET /v1/orgs

    • Minimum: 1
  • projectIdintegerRequired

    The ID of the project to pause

Header parameters

  • X-Org-Namestring

    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}$

Responses

200Project pausedapplication/json
  • idintegerRequired

    The project ID

  • namestringRequired

    The project name

  • paused_atstring (date-time)Required

    Timestamp when the project was paused

400Bad 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).

401Unauthorized

403Forbidden

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).

404Project not found

409Project is already pausedapplication/json
  • errorstringRequired

  • paused_atstring (date-time)Required

    Timestamp of the existing pause

500Internal server error

curl -X POST "https://api.spice.ai/v1/orgs/<orgId>/projects/<projectId>/pause" \
  -H "Authorization: Bearer <token>"
{
  "id": 0,
  "name": "string",
  "paused_at": "2026-01-01T00:00:00Z"
}

application/json

POSThttps://api.spice.ai/v1/apps/{appId}/pauseDeprecated

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.

Authorizations

  • AuthorizationstringRequired

    Bearer <token>. Authentication lists the tokens it accepts.

Path parameters

  • appIdintegerRequired

    The ID of the project to pause

Header parameters

  • X-Org-Namestring

    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}$

Responses

200Project pausedapplication/json
  • idintegerRequired

    The project ID

  • namestringRequired

    The project name

  • paused_atstring (date-time)Required

    Timestamp when the project was paused

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

401Unauthorized

403Insufficient scope

404Project not found

409Project is already pausedapplication/json
  • errorstringRequired

  • paused_atstring (date-time)Required

    Timestamp of the existing pause

500Internal server error

OpenAPIapi.spice.ai/openapi.json

curl -X POST "https://api.spice.ai/v1/apps/<appId>/pause" \
  -H "Authorization: Bearer <token>"
{
  "id": 0,
  "name": "string",
  "paused_at": "2026-01-01T00:00:00Z"
}

application/json