For the complete documentation index, see llms.txt. This page is also available as Markdown.

Projects

Manage projects and their configurations

List projects

get

Returns all projects belonging to the authenticated organization.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

List of projects

application/json
get/v1/projects
GET /v1/projects HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "projects": [
    {
      "id": 1,
      "name": "text",
      "kind": "managed",
      "description": "text",
      "visibility": "public",
      "created_at": "2026-01-01T00:00:00.000Z",
      "cname": "text",
      "cluster_name": "text",
      "endpoint": "text",
      "tags": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      }
    }
  ]
}

Create a project

post

Creates a new project in the authenticated organization.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Body
namestring · min: 4Required

Project name (letters, numbers, hyphens only)

Pattern: ^[a-zA-Z0-9-]+$
regionstring · enumOptional

Cloud region where a managed project will be deployed (e.g. us-east-1). Omit this, cname, and cluster_name to create an unattached standalone project whose placement is resolved when linked.

Possible values:
cnamestringOptional

Deprecated. Internal region CNAME (e.g. us-east-1-prod-aws-data). Use region instead. Accepted for backwards compatibility when region is omitted. Omit all region sources to create an unattached standalone project.

cluster_namestringOptional

Name of the dedicated cluster to deploy to, as listed by GET /v1/clusters. Provide exactly one of region or cluster_name. When set, the region/routing are derived from the cluster; if region is also provided it must match the cluster's region. Omit all region sources to create an unattached standalone project.

descriptionstringOptional

Project description

visibilitystring · enumOptionalDefault: privatePossible values:
update_channelstring · enumOptional

Update channel for a managed project deployment. A standalone project has no spicepod until linking, so configure its channel after linking.

Possible values:
replicasintegerOptional

Number of replicas for a managed project. Rejected for standalone projects.

Responses
201

Project created successfully. The response may include a warning field if initial configuration could not be applied.

application/json
idintegerOptional

Unique identifier for the project

namestringOptional

Name of the project

kindstring · enumOptional

Resolved project hosting model

Possible values:
descriptionstring · nullableOptional

Description of the project

visibilitystring · enumOptional

Visibility setting for the project

Possible values:
created_atstring · date-timeOptional

Timestamp when the project was created

cnamestring · nullableOptional

Region identifier

cluster_namestring · nullableOptional

Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster.

endpointstring · nullableOptional

The data-plane endpoint the project connects to, or null before a standalone instance is attached.

production_branchstring · nullableOptional

Production branch for the project

api_keystringOptionalDeprecated

Deprecated. Use the API Keys endpoints instead.

paused_atstring · date-time · nullableOptional

Timestamp when the project was paused; null while running

warningstring · nullableOptional

Present when the project was created but initial configuration could not be applied

post/v1/projects
POST /v1/projects HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 470

