Skip to main content
POST
Create an environment, such as staging. Map its c…

Authorizations

apiKey
string
query
required

apiKey MUST be supplied within the request body instead of query

Path Parameters

projectId
string<uuid>
required

The project the environments belong to.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

Body

application/json

POST /v2/api/projects/:projectId/environments Request body

slug
string
required

The new environment's identifier, e.g. staging: lowercase letters, digits and dashes, starting with a letter. Immutable once created, and production is reserved.

Pattern: ^[a-z][a-z0-9-]{0,39}$
name
string
required

The environment's display name, e.g. Staging.

Required string length: 1 - 80
apiKey
string

Upsolve API key, generated under Account → Developer settings in the Upsolve Hub. Keys are user-scoped: pass organizationId alongside the key to select which org to act on.

Minimum string length: 1
Example:

"up_embed_************"

organizationId
string<uuid>

Your Upsolve organization's UUID — the org that owns the API key and project. This is NOT a project organization: do not pass a value registered via /projects/register-organization, and do not pass an externalId (only projectOrganizationId accepts those). Omit it when using an org-bound API key — the org is read from the key and any value sent here is ignored. Required only for user-scoped API keys (created under Account → Developer settings) and for the Supabase JWT path, where the org is ambiguous and membership is verified against it.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
Example:

"123e4567-e89b-12d3-a456-426614174000"

Response

POST /v2/api/projects/:projectId/environments Positive response

status
string
required
Allowed value: "success"
data
object
required