Skip to main content

Flags API

Create, read, update, and delete feature flags.

Create Flag

POST /v1/projects/{projectID}/flags

Auth: JWT (Owner, Admin, Developer)

Request

{
"key": "new-checkout",
"name": "New Checkout Flow",
"description": "Redesigned checkout experience",
"flag_type": "boolean",
"default_value": false,
"tags": ["checkout", "experiment"],
"prerequisites": ["billing-enabled"],
"mutual_exclusion_group": "checkout-experiments"
}
FieldTypeRequiredDefaultDescription
keystringYesUnique identifier (immutable)
namestringYesDisplay name
descriptionstringNo""Description
flag_typestringNobooleanboolean, string, number, json, ab
default_valueanyNofalseDefault value when disabled
tagsstring[]No[]Tags for organization
prerequisitesstring[]No[]Flag keys that must be enabled
mutual_exclusion_groupstringNo""Mutex group name

Response 201 Created

{
"id": "uuid",
"project_id": "uuid",
"key": "new-checkout",
"name": "New Checkout Flow",
"description": "Redesigned checkout experience",
"flag_type": "boolean",
"default_value": false,
"tags": ["checkout", "experiment"],
"prerequisites": ["billing-enabled"],
"mutual_exclusion_group": "checkout-experiments",
"created_at": "2026-04-01T00:00:00Z",
"updated_at": "2026-04-01T00:00:00Z"
}

List Flags

GET /v1/projects/{projectID}/flags

Auth: JWT (All roles)

Response 200 OK

Returns an array of flag objects.


Get Flag

GET /v1/projects/{projectID}/flags/{flagKey}

Auth: JWT (All roles)

Response 200 OK

Returns a single flag object.


Update Flag

PUT /v1/projects/{projectID}/flags/{flagKey}

Auth: JWT (Owner, Admin, Developer)

Request

Partial update — only provided fields are changed.

{
"name": "Updated Name",
"description": "Updated description",
"default_value": true,
"tags": ["new-tag"],
"prerequisites": [],
"mutual_exclusion_group": ""
}

Response 200 OK

Returns the updated flag object.


Delete Flag

DELETE /v1/projects/{projectID}/flags/{flagKey}

Auth: JWT (Owner, Admin, Developer)

Response 204 No Content


Promote Flag

Copy flag configuration from one environment to another.

POST /v1/projects/{projectID}/flags/{flagKey}/promote

Auth: JWT (Owner, Admin, Developer)

Request

{
"source_env_id": "dev-env-uuid",
"target_env_id": "staging-env-uuid"
}

Response 200 OK

Returns the target environment's updated flag state. Copies enabled, default_value, rules, and percentage_rollout.


Kill Switch

Emergency disable a flag in an environment.

POST /v1/projects/{projectID}/flags/{flagKey}/kill

Auth: JWT (Owner, Admin, Developer)

Request

{
"env_id": "production-env-uuid"
}

Response 200 OK

Returns the flag state with enabled: false. Creates an audit entry with action flag.killed.