Management APIs / Projects

List projects

GEThttps://api.spice.ai/v1/projects

Returns projects belonging to the authenticated organization. Page with limit (default 1000, max 1000). Prefer after_id for a stable keyset (descending id). offset is accepted for compatibility. PostgREST also caps a page at 1000 rows.

Authorizations

  • AuthorizationstringRequired

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

Query parameters

  • limitinteger

    Maximum number of projects to return

    • Default: 1000
    • Minimum: 1
    • Maximum: 1000
  • offsetinteger

    Number of projects to skip when a cursor is not supplied

    • Default: 0
    • Minimum: 0
  • after_idinteger

    Return projects with a strictly smaller id than this value.

    • Minimum: 1

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

200List of projectsapplication/json
  • projectsarray of object

    10 properties
    • idinteger

      Unique identifier for the project

    • namestring

      Name of the project

    • kindstring

      Resolved project hosting model

      • Allowed values: managed, standalone, byoc
    • descriptionstring | null

      Description of the project

    • visibilitystring

      Visibility setting for the project

      • Allowed values: public, private
    • created_atstring (date-time)

      Timestamp when the project was created

    • cnamestring | null

      Region identifier

    • cluster_namestring | null

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

    • endpointstring | null

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

    • tagsmap of string | null

      Key-value tags for the project

400Invalid limit, offset, or after_id

401Unauthorized

403Insufficient scope

curl "https://api.spice.ai/v1/projects" \
  -H "Authorization: Bearer <token>"
{
  "projects": [
    {
      "id": 0,
      "name": "string",
      "kind": "managed",
      "description": "string",
      "visibility": "public",
      "created_at": "2026-01-01T00:00:00Z",
      "cname": "string",
      "cluster_name": "string",
      "endpoint": "string",
      "tags": {}
    }
  ]
}

application/json

GEThttps://api.spice.ai/v1/orgs/{orgId}/projects

The org is orgId in the path. Returns projects belonging to the authenticated organization. Page with limit (default 1000, max 1000). Prefer after_id for a stable keyset (descending id). offset is accepted for compatibility. PostgREST also caps a page at 1000 rows.

Authorizations

  • AuthorizationstringRequired

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

Path parameters

  • orgIdintegerRequired

    The org id from GET /v1/orgs

    • Minimum: 1

Query parameters

  • limitinteger

    Maximum number of projects to return

    • Default: 1000
    • Minimum: 1
    • Maximum: 1000
  • offsetinteger

    Number of projects to skip when a cursor is not supplied

    • Default: 0
    • Minimum: 0
  • after_idinteger

    Return projects with a strictly smaller id than this value.

    • Minimum: 1

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

200List of projectsapplication/json
  • projectsarray of object

    10 properties
    • idinteger

      Unique identifier for the project

    • namestring

      Name of the project

    • kindstring

      Resolved project hosting model

      • Allowed values: managed, standalone, byoc
    • descriptionstring | null

      Description of the project

    • visibilitystring

      Visibility setting for the project

      • Allowed values: public, private
    • created_atstring (date-time)

      Timestamp when the project was created

    • cnamestring | null

      Region identifier

    • cluster_namestring | null

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

    • endpointstring | null

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

    • tagsmap of string | null

      Key-value tags for the project

400Bad Request

Invalid limit, offset, or after_id. 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).

curl "https://api.spice.ai/v1/orgs/<orgId>/projects" \
  -H "Authorization: Bearer <token>"
{
  "projects": [
    {
      "id": 0,
      "name": "string",
      "kind": "managed",
      "description": "string",
      "visibility": "public",
      "created_at": "2026-01-01T00:00:00Z",
      "cname": "string",
      "cluster_name": "string",
      "endpoint": "string",
      "tags": {}
    }
  ]
}

application/json

GEThttps://api.spice.ai/v1/appsDeprecated

Legacy alias of /v1/projects — projects were previously called apps. Returns projects belonging to the authenticated organization. Page with limit (default 1000, max 1000). Prefer after_id for a stable keyset (descending id). offset is accepted for compatibility. PostgREST also caps a page at 1000 rows.

Authorizations

  • AuthorizationstringRequired

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

Query parameters

  • limitinteger

    Maximum number of projects to return

    • Default: 1000
    • Minimum: 1
    • Maximum: 1000
  • offsetinteger

    Number of projects to skip when a cursor is not supplied

    • Default: 0
    • Minimum: 0
  • after_idinteger

    Return projects with a strictly smaller id than this value.

    • Minimum: 1

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

200List of projectsapplication/json
  • appsarray of object

    10 properties
    • idinteger

      Unique identifier for the project

    • namestring

      Name of the project

    • kindstring

      Resolved project hosting model

      • Allowed values: managed, standalone, byoc
    • descriptionstring | null

      Description of the project

    • visibilitystring

      Visibility setting for the project

      • Allowed values: public, private
    • created_atstring (date-time)

      Timestamp when the project was created

    • cnamestring | null

      Region identifier

    • cluster_namestring | null

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

    • endpointstring | null

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

    • tagsmap of string | null

      Key-value tags for the project

400Invalid limit, offset, or after_id

401Unauthorized

403Insufficient scope

OpenAPIapi.spice.ai/openapi.json

curl "https://api.spice.ai/v1/apps" \
  -H "Authorization: Bearer <token>"
{
  "apps": [
    {
      "id": 0,
      "name": "string",
      "kind": "managed",
      "description": "string",
      "visibility": "public",
      "created_at": "2026-01-01T00:00:00Z",
      "cname": "string",
      "cluster_name": "string",
      "endpoint": "string",
      "tags": {}
    }
  ]
}

application/json