Skip to content

Feature Flags

Runtime feature toggles with percentage rollouts and user targeting.

Boolean: On/off

{
"key": "dark-mode",
"flag_type": "boolean",
"enabled": true,
"default_value": "false"
}

Variant: Multi-option (A/B testing)

{
"key": "checkout-flow",
"flag_type": "variant",
"enabled": true,
"default_value": "control",
"variants": [
{"value": "control", "weight": 50},
{"value": "variant-a", "weight": 50}
]
}

Percentage-based gradual rollout:

{
"key": "new-ui",
"enabled": true,
"rollout_percentage": 25,
"rollout_attribute": "user_id"
}

Users assigned deterministically (hash of flag key + user_id). Same user always gets same result.

Individual targeting:

{
"individual_targets": {
"included_keys": ["user123", "user456"],
"excluded_keys": ["user789"]
}
}

Attribute rules:

{
"targeting_rules": [{
"attribute": "plan",
"operator": "equals",
"values": ["premium", "enterprise"],
"value": "true"
}]
}

Operators: equals, not_equals, contains, in_list, greater_than, less_than, matches_regex, in_segment

Segments: Reusable targeting groups

{
"targeting_rules": [{
"operator": "in_segment",
"values": ["beta-users"],
"value": "true"
}]
}
POST /api/v1/projects/{slug}/environments/{env}/flags/{key}/evaluate
{
"context": {
"user_id": "user123",
"email": "[email protected]",
"plan": "premium"
}
}

Response:

{
"enabled": true,
"value": "true",
"reason": "RULE_MATCH"
}

Evaluation order:

  1. Individual targets (included → excluded)
  2. Targeting rules (first match wins)
  3. Percentage rollout
  4. Default value

Tracks: created, updated, deleted, toggled (enable/disable)

Real-time flag updates:

GET /api/v1/projects/{slug}/environments/{env}/flags/stream

Server-sent events pushed when flags change.

GET /api/v1/projects/{slug}/environments/{env}/flags
POST /api/v1/projects/{slug}/environments/{env}/flags
GET /api/v1/projects/{slug}/environments/{env}/flags/{key}
PATCH /api/v1/projects/{slug}/environments/{env}/flags/{key}
DELETE /api/v1/projects/{slug}/environments/{env}/flags/{key}
PUT /api/v1/projects/{slug}/environments/{env}/flags/{key}/toggle
  • Personal (Free): 10 flags per environment
  • Starter ($5/user): Unlimited flags