statsig Gates API
Manage feature gates including creation, updates, rules, overrides, enabling, disabling, launching, and archiving.
Manage feature gates including creation, updates, rules, overrides, enabling, disabling, launching, and archiving.
openapi: 3.1.0
info:
title: Statsig Client SDK Audit Logs Gates API
description: The Statsig Client SDK API provides endpoints that power Statsig's client-side SDKs for JavaScript, React, React Native, iOS, Android, Unity, and other platforms. Client SDKs use Client-SDK Keys that are safe to embed in mobile apps and front-end web applications. They access the initialize endpoint to retrieve all evaluated gates, configs, and experiments for a given user, and the log_event endpoint for sending analytics events. The SDKs handle local evaluation, caching, and automatic error handling for performant client-side feature flagging.
version: 1.0.0
contact:
name: Statsig Support
url: https://statsig.com/support
termsOfService: https://statsig.com/terms
servers:
- url: https://api.statsig.com/v1
description: Statsig API Server
security:
- clientSdkKey: []
tags:
- name: Gates
description: Manage feature gates including creation, updates, rules, overrides, enabling, disabling, launching, and archiving.
paths:
/gates:
get:
operationId: listGates
summary: List all gates
description: Retrieves a list of all feature gates in the project with their current status and configuration.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Page'
responses:
'200':
description: List of feature gates
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Gate'
pagination:
$ref: '#/components/schemas/Pagination'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createGate
summary: Create a gate
description: Creates a new feature gate in the project with the specified configuration, rules, and targeting conditions.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GateCreate'
responses:
'201':
description: Gate created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/gates/{id}:
get:
operationId: getGate
summary: Get a gate
description: Retrieves the full configuration of a specific feature gate including its rules, conditions, and overrides.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate details
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: partiallyUpdateGate
summary: Partially update a gate
description: Updates specific fields of a feature gate without replacing the entire configuration.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GateUpdate'
responses:
'200':
description: Gate updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteGate
summary: Delete a gate
description: Permanently deletes a feature gate from the project. This action cannot be undone.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/enable:
put:
operationId: enableGate
summary: Enable a gate
description: Enables a feature gate so that its rules are actively evaluated for users.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate enabled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/disable:
put:
operationId: disableGate
summary: Disable a gate
description: Disables a feature gate so that it returns false for all users regardless of rules.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate disabled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/launch:
put:
operationId: launchGate
summary: Launch a gate
description: Launches a feature gate, indicating the feature has been fully rolled out and the gate can be cleaned up.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate launched successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/archive:
put:
operationId: archiveGate
summary: Archive a gate
description: Archives a feature gate, removing it from active use while preserving its configuration for reference.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate archived successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Gate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/rules:
get:
operationId: listGateRules
summary: List gate rules
description: Retrieves all rules configured for a specific feature gate.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: List of gate rules
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Rule'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: addGateRule
summary: Add a gate rule
description: Adds a new targeting rule to a feature gate.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Rule'
responses:
'201':
description: Rule added successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Rule'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateGateRules
summary: Update gate rules
description: Replaces all rules for a feature gate with the provided set of rules.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
rules:
type: array
items:
$ref: '#/components/schemas/Rule'
responses:
'200':
description: Rules updated successfully
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/rules/{ruleID}:
delete:
operationId: deleteGateRule
summary: Delete a gate rule
description: Removes a specific targeting rule from a feature gate.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
- name: ruleID
in: path
required: true
schema:
type: string
description: The identifier of the rule to delete.
responses:
'200':
description: Rule deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/gates/{id}/overrides:
get:
operationId: getGateOverrides
summary: Get gate overrides
description: Retrieves the user and ID overrides configured for a feature gate.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Gate overrides
content:
application/json:
schema:
$ref: '#/components/schemas/Overrides'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
post:
operationId: addGateOverrides
summary: Add gate overrides
description: Adds user or ID overrides to a feature gate for forcing specific evaluation results.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Overrides'
responses:
'200':
description: Overrides added successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Overrides'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateGateOverrides
summary: Update gate overrides
description: Replaces all overrides for a feature gate with the provided set.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Overrides'
responses:
'200':
description: Overrides updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Overrides'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteGateOverrides
summary: Delete gate overrides
description: Removes all user and ID overrides from a feature gate.
tags:
- Gates
parameters:
- $ref: '#/components/parameters/ApiVersion'
- $ref: '#/components/parameters/GateId'
responses:
'200':
description: Overrides deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
GateUpdate:
type: object
description: Request body for partially updating a feature gate.
properties:
description:
type: string
description: Updated description of the gate purpose.
isEnabled:
type: boolean
description: Whether the gate should be enabled.
tags:
type: array
items:
type: string
description: Updated tags for the gate.
targetApps:
type: array
items:
type: string
description: Updated target applications.
Gate:
type: object
description: A feature gate configuration that controls access to features based on targeting rules and conditions.
properties:
id:
type: string
description: The unique identifier of the gate.
name:
type: string
description: The name of the gate.
description:
type: string
description: A human-readable description of the gate purpose.
isEnabled:
type: boolean
description: Whether the gate is currently enabled and evaluating rules.
status:
type: string
enum:
- active
- disabled
- launched
- archived
description: The current lifecycle status of the gate.
rules:
type: array
items:
$ref: '#/components/schemas/Rule'
description: The targeting rules for this gate.
tags:
type: array
items:
type: string
description: Tags associated with the gate for organization.
targetApps:
type: array
items:
type: string
description: Target applications this gate is scoped to.
createdTime:
type: integer
format: int64
description: Timestamp when the gate was created.
lastModifiedTime:
type: integer
format: int64
description: Timestamp when the gate was last modified.
Condition:
type: object
description: A condition within a targeting rule that evaluates user properties against specified criteria.
properties:
type:
type: string
enum:
- user_id
- email
- ip_address
- country
- app_version
- custom_field
- browser_name
- browser_version
- os_name
- os_version
- passes_gate
- fails_gate
- environment
- passes_segment
- fails_segment
- time
- unit_id
description: The type of condition to evaluate.
targetValue:
description: The value or values to compare against.
operator:
type: string
enum:
- any
- none
- str_starts_with_any
- str_ends_with_any
- str_contains_any
- str_contains_none
- str_matches
- gt
- gte
- lt
- lte
- version_gt
- version_gte
- version_lt
- version_lte
- before
- after
- true
description: The comparison operator to use.
Overrides:
type: object
description: User and ID overrides for forcing specific evaluation results.
properties:
userOverrides:
type: array
items:
type: object
properties:
userID:
type: string
description: The user ID to override.
value:
type: boolean
description: The override value for this user.
description: User-specific overrides by user ID.
idOverrides:
type: array
items:
type: object
properties:
ids:
type: array
items:
type: string
description: The IDs to override.
value:
type: boolean
description: The override value for these IDs.
description: ID-based overrides for custom ID types.
Rule:
type: object
description: A targeting rule that defines conditions under which a gate passes or a config returns specific values.
properties:
id:
type: string
description: The unique identifier of the rule.
name:
type: string
description: The name of the rule.
passPercentage:
type: number
minimum: 0
maximum: 100
description: The percentage of users matching conditions who pass the rule.
conditions:
type: array
items:
$ref: '#/components/schemas/Condition'
description: The conditions that must be met for this rule to apply.
returnValue:
type: object
description: The value returned when this rule matches, for dynamic configs.
environments:
type: array
items:
type: string
description: Environments where this rule is active.
Pagination:
type: object
description: Pagination metadata for list responses.
properties:
total:
type: integer
description: Total number of items available.
page:
type: integer
description: Current page number.
limit:
type: integer
description: Number of items per page.
hasMore:
type: boolean
description: Whether more pages are available.
GateCreate:
type: object
description: Request body for creating a new feature gate.
required:
- name
properties:
name:
type: string
description: The name of the gate to create.
description:
type: string
description: A human-readable description of the gate purpose.
isEnabled:
type: boolean
description: Whether the gate should be enabled upon creation.
rules:
type: array
items:
$ref: '#/components/schemas/Rule'
description: Initial targeting rules for the gate.
tags:
type: array
items:
type: string
description: Tags to associate with the gate.
targetApps:
type: array
items:
type: string
description: Target applications to scope this gate to.
responses:
BadRequest:
description: Invalid request parameters
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message describing what was wrong with the request.
Unauthorized:
description: Missing or invalid API key
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message describing the authentication failure.
NotFound:
description: Resource not found
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message indicating the resource was not found.
parameters:
GateId:
name: id
in: path
required: true
schema:
type: string
description: The name or identifier of the feature gate.
Limit:
name: limit
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
description: Maximum number of items to return per page.
ApiVersion:
name: STATSIG-API-VERSION
in: header
required: false
schema:
type: string
default: '20240601'
description: The Console API version. Currently the only version is 20240601.
Page:
name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number for paginated results.
securitySchemes:
clientSdkKey:
type: apiKey
in: header
name: statsig-api-key
description: Client-SDK Key that is safe to embed in mobile apps and front-end web applications. Created in Project Settings > API Keys tab.
externalDocs:
description: Statsig Client SDK Documentation
url: https://docs.statsig.com/client/introduction