Skip to main content
An Environment is the isolation boundary — sandbox, staging or production. Themes belong to one, and nothing crosses between them. This API reads Environments and does not create, rename or delete them. Those are account-plane acts; see what the API deliberately does not do.

List Environments

Returns only the Environments you hold a grant on, not the Team’s Environments with yours marked.
string
default:"ascending"
ascending or descending, by slug.
integer
default:"1"
integer
default:"100"
boolean
default:"false"

Read one Environment

string
required
The Environment’s id, as returned by the list. Not its slug.
Answers 404 when it does not exist or belongs to a Team you are not in, and 403 when you are in the Team but hold no grant on it.

The Environment resource

string
required
The addressable key. Put this in a URL, not the slug.
string
required
The URL segment a person sees in the portal. Unique within the Team.
string
required
string
required
sandbox, staging or production.
string | null
What the Environment is for, in the customer’s own words.
object
required
Free key/value labels for your own tooling, as a flat object.The portal sends these as a list of pairs because GraphQL has no map type. JSON has one, so this API returns an object — reading a label by key should not mean scanning an array.
Never put a secret in a label. They are readable by anyone who can read the Environment.
integer
required
How many seconds a latest answer for any Theme here may be reused by the edge.Operationally: it is how long after a publish the CDN may still be serving the previous version to an app that asks for latest. Pinned version URLs are unaffected — they never change. See Caching.
string
required
Your grant on this Environment: viewer, editor or admin. Always present, because this API only ever returns an Environment you hold a grant on.
string
required
string
required
createdBy and updatedBy are deliberately withheld. They name a user, and this API has no member endpoints to resolve one with — publishing an internal user id you cannot look up would be a promise we would then have to keep.