Projects

Fork a project

The org is orgId in the path. Creates a new project from this project's configuration and records this project as its source. The fork copies the spicepod the project deploys, its linked connections, project secrets, linked organization secrets, update channel, version range, replica and executor counts, storage size, description, and tags. It does not copy API keys (new ones are generated), deployments, the GitHub repository link, the instance size, or visibility (forks are private). The fork is not deployed: deploy it with POST /v1/projects/{projectId}/deployments. Requires apps:write. The server copies secret values without returning them, so no secrets scope is needed. A source connected to a GitHub repository is read from that repository, and its spicepod is copied only when it loads no other file from the repository; to deploy a fork from a fork of the repository, fork the project in the Spice portal.

post/v1/orgs/{orgId}/projects/{projectId}/forks

Request

  • Base URL
    https://api.spice.ai
  • Auth
    HTTP bearer

Path parameters

orgIdinteger required

The org id from GET /v1/orgs

projectIdinteger required

The ID of the project to fork

Headers

X-Org-Namestring

When present, X-Org-Name must name the same org as orgId. Otherwise the request returns org_path_mismatch (400).

Request body

namestring

Name of the fork. Defaults to the source name with -fork, then -fork-2 and so on, whichever is free.

region'us-east-1' | 'us-west-2'

Region to place the fork in. Omit it and cluster_name to place the fork where the source runs.

cluster_namestring

Dedicated cluster to place the fork on, as listed by GET /v1/clusters. If region is also set, it must match the cluster's region.

scheduler_state_locationstring

s3:// URI for the fork's scheduler state. Required when the source spicepod sets runtime.scheduler.state_location, and must not overlap it: two schedulers cannot share a location.

default_alertsboolean

Create default monitoring alerts for the new managed fork. False skips initial setup. Manual alert creation remains available.

Response

Project forked. It has not been deployed yet.

idinteger

Unique identifier for the project

namestring

Name of the project

kind'managed' | 'standalone' | 'byoc'

Resolved project hosting model

descriptionstring nullable

Description of the project

visibility'public' | 'private'

Visibility setting for the project

created_atstring date-time

Timestamp when the project was created

cnamestring nullable

Region identifier

cluster_namestring nullable

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

endpointstring nullable

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

production_branchstring nullable

Production branch for the project

api_keystring

Deprecated. Use the API Keys endpoints instead.

tagsobject nullable

Key-value tags for the project

paused_atstring date-time nullable

Timestamp when the project was paused; null while running

warningstring nullable

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

Example response

{
  "shared_state": [
    {
      "setting": "pg_replication_slot"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.