{
  "name": "text",
  "region": "us-east-1",
  "cname": "text",
  "cluster_name": "text",
  "description": "text",
  "visibility": "private",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "update_channel": "stable",
  "replicas": 1,
  "resources": {
    "limits": {
      "cpu": "text",
      "memory": "text",
      "ephemeral-storage": "text"
    },
    "requests": {
      "cpu": "text",
      "memory": "text"
    }
  },
  "executor": {
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    }
  }
}
{
  "id": 1,
  "name": "text",
  "kind": "managed",
  "description": "text",
  "visibility": "public",
  "created_at": "2026-01-01T00:00:00.000Z",
  "cname": "text",
  "cluster_name": "text",
  "endpoint": "text",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "paused_at": "2026-01-01T00:00:00.000Z",
  "warning": "text",
  "config": {
    "spicepod": {},
    "registry": "text",
    "image_tag": "text",
    "update_channel": "stable",
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "executor": {
      "replicas": 1,
      "resources": {
        "limits": {
          "cpu": "text",
          "memory": "text",
          "ephemeral-storage": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      }
    },
    "region": "text",
    "node_group": "text",
    "storage_claim_size_gb": 1
  }
}

Get a project

get

Returns details for a specific project, including its configuration.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
projectIdintegerRequired

The ID of the project

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Project details with configuration

application/json
idintegerOptional
namestringOptional
kindstring · enumOptional

Resolved project hosting model

Possible values:
descriptionstringOptional
visibilitystring · enumOptionalPossible values:
created_atstring · date-timeOptional
cluster_namestring · nullableOptional

Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster.

endpointstring · nullableOptional

The data-plane endpoint the project connects to, or null before a standalone instance is attached.

production_branchstringOptional
api_keystringOptionalDeprecated

Deprecated. Use the API Keys endpoints instead.

paused_atstring · date-time · nullableOptional

Timestamp when the project was paused; null while running

get/v1/projects/{projectId}
GET /v1/projects/{projectId} HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "kind": "managed",
  "description": "text",
  "visibility": "public",
  "created_at": "2026-01-01T00:00:00.000Z",
  "cluster_name": "text",
  "endpoint": "text",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "paused_at": "2026-01-01T00:00:00.000Z",
  "config": {
    "spicepod": {},
    "image_tag": "text",
    "update_channel": "stable",
    "version": "text",
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "executor": {
      "replicas": 1,
      "resources": {
        "limits": {
          "cpu": "text",
          "memory": "text",
          "ephemeral-storage": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      },
      "storage_size_gb": 1
    },
    "region": "text",
    "storage_size_gb": 1
  }
}

Update a project

put

Updates a project's metadata and configuration, including description, visibility, spicepod configuration, replicas, and resource limits.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
projectIdintegerRequired

The ID of the project

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Body
descriptionstringOptional
visibilitystring · enumOptionalPossible values:
production_branchstringOptional
spicepodone ofOptional
stringOptional

YAML string of the spicepod configuration

or
objectOptional

JSON object of the spicepod configuration

image_tagstring · nullableOptional

Runtime image tag for a managed project; rejected for standalone projects. A non-empty value pins the project. On stable or preview, send null to clear a pin so deploys resolve from the channel catalog (stable - latest GA for the configured version range; preview - latest RC). null is rejected on nightly and internal channels.

update_channelstring · enumOptional

Update channel for a managed runtime; rejected for standalone projects.

Possible values:
versionstringOptional

Semver range for a managed runtime version (e.g. 1.x, 2.x); rejected for standalone projects.

replicasintegerOptional

Managed runtime replica count; rejected for standalone projects.

regionstringOptional

Managed project region; standalone placement is resolved during attachment.

cluster_namestringOptional

Reassign the project to a dedicated cluster, as listed by GET /v1/clusters. Provide at most one of region or cluster_name. When set, region/routing are derived from the cluster; if region is also provided it must match the cluster's region. Rejected for standalone projects, whose placement is resolved during attachment.

storage_size_gbnumberOptional

Managed runtime storage size; rejected for standalone projects.

storage_claim_size_gbnumberOptionalDeprecated

Deprecated. Use storage_size_gb instead. Rejected for standalone projects.

Responses
200

Project updated successfully

application/json
idintegerOptional

Unique identifier for the project

namestringOptional

Name of the project

kindstring · enumOptional

Resolved project hosting model

Possible values:
descriptionstring · nullableOptional

Description of the project

visibilitystring · enumOptional

Visibility setting for the project

Possible values:
created_atstring · date-timeOptional

Timestamp when the project was created

cnamestring · nullableOptional

Region identifier

cluster_namestring · nullableOptional

Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster.

endpointstring · nullableOptional

The data-plane endpoint the project connects to, or null before a standalone instance is attached.

production_branchstring · nullableOptional

Production branch for the project

api_keystringOptionalDeprecated

Deprecated. Use the API Keys endpoints instead.

paused_atstring · date-time · nullableOptional

Timestamp when the project was paused; null while running

warningstring · nullableOptional

Present when the project was created but initial configuration could not be applied

put/v1/projects/{projectId}
PUT /v1/projects/{projectId} HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 556

{
  "description": "text",
  "visibility": "public",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "spicepod": "text",
  "image_tag": "text",
  "update_channel": "stable",
  "version": "text",
  "replicas": 1,
  "resources": {
    "limits": {
      "cpu": "text",
      "memory": "text",
      "ephemeral-storage": "text"
    },
    "requests": {
      "cpu": "text",
      "memory": "text"
    }
  },
  "executor": {
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "storage_size_gb": 1
  },
  "region": "text",
  "cluster_name": "text",
  "storage_size_gb": 1
}
{
  "id": 1,
  "name": "text",
  "kind": "managed",
  "description": "text",
  "visibility": "public",
  "created_at": "2026-01-01T00:00:00.000Z",
  "cname": "text",
  "cluster_name": "text",
  "endpoint": "text",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "paused_at": "2026-01-01T00:00:00.000Z",
  "warning": "text",
  "config": {
    "spicepod": {},
    "registry": "text",
    "image_tag": "text",
    "update_channel": "stable",
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "executor": {
      "replicas": 1,
      "resources": {
        "limits": {
          "cpu": "text",
          "memory": "text",
          "ephemeral-storage": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      }
    },
    "region": "text",
    "node_group": "text",
    "storage_claim_size_gb": 1
  }
}

Delete a project

delete

Deletes a project and tears down its runtime resources.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
projectIdintegerRequired

The ID of the project to delete

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
204

Project deleted successfully

No content

delete/v1/projects/{projectId}
DELETE /v1/projects/{projectId} HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Pause a project

post

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

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
projectIdintegerRequired

The ID of the project to pause

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Project paused

application/json
idintegerRequired

The project ID

namestringRequired

The project name

paused_atstring · date-timeRequired

Timestamp when the project was paused

post/v1/projects/{projectId}/pause
POST /v1/projects/{projectId}/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "paused_at": "2026-01-01T00:00:00.000Z"
}

Resume a paused project

post

Clears the paused state on the project's spicepod and creates a new deployment to bring the runtime back up. Requires apps:write.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
projectIdintegerRequired

The ID of the project to resume

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Project resumed, deployment created

application/json
idintegerRequired

The project ID

namestringRequired

The project name

paused_atstring · date-time · nullableRequired

Always null after a successful resume

deployment_idintegerRequired

ID of the deployment created to bring the runtime back up

post/v1/projects/{projectId}/resume
POST /v1/projects/{projectId}/resume HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "paused_at": "2026-01-01T00:00:00.000Z",
  "deployment_id": 1
}

