Create feature flag
create_flagCreate a feature flag with a key, name, and type. Boolean flags get true/false variations automatically; other types need initialVariations, and the flag is created disabled in all environments.
Instructions
Create a feature flag. type is one of Boolean|String|Number|Json. Boolean flags get true/false variations automatically; for other types pass initialVariations. The flag is created in every environment of the project (disabled).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Unique flag key, e.g. checkout-v2 | |
| name | Yes | Display name | |
| tags | No | Tags for filtering, e.g. team or area | |
| type | Yes | Value type; Boolean gets true/false variations automatically | |
| project | Yes | Project key | |
| ownerEmail | No | Optional owner: the email of an active member (Pro plan and above, see set_flag_owner). Omitted, a personal access token makes its own user the owner and a service token leaves the flag unowned | |
| description | No | What the flag controls | |
| isPermanent | No | Mark the flag permanent: a kill switch, ops toggle or entitlement gate that is meant to stay. Permanent flags are never listed as removal candidates or by find_stale_flags. Cannot be combined with expiresAtUtc | |
| expiresAtUtc | No | Optional date (YYYY-MM-DD, end of that UTC day) or ISO-8601 timestamp the flag is expected to be removed by (see set_flag_expiry) | |
| idempotency_key | No | Idempotency-Key header for safe retries | |
| clientSideVisible | No | Expose to client-side SDKs (browser/mobile) | |
| initialVariations | No | Variations for a String, Number or Json flag (Boolean flags get true/false automatically) |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| key | No | ||
| name | No | ||
| tags | No | ||
| type | No | Allowed values: Boolean, String, Number, Json. | |
| owner | No | ||
| _actions | No | Capability hints: which operations the authenticated caller may perform on this resource, each with allowed + optional reason. Computed from the caller's role and the resource's state. Injected at runtime; safe to ignore. Present only on top-level resource responses — nested occurrences (e.g. a rule inside a targeting-config response) do not carry it. | |
| createdAt | No | ||
| updatedAt | No | ||
| isArchived | No | ||
| variations | No | ||
| description | No | ||
| isPermanent | No | ||
| expiresAtUtc | No | ||
| expirySource | No | ||
| removalPrUrl | No | ||
| clientSideVisible | No | ||
| effectiveExpiresAtUtc | No |