Feature Flags
Runtime feature toggles with percentage rollouts and user targeting.
Flag Types
Section titled “Flag Types”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} ]}Rollout
Section titled “Rollout”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.
Targeting
Section titled “Targeting”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" }]}Evaluation
Section titled “Evaluation”POST /api/v1/projects/{slug}/environments/{env}/flags/{key}/evaluate{ "context": { "user_id": "user123", "plan": "premium" }}Response:
{ "enabled": true, "value": "true", "reason": "RULE_MATCH"}Evaluation order:
- Individual targets (included → excluded)
- Targeting rules (first match wins)
- Percentage rollout
- Default value
History
Section titled “History”Tracks: created, updated, deleted, toggled (enable/disable)
SSE Streaming
Section titled “SSE Streaming”Real-time flag updates:
GET /api/v1/projects/{slug}/environments/{env}/flags/streamServer-sent events pushed when flags change.
GET /api/v1/projects/{slug}/environments/{env}/flagsPOST /api/v1/projects/{slug}/environments/{env}/flagsGET /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}/toggleLimits
Section titled “Limits”- Personal (Free): 10 flags per environment
- Starter ($5/user): Unlimited flags