Get project metrics

get

Returns current resource utilization metrics (CPU, memory, disk I/O) and data ingestion metrics for a project.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
projectIdintegerRequired

The ID of the project

Query parameters
windowstringOptional

Prometheus-style duration (e.g. 5m, 1h, 30s). When provided, counter metrics are returned as rates over the window instead of raw cumulative values. For example, rows_ingested returns average rows per second with a window, or total cumulative rows without one.

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Resource and ingestion metrics. Missing fields indicate no data is currently available. Individual metric queries may fail independently; partial results are returned when possible.

application/json
get/v1/projects/{projectId}/metrics
GET /v1/projects/{projectId}/metrics HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "ingestion": {
    "rows_ingested": 1,
    "bytes_ingested": 1
  },
  "cluster": {
    "active_executors_count": 1
  },
  "metrics": {
    "ANY_ADDITIONAL_PROPERTY": {
      "cpu_usage_percent": 1,
      "memory_usage_bytes": 1,
      "disk_read_bytes": 1,
      "disk_read_operations": 1,
      "disk_write_bytes": 1,
      "disk_write_operations": 1
    }
  }
}
Deprecated

List projects

get

Legacy alias of /v1/projects — projects were previously called apps. Returns all projects belonging to the authenticated organization.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

List of projects

application/json
get/v1/apps
GET /v1/apps HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "apps": [
    {
      "id": 1,
      "name": "text",
      "kind": "managed",
      "description": "text",
      "visibility": "public",
      "created_at": "2026-01-01T00:00:00.000Z",
      "cname": "text",
      "cluster_name": "text",
      "endpoint": "text",
      "tags": {
        "ANY_ADDITIONAL_PROPERTY": "text"
      }
    }
  ]
}
Deprecated

Create a project

post

