Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

If using Bearer auth, pass the Secret Key as the token:

Query Parameters

skipSchemaValidation
deprecated

Deprecated — pass skipSchemaValidation in the request body instead.

Allowed value: "true"
ignoreWarnings
deprecated

Deprecated — pass ignoreWarnings in the request body instead.

Allowed value: "true"

Body

application/json
key
string
required

Stable reference handle (lowercase slug, unique per org), referenced as @config:key

Pattern: ^[a-z0-9][a-z0-9\-_]*$
name
string
required

The display name of the config

parent
string

The key of the config to inherit from (the primary lineage spine). Express inheritance via parent/extends, NEVER via a @config: entry in value (which is rejected).

extends
string[]

Additional composition bases (config keys) layered on top of parent, in precedence order (later overrides earlier; all override parent; own keys win last). Set inheritance here, never via a @config: entry in value.

value
object

This config's base value as a JSON object. Per-environment/project variants are expressed via scopedOverrides.

scopedOverrides
object[]

Ordered, first-match-wins environment/project-scoped variant selection. Each entry points at a flavor config (a child config, by key) whose value is deep-merged onto this config's resolved value when the (environment, project) scope matches — resolved at build time, per layer. This is how you create an environment-scoped override (as opposed to a plain child config): make a child config for the override value, then add it here with its scope. Send the complete list to replace it; an empty array clears all overrides. Entries must reference existing configs, may not reference this config itself, and may not be unreachable (fully subsumed by an earlier entry).

description
string
Maximum string length: 10000
project
string
owner
string

The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. When omitted, it defaults to the user associated with the request's Personal Access Token (PAT), if one is being used.

schema
object

Field definitions for this config, as a JSON Schema document ({ type: "json-schema", value }) or typed-code source ({ type: "typescript" | "protobuf" | "python" | "go" | "rust", value }) — converted server-side in one call. Fields whose key an ancestor (via parent/extends) already owns follow "base wins": an identical re-declaration is stripped with a redundant-declaration warning; one with a differing definition is rejected. A field owned by two sibling bases is a conflict and is rejected. Omit to leave the config schema-less. Conversion warnings are returned in warnings.

source
string

Optional identifier of the consuming codebase/service. When a typed-code schema (typescript/protobuf/python/go/rust) is supplied, its named-type structure is captured under this source so GET /configs/:key/schema?source=<id>&format=<lang> can reproduce those names.

extensible
boolean
experimentGuard
boolean

Enable the experiment guard on this config: publishing a change served to a running experiment soft-blocks unless overridden. Omit to inherit the org default.

invariants
object[]

Cross-field validation rules. Each rule's expression is a mongo condition (mongrule). Stored on the config schema and enforced at publish.

ignoreWarnings
boolean

Set to true to acknowledge the warnings listed in a blocked response and continue. This covers experiment guards, locked dependents, and references affected by an archive. When the organization treats schema failures as warnings, it also covers schema and invariant warnings. It never bypasses a rejected Custom Hook. On revision publish endpoints, it can also force-publish an out-of-date draft when the caller has Bypass draft approvals access.

skipSchemaValidation
boolean

Set to true to publish despite schema validation errors, failed invariants, or schema changes that invalidate dependent resources. This does not bypass a rejected Custom Hook; use skipHooks for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.

skipHooks
boolean

Set to true to publish despite a Custom Hook rejection. This does not bypass schema validation; use skipSchemaValidation for that. The caller must have Bypass draft approvals access for Feature Flags, Configs, and Constants in every Project. Otherwise, this field is ignored.

Response

200 - application/json

Resource created

config
object
required
warnings
object[]
postPublishWarnings
string[]

Steps that failed AFTER the value publish committed (e.g. an experiment-guard toggle in the same request). The publish stands; retry only the named step.