githubEdit

gridApps

Manage Spice apps via API

Apps are the primary resource in Spice.ai Cloud. Each app represents a deployed Spice runtime with its own configuration, datasets, models, and endpoints.

List Apps

GET https://api.spice.ai/v1/apps

Returns a list of apps for the authenticated organization.

Required scope: apps:read

Response

{
  "apps": [
    {
      "id": 123,
      "name": "my-app",
      "description": "My Spice app",
      "visibility": "private",
      "created_at": "2024-01-15T10:00:00.000Z",
      "cname": "us-east-2.spice.cloud",
      "api_key": "abc123...",
      "tags": {
        "environment": "production",
        "team": "data"
      }
    }
  ]
}

Response Fields:

Field
Type
Description

id

integer

Unique app identifier

name

string

App name

description

string | null

App description

visibility

string

public or private

created_at

string

ISO 8601 timestamp

cname

string

Region identifier

api_key

string | null

Primary API key (for runtime authentication)

tags

object | null

Key-value tags

Example

Create App

POST https://api.spice.ai/v1/apps

Creates a new app in the authenticated organization.

Required scope: apps:write

Request Body

Request Fields:

Field
Type
Required
Description

name

string

Yes

App name (min 4 chars, alphanumeric and hyphens only)

cname

string

Yes

Region identifier (get from /v1/regions)

description

string

No

App description

visibility

string

No

public or private (default: private)

tags

object

No

Key-value tags for organization

Response

Response Fields:

Field
Type
Description

id

integer

Unique app identifier

name

string

App name

description

string | null

App description

visibility

string

public or private

created_at

string

ISO 8601 timestamp

production_branch

string | null

Git branch for production deployments

api_key

string

Primary API key

tags

object | null

Key-value tags

config

object

App configuration (see Config Object below)

Config Object:

Field
Type
Description

spicepod

object | null

Spicepod YAML configuration

registry

string

Container registry (e.g., ghcr.io)

image

string | null

Container image name

image_tag

string | null

Spice runtime version tag

update_channel

string

stable, nightly, internal, or internal-sandbox

replicas

integer

Number of replicas (1-10)

region

string | null

AWS region code

node_group

string | null

Kubernetes node group

storage_claim_size_gb

number | null

Persistent volume size

Examples

cURL:

Python:

Node.js:

Get App

GET https://api.spice.ai/v1/apps/{appId}

Returns details for a specific app, including its configuration.

Required scope: apps:read

Path Parameters

Parameter
Type
Description

appId

integer

The app ID

Response

Example

Update App

PUT https://api.spice.ai/v1/apps/{appId}

Updates an app's metadata and configuration. All fields are optional.

Required scope: apps:write

Path Parameters

Parameter
Type
Description

appId

integer

The app ID

Request Body

Request Fields:

Field
Type
Description

description

string

App description

visibility

string

public or private

production_branch

string

Git branch for production

tags

object

Key-value tags

spicepod

string | object

Spicepod YAML string or JSON object

image_tag

string

Spice runtime version

image

string

Container image name

registry

string

Container registry

update_channel

string

stable, nightly, internal, or internal-sandbox

replicas

integer

Number of replicas (1-10)

region

string

AWS region code

node_group

string

Kubernetes node group

storage_claim_size_gb

number

Persistent volume size

Response

Examples

Update spicepod configuration:

Scale replicas:

Update tags:

Delete App

DELETE https://api.spice.ai/v1/apps/{appId}

Soft deletes an app (sets deleted_at timestamp). The app will be stopped and its resources released.

Required scope: apps:delete

Path Parameters

Parameter
Type
Description

appId

integer

The app ID

Response

App deleted successfully. No response body.

Example

circle-exclamation

App Lifecycle

  1. Create - Create an app with basic metadata

  2. Configure - Update the spicepod configuration

  3. Deploy - Create a deployment (see Deployments API)

  4. Monitor - Check deployment status and logs

  5. Update - Modify configuration and redeploy

  6. Delete - Remove the app when no longer needed

Best Practices

Naming Conventions

  • Use descriptive, lowercase names with hyphens

  • Include environment in name or tags: my-app-prod, my-app-staging

  • Keep names under 32 characters

Configuration Management

  • Store spicepod configurations in version control

  • Use tags to track versions and metadata

  • Test configuration changes in a staging app first

Scaling

  • Start with 1 replica and scale based on load

  • Monitor resource usage before increasing replicas

  • Use appropriate replica counts for your plan tier

Terraform

Use the spiceai_app resource to manage apps. See Terraform Provider for full documentation.

See also:

Last updated

Was this helpful?