Legacy alias of /v1/projects — projects were previously called apps. Creates a new project in the authenticated organization.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Body
namestring · min: 4Required

Project name (letters, numbers, hyphens only)

Pattern: ^[a-zA-Z0-9-]+$
regionstring · enumOptional

Cloud region where a managed project will be deployed (e.g. us-east-1). Omit this, cname, and cluster_name to create an unattached standalone project whose placement is resolved when linked.

Possible values:
cnamestringOptional

Deprecated. Internal region CNAME (e.g. us-east-1-prod-aws-data). Use region instead. Accepted for backwards compatibility when region is omitted. Omit all region sources to create an unattached standalone project.

cluster_namestringOptional

Name of the dedicated cluster to deploy to, as listed by GET /v1/clusters. Provide exactly one of region or cluster_name. When set, the region/routing are derived from the cluster; if region is also provided it must match the cluster's region. Omit all region sources to create an unattached standalone project.

descriptionstringOptional

Project description

visibilitystring · enumOptionalDefault: privatePossible values:
update_channelstring · enumOptional

Update channel for a managed project deployment. A standalone project has no spicepod until linking, so configure its channel after linking.

Possible values:
replicasintegerOptional

Number of replicas for a managed project. Rejected for standalone projects.

Responses
201

Project created successfully. The response may include a warning field if initial configuration could not be applied.

application/json
idintegerOptional

Unique identifier for the project

namestringOptional

Name of the project

kindstring · enumOptional

Resolved project hosting model

Possible values:
descriptionstring · nullableOptional

Description of the project

visibilitystring · enumOptional

Visibility setting for the project

Possible values:
created_atstring · date-timeOptional

Timestamp when the project was created

cnamestring · nullableOptional

Region identifier

cluster_namestring · nullableOptional

Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster.

endpointstring · nullableOptional

The data-plane endpoint the project connects to, or null before a standalone instance is attached.

production_branchstring · nullableOptional

Production branch for the project

api_keystringOptionalDeprecated

Deprecated. Use the API Keys endpoints instead.

paused_atstring · date-time · nullableOptional

Timestamp when the project was paused; null while running

warningstring · nullableOptional

Present when the project was created but initial configuration could not be applied

post/v1/apps
POST /v1/apps HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 470

