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
AuthorizationstringRequiredBearer <token>. Authentication lists the tokens it accepts.
Path parameters
projectIdintegerRequiredThe ID of the project to pause
Header parameters
X-Org-NamestringThe 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(400org_assertion_requiredotherwise).- Pattern:
^[A-Za-z0-9._-]{1,255}$
- Pattern:
Responses
200Project pausedapplication/json
idintegerRequiredThe project ID
namestringRequiredThe project name
paused_atstring (date-time)RequiredTimestamp 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
errorstringRequiredpaused_atstring (date-time)RequiredTimestamp of the existing pause
500Internal server error
curl -X POST "https://api.spice.ai/v1/projects/<projectId>/pause" \
-H "Authorization: Bearer <token>"POST /v1/projects/<projectId>/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>{
"id": 0,
"name": "string",
"paused_at": "2026-01-01T00:00:00Z"
}application/json
No response body
No response body
No response body
No response body
{
"error": "string",
"paused_at": "2026-01-01T00:00:00Z"
}application/json
No response body
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
AuthorizationstringRequiredBearer <token>. Authentication lists the tokens it accepts.
Path parameters
orgIdintegerRequiredThe org id from GET /v1/orgs
- Minimum:
1
- Minimum:
projectIdintegerRequiredThe ID of the project to pause
Header parameters
X-Org-NamestringWhen 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}$
- Pattern:
Responses
200Project pausedapplication/json
idintegerRequiredThe project ID
namestringRequiredThe project name
paused_atstring (date-time)RequiredTimestamp 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
errorstringRequiredpaused_atstring (date-time)RequiredTimestamp of the existing pause
500Internal server error
curl -X POST "https://api.spice.ai/v1/orgs/<orgId>/projects/<projectId>/pause" \
-H "Authorization: Bearer <token>"POST /v1/orgs/<orgId>/projects/<projectId>/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>{
"id": 0,
"name": "string",
"paused_at": "2026-01-01T00:00:00Z"
}application/json
No response body
No response body
No response body
No response body
{
"error": "string",
"paused_at": "2026-01-01T00:00:00Z"
}application/json
No response body
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
AuthorizationstringRequiredBearer <token>. Authentication lists the tokens it accepts.
Path parameters
appIdintegerRequiredThe ID of the project to pause
Header parameters
X-Org-NamestringThe 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(400org_assertion_requiredotherwise).- Pattern:
^[A-Za-z0-9._-]{1,255}$
- Pattern:
Responses
200Project pausedapplication/json
idintegerRequiredThe project ID
namestringRequiredThe project name
paused_atstring (date-time)RequiredTimestamp 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
errorstringRequiredpaused_atstring (date-time)RequiredTimestamp 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>"POST /v1/apps/<appId>/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer <token>{
"id": 0,
"name": "string",
"paused_at": "2026-01-01T00:00:00Z"
}application/json
No response body
No response body
No response body
No response body
{
"error": "string",
"paused_at": "2026-01-01T00:00:00Z"
}application/json
No response body