{
  "name": "text",
  "region": "us-east-1",
  "cname": "text",
  "cluster_name": "text",
  "description": "text",
  "visibility": "private",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "update_channel": "stable",
  "replicas": 1,
  "resources": {
    "limits": {
      "cpu": "text",
      "memory": "text",
      "ephemeral-storage": "text"
    },
    "requests": {
      "cpu": "text",
      "memory": "text"
    }
  },
  "executor": {
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    }
  }
}
{
  "id": 1,
  "name": "text",
  "kind": "managed",
  "description": "text",
  "visibility": "public",
  "created_at": "2026-01-01T00:00:00.000Z",
  "cname": "text",
  "cluster_name": "text",
  "endpoint": "text",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "paused_at": "2026-01-01T00:00:00.000Z",
  "warning": "text",
  "config": {
    "spicepod": {},
    "registry": "text",
    "image_tag": "text",
    "update_channel": "stable",
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "executor": {
      "replicas": 1,
      "resources": {
        "limits": {
          "cpu": "text",
          "memory": "text",
          "ephemeral-storage": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      }
    },
    "region": "text",
    "node_group": "text",
    "storage_claim_size_gb": 1
  }
}
Deprecated

Get a project

get

Legacy alias of /v1/projects/{projectId} — projects were previously called apps. Returns details for a specific project, including its configuration.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
appIdintegerRequired

The ID of the project

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Project details with configuration

application/json
idintegerOptional
namestringOptional
kindstring · enumOptional

Resolved project hosting model

Possible values:
descriptionstringOptional
visibilitystring · enumOptionalPossible values:
created_atstring · date-timeOptional
cluster_namestring · nullableOptional

Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster.

endpointstring · nullableOptional

The data-plane endpoint the project connects to, or null before a standalone instance is attached.

production_branchstringOptional
api_keystringOptionalDeprecated

Deprecated. Use the API Keys endpoints instead.

paused_atstring · date-time · nullableOptional

Timestamp when the project was paused; null while running

get/v1/apps/{appId}
GET /v1/apps/{appId} HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "kind": "managed",
  "description": "text",
  "visibility": "public",
  "created_at": "2026-01-01T00:00:00.000Z",
  "cluster_name": "text",
  "endpoint": "text",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "paused_at": "2026-01-01T00:00:00.000Z",
  "config": {
    "spicepod": {},
    "image_tag": "text",
    "update_channel": "stable",
    "version": "text",
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "executor": {
      "replicas": 1,
      "resources": {
        "limits": {
          "cpu": "text",
          "memory": "text",
          "ephemeral-storage": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      },
      "storage_size_gb": 1
    },
    "region": "text",
    "storage_size_gb": 1
  }
}
Deprecated

Update a project

put

Legacy alias of /v1/projects/{projectId} — projects were previously called apps. Updates a project's metadata and configuration, including description, visibility, spicepod configuration, replicas, and resource limits.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
appIdintegerRequired

The ID of the project

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Body
descriptionstringOptional
visibilitystring · enumOptionalPossible values:
production_branchstringOptional
spicepodone ofOptional
stringOptional

YAML string of the spicepod configuration

or
objectOptional

JSON object of the spicepod configuration

image_tagstring · nullableOptional

Runtime image tag for a managed project; rejected for standalone projects. A non-empty value pins the project. On stable or preview, send null to clear a pin so deploys resolve from the channel catalog (stable - latest GA for the configured version range; preview - latest RC). null is rejected on nightly and internal channels.

update_channelstring · enumOptional

Update channel for a managed runtime; rejected for standalone projects.

Possible values:
versionstringOptional

Semver range for a managed runtime version (e.g. 1.x, 2.x); rejected for standalone projects.

replicasintegerOptional

Managed runtime replica count; rejected for standalone projects.

regionstringOptional

Managed project region; standalone placement is resolved during attachment.

cluster_namestringOptional

Reassign the project to a dedicated cluster, as listed by GET /v1/clusters. Provide at most one of region or cluster_name. When set, region/routing are derived from the cluster; if region is also provided it must match the cluster's region. Rejected for standalone projects, whose placement is resolved during attachment.

storage_size_gbnumberOptional

Managed runtime storage size; rejected for standalone projects.

storage_claim_size_gbnumberOptionalDeprecated

Deprecated. Use storage_size_gb instead. Rejected for standalone projects.

Responses
200

Project updated successfully

application/json
idintegerOptional

Unique identifier for the project

namestringOptional

Name of the project

kindstring · enumOptional

Resolved project hosting model

Possible values:
descriptionstring · nullableOptional

Description of the project

visibilitystring · enumOptional

Visibility setting for the project

Possible values:
created_atstring · date-timeOptional

Timestamp when the project was created

cnamestring · nullableOptional

Region identifier

cluster_namestring · nullableOptional

Resolved dedicated cluster name; null for projects not assigned to a dedicated cluster.

endpointstring · nullableOptional

The data-plane endpoint the project connects to, or null before a standalone instance is attached.

production_branchstring · nullableOptional

Production branch for the project

api_keystringOptionalDeprecated

Deprecated. Use the API Keys endpoints instead.

paused_atstring · date-time · nullableOptional

Timestamp when the project was paused; null while running

warningstring · nullableOptional

Present when the project was created but initial configuration could not be applied

put/v1/apps/{appId}
PUT /v1/apps/{appId} HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 556

{
  "description": "text",
  "visibility": "public",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "spicepod": "text",
  "image_tag": "text",
  "update_channel": "stable",
  "version": "text",
  "replicas": 1,
  "resources": {
    "limits": {
      "cpu": "text",
      "memory": "text",
      "ephemeral-storage": "text"
    },
    "requests": {
      "cpu": "text",
      "memory": "text"
    }
  },
  "executor": {
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "storage_size_gb": 1
  },
  "region": "text",
  "cluster_name": "text",
  "storage_size_gb": 1
}
{
  "id": 1,
  "name": "text",
  "kind": "managed",
  "description": "text",
  "visibility": "public",
  "created_at": "2026-01-01T00:00:00.000Z",
  "cname": "text",
  "cluster_name": "text",
  "endpoint": "text",
  "production_branch": "text",
  "tags": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "paused_at": "2026-01-01T00:00:00.000Z",
  "warning": "text",
  "config": {
    "spicepod": {},
    "registry": "text",
    "image_tag": "text",
    "update_channel": "stable",
    "replicas": 1,
    "resources": {
      "limits": {
        "cpu": "text",
        "memory": "text",
        "ephemeral-storage": "text"
      },
      "requests": {
        "cpu": "text",
        "memory": "text"
      }
    },
    "executor": {
      "replicas": 1,
      "resources": {
        "limits": {
          "cpu": "text",
          "memory": "text",
          "ephemeral-storage": "text"
        },
        "requests": {
          "cpu": "text",
          "memory": "text"
        }
      }
    },
    "region": "text",
    "node_group": "text",
    "storage_claim_size_gb": 1
  }
}
Deprecated

Delete a project

delete

Legacy alias of /v1/projects/{projectId} — projects were previously called apps. Deletes a project and tears down its runtime resources.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
appIdintegerRequired

The ID of the project to delete

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
204

Project deleted successfully

No content

delete/v1/apps/{appId}
DELETE /v1/apps/{appId} HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content

Deprecated

Pause a project

post

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

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
appIdintegerRequired

The ID of the project to pause

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Project paused

application/json
idintegerRequired

The project ID

namestringRequired

The project name

paused_atstring · date-timeRequired

Timestamp when the project was paused

post/v1/apps/{appId}/pause
POST /v1/apps/{appId}/pause HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "paused_at": "2026-01-01T00:00:00.000Z"
}
Deprecated

Resume a paused project

post

Legacy alias of /v1/projects/{projectId}/resume — projects were previously called apps. Clears the paused state on the project's spicepod and creates a new deployment to bring the runtime back up. Requires apps:write.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
appIdintegerRequired

The ID of the project to resume

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Project resumed, deployment created

application/json
idintegerRequired

The project ID

namestringRequired

The project name

paused_atstring · date-time · nullableRequired

Always null after a successful resume

deployment_idintegerRequired

ID of the deployment created to bring the runtime back up

post/v1/apps/{appId}/resume
POST /v1/apps/{appId}/resume HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "paused_at": "2026-01-01T00:00:00.000Z",
  "deployment_id": 1
}
Deprecated

Get project metrics

get

Legacy alias of /v1/projects/{projectId}/metrics — projects were previously called apps. Returns current resource utilization metrics (CPU, memory, disk I/O) and data ingestion metrics for a project.

Authorizations
AuthorizationstringRequired

OAuth 2.0 access token obtained from the Spice.ai authentication service

Path parameters
appIdintegerRequired

The ID of the project

Query parameters
windowstringOptional

Prometheus-style duration (e.g. 5m, 1h, 30s). When provided, counter metrics are returned as rates over the window instead of raw cumulative values. For example, rows_ingested returns average rows per second with a window, or total cumulative rows without one.

Header parameters
X-Org-NamestringOptional

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.

Pattern: ^[A-Za-z0-9._-]{1,255}$
Responses
200

Resource and ingestion metrics. Missing fields indicate no data is currently available. Individual metric queries may fail independently; partial results are returned when possible.

application/json
get/v1/apps/{appId}/metrics
GET /v1/apps/{appId}/metrics HTTP/1.1
Host: api.spice.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "ingestion": {
    "rows_ingested": 1,
    "bytes_ingested": 1
  },
  "cluster": {
    "active_executors_count": 1
  },
  "metrics": {
    "ANY_ADDITIONAL_PROPERTY": {
      "cpu_usage_percent": 1,
      "memory_usage_bytes": 1,
      "disk_read_bytes": 1,
      "disk_read_operations": 1,
      "disk_write_bytes": 1,
      "disk_write_operations": 1
    }
  }
}

Last updated

Was this helpful?