Download OpenAPI specification:Download
GrowthBook offers a full REST API for interacting with the application.
Request data can use either JSON or Form data encoding (with proper Content-Type headers). All response bodies are JSON-encoded.
The API base URL for GrowthBook Cloud is https://api.growthbook.io/api. For self-hosted deployments, it is the same as your API_HOST environment variable (defaults to http://localhost:3100/api). The rest of these docs will assume you are using GrowthBook Cloud.
Endpoints are versioned by path prefix:
/v1/... — stable, widely-supported endpoints/v2/... — updated endpoints with improved shapes (e.g. unified per-rule environment scope for feature flags)New integrations should prefer v2 where available.
We support both the HTTP Basic and Bearer authentication schemes for convenience.
You first need to generate a new API Key in GrowthBook. Different keys have different permissions:
Personal Access Tokens under the your user menu.admin or readonly. Only Admins with the manageApiKeys permission can manage Secret Keys on behalf of an organization. These can be created by going to Settings -> API KeysIf using HTTP Basic auth, pass the Secret Key as the username and leave the password blank (when using curl, add : at the end of the secret to indicate an empty password)
curl https://api.growthbook.io/api/v1/features \
-u secret_abc123DEF456:
If using Bearer auth, pass the Secret Key as the token:
curl https://api.growthbook.io/api/v1/features \
-H "Authorization: Bearer secret_abc123DEF456"
The API may return the following error status codes:
The response body will be a JSON object with the following properties:
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/projects' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "projects": [
- {
- "id": "string",
- "name": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string |
| description | string |
| publicId | string URL-safe slug (lowercase letters, numbers, dashes). Auto-generated from name if not provided. |
object Project stats settings that, when set, override the organization settings. |
{- "name": "string",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}{- "project": {
- "id": "string",
- "name": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/projects/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "project": {
- "id": "string",
- "name": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}
}| id required | string The id of the requested resource |
| name | string Project name. |
| description | string Project description. |
| publicId | string URL-safe slug (lowercase letters, numbers, dashes). |
object Project stats settings that, when set, override the organization settings. |
{- "name": "string",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}{- "project": {
- "id": "string",
- "name": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/projects/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "prj__123abc"
}GrowthBook comes with one environment by default (production), but you can add as many as you need. When used with feature flags, you can enable/disable feature flags on a per-environment basis.
curl -X GET 'https://api.growthbook.io/api/v1/environments' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "environments": [
- {
- "id": "string",
- "description": "string",
- "toggleOnList": true,
- "defaultState": true,
- "projects": [
- "string"
], - "parent": "string"
}
]
}| id required | string The ID of the new environment |
| description | string The description of the new environment |
| toggleOnList | boolean Show on feature list page |
| defaultState | boolean Default state for new features |
| projects | Array of strings |
| parent | string An environment that the new environment should inherit feature rules from. Requires an enterprise license |
{- "id": "string",
- "description": "string",
- "toggleOnList": true,
- "defaultState": true,
- "projects": [
- "string"
], - "parent": "string"
}{- "environment": {
- "id": "string",
- "description": "string",
- "toggleOnList": true,
- "defaultState": true,
- "projects": [
- "string"
], - "parent": "string"
}
}| id required | string The id of the requested resource |
| description | string The description of the new environment |
| toggleOnList | boolean Show on feature list page |
| defaultState | boolean Default state for new features |
| projects | Array of strings |
{- "description": "string",
- "toggleOnList": true,
- "defaultState": true,
- "projects": [
- "string"
]
}{- "environment": {
- "id": "string",
- "description": "string",
- "toggleOnList": true,
- "defaultState": true,
- "projects": [
- "string"
], - "parent": "string"
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/environments/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}Control your feature flags programatically.
Rules are returned as a unified top-level array; each rule carries allEnvironments / environments scope fields instead of being bucketed by environment.
Returns features with pagination. Rules are returned as a unified top-level array with per-rule environment scope.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| projectId | string Filter by project id |
| clientKey | string Filter by a SDK connection's client key |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean Default: false If true, return all matching items and ignore limit/offset. Self-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1. |
curl -X GET 'https://api.growthbook.io/api/v2/features' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "features": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}Creates a new feature. Rules are supplied as a top-level rules array; each rule includes allEnvironments / environments scope fields.
| id required | string non-empty A unique key name for the feature. Feature keys can only include letters, numbers, hyphens, and underscores. |
| archived | boolean |
| description | string Description of the feature |
| owner required | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| project | string An associated project ID |
| valueType required | string Enum: "boolean" "string" "number" "json" The data type of the feature payload. Boolean by default. |
| defaultValue required | string Default value when feature is enabled. Type must match |
| tags | Array of strings List of associated tags |
Array of objects or objects or objects or objects Feature rules. Each rule carries its own environment scope via | |
object Per-environment enabled state. V2 rules are specified on the top-level | |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
| jsonSchema | string Use JSON schema to validate the payload of a JSON-type feature value (enterprise only). |
object |
{- "id": "string",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true
}, - "property2": {
- "enabled": true
}
}, - "prerequisites": [
- "string"
], - "jsonSchema": "string",
- "customFields": {
- "property1": "string",
- "property2": "string"
}
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}| id required | string The id of the requested resource |
| withRevisions | string Enum: "all" "drafts" "published" "none" Also return feature revisions (all, draft, or published statuses) |
curl -X GET 'https://api.growthbook.io/api/v2/features/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}, - "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
]
}
}Updates any combination of a feature's metadata, default value, environment state, and rules. Other top-level fields are patch-merged: omit a field to leave it unchanged. The rules field, when supplied, replaces the entire rules array atomically in a single revision (v1 PUT applied per-environment patches; v2 swaps the full flat array). To preserve existing rules during a partial edit, GET the feature first, mutate the returned rules array, and PUT the full array back. Safe-rollout rules round-trip via their safeRolloutId; use POST /v2/features/:id/revisions/:version/rules to create new ones. Returns 403 if approval rules are enabled for an affected environment and the bypass setting is off.
| id required | string The id of the requested resource |
| description | string Description of the feature |
| archived | boolean |
| project | string An associated project ID |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| defaultValue | string |
| tags | Array of strings List of associated tags. Will override tags completely with submitted list |
Array of objects or objects or objects or objects Replaces all feature rules atomically. Behavior differs from v1: v1 PUT applies per-environment patches, v2 PUT swaps the entire | |
object Per-environment enabled state. V2 rules are specified on the top-level | |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
| jsonSchema | string Use JSON schema to validate the payload of a JSON-type feature value (enterprise only). |
object | |
object or null Holdout to assign this feature to. Pass |
{- "description": "string",
- "archived": true,
- "project": "string",
- "owner": "string",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true
}, - "property2": {
- "enabled": true
}
}, - "prerequisites": [
- "string"
], - "jsonSchema": "string",
- "customFields": {
- "property1": "string",
- "property2": "string"
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Permanently deletes a feature and all of its revisions.
Archived features can be deleted freely. Deleting a live (non-archived) feature returns 403 unless the org setting "REST API always bypasses approval requirements" is enabled.
| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v2/features/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "feature-123"
}Enables or disables a feature in one or more environments simultaneously. Accepts a map of environment name → boolean.
| id required | string The id of the requested resource |
| reason | string |
required | object |
{- "reason": "string",
- "environments": {
- "property1": true,
- "property2": true
}
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}| id required | string The id of the requested resource |
| revision required | number |
| comment | string |
{- "revision": 0,
- "comment": "string"
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}| projectId | string Filter by project id |
curl -X GET 'https://api.growthbook.io/api/v2/feature-keys' \ -H 'Authorization: Bearer YOUR_API_KEY'
[- "string"
]| ids required | string Comma-separated list of feature IDs (URL-encoded if needed). Example: |
curl -X GET 'https://api.growthbook.io/api/v2/stale-features' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "features": {
- "property1": {
- "featureId": "string",
- "isStale": true,
- "staleReason": "never-stale",
- "neverStale": true,
- "staleByEnv": {
- "property1": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}, - "property2": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}
}
}, - "property2": {
- "featureId": "string",
- "isStale": true,
- "staleReason": "never-stale",
- "neverStale": true,
- "staleByEnv": {
- "property1": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}, - "property2": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}
}
}
}
}Draft revisions for feature flags, including rules, scheduling, and approval workflows.
Revision rules is a flat array with per-rule scope fields.
Returns a paginated list of feature revisions across all features in the organization. Revision rules is a flat array with per-rule scope.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean Default: false If true, return all matching items and ignore limit/offset. Self-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1. | |
| featureId | string |
| status | string Enum: "draft" "published" "discarded" "approved" "changes-requested" "pending-review" "pending-parent" |
| author | string |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean If true, return only revisions authored by or contributed to by the calling user. |
curl -X GET 'https://api.growthbook.io/api/v2/revisions' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}Returns a paginated list of revisions for this feature, sorted newest-first. Revision rules is a flat array with per-rule scope.
| id required | string The id of the requested resource |
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean Default: false If true, return all matching items and ignore limit/offset. Self-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1. | |
| status | string Enum: "draft" "published" "discarded" "approved" "changes-requested" "pending-review" "pending-parent" |
| author | string |
curl -X GET 'https://api.growthbook.io/api/v2/features/{id}/revisions' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}Creates a new draft revision branched from the current live revision.
| id required | string |
| comment | string |
| title | string |
{- "comment": "string",
- "title": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Returns the most recently updated draft revision for the feature. Returns 404 if there is no active draft.
| id required | string |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean If true, return only the most recent active draft authored by or contributed to by the calling user. |
curl -X GET 'https://api.growthbook.io/api/v2/features/{id}/revisions/latest' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Returns the revision at the specified version for this feature. Revision rules is a flat array with per-rule environment scope.
| id required | string |
| version required | integer |
curl -X GET 'https://api.growthbook.io/api/v2/features/{id}/revisions/{version}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
| comment | string |
| title | string |
| description | string |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| project | string |
| tags | Array of strings |
| neverStale | boolean |
object | |
object |
{- "comment": "string",
- "title": "string",
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "type": "object",
- "fields": [
- {
- "key": "string",
- "type": "integer",
- "required": true,
- "default": "string",
- "description": "string",
- "enum": [
- "string"
], - "min": 0,
- "max": 0
}
]
}, - "date": null,
- "enabled": true
}
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
| defaultValue required | string |
| revisionTitle | string |
| revisionComment | string |
{- "defaultValue": "string",
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
required | Array of objects |
| revisionTitle | string |
| revisionComment | string |
{- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
required | object or null |
| revisionTitle | string |
| revisionComment | string |
{- "holdout": {
- "id": "string",
- "value": "string"
}, - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
| archived required | boolean |
| revisionTitle | string |
| revisionComment | string |
{- "archived": true,
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
| environment required | string |
| enabled required | boolean |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "enabled": true,
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Appends a new rule to the revision's rule list. Supply allEnvironments: true to target all environments, or environments: [...] to scope to specific ones. Use rampSchedule for ramp configuration or schedule for a simple start/end window.
| id required | string |
required | integer or "new" (string) |
required | object or object or object |
object | |
object | |
| revisionTitle | string |
| revisionComment | string |
{- "rule": {
- "description": "string",
- "enabled": true,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "scheduleType": "none",
- "allEnvironments": true,
- "environments": [
- "string"
], - "type": "experiment-ref",
- "experimentId": "string",
- "variations": [
- {
- "variationId": "string",
- "value": "string"
}
]
}, - "rampSchedule": {
- "name": "string",
- "templateId": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "string",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": null
}
}
}, - "schedule": {
- "startDate": "string",
- "endDate": "string"
}, - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Patches fields on an existing rule (identified by ruleId). The rule type cannot be changed. Scope can be updated via allEnvironments / environments patch fields.
| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
required | object |
object | |
object | |
| revisionTitle | string |
| revisionComment | string |
{- "rule": {
- "description": "string",
- "enabled": true,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "scheduleType": "none",
- "type": "force",
- "value": "string",
- "coverage": 1,
- "hashAttribute": "string",
- "seed": "string",
- "experimentId": "string",
- "variations": [
- {
- "variationId": "string",
- "value": "string"
}
], - "controlValue": "string",
- "variationValue": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}, - "rampSchedule": {
- "name": "string",
- "templateId": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "string",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": null
}
}
}, - "schedule": {
- "startDate": "string",
- "endDate": "string"
}, - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Removes the rule from the revision. Any pending ramp actions for this rule are also cleared.
| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| revisionTitle | string |
| revisionComment | string |
{- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Replaces the flat global rule order. ruleIds must contain exactly the set of all existing rule IDs in the revision — no additions, omissions, or duplicates.
| id required | string |
required | integer or "new" (string) |
| ruleIds required | Array of strings |
| revisionTitle | string |
| revisionComment | string |
{- "ruleIds": [
- "string"
], - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| name | string |
| templateId | string |
Array of objects | |
Array of objects | |
string or null | |
object | |
| environment | string Deprecated |
| revisionTitle | string |
| revisionComment | string |
{- "name": "string",
- "templateId": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "string",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": null
}
}, - "environment": "string",
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| revisionTitle | string |
| revisionComment | string |
{- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
| version required | integer |
| comment | string |
{- "comment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
| version required | integer |
| comment | string |
| action | string Enum: "approve" "request-changes" "comment" |
{- "comment": "string",
- "action": "approve"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
| version required | integer |
curl -X GET 'https://api.growthbook.io/api/v2/features/{id}/revisions/{version}/merge-status' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "success": true,
- "conflicts": [
- {
- "name": "string",
- "key": "string",
- "resolved": true,
- "base": "string",
- "live": "string",
- "revision": "string"
}
], - "result": {
- "defaultValue": "string",
- "rules": [
- null
], - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "archived": true,
- "metadata": {
- "releaseType": "string",
- "riskLevel": "string",
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Updates the draft's base revision to match the currently-live revision, applying the draft's changes on top. Supply conflictResolutions to resolve any conflicting fields. Valid keys: defaultValue, rules, prerequisites, archived, holdout, and environmentsEnabled.<env>. Unresolved conflicts respond with 409.
| id required | string |
| version required | integer |
object | |||
| |||
{- "conflictResolutions": {
- "property1": "overwrite",
- "property2": "overwrite"
}
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Immediately publishes a draft revision, making it the live version of the feature.
| id required | string |
| version required | integer |
| comment | string |
{- "comment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
| version required | integer |
{ }{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}| id required | string |
| version required | integer |
| strategy | string Enum: "draft" "publish" |
| comment | string |
| title | string |
{- "strategy": "draft",
- "comment": "string",
- "title": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Control your feature flags programatically.
These are v1 endpoints. New integrations should use the v2 Feature Flags endpoints, which expose a unified per-rule environment scope instead of per-environment rule arrays.
Deprecated. Use GET /v2/features instead.
Returns features with pagination. The skipPagination query parameter is honored only when API_ALLOW_SKIP_PAGINATION is set (self-hosted deployments).
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| projectId | string Filter by project id |
| clientKey | string Filter by a SDK connection's client key |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean Default: false If true, return all matching items and ignore limit/offset. Self-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1. |
curl -X GET 'https://api.growthbook.io/api/v1/features' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "features": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": null,
- "timestamp": null
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": null,
- "savedGroups": [ ]
}
], - "prerequisites": [
- {
- "id": null,
- "condition": null
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": null,
- "timestamp": null
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": null,
- "savedGroups": [ ]
}
], - "prerequisites": [
- {
- "id": null,
- "condition": null
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}Deprecated. Use POST /v2/features instead.
| id required | string non-empty A unique key name for the feature. Feature keys can only include letters, numbers, hyphens, and underscores. |
| archived | boolean |
| description | string Description of the feature |
| owner required | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| project | string An associated project ID |
| valueType required | string Enum: "boolean" "string" "number" "json" The data type of the feature payload. Boolean by default. |
| defaultValue required | string Default value when feature is enabled. Type must match |
| tags | Array of strings List of associated tags |
object A dictionary of environments that are enabled for this feature. Keys supply the names of environments. Environments belong to organization and are not specified will be disabled by default. | |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
| jsonSchema | string Use JSON schema to validate the payload of a JSON-type feature value (enterprise only). |
object |
{- "id": "string",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "jsonSchema": "string",
- "customFields": {
- "property1": "string",
- "property2": "string"
}
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Deprecated. Use GET /v2/features/:id instead.
| id required | string The id of the requested resource |
| withRevisions | string Enum: "all" "drafts" "published" "none" Also return feature revisions (all, draft, or published statuses) |
curl -X GET 'https://api.growthbook.io/api/v1/features/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}, - "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
]
}
}Deprecated. Use POST /v2/features/:id instead.
Updates any combination of a feature's metadata (description, owner, tags, project), default value, environment settings (rules, kill switches, enabled state), prerequisites, holdout assignment, or JSON schema validation. All provided fields are merged into the existing feature and the result is immediately published as a new revision.
Returns 403 if the API key lacks permission or if approval rules are enabled for an affected environment and the org setting "REST API always bypasses approval requirements" is off.
| id required | string The id of the requested resource |
| description | string Description of the feature |
| archived | boolean |
| project | string An associated project ID |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| defaultValue | string |
| tags | Array of strings List of associated tags. Will override tags completely with submitted list |
object | |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
| jsonSchema | string Use JSON schema to validate the payload of a JSON-type feature value (enterprise only). |
object | |
object or null Holdout to assign this feature to. Pass |
{- "description": "string",
- "archived": true,
- "project": "string",
- "owner": "string",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "id": "string",
- "enabled": true,
- "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "jsonSchema": "string",
- "customFields": {
- "property1": "string",
- "property2": "string"
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Deprecated. Use DELETE /v2/features/:id instead.
Permanently deletes a feature and all of its revisions.
Archived features can be deleted freely. Deleting a live (non-archived) feature returns 403 unless the org setting "REST API always bypasses approval requirements" is enabled, or the API key lacks delete permission.
| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/features/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "feature-123"
}Deprecated. Use POST /v2/features/:id/toggle instead.
Enables or disables a feature in one or more environments simultaneously. Accepts a map of environment name → boolean and immediately publishes the change.
Returns 403 if the API key lacks permission or if approval rules are enabled for an affected environment and the org setting "REST API always bypasses approval requirements" is off.
| id required | string The id of the requested resource |
| reason | string |
required | object |
{- "reason": "string",
- "environments": {
- "property1": true,
- "property2": true
}
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Deprecated. Use POST /v2/features/:id/revert instead.
Creates a new revision whose rules and values match a previously-published revision, then immediately publishes it. This leaves a clear audit trail of the revert action in the revision history.
Returns 403 if the API key lacks permission or if approval rules are enabled for an affected environment and the org setting "REST API always bypasses approval requirements" is off.
| id required | string The id of the requested resource |
| revision required | number |
| comment | string |
{- "revision": 0,
- "comment": "string"
}{- "feature": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Deprecated. Use GET /v2/feature-keys instead.
| projectId | string Filter by project id |
curl -X GET 'https://api.growthbook.io/api/v1/feature-keys' \ -H 'Authorization: Bearer YOUR_API_KEY'
[- "string"
]Deprecated. Use GET /v2/stale-features instead.
| ids required | string Comma-separated list of feature IDs (URL-encoded if needed). Example: |
curl -X GET 'https://api.growthbook.io/api/v1/stale-features' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "features": {
- "property1": {
- "featureId": "string",
- "isStale": true,
- "staleReason": "never-stale",
- "neverStale": true,
- "staleByEnv": {
- "property1": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}, - "property2": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}
}
}, - "property2": {
- "featureId": "string",
- "isStale": true,
- "staleReason": "never-stale",
- "neverStale": true,
- "staleByEnv": {
- "property1": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}, - "property2": {
- "isStale": true,
- "reason": "no-rules",
- "evaluatesTo": "string"
}
}
}
}
}Draft revisions for feature flags, including rules, scheduling, and approval workflows.
These are v1 endpoints. New integrations should use the v2 Feature Revisions endpoints.
Deprecated. Use GET /v2/revisions instead.
Returns a paginated list of feature revisions across all features in the organization. Optionally filtered by feature, status, author, and/or the calling user's involvement. Results are sorted newest-first.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean Default: false If true, return all matching items and ignore limit/offset. Self-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1. | |
| featureId | string |
| status | string Enum: "draft" "published" "discarded" "approved" "changes-requested" "pending-review" "pending-parent" |
| author | string |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean If true, return only revisions authored by or contributed to by the calling user. Requires a user-scoped API key. Mutually exclusive with |
curl -X GET 'https://api.growthbook.io/api/v1/revisions' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}Deprecated. Use GET /v2/features/:id/revisions instead.
Returns a paginated list of revisions for this feature, sorted newest-first. Optionally filtered by status and/or author.
| id required | string The id of the requested resource |
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean Default: false If true, return all matching items and ignore limit/offset. Self-hosted only. Has no effect unless API_ALLOW_SKIP_PAGINATION is set to true or 1. | |
| status | string Enum: "draft" "published" "discarded" "approved" "changes-requested" "pending-review" "pending-parent" |
| author | string |
curl -X GET 'https://api.growthbook.io/api/v1/features/abc123/revisions' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}Deprecated. Use POST /v2/features/:id/revisions instead.
Creates a new draft revision branched from the current live revision. A feature can have multiple concurrent drafts; use this to start an isolated line of edits.
| id required | string |
| comment | string |
| title | string |
{- "comment": "string",
- "title": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use GET /v2/features/:id/revisions/latest instead.
Returns the most recently updated draft revision for the feature. Returns 404 if there is no active draft. Pass mine=true to return the most recent draft authored by or contributed to by the calling user (requires a user-scoped API key).
| id required | string |
"true" (string) or "false" (string) or "0" (string) or "1" (string) or boolean If true, return only the most recent active draft authored by or contributed to by the calling user. Requires a user-scoped API key. |
curl -X GET 'https://api.growthbook.io/api/v1/features/{id}/revisions/latest' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use GET /v2/features/:id/revisions/:version instead.
Returns the revision at the specified version for this feature. Use GET /features/{id}/revisions/latest for the most recent active draft.
| id required | string |
| version required | integer |
curl -X GET 'https://api.growthbook.io/api/v1/features/{id}/revisions/{version}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/metadata instead.
Updates draft-level metadata (comment, title) and/or feature-level metadata (owner, project, tags, customFields, jsonSchema, etc.). Merge semantics: omitted fields are left unchanged; any provided field replaces the current value (pass an empty string/array/object to clear). Feature metadata changes are staged on the revision and applied to the feature on publish. Changing project requires publish permission on both the old and new project.
| id required | string |
required | integer or "new" (string) |
| comment | string |
| title | string |
| description | string |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| project | string |
| tags | Array of strings |
| neverStale | boolean |
object | |
object |
{- "comment": "string",
- "title": "string",
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "type": "object",
- "fields": [
- {
- "key": "string",
- "type": "integer",
- "required": true,
- "default": "string",
- "description": "string",
- "enum": [
- "string"
], - "min": 0,
- "max": 0
}
]
}, - "date": null,
- "enabled": true
}
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/default-value instead.
Replaces the feature's default value for this revision. The value must be a string representation matching the feature's value type (e.g. "true" for booleans, 42 for numbers, a JSON string for JSON features).
| id required | string |
required | integer or "new" (string) |
| defaultValue required | string |
| revisionTitle | string |
| revisionComment | string |
{- "defaultValue": "string",
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/prerequisites instead.
Replaces the feature's prerequisite list for this revision. Each prerequisite condition is evaluated against { value: <prereq-flag-value> } at SDK eval time — use value as the condition key.
| id required | string |
required | integer or "new" (string) |
required | Array of objects |
| revisionTitle | string |
| revisionComment | string |
{- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/holdout instead.
Sets (or clears, via holdout: null) the holdout experiment bound to the feature. Holdout linkage side-effects (updating the holdout's linked feature list) are applied on publish.
| id required | string |
required | integer or "new" (string) |
required | object or null |
| revisionTitle | string |
| revisionComment | string |
{- "holdout": {
- "id": "string",
- "value": "string"
}, - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/archive instead.
Sets whether the feature is archived. Archived features are excluded from SDK payloads on publish.
| id required | string |
required | integer or "new" (string) |
| archived required | boolean |
| revisionTitle | string |
| revisionComment | string |
{- "archived": true,
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/toggle instead.
Sets whether the feature is enabled in the given environment as part of the draft. Takes effect on publish.
| id required | string |
required | integer or "new" (string) |
| environment required | string |
| enabled required | boolean |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "enabled": true,
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/rules instead, which accepts rules with unified allEnvironments/environments scope fields instead of a per-environment environment parameter.
Appends a new rule to the end of the rule list for the given environment. A rule.type of force, rollout, experiment-ref, or safe-rollout determines the accepted shape. Use rampSchedule for ramp configuration or schedule for a simple start/end window; if both are provided, rampSchedule wins.
| id required | string |
required | integer or "new" (string) |
| environment required | string |
required | object or object or object |
object | |
object | |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "rule": {
- "description": "string",
- "enabled": true,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "scheduleType": "none",
- "type": "experiment-ref",
- "experimentId": "string",
- "variations": [
- {
- "variationId": "string",
- "value": "string"
}
]
}, - "rampSchedule": {
- "name": "string",
- "templateId": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "string",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": null
}
}
}, - "schedule": {
- "startDate": "string",
- "endDate": "string"
}, - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/rules/:ruleId instead, which locates rules by ruleId in the flat array without an environment parameter.
Patches fields on an existing rule. The rule type cannot be changed — to convert types, delete and re-add. Fields that don't apply to the current rule type are rejected.
| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| environment required | string |
required | object |
object | |
object | |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "rule": {
- "description": "string",
- "enabled": true,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "scheduleType": "none",
- "type": "force",
- "value": "string",
- "coverage": 1,
- "hashAttribute": "string",
- "seed": "string",
- "experimentId": "string",
- "variations": [
- {
- "variationId": "string",
- "value": "string"
}
], - "controlValue": "string",
- "variationValue": "string"
}, - "rampSchedule": {
- "name": "string",
- "templateId": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "string",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": null
}
}
}, - "schedule": {
- "startDate": "string",
- "endDate": "string"
}, - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use DELETE /v2/features/:id/revisions/:version/rules/:ruleId instead, which removes the rule from the flat array without an environment parameter.
Removes the rule from the specified environment. Any pending ramp actions on the draft for this rule are also cleared.
| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| environment required | string |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/rules/reorder instead, which reorders the global flat rule array without an environment parameter.
Replaces the rule order for the environment. ruleIds must contain exactly the set of existing rule IDs in that environment — no additions, omissions, or duplicates.
| id required | string |
required | integer or "new" (string) |
| environment required | string |
| ruleIds required | Array of strings |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "ruleIds": [
- "string"
], - "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use PUT /v2/features/:id/revisions/:version/rules/:ruleId/ramp-schedule instead.
Attaches (or replaces) a ramp schedule for the rule. Rejects if the rule already has a live ramp schedule — update that directly via PUT /ramp-schedules/{id}. The schedule is created at publish time.
| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| name | string |
| templateId | string |
Array of objects | |
Array of objects | |
string or null | |
object | |
| environment | string Deprecated |
| revisionTitle | string |
| revisionComment | string |
{- "name": "string",
- "templateId": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "string",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": null
}
}, - "environment": "string",
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use DELETE /v2/features/:id/revisions/:version/rules/:ruleId/ramp-schedule instead.
Removes a pending ramp schedule attached by the draft. If the rule currently has a live ramp schedule, a detach action is queued and applied at publish time.
| id required | string |
required | integer or "new" (string) |
| ruleId required | string |
| environment | string Deprecated |
| revisionTitle | string |
| revisionComment | string |
{- "environment": "string",
- "revisionTitle": "string",
- "revisionComment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/request-review instead.
Moves the draft into the pending-review state and notifies reviewers.
| id required | string |
| version required | integer |
| comment | string |
{- "comment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/submit-review instead.
Submits an approve, request-changes, or comment review on the draft. Contributors cannot approve their own drafts, but may submit comments or request changes.
| id required | string |
| version required | integer |
| comment | string |
| action | string Enum: "approve" "request-changes" "comment" |
{- "comment": "string",
- "action": "approve"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use GET /v2/features/:id/revisions/:version/merge-status instead.
Runs a dry-run merge of the draft against the current live revision and returns any conflicts. Use this before publishing to preview changes and detect conflicting edits.
| id required | string |
| version required | integer |
curl -X GET 'https://api.growthbook.io/api/v1/features/{id}/revisions/{version}/merge-status' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "success": true,
- "conflicts": [
- {
- "name": "string",
- "key": "string",
- "resolved": true,
- "base": "string",
- "live": "string",
- "revision": "string"
}
], - "result": {
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "allEnvironments": true,
- "environments": [
- "string"
], - "enabled": true,
- "scheduleRules": [
- {
- "timestamp": "string",
- "enabled": true
}
], - "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "scheduleType": "none",
- "type": "force",
- "value": "string"
}
], - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "archived": true,
- "metadata": {
- "releaseType": "string",
- "riskLevel": "string",
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/rebase instead.
Updates the draft's base revision to match the currently-live revision, applying the draft's changes on top. Supply conflictResolutions to resolve any conflicting fields.
Conflict key format changed for v1 clients. Rules now merge as a single flat array, so the per-rule envName.ruleId keys used by older clients are no longer recognized. Valid keys: defaultValue, rules, prerequisites, archived, holdout, and environmentsEnabled.<env>. Unrecognized keys are ignored; unresolved conflicts respond with 409.
| id required | string |
| version required | integer |
object | |||
| |||
{- "conflictResolutions": {
- "property1": "overwrite",
- "property2": "overwrite"
}
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/publish instead.
Immediately publishes a draft revision, making it the live version of the feature. Blocked if the org requires approvals and bypassApprovalChecks is off.
| id required | string |
| version required | integer |
| comment | string |
{- "comment": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/discard instead.
Permanently discards a draft revision. Only drafts (never published revisions) can be discarded. Any pending ramp actions staged on the draft are dropped.
| id required | string |
| version required | integer |
{ }{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Deprecated. Use POST /v2/features/:id/revisions/:version/revert instead.
Creates a new draft (or immediately publishes) whose content matches the specified historical revision.
| id required | string |
| version required | integer |
| strategy | string Enum: "draft" "publish" |
| comment | string |
| title | string |
{- "strategy": "draft",
- "comment": "string",
- "title": "string"
}{- "revision": {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
}Multi-step rollout schedules that gradually ramp feature rule changes over time, with support for interval, approval, and scheduled triggers.
Returns all ramp schedules for the organization, with optional filters.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| featureId | string |
| status | string Enum: "pending" "ready" "running" "paused" "pending-approval" "completed" "rolled-back" Filter by schedule status |
curl -X GET 'https://api.growthbook.io/api/v1/ramp-schedules' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0,
- "rampSchedules": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": null,
- "ids": [ ]
}
], - "prerequisites": [
- {
- "id": null,
- "condition": null
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
]
}Creates a new ramp schedule, optionally attaching it to a published feature rule.
Provide featureId and ruleId together to attach the schedule to a specific
rule on creation. The rule must already be live (published). Each rule can only
be controlled by one schedule at a time.
When both are supplied, targetId and patch.ruleId are auto-injected
into every step action and endAction — callers only need to supply the patch
values (coverage, condition, etc.).
environment is accepted for backward compatibility with pre-v2 ramps but is
deprecated and no longer required. Post-v2 rule.id is uniquely sufficient.
If rule attachment is omitted, the schedule is created as a free-standing
skeleton in pending status. Use POST /ramp-schedules/{id}/actions/add-target
to attach rules later, and POST /ramp-schedules/{id}/actions/start to start it.
Provide templateId to inherit steps and endActions from a saved template.
Explicit steps / endActions in the request body take precedence over the
template. Template auto-population requires featureId and ruleId to be set
(so targetId can be injected).
Requires an Enterprise plan.
| name required | string |
| featureId | string Feature that anchors this schedule. Required when |
| ruleId | string Rule to attach as the initial target. Requires |
| environment | string Deprecated Deprecated. Legacy disambiguator for pre-v2 rules whose |
Array of objects Ordered ramp steps. When | |
Array of objects Actions applied when the ramp completes. | |
string or null When to start. Absent/null = immediately on start action. | |
object Optional hard deadline | |
| templateId | string Load steps and endActions from a saved template (featureId+ruleId must also be set for auto-injection) |
{- "name": "string",
- "featureId": "string",
- "ruleId": "string",
- "environment": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "templateId": "string"
}{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Transitions the schedule from ready to running and processes the first
step immediately if eligible.
| id required | string |
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules/{id}/actions/start' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Pauses a running or pending-approval schedule. The schedule can be
resumed from the same position with the /actions/resume endpoint.
| id required | string |
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules/{id}/actions/pause' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Resumes a paused schedule. Adjusts timing anchors to account for the
pause duration so step intervals continue from where they left off.
| id required | string |
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules/{id}/actions/resume' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Rolls back to the starting position and lands in paused status so the
schedule can be restarted with /actions/start or /actions/resume.
| id required | string |
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules/{id}/actions/rollback' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Moves the schedule directly to targetStepIndex (forward or backward) and
pauses. Use -1 to jump to the pre-start position without rolling back rule
patches.
| id required | string |
| targetStepIndex required | integer >= -1 Zero-based index of the step to jump to; -1 = pre-start |
{- "targetStepIndex": -1
}{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Applies end actions and marks the schedule as completed, regardless of
how many steps remain.
| id required | string |
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules/{id}/actions/complete' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Approves the current step on a schedule in pending-approval status and
advances to the next step. Requires the caller to have feature review
permissions for the associated feature.
| id required | string |
curl -X POST 'https://api.growthbook.io/api/v1/ramp-schedules/{id}/actions/approve-step' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Attaches an additional feature rule to this ramp schedule. The ruleId
must identify a rule that is already published and must not already be
controlled by another schedule. environment is accepted for backward
compatibility with pre-v2 ramps but is deprecated and no longer required.
| id required | string |
| featureId required | string |
| ruleId required | string |
| environment | string Deprecated Deprecated pre-v2 disambiguator; ignored on v2 rules where |
{- "featureId": "string",
- "ruleId": "string",
- "environment": "string"
}{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Detaches a target rule from this ramp schedule. Identify the target either
by its targetId or by the [ruleId, environment] pair.
If this is the last target on the schedule, the schedule is deleted entirely
and the response contains deleted: true instead of rampSchedule.
| id required | string |
| targetId | string Target ID (from the targets array) |
| ruleId | string Rule ID — use as an alternative to targetId |
| environment | string Deprecated Deprecated pre-v2 disambiguator. Optional when used with ruleId; omit on v2 ramps. |
{- "targetId": "string",
- "ruleId": "string",
- "environment": "string"
}{- "deleted": true,
- "rampScheduleId": "string"
}| id required | string |
curl -X GET 'https://api.growthbook.io/api/v1/ramp-schedules/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}Permanently deletes a ramp schedule. This does not undo any rule patches that were already applied by completed steps.
| id required | string |
curl -X DELETE 'https://api.growthbook.io/api/v1/ramp-schedules/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}Updates the name, steps, endActions, startDate, or endCondition of a ramp schedule.
Only allowed when the schedule is in pending, ready, or paused status.
targetId shorthand: When providing steps or endActions, you may omit targetId
(or pass "t1") in each action. If the schedule has exactly one active target, the server
will resolve it automatically. For schedules with multiple targets, provide the explicit
target UUID from targets[].id.
| id required | string |
| name | string |
Array of objects | |
Array of objects | |
string or null | |
object or null |
{- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}, - "targetType": "feature-rule",
- "targetId": "string"
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}, - "targetType": "feature-rule",
- "targetId": "string"
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}
}{- "rampSchedule": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}
}How GrowthBook connects and queries your data, including cached database schema metadata (information schemas) for tables and columns.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| projectId | string Filter by project id |
curl -X GET 'https://api.growthbook.io/api/v1/data-sources' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dataSources": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "type": "string",
- "name": "string",
- "description": "string",
- "projectIds": [
- "string"
], - "eventTracker": "string",
- "identifierTypes": [
- {
- "id": "string",
- "description": "string"
}
], - "assignmentQueries": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "identifierType": "string",
- "sql": "string",
- "includesNameColumns": true,
- "dimensionColumns": [
- "string"
]
}
], - "identifierJoinQueries": [
- {
- "identifierTypes": [
- "string"
], - "sql": "string"
}
], - "mixpanelSettings": {
- "viewedExperimentEventName": "string",
- "experimentIdProperty": "string",
- "variationIdProperty": "string",
- "extraUserIdProperty": "string"
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/data-sources/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dataSource": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "type": "string",
- "name": "string",
- "description": "string",
- "projectIds": [
- "string"
], - "eventTracker": "string",
- "identifierTypes": [
- {
- "id": "string",
- "description": "string"
}
], - "assignmentQueries": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "identifierType": "string",
- "sql": "string",
- "includesNameColumns": true,
- "dimensionColumns": [
- "string"
]
}
], - "identifierJoinQueries": [
- {
- "identifierTypes": [
- "string"
], - "sql": "string"
}
], - "mixpanelSettings": {
- "viewedExperimentEventName": "string",
- "experimentIdProperty": "string",
- "variationIdProperty": "string",
- "extraUserIdProperty": "string"
}
}
}Returns cached database schema metadata for a data source, including databases, schemas, and tables. The information schema is automatically created when a SQL-based data source is added. Not all data source types support information schemas.
| dataSourceId required | string The id of the data source |
curl -X GET 'https://api.growthbook.io/api/v1/data-sources/{dataSourceId}/information-schema' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "informationSchema": {
- "id": "string",
- "datasourceId": "string",
- "status": "PENDING",
- "error": {
- "errorType": "generic",
- "message": "string"
}, - "databases": [
- {
- "databaseName": "string",
- "path": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "schemas": [
- {
- "schemaName": "string",
- "path": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "tables": [
- {
- "tableName": "string",
- "path": "string",
- "id": "string",
- "numOfColumns": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
]
}
]
}
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}Returns cached metadata for a specific table in the Data Source, including columns and their data types. Not all data source types support information schemas.
| tableId required | string The id of the information schema table |
curl -X GET 'https://api.growthbook.io/api/v1/information-schema-tables/{tableId}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "informationSchemaTable": {
- "id": "string",
- "datasourceId": "string",
- "informationSchemaId": "string",
- "tableName": "string",
- "tableSchema": "string",
- "databaseName": "string",
- "columns": [
- {
- "columnName": "string",
- "dataType": "string"
}
], - "refreshMS": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| datasourceId | string Filter by Data Source |
| projectId | string Filter by project id |
curl -X GET 'https://api.growthbook.io/api/v1/fact-tables' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "factTables": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "columns": [
- {
- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "columnsError": "string",
- "archived": true,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string |
| description | string Description of the fact table |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| projects | Array of strings List of associated project ids |
| tags | Array of strings List of associated tags |
| datasource required | string The datasource id |
| userIdTypes required | Array of strings List of identifier columns in this table. For example, "id" or "anonymous_id" |
| sql required | string The SQL query for this fact table |
| eventName | string The event name used in SQL template variables |
| managedBy | string Enum: "" "api" "admin" Set this to "api" to disable editing in the GrowthBook UI |
{- "name": "string",
- "description": "string",
- "owner": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "managedBy": ""
}{- "factTable": {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "columns": [
- {
- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "columnsError": "string",
- "archived": true,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/fact-tables/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "factTable": {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "columns": [
- {
- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "columnsError": "string",
- "archived": true,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| id required | string The id of the requested resource |
| name | string |
| description | string Description of the fact table |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| projects | Array of strings List of associated project ids |
| tags | Array of strings List of associated tags |
| userIdTypes | Array of strings List of identifier columns in this table. For example, "id" or "anonymous_id" |
| sql | string The SQL query for this fact table |
| eventName | string The event name used in SQL template variables |
Array of objects (FactTableColumn) Optional array of columns that you want to update. Only allows updating properties of existing columns. Cannot create new columns or delete existing ones. Columns cannot be added or deleted; column structure is determined by SQL parsing. Slice-related properties require an enterprise license. | |
string or null Error message if there was an issue parsing the SQL schema | |
| managedBy | string Enum: "" "api" "admin" Set this to "api" to disable editing in the GrowthBook UI |
| archived | boolean |
{- "name": "string",
- "description": "string",
- "owner": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "columns": [
- {
- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
]
}
], - "columnsError": "string",
- "managedBy": "",
- "archived": true
}{- "factTable": {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "columns": [
- {
- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "columnsError": "string",
- "archived": true,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/fact-tables/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "ftb_123abc"
}| factTableId required | string Specify a specific fact table |
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/fact-tables/abc123/filters' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "factTableFilters": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "value": "string",
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| factTableId required | string Specify a specific fact table |
| name required | string |
| description | string Description of the fact table filter |
| value required | string The SQL expression for this filter. |
| managedBy | string Enum: "" "api" Set this to "api" to disable editing in the GrowthBook UI. Before you do this, the Fact Table itself must also be marked as "api" |
{- "name": "string",
- "description": "string",
- "value": "country = 'US'",
- "managedBy": ""
}{- "factTableFilter": {
- "id": "string",
- "name": "string",
- "description": "string",
- "value": "string",
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| factTableId required | string Specify a specific fact table |
| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/fact-tables/abc123/filters/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "factTableFilter": {
- "id": "string",
- "name": "string",
- "description": "string",
- "value": "string",
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| factTableId required | string Specify a specific fact table |
| id required | string The id of the requested resource |
| name | string |
| description | string Description of the fact table filter |
| value | string The SQL expression for this filter. |
| managedBy | string Enum: "" "api" Set this to "api" to disable editing in the GrowthBook UI. Before you do this, the Fact Table itself must also be marked as "api" |
{- "name": "string",
- "description": "string",
- "value": "country = 'US'",
- "managedBy": ""
}{- "factTableFilter": {
- "id": "string",
- "name": "string",
- "description": "string",
- "value": "string",
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
}| factTableId required | string Specify a specific fact table |
| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/fact-tables/abc123/filters/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "flt_123abc"
}Array of objects | |
Array of objects | |
Array of objects |
{- "factTables": [
- {
- "id": "string",
- "data": {
- "name": "string",
- "description": "string",
- "owner": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "managedBy": ""
}
}
], - "factTableFilters": [
- {
- "factTableId": "string",
- "id": "string",
- "data": {
- "name": "string",
- "description": "string",
- "value": "country = 'US'",
- "managedBy": ""
}
}
], - "factMetrics": [
- {
- "id": "string",
- "data": {
- "name": "string",
- "description": "string",
- "owner": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayHours": 0,
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}
}
]
}{- "success": true,
- "factTablesAdded": 0,
- "factTablesUpdated": 0,
- "factTableFiltersAdded": 0,
- "factTableFiltersUpdated": 0,
- "factMetricsAdded": 0,
- "factMetricsUpdated": 0
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| datasourceId | string Filter by Data Source |
| projectId | string Filter by project id |
| factTableId | string Filter by Fact Table Id (for ratio metrics, we only look at the numerator) |
curl -X GET 'https://api.growthbook.io/api/v1/fact-metrics' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "factMetrics": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string |
| description | string |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| projects | Array of strings |
| tags | Array of strings |
| metricType required | string Enum: "proportion" "retention" "mean" "quantile" "ratio" "dailyParticipation" |
required | object |
object Only when metricType is 'ratio' | |
| inverse | boolean Set to true for things like Bounce Rate, where you want the metric to decrease |
object Controls the settings for quantile metrics (mandatory if metricType is "quantile") | |
object Controls how outliers are handled | |
object Controls the conversion window for the metric | |
object Controls the bayesian prior for the metric. If omitted, organization defaults will be used. | |
object Controls the regression adjustment (CUPED) settings for the metric | |
| riskThresholdSuccess | number >= 0 Deprecated No longer used. Threshold for Risk to be considered low enough, as a proportion (e.g. put 0.0025 for 0.25%). |
| riskThresholdDanger | number >= 0 Deprecated No longer used. Threshold for Risk to be considered too high, as a proportion (e.g. put 0.0125 for 1.25%). |
| displayAsPercentage | boolean If true and the metric is a ratio or dailyParticipation metric, variation means will be displayed as a percentage. Defaults to true for dailyParticipation metrics and false for ratio metrics. |
| minPercentChange | number >= 0 Minimum percent change to consider uplift significant, as a proportion (e.g. put 0.005 for 0.5%) |
| maxPercentChange | number >= 0 Maximum percent change to consider uplift significant, as a proportion (e.g. put 0.5 for 50%) |
| minSampleSize | number >= 0 |
| targetMDE | number >= 0 The percentage change that you want to reliably detect before ending an experiment, as a proportion (e.g. put 0.1 for 10%). This is used to estimate the "Days Left" for running experiments. |
| managedBy | string Enum: "" "api" "admin" Set this to "api" to disable editing in the GrowthBook UI |
| metricAutoSlices | Array of strings Array of slice column names that will be automatically included in metric analysis. This is an enterprise feature. |
{- "name": "string",
- "description": "string",
- "owner": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayHours": 0,
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "metricAutoSlices": [
- "string"
]
}{- "factMetric": {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/fact-metrics/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "factMetric": {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}
}| id required | string The id of the requested resource |
| name | string |
| description | string |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| projects | Array of strings |
| tags | Array of strings |
| metricType | string Enum: "proportion" "retention" "mean" "quantile" "ratio" "dailyParticipation" |
object | |
object Only when metricType is 'ratio' | |
| inverse | boolean Set to true for things like Bounce Rate, where you want the metric to decrease |
object Controls the settings for quantile metrics (mandatory if metricType is "quantile") | |
object Controls how outliers are handled | |
object Controls the conversion window for the metric | |
object Controls the bayesian prior for the metric. If omitted, organization defaults will be used. | |
object Controls the regression adjustment (CUPED) settings for the metric | |
| riskThresholdSuccess | number >= 0 Deprecated No longer used. Threshold for Risk to be considered low enough, as a proportion (e.g. put 0.0025 for 0.25%). |
| riskThresholdDanger | number >= 0 Deprecated No longer used. Threshold for Risk to be considered too high, as a proportion (e.g. put 0.0125 for 1.25%). |
| displayAsPercentage | boolean If true and the metric is a ratio or dailyParticipation metric, variation means will be displayed as a percentage. Defaults to true for dailyParticipation metrics and false for ratio metrics. |
| minPercentChange | number >= 0 Minimum percent change to consider uplift significant, as a proportion (e.g. put 0.005 for 0.5%) |
| maxPercentChange | number >= 0 Maximum percent change to consider uplift significant, as a proportion (e.g. put 0.5 for 50%) |
| minSampleSize | number >= 0 |
| targetMDE | number >= 0 |
| managedBy | string Enum: "" "api" "admin" Set this to "api" to disable editing in the GrowthBook UI |
| archived | boolean |
| metricAutoSlices | Array of strings Array of slice column names that will be automatically included in metric analysis. This is an enterprise feature. |
{- "name": "string",
- "description": "string",
- "owner": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayHours": 0,
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}{- "factMetric": {
- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/fact-metrics/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "fact__123abc"
}| id required | string The fact metric id to analyze |
| userIdType | string The identifier type to use for the analysis. If not provided, defaults to the first available identifier type in the fact table. |
| lookbackDays | number [ 1 .. 999999 ] Number of days to look back for the analysis. Defaults to 30. |
| populationType | string Enum: "factTable" "segment" The type of population to analyze. Defaults to 'factTable', meaning the analysis will return the metric value for all units found in the fact table. |
string or null The ID of the population (e.g., segment ID) when populationType is not 'factTable'. Defaults to null. | |
| additionalNumeratorFilters | Array of strings We support passing in adhoc filters for an analysis that don't live on the metric itself. These are in addition to the metric's filters. To use this, you can pass in an array of Fact Table Filter Ids. |
| additionalDenominatorFilters | Array of strings We support passing in adhoc filters for an analysis that don't live on the metric itself. These are in addition to the metric's filters. To use this, you can pass in an array of Fact Table Filter Ids. |
| useCache | boolean Whether to use a cached query if one exists. Defaults to true. |
{- "userIdType": "string",
- "lookbackDays": 1,
- "populationType": "factTable",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "useCache": true
}{- "metricAnalysis": {
- "id": "string",
- "status": "string",
- "settings": {
- "property1": null,
- "property2": null
}
}
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| projectId | string Filter by project id |
| datasourceId | string Filter by Data Source |
curl -X GET 'https://api.growthbook.io/api/v1/metrics' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "metrics": [
- {
- "id": "string",
- "managedBy": "",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "name": "string",
- "description": "string",
- "type": "binomial",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "archived": true,
- "behavior": {
- "goal": "increase",
- "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "cap": 0,
- "capping": "absolute",
- "capValue": 0,
- "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "conversionWindowStart": 0,
- "conversionWindowEnd": 0,
- "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0
}, - "sql": {
- "identifierTypes": [
- "string"
], - "conversionSQL": "string",
- "userAggregationSQL": "string",
- "denominatorMetricId": "string"
}, - "sqlBuilder": {
- "identifierTypeColumns": [
- {
- "identifierType": "string",
- "columnName": "string"
}
], - "tableName": "string",
- "valueColumnName": "string",
- "timestampColumnName": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "string",
- "value": "string"
}
]
}, - "mixpanel": {
- "eventName": "string",
- "eventValue": "string",
- "userAggregation": "string",
- "conditions": [
- {
- "property": "string",
- "operator": "string",
- "value": "string"
}
]
}
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| datasourceId required | string ID for the DataSource |
| managedBy | string Enum: "" "api" Where this metric must be managed from. If not set (empty string), it can be managed from anywhere. If set to "api", it can be managed via the API only. |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| name required | string Name of the metric |
| description | string Description of the metric |
| type required | |
| tags | Array of strings List of tags |
| projects | Array of strings List of project IDs for projects that can access this metric |
| archived | boolean |
object | |
object Preferred way to define SQL. Only one of | |
object An alternative way to specify a SQL metric, rather than a full query. Using | |
object Only use for MixPanel (non-SQL) Data Sources. Only one of |
{- "datasourceId": "string",
- "managedBy": "",
- "owner": "string",
- "name": "string",
- "description": "string",
- "type": "binomial",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "archived": true,
- "behavior": {
- "goal": "increase",
- "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "cap": 0,
- "capping": "absolute",
- "capValue": 0,
- "windowSettings": {
- "type": "none",
- "delayHours": 0,
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "conversionWindowStart": 0,
- "conversionWindowEnd": 0,
- "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0
}, - "sql": {
- "identifierTypes": [
- "string"
], - "conversionSQL": "string",
- "userAggregationSQL": "string",
- "denominatorMetricId": "string"
}, - "sqlBuilder": {
- "identifierTypeColumns": [
- {
- "identifierType": "string",
- "columnName": "string"
}
], - "tableName": "string",
- "valueColumnName": "string",
- "timestampColumnName": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "string",
- "value": "string"
}
]
}, - "mixpanel": {
- "eventName": "string",
- "eventValue": "string",
- "userAggregation": "string",
- "conditions": [
- {
- "property": "string",
- "operator": "string",
- "value": "string"
}
]
}
}{- "metric": {
- "id": "string",
- "managedBy": "",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "name": "string",
- "description": "string",
- "type": "binomial",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "archived": true,
- "behavior": {
- "goal": "increase",
- "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "cap": 0,
- "capping": "absolute",
- "capValue": 0,
- "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "conversionWindowStart": 0,
- "conversionWindowEnd": 0,
- "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0
}, - "sql": {
- "identifierTypes": [
- "string"
], - "conversionSQL": "string",
- "userAggregationSQL": "string",
- "denominatorMetricId": "string"
}, - "sqlBuilder": {
- "identifierTypeColumns": [
- {
- "identifierType": "string",
- "columnName": "string"
}
], - "tableName": "string",
- "valueColumnName": "string",
- "timestampColumnName": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "string",
- "value": "string"
}
]
}, - "mixpanel": {
- "eventName": "string",
- "eventValue": "string",
- "userAggregation": "string",
- "conditions": [
- {
- "property": "string",
- "operator": "string",
- "value": "string"
}
]
}
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/metrics/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "metric": {
- "id": "string",
- "managedBy": "",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "name": "string",
- "description": "string",
- "type": "binomial",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "archived": true,
- "behavior": {
- "goal": "increase",
- "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "cap": 0,
- "capping": "absolute",
- "capValue": 0,
- "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "conversionWindowStart": 0,
- "conversionWindowEnd": 0,
- "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0
}, - "sql": {
- "identifierTypes": [
- "string"
], - "conversionSQL": "string",
- "userAggregationSQL": "string",
- "denominatorMetricId": "string"
}, - "sqlBuilder": {
- "identifierTypeColumns": [
- {
- "identifierType": "string",
- "columnName": "string"
}
], - "tableName": "string",
- "valueColumnName": "string",
- "timestampColumnName": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "string",
- "value": "string"
}
]
}, - "mixpanel": {
- "eventName": "string",
- "eventValue": "string",
- "userAggregation": "string",
- "conditions": [
- {
- "property": "string",
- "operator": "string",
- "value": "string"
}
]
}
}
}| id required | string The id of the requested resource |
| managedBy | string Enum: "" "api" "admin" Where this metric must be managed from. If not set (empty string), it can be managed from anywhere. If set to "api", it can be managed via the API only. Please note that we have deprecated support for setting the managedBy property to "admin". Your existing Legacy Metrics with this value will continue to work, but we suggest migrating to Fact Metrics instead. |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| name | string Name of the metric |
| description | string Description of the metric |
| type | |
| tags | Array of strings List of tags |
| projects | Array of strings List of project IDs for projects that can access this metric |
| archived | boolean |
object | |
object Preferred way to define SQL. Only one of | |
object An alternative way to specify a SQL metric, rather than a full query. Using | |
object Only use for MixPanel (non-SQL) Data Sources. Only one of |
{- "managedBy": "",
- "owner": "string",
- "name": "string",
- "description": "string",
- "type": "binomial",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "archived": true,
- "behavior": {
- "goal": "increase",
- "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "cap": 0,
- "capping": "absolute",
- "capValue": 0,
- "windowSettings": {
- "type": "none",
- "delayHours": 0,
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "conversionWindowStart": 0,
- "conversionWindowEnd": 0,
- "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0
}, - "sql": {
- "identifierTypes": [
- "string"
], - "conversionSQL": "string",
- "userAggregationSQL": "string",
- "denominatorMetricId": "string"
}, - "sqlBuilder": {
- "identifierTypeColumns": [
- {
- "identifierType": "string",
- "columnName": "string"
}
], - "tableName": "string",
- "valueColumnName": "string",
- "timestampColumnName": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "string",
- "value": "string"
}
]
}, - "mixpanel": {
- "eventName": "string",
- "eventValue": "string",
- "userAggregation": "string",
- "conditions": [
- {
- "property": "string",
- "operator": "string",
- "value": "string"
}
]
}
}{- "updatedId": "string"
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/metrics/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| projectId | string Filter by project id |
| datasourceId | string Filter by Data Source |
| trackingKey | string Filter by experiment tracking key |
| experimentId | string Deprecated Filter the returned list by the experiment tracking key (not the internal experiment ID). Note, this was deprecated to help reduce confusion, consider using |
| status | string Enum: "draft" "running" "stopped" |
curl -X GET 'https://api.growthbook.io/api/v1/experiments' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "experiments": [
- {
- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string"
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| datasourceId | string ID for the DataSource. Can only be set if a templateId is not provided. |
| assignmentQueryId | string The ID property of one of the assignment query objects associated with the datasource. Can only be set if a templateId is not provided. |
| trackingKey required | string |
| bypassDuplicateKeyCheck | boolean If true, allow creating an experiment even if another experiment with the same tracking key already exists. This is ignored if the organization requires unique tracking keys as a rule. |
| name required | string Name of the experiment |
| type | string Enum: "standard" "multi-armed-bandit" |
| project | string Project ID which the experiment belongs to |
| templateId | string ID of the ExperimentTemplate this experiment was created from. Template fields are applied by default and overridden by explicitly provided payload fields. |
| hypothesis | string Hypothesis of the experiment |
| description | string Description of the experiment |
| tags | Array of strings |
| metrics | Array of strings |
| secondaryMetrics | Array of strings |
| guardrailMetrics | Array of strings |
| activationMetric | string Users must convert on this metric before being included |
| segmentId | string Only users in this segment will be included |
| queryFilter | string WHERE clause to add to the default experiment query |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| archived | boolean |
| status | string Enum: "draft" "running" "stopped" |
| autoRefresh | boolean |
| hashAttribute | string |
| fallbackAttribute | string |
1 (number) or 2 (number) | |
| disableStickyBucketing | boolean |
| bucketVersion | number |
| minBucketVersion | number |
| releasedVariationId | string |
| excludeFromPayload | boolean |
| inProgressConversions | string Enum: "loose" "strict" |
| attributionModel | string Enum: "firstExposure" "experimentDuration" "lookbackOverride" Setting attribution model to |
object Controls the lookback override for the experiment. For type "window", value must be a non-negative number and valueUnit is required. | |
| statsEngine | string Enum: "bayesian" "frequentist" |
required | Array of objects >= 2 items |
Array of objects | |
| regressionAdjustmentEnabled | boolean Controls whether regression adjustment (CUPED) is enabled for experiment analyses |
| sequentialTestingEnabled | boolean Only applicable to frequentist analyses |
| sequentialTestingTuningParameter | number |
| shareLevel | string Enum: "public" "organization" |
| banditScheduleValue | number |
| banditScheduleUnit | string Enum: "days" "hours" |
| banditBurnInValue | number |
| banditBurnInUnit | string Enum: "days" "hours" |
| banditConversionWindowValue | number |
| banditConversionWindowUnit | string Enum: "days" "hours" |
boolean or null When null, the organization default is used. | |
object Controls the decision framework and metric overrides for the experiment. Replaces the entire stored object on update (does not patch individual fields). | |
Array of objects Per-metric analysis overrides for this experiment. Replaces the entire stored array (does not patch individual entries). | |
| defaultDashboardId | string ID of the default dashboard for this experiment. |
object | |
Array of objects Custom slices that apply to ALL applicable metrics in the experiment |
{- "datasourceId": "string",
- "assignmentQueryId": "string",
- "trackingKey": "string",
- "bypassDuplicateKeyCheck": true,
- "name": "string",
- "type": "standard",
- "project": "string",
- "templateId": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "metrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "owner": "string",
- "archived": true,
- "status": "draft",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "releasedVariationId": "string",
- "excludeFromPayload": true,
- "inProgressConversions": "loose",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "variations": [
- {
- "id": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "description": "string"
}
]
}, - {
- "id": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "description": "string"
}
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "2019-08-24T14:15:22Z",
- "dateEnded": "2019-08-24T14:15:22Z",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "reason": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "variationWeights": [
- 0
]
}
], - "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "shareLevel": "public",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "defaultDashboardId": "string",
- "customFields": {
- "property1": "string",
- "property2": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}{- "experiment": {
- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string"
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/experiments/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "experiment": {
- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string",
- "enhancedStatus": {
- "status": "Running",
- "detailedStatus": "string"
}
}
}| id required | string The id of the requested resource |
| datasourceId | string Can only be set if existing experiment does not have a datasource |
| assignmentQueryId | string |
| trackingKey | string |
| bypassDuplicateKeyCheck | boolean If true, allow updating the tracking key even if another experiment with the same tracking key already exist. This is ignored if the organization requires unique tracking keys as a rule. |
| name | string Name of the experiment |
| type | string Enum: "standard" "multi-armed-bandit" |
| project | string Project ID which the experiment belongs to |
| hypothesis | string Hypothesis of the experiment |
| description | string Description of the experiment |
| tags | Array of strings |
| metrics | Array of strings |
| secondaryMetrics | Array of strings |
| guardrailMetrics | Array of strings |
| activationMetric | string Users must convert on this metric before being included |
| segmentId | string Only users in this segment will be included |
| queryFilter | string WHERE clause to add to the default experiment query |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| archived | boolean |
| status | string Enum: "draft" "running" "stopped" |
| autoRefresh | boolean |
| hashAttribute | string |
| fallbackAttribute | string |
1 (number) or 2 (number) | |
| disableStickyBucketing | boolean |
| bucketVersion | number |
| minBucketVersion | number |
| results | string Enum: "dnf" "won" "lost" "inconclusive" The result status of the experiment. Maps to resultSummary.status in the GET response. |
| winner | number The index of the winning variation (0-indexed). Maps to resultSummary.winner (variation ID) in the GET response. |
| analysis | string Analysis summary or conclusions for the experiment. Maps to resultSummary.conclusions in the GET response. |
| releasedVariationId | string The ID of the released variation. Maps to resultSummary.releasedVariationId in the GET response. |
| excludeFromPayload | boolean If true, the experiment is excluded from the SDK payload. Maps to resultSummary.excludeFromPayload in the GET response. |
| inProgressConversions | string Enum: "loose" "strict" |
| attributionModel | string Enum: "firstExposure" "experimentDuration" "lookbackOverride" Setting attribution model to |
object Controls the lookback override for the experiment. For type "window", value must be a non-negative number and valueUnit is required. | |
| statsEngine | string Enum: "bayesian" "frequentist" |
Array of objects >= 2 items | |
Array of objects | |
| regressionAdjustmentEnabled | boolean Controls whether regression adjustment (CUPED) is enabled for experiment analyses |
| sequentialTestingEnabled | boolean Only applicable to frequentist analyses |
| sequentialTestingTuningParameter | number |
| shareLevel | string Enum: "public" "organization" |
| banditScheduleValue | number |
| banditScheduleUnit | string Enum: "days" "hours" |
| banditBurnInValue | number |
| banditBurnInUnit | string Enum: "days" "hours" |
| banditConversionWindowValue | number |
| banditConversionWindowUnit | string Enum: "days" "hours" |
boolean or null When null, the organization default is used. | |
object Controls the decision framework and metric overrides for the experiment. Replaces the entire stored object on update (does not patch individual fields). | |
Array of objects Per-metric analysis overrides for this experiment. Replaces the entire stored array (does not patch individual entries). | |
| defaultDashboardId | string ID of the default dashboard for this experiment. |
object | |
Array of objects Custom slices that apply to ALL applicable metrics in the experiment |
{- "datasourceId": "string",
- "assignmentQueryId": "string",
- "trackingKey": "string",
- "bypassDuplicateKeyCheck": true,
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "metrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "owner": "string",
- "archived": true,
- "status": "draft",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "results": "dnf",
- "winner": 0,
- "analysis": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true,
- "inProgressConversions": "loose",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "variations": [
- {
- "id": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "description": "string"
}
]
}, - {
- "id": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- {
- "path": "string",
- "width": 0,
- "height": 0,
- "description": "string"
}
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "2019-08-24T14:15:22Z",
- "dateEnded": "2019-08-24T14:15:22Z",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "range": [
- 0,
- 0
], - "enabled": true
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "reason": "string",
- "condition": "string",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "variationWeights": [
- 0
]
}
], - "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "shareLevel": "public",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "defaultDashboardId": "string",
- "customFields": {
- "property1": "string",
- "property2": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}{- "experiment": {
- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string"
}
}| id required | string The id of the requested resource |
| phase | string |
| dimension | string |
curl -X GET 'https://api.growthbook.io/api/v1/experiments/{id}/results' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "result": {
- "id": "string",
- "dateUpdated": "string",
- "experimentId": "string",
- "phase": "string",
- "dateStart": "string",
- "dateEnd": "string",
- "dimension": {
- "type": "string",
- "id": "string"
}, - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "queryIds": [
- "string"
], - "results": [
- {
- "dimension": "string",
- "totalUsers": 0,
- "checks": {
- "srm": 0
}, - "metrics": [
- {
- "metricId": "string",
- "variations": [
- {
- "variationId": "string",
- "users": 0,
- "analyses": [
- {
- "engine": null,
- "numerator": null,
- "denominator": null,
- "mean": null,
- "stddev": null,
- "percentChange": null,
- "ciLow": null,
- "ciHigh": null,
- "pValue": null,
- "risk": null,
- "chanceToBeatControl": null
}
]
}
]
}
]
}
]
}
}| id required | string The experiment id of the experiment to update |
| triggeredBy | string Enum: "manual" "schedule" Set to "schedule" if you want this request to trigger notifications and other events as it if were a scheduled update. Defaults to manual. |
{- "triggeredBy": "manual"
}{- "snapshot": {
- "id": "string",
- "experiment": "string",
- "status": "string"
}
}| id required | string |
| variationId required | string |
| screenshot required | string <base64> Base64-encoded screenshot data |
| contentType required | string Enum: "image/png" "image/jpeg" "image/gif" MIME type of the screenshot |
| description | string Optional description for the screenshot |
{- "screenshot": "string",
- "contentType": "image/png",
- "description": "string"
}{- "screenshot": {
- "path": "string",
- "description": "string"
}
}| id required | string |
| variationId required | string |
| path required | string The screenshot path/URL to delete (from upload response) |
{- "path": "string"
}{ }| projectId | string Filter by project id |
curl -X GET 'https://api.growthbook.io/api/v1/experiment-names' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "experiments": [
- {
- "id": "string",
- "name": "string"
}
]
}Namespaces partition your user population into buckets so that experiments using the same hash attribute do not overlap unintentionally. Each namespace defines a 0–1 range and individual experiments claim sub-ranges within it.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/namespaces' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "namespaces": [
- {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string",
- "seed": "string"
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| displayName required | string Human-readable display name. Must be unique within the organization. |
| description | string |
| status | string Enum: "active" "inactive" |
| format | string Enum: "legacy" "multiRange" Namespace format. Defaults to 'multiRange', which supports multiple ranges per experiment and a configurable hash attribute. |
| hashAttribute | string Required when format is 'multiRange'. The user attribute (e.g. 'id', 'device_id') used to assign users to namespace buckets. |
{- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string"
}{- "namespace": {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string",
- "seed": "string"
}
}| id required | string The unique id of the namespace |
curl -X GET 'https://api.growthbook.io/api/v1/namespaces/ns-abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "namespace": {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string",
- "seed": "string"
}
}| id required | string The unique id of the namespace |
| displayName | string Human-readable display name. |
| description | string Namespace description. |
| status | string Enum: "active" "inactive" Set to 'inactive' to disable the namespace. |
| hashAttribute | string Only applies to multiRange namespaces. Changes which user attribute is used for bucket hashing going forward. |
{- "displayName": "string",
- "description": "string",
- "status": "active",
- "hashAttribute": "string"
}{- "namespace": {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string",
- "seed": "string"
}
}Permanently removes a namespace from the organization. Returns a 409 error if any active experiments currently reference this namespace — disable or remove those references first.
| id required | string The unique id of the namespace |
curl -X DELETE 'https://api.growthbook.io/api/v1/namespaces/ns-abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "ns-abc123"
}| id required | string The unique id of the namespace |
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/namespaces/ns-abc123/memberships' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "experiments": [
- {
- "id": "string",
- "name": "string",
- "trackingKey": "string",
- "status": "draft",
- "ranges": [
- [
- 0,
- 0
]
]
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}⚠️ Dangerous: sets a new seed for a multiRange namespace. Every user's bucket position within the namespace is re-computed immediately, which re-randomizes traffic eligibility for all experiments currently using this namespace. Only do this if you intentionally want to reshuffle all allocations across experiments. This could be useful when re-using a namespace for a new set of experiments.
| id required | string The unique id of the namespace |
| seed | string A specific value to use as the new seed. If omitted, a random value is generated. |
{- "seed": "string"
}{- "namespace": {
- "id": "string",
- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string",
- "seed": "string"
}
}| id required | string The experiment id of the experiment to update |
| triggeredBy | string Enum: "manual" "schedule" Set to "schedule" if you want this request to trigger notifications and other events as it if were a scheduled update. Defaults to manual. |
{- "triggeredBy": "manual"
}{- "snapshot": {
- "id": "string",
- "experiment": "string",
- "status": "string"
}
}| id required | string The id of the requested resource (a snapshot ID, not experiment ID) |
curl -X GET 'https://api.growthbook.io/api/v1/snapshots/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "snapshot": {
- "id": "string",
- "experiment": "string",
- "status": "string"
}
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| datasourceId | string Filter by Data Source |
curl -X GET 'https://api.growthbook.io/api/v1/dimensions' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dimensions": [
- {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "managedBy": ""
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string Name of the dimension |
| description | string Description of the dimension |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| datasourceId required | string ID of the datasource this dimension belongs to |
| identifierType required | string Type of identifier (user, anonymous, etc.) |
| query required | string SQL query or equivalent for the dimension |
| managedBy | string Enum: "" "api" Where this dimension must be managed from. If not set (empty string), it can be managed from anywhere. |
{- "name": "string",
- "description": "string",
- "owner": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "query": "string",
- "managedBy": ""
}{- "dimension": {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "managedBy": ""
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/dimensions/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dimension": {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "managedBy": ""
}
}| id required | string The id of the requested resource |
| name | string Name of the dimension |
| description | string Description of the dimension |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| datasourceId | string ID of the datasource this dimension belongs to |
| identifierType | string Type of identifier (user, anonymous, etc.) |
| query | string SQL query or equivalent for the dimension |
| managedBy | string Enum: "" "api" Where this dimension must be managed from. If not set (empty string), it can be managed from anywhere. |
{- "name": "string",
- "description": "string",
- "owner": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "query": "string",
- "managedBy": ""
}{- "dimension": {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "managedBy": ""
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/dimensions/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "dim_123abc"
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| datasourceId | string Filter by Data Source |
curl -X GET 'https://api.growthbook.io/api/v1/segments' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "segments": [
- {
- "id": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "managedBy": "",
- "type": "SQL",
- "factTableId": "string",
- "filters": [
- "string"
], - "projects": [
- "string"
]
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string Name of the segment |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| description | string Description of the segment |
| datasourceId required | string ID of the datasource this segment belongs to |
| identifierType required | string Type of identifier (user, anonymous, etc.) |
| projects | Array of strings List of project IDs for projects that can access this segment |
| managedBy | string Enum: "" "api" Where this Segment must be managed from. If not set (empty string), it can be managed from anywhere. |
| type required | string Enum: "SQL" "FACT" GrowthBook supports two types of Segments, SQL and FACT. SQL segments are defined by a SQL query, and FACT segments are defined by a fact table and filters. |
| query | string SQL query that defines the Segment. This is required for SQL segments. |
| factTableId | string ID of the fact table this segment belongs to. This is required for FACT segments. |
| filters | Array of strings Optional array of fact table filter ids that can further define the Fact Table based Segment. |
{- "name": "string",
- "owner": "string",
- "description": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "projects": [
- "string"
], - "managedBy": "",
- "type": "SQL",
- "query": "string",
- "factTableId": "string",
- "filters": [
- "string"
]
}{- "segment": {
- "id": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "managedBy": "",
- "type": "SQL",
- "factTableId": "string",
- "filters": [
- "string"
], - "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/segments/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "segment": {
- "id": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "managedBy": "",
- "type": "SQL",
- "factTableId": "string",
- "filters": [
- "string"
], - "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
| name | string Name of the segment |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| description | string Description of the segment |
| datasourceId | string ID of the datasource this segment belongs to |
| identifierType | string Type of identifier (user, anonymous, etc.) |
| projects | Array of strings List of project IDs for projects that can access this segment |
| managedBy | string Enum: "" "api" Where this Segment must be managed from. If not set (empty string), it can be managed from anywhere. |
| type | string Enum: "SQL" "FACT" GrowthBook supports two types of Segments, SQL and FACT. SQL segments are defined by a SQL query, and FACT segments are defined by a fact table and filters. |
| query | string SQL query that defines the Segment. This is required for SQL segments. |
| factTableId | string ID of the fact table this segment belongs to. This is required for FACT segments. |
| filters | Array of strings Optional array of fact table filter ids that can further define the Fact Table based Segment. |
{- "name": "string",
- "owner": "string",
- "description": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "projects": [
- "string"
], - "managedBy": "",
- "type": "SQL",
- "query": "string",
- "factTableId": "string",
- "filters": [
- "string"
]
}{- "segment": {
- "id": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "managedBy": "",
- "type": "SQL",
- "factTableId": "string",
- "filters": [
- "string"
], - "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/segments/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "seg_123abc"
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| projectId | string Filter by project id |
| withProxy | string |
| multiOrg | string |
curl -X GET 'https://api.growthbook.io/api/v1/sdk-connections' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "connections": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "organization": "string",
- "languages": [
- "string"
], - "sdkVersion": "string",
- "environment": "string",
- "project": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "encryptionKey": "string",
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "key": "string",
- "proxyEnabled": true,
- "proxyHost": "string",
- "proxySigningKey": "string",
- "sseEnabled": true,
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string |
| language required | string |
| sdkVersion | string |
| environment required | string |
| projects | Array of strings |
| encryptPayload | boolean |
| includeVisualExperiments | boolean |
| includeDraftExperiments | boolean |
| includeExperimentNames | boolean |
| includeRedirectExperiments | boolean |
| includeRuleIds | boolean |
| includeProjectIdInMetadata | boolean |
| includeCustomFieldsInMetadata | boolean |
| allowedCustomFieldsInMetadata | Array of strings |
| includeTagsInMetadata | boolean |
| proxyEnabled | boolean |
| proxyHost | string |
| hashSecureAttributes | boolean |
| remoteEvalEnabled | boolean |
| savedGroupReferencesEnabled | boolean |
{- "name": "string",
- "language": "string",
- "sdkVersion": "string",
- "environment": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "proxyEnabled": true,
- "proxyHost": "string",
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}{- "sdkConnection": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "organization": "string",
- "languages": [
- "string"
], - "sdkVersion": "string",
- "environment": "string",
- "project": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "encryptionKey": "string",
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "key": "string",
- "proxyEnabled": true,
- "proxyHost": "string",
- "proxySigningKey": "string",
- "sseEnabled": true,
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/sdk-connections/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "sdkConnection": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "organization": "string",
- "languages": [
- "string"
], - "sdkVersion": "string",
- "environment": "string",
- "project": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "encryptionKey": "string",
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "key": "string",
- "proxyEnabled": true,
- "proxyHost": "string",
- "proxySigningKey": "string",
- "sseEnabled": true,
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}
}| id required | string The id of the requested resource |
| name | string |
| language | string |
| sdkVersion | string |
| environment | string |
| projects | Array of strings |
| encryptPayload | boolean |
| includeVisualExperiments | boolean |
| includeDraftExperiments | boolean |
| includeExperimentNames | boolean |
| includeRedirectExperiments | boolean |
| includeRuleIds | boolean |
| includeProjectIdInMetadata | boolean |
| includeCustomFieldsInMetadata | boolean |
| allowedCustomFieldsInMetadata | Array of strings |
| includeTagsInMetadata | boolean |
| proxyEnabled | boolean |
| proxyHost | string |
| hashSecureAttributes | boolean |
| remoteEvalEnabled | boolean |
| savedGroupReferencesEnabled | boolean |
{- "name": "string",
- "language": "string",
- "sdkVersion": "string",
- "environment": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "proxyEnabled": true,
- "proxyHost": "string",
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}{- "sdkConnection": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "organization": "string",
- "languages": [
- "string"
], - "sdkVersion": "string",
- "environment": "string",
- "project": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "encryptionKey": "string",
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "key": "string",
- "proxyEnabled": true,
- "proxyHost": "string",
- "proxySigningKey": "string",
- "sseEnabled": true,
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/sdk-connections/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| key required | string The key of the requested sdkConnection |
curl -X GET 'https://api.growthbook.io/api/v1/sdk-connections/lookup/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "sdkConnection": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "organization": "string",
- "languages": [
- "string"
], - "sdkVersion": "string",
- "environment": "string",
- "project": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "encryptionKey": "string",
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "key": "string",
- "proxyEnabled": true,
- "proxyHost": "string",
- "proxySigningKey": "string",
- "sseEnabled": true,
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}
}| id required | string The experiment id the visual changesets belong to |
curl -X GET 'https://api.growthbook.io/api/v1/experiments/abc123/visual-changesets' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "visualChangesets": [
- {
- "id": "string",
- "urlPatterns": [
- {
- "include": true,
- "type": "simple",
- "pattern": "string"
}
], - "editorUrl": "string",
- "experiment": "string",
- "visualChanges": [
- {
- "description": "string",
- "css": "string",
- "js": "string",
- "variation": "string",
- "domMutations": [
- {
- "selector": "string",
- "action": "append",
- "attribute": "string",
- "value": "string",
- "parentSelector": "string",
- "insertBeforeSelector": "string"
}
]
}
]
}
]
}| id required | string The id of the requested resource |
| editorUrl required | string URL of the page opened in the visual editor when creating this changeset |
required | Array of objects URL patterns that determine which pages this visual changeset applies to |
{- "editorUrl": "string",
- "urlPatterns": [
- {
- "include": true,
- "type": "simple",
- "pattern": "string"
}
]
}{- "visualChangeset": {
- "id": "string",
- "urlPatterns": [
- {
- "include": true,
- "type": "simple",
- "pattern": "string"
}
], - "editorUrl": "string",
- "experiment": "string",
- "visualChanges": [
- {
- "description": "string",
- "css": "string",
- "js": "string",
- "variation": "string",
- "domMutations": [
- {
- "selector": "string",
- "action": "append",
- "attribute": "string",
- "value": "string",
- "parentSelector": "string",
- "insertBeforeSelector": "string"
}
]
}
]
}
}| id required | string The id of the requested resource |
| includeExperiment | integer Include the associated experiment in payload |
curl -X GET 'https://api.growthbook.io/api/v1/visual-changesets/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "visualChangeset": {
- "id": "string",
- "urlPatterns": [
- {
- "include": true,
- "type": "simple",
- "pattern": "string"
}
], - "editorUrl": "string",
- "experiment": "string",
- "visualChanges": [
- {
- "description": "string",
- "css": "string",
- "js": "string",
- "variation": "string",
- "domMutations": [
- {
- "selector": "string",
- "action": "append",
- "attribute": "string",
- "value": "string",
- "parentSelector": "string",
- "insertBeforeSelector": "string"
}
]
}
]
}, - "experiment": {
- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string"
}
}| id required | string The id of the requested resource |
curl -X PUT 'https://api.growthbook.io/api/v1/visual-changesets/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "nModified": 0,
- "visualChangeset": {
- "id": "string",
- "urlPatterns": [
- {
- "include": true,
- "type": "simple",
- "pattern": "string"
}
], - "editorUrl": "string",
- "experiment": "string",
- "visualChanges": [
- {
- "description": "string",
- "css": "string",
- "js": "string",
- "variation": "string",
- "domMutations": [
- {
- "selector": "string",
- "action": "append",
- "attribute": "string",
- "value": "string",
- "parentSelector": "string",
- "insertBeforeSelector": "string"
}
]
}
]
}
}| id required | string The id of the requested resource |
curl -X POST 'https://api.growthbook.io/api/v1/visual-changesets/{id}/visual-change' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "nModified": 0
}| id required | string The id of the requested resource |
| visualChangeId required | string Specify a specific visual change |
curl -X PUT 'https://api.growthbook.io/api/v1/visual-changesets/{id}/visual-change/{visualChangeId}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "nModified": 0
}Defined sets of attribute values which can be used with feature rules for targeting features at particular users.
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/saved-groups' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "savedGroups": [
- {
- "id": "string",
- "type": "condition",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "owner": "string",
- "ownerEmail": "string",
- "condition": "string",
- "attributeKey": "string",
- "values": [
- "string"
], - "description": "string",
- "projects": [
- "string"
]
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string The display name of the Saved Group |
| type | string Enum: "condition" "list" The type of Saved Group (inferred from other arguments if missing) |
| condition | string When type = 'condition', this is the JSON-encoded condition for the group |
| attributeKey | string When type = 'list', this is the attribute key the group is based on |
| values | Array of strings When type = 'list', this is the list of values for the attribute key |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| projects | Array of strings |
{- "name": "string",
- "type": "condition",
- "condition": "string",
- "attributeKey": "string",
- "values": [
- "string"
], - "owner": "string",
- "projects": [
- "string"
]
}{- "savedGroup": {
- "id": "string",
- "type": "condition",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "owner": "string",
- "ownerEmail": "string",
- "condition": "string",
- "attributeKey": "string",
- "values": [
- "string"
], - "description": "string",
- "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/saved-groups/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "savedGroup": {
- "id": "string",
- "type": "condition",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "owner": "string",
- "ownerEmail": "string",
- "condition": "string",
- "attributeKey": "string",
- "values": [
- "string"
], - "description": "string",
- "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
| name | string The display name of the Saved Group |
| condition | string When type = 'condition', this is the JSON-encoded condition for the group |
| values | Array of strings When type = 'list', this is the list of values for the attribute key |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| projects | Array of strings |
{- "name": "string",
- "condition": "string",
- "values": [
- "string"
], - "owner": "string",
- "projects": [
- "string"
]
}{- "savedGroup": {
- "id": "string",
- "type": "condition",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "owner": "string",
- "ownerEmail": "string",
- "condition": "string",
- "attributeKey": "string",
- "values": [
- "string"
], - "description": "string",
- "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/saved-groups/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}Organizations are used for multi-org deployments where different teams can run their own isolated feature flags and experiments. These endpoints are only via a super-admin's Personal Access Token.
| search | string Search string to search organization names, owner emails, and external ids by |
| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/organizations' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "organizations": [
- {
- "id": "string",
- "externalId": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "name": "string",
- "ownerEmail": "string"
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| name required | string The name of the organization |
| externalId | string An optional identifier that you use within your company for the organization |
{- "name": "string",
- "externalId": "string"
}{- "organization": {
- "id": "string",
- "externalId": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "name": "string",
- "ownerEmail": "string"
}
}| id required | string The id of the requested resource |
| name | string The name of the organization |
| externalId | string An optional identifier that you use within your company for the organization |
{- "name": "string",
- "externalId": "string"
}{- "organization": {
- "id": "string",
- "externalId": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "name": "string",
- "ownerEmail": "string"
}
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
| userName | string Name of the user. |
| userEmail | string Email address of the user. |
| globalRole | string Name of the global role |
curl -X GET 'https://api.growthbook.io/api/v1/members' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "members": [
- {
- "id": "string",
- "name": "string",
- "email": "string",
- "globalRole": "string",
- "environments": [
- "string"
], - "limitAccessByEnvironment": true,
- "managedbyIdp": true,
- "teams": [
- "string"
], - "projectRoles": [
- {
- "project": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
]
}
], - "lastLoginDate": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| id required | string The id of the requested resource |
required | object | ||||||
| |||||||
{- "member": {
- "role": "string",
- "environments": [
- "string"
], - "projectRoles": [
- {
- "project": "string",
- "role": "string",
- "environments": [
- "string"
], - "limitAccessByEnvironment": true
}
]
}
}{- "updatedMember": {
- "id": "string",
- "role": "string",
- "environments": [
- "string"
], - "limitAccessByEnvironment": true,
- "projectRoles": [
- {
- "project": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
]
}
]
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/members/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}Intended for use with our code reference CI utility, gb-find-code-refs.
| deleteMissing | string Default: "false" Enum: "true" "false" Whether to delete code references that are no longer present in the submitted data |
| branch required | string |
| repoName required | string |
required | Array of objects |
{- "branch": "string",
- "repoName": "string",
- "refs": [
- {
- "filePath": "string",
- "startingLineNumber": 0,
- "lines": "string",
- "flagKey": "string",
- "contentHash": "string"
}
]
}{- "featuresUpdated": [
- "string"
]
}| limit | integer [ 1 .. 100 ] Default: 10 The number of items to return |
| offset | integer >= 0 Default: 0 How many items to skip (use in conjunction with limit for pagination) |
curl -X GET 'https://api.growthbook.io/api/v1/code-refs' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "codeRefs": [
- {
- "organization": "string",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "feature": "string",
- "repo": "string",
- "branch": "string",
- "platform": "github",
- "refs": [
- {
- "filePath": "string",
- "startingLineNumber": 0,
- "lines": "string",
- "flagKey": "string"
}
]
}
], - "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/code-refs/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "codeRefs": [
- {
- "organization": "string",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "feature": "string",
- "repo": "string",
- "branch": "string",
- "platform": "github",
- "refs": [
- {
- "filePath": "string",
- "startingLineNumber": 0,
- "lines": "string",
- "flagKey": "string"
}
]
}
]
}curl -X GET 'https://api.growthbook.io/api/v1/archetypes' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "archetypes": [
- {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}
]
}| name required | string |
| description | string |
| isPublic required | boolean Whether to make this Archetype available to other team members |
object The attributes to set when using this Archetype | |
| projects | Array of strings |
{- "name": "string",
- "description": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}{- "archetype": {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/archetypes/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "archetype": {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
| name | string |
| description | string |
| isPublic | boolean Whether to make this Archetype available to other team members |
object The attributes to set when using this Archetype | |
| projects | Array of strings |
{- "name": "string",
- "description": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}{- "archetype": {
- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}
}| id required | string The id of the requested resource |
curl -X DELETE 'https://api.growthbook.io/api/v1/archetypes/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| id required | string The id of the requested resource |
curl -X GET 'https://api.growthbook.io/api/v1/queries/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "query": {
- "id": "string",
- "organization": "string",
- "datasource": "string",
- "language": "string",
- "query": "string",
- "queryType": "string",
- "createdAt": "string",
- "startedAt": "string",
- "status": "running",
- "externalId": "string",
- "dependencies": [
- "string"
], - "runAtEnd": true
}
}curl -X GET 'https://api.growthbook.io/api/v1/settings' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "settings": {
- "confidenceLevel": 0,
- "northStar": {
- "title": "string",
- "metricIds": [
- "string"
]
}, - "metricDefaults": {
- "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "minimumSampleSize": 0,
- "maxPercentageChange": 0,
- "minPercentageChange": 0,
- "targetMDE": 0
}, - "pastExperimentsMinLength": 0,
- "metricAnalysisDays": 0,
- "updateSchedule": {
- "type": "cron",
- "cron": "string",
- "hours": 0
}, - "multipleExposureMinPercent": 0,
- "defaultRole": {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
]
}, - "statsEngine": "string",
- "pValueThreshold": 0,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "attributionModel": "firstExposure",
- "targetMDE": 0,
- "delayHours": 0,
- "windowType": "string",
- "windowHours": 0,
- "winRisk": 0,
- "loseRisk": 0,
- "secureAttributeSalt": "string",
- "killswitchConfirmation": true,
- "featureKillSwitchBehavior": "off",
- "requireReviews": [
- {
- "requireReviewOn": true,
- "resetReviewOnChange": true,
- "environments": [
- "string"
], - "projects": [
- "string"
], - "featureRequireEnvironmentReview": true,
- "featureRequireMetadataReview": true
}
], - "restApiBypassesReviews": true,
- "featureKeyExample": "string",
- "featureRegexValidator": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "hours",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "hours",
- "experimentMinLengthDays": 0,
- "experimentMaxLengthDays": 0,
- "preferredEnvironment": "string",
- "maxMetricSliceLevels": 0
}
}curl -X GET 'https://api.growthbook.io/api/v1/attributes' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "attributes": [
- {
- "property": "string",
- "datatype": "boolean",
- "description": "string",
- "hashAttribute": true,
- "archived": true,
- "enum": "string",
- "format": "",
- "projects": [
- "string"
], - "tags": [
- "string"
]
}
]
}| property required | string The attribute property |
| datatype required | string Enum: "boolean" "string" "number" "secureString" "enum" "string[]" "number[]" "secureString[]" The attribute datatype |
| description | string The description of the new attribute |
| archived | boolean The attribute is archived |
| hashAttribute | boolean Shall the attribute be hashed |
| enum | string |
| format | string Enum: "" "version" "date" "isoCountryCode" The attribute's format |
| projects | Array of strings |
| tags | Array of strings |
{- "property": "string",
- "datatype": "boolean",
- "description": "string",
- "archived": true,
- "hashAttribute": true,
- "enum": "string",
- "format": "",
- "projects": [
- "string"
], - "tags": [
- "string"
]
}{- "attribute": {
- "property": "string",
- "datatype": "boolean",
- "description": "string",
- "hashAttribute": true,
- "archived": true,
- "enum": "string",
- "format": "",
- "projects": [
- "string"
], - "tags": [
- "string"
]
}
}| property required | string The attribute property |
| datatype | string Enum: "boolean" "string" "number" "secureString" "enum" "string[]" "number[]" "secureString[]" The attribute datatype |
| description | string The description of the new attribute |
| archived | boolean The attribute is archived |
| hashAttribute | boolean Shall the attribute be hashed |
| enum | string |
| format | string Enum: "" "version" "date" "isoCountryCode" The attribute's format |
| projects | Array of strings |
| tags | Array of strings |
{- "datatype": "boolean",
- "description": "string",
- "archived": true,
- "hashAttribute": true,
- "enum": "string",
- "format": "",
- "projects": [
- "string"
], - "tags": [
- "string"
]
}{- "attribute": {
- "property": "string",
- "datatype": "boolean",
- "description": "string",
- "hashAttribute": true,
- "archived": true,
- "enum": "string",
- "format": "",
- "projects": [
- "string"
], - "tags": [
- "string"
]
}
}| property required | string The attribute property |
curl -X DELETE 'https://api.growthbook.io/api/v1/attributes/abc123' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedProperty": "string"
}Returns usage information for one or more legacy or fact metrics, showing which experiments use each metric and some usage statistics. If a metric is part of a metric group, then usage of that metric group counts as usage of all metrics in the group. Warning: only includes experiments that you have access to! If you do not have admin access or read access to experiments across all projects, this endpoint may not return the latest usage data across all experiments.
| ids required | string List of comma-separated metric IDs (both fact and legacy) to get usage for, e.g. ids=met_123,fact_456 |
curl -X GET 'https://api.growthbook.io/api/v1/usage/metrics' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "metricUsage": [
- {
- "metricId": "string",
- "error": "string",
- "experiments": [
- {
- "experimentId": "string",
- "experimentStatus": "draft",
- "lastSnapshotAttempt": "2019-08-24T14:15:22Z"
}
], - "lastSnapshotAttempt": "2019-08-24T14:15:22Z"
}
]
}curl -X GET 'https://api.growthbook.io/api/v1/dashboards/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dashboard": {
- "id": "string",
- "uid": "string",
- "organization": "string",
- "experimentId": "string",
- "isDefault": true,
- "isDeleted": true,
- "userId": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "title": "string",
- "projects": [
- "string"
], - "nextUpdate": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "blocks": [
- {
- "organization": "string",
- "id": "string",
- "uid": "string",
- "type": "metric-explorer",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "factMetricId": "string",
- "visualizationType": "histogram",
- "valueType": "avg",
- "metricAnalysisId": "string",
- "analysisSettings": {
- "userIdType": "string",
- "lookbackDays": 0,
- "populationType": "metric",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "startDate": "string",
- "endDate": "string"
}
}
]
}
}| id required | string |
curl -X DELETE 'https://api.growthbook.io/api/v1/dashboards/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| id required | string |
| title | string The display name of the Dashboard |
| editLevel | string Enum: "published" "private" Dashboards that are "published" are editable by organization members with appropriate permissions |
| shareLevel | string Enum: "published" "private" General Dashboards only. Dashboards that are "published" are viewable by organization members with appropriate permissions |
| enableAutoUpdates | boolean If enabled for a General Dashboard, also requires an updateSchedule |
object or object General Dashboards only. Experiment Dashboards update based on the parent experiment instead | |
| projects | Array of strings General Dashboards only, Experiment Dashboards use the experiment's projects |
Array of (object or objects or objects or objects or objects or objects or objects or objects) or (object or objects or objects or objects or objects or objects or objects or objects or objects or objects or objects) |
{- "title": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "projects": [
- "string"
], - "blocks": [
- {
- "type": "markdown",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "content": "string"
}
]
}{- "dashboard": {
- "id": "string",
- "uid": "string",
- "organization": "string",
- "experimentId": "string",
- "isDefault": true,
- "isDeleted": true,
- "userId": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "title": "string",
- "projects": [
- "string"
], - "nextUpdate": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "blocks": [
- {
- "organization": "string",
- "id": "string",
- "uid": "string",
- "type": "metric-explorer",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "factMetricId": "string",
- "visualizationType": "histogram",
- "valueType": "avg",
- "metricAnalysisId": "string",
- "analysisSettings": {
- "userIdType": "string",
- "lookbackDays": 0,
- "populationType": "metric",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "startDate": "string",
- "endDate": "string"
}
}
]
}
}| title required | string The display name of the Dashboard |
| editLevel required | string Enum: "published" "private" Dashboards that are "published" are editable by organization members with appropriate permissions |
| shareLevel required | string Enum: "published" "private" General Dashboards only. Dashboards that are "published" are viewable by organization members with appropriate permissions |
| enableAutoUpdates required | boolean If enabled for a General Dashboard, also requires an updateSchedule |
object or object General Dashboards only. Experiment Dashboards update based on the parent experiment instead | |
| experimentId | string The parent experiment for an Experiment Dashboard, or undefined for a general dashboard |
| projects | Array of strings General Dashboards only, Experiment Dashboards use the experiment's projects |
required | Array of objects or objects or objects or objects or objects or objects or objects or objects |
{- "title": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "experimentId": "string",
- "projects": [
- "string"
], - "blocks": [
- {
- "type": "markdown",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "content": "string"
}
]
}{- "dashboard": {
- "id": "string",
- "uid": "string",
- "organization": "string",
- "experimentId": "string",
- "isDefault": true,
- "isDeleted": true,
- "userId": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "title": "string",
- "projects": [
- "string"
], - "nextUpdate": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "blocks": [
- {
- "organization": "string",
- "id": "string",
- "uid": "string",
- "type": "metric-explorer",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "factMetricId": "string",
- "visualizationType": "histogram",
- "valueType": "avg",
- "metricAnalysisId": "string",
- "analysisSettings": {
- "userIdType": "string",
- "lookbackDays": 0,
- "populationType": "metric",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "startDate": "string",
- "endDate": "string"
}
}
]
}
}curl -X GET 'https://api.growthbook.io/api/v1/dashboards' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dashboards": [
- {
- "id": "string",
- "uid": "string",
- "organization": "string",
- "experimentId": "string",
- "isDefault": true,
- "isDeleted": true,
- "userId": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "title": "string",
- "projects": [
- "string"
], - "nextUpdate": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "blocks": [
- {
- "organization": "string",
- "id": "string",
- "uid": "string",
- "type": "metric-explorer",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "factMetricId": "string",
- "visualizationType": "histogram",
- "valueType": "avg",
- "metricAnalysisId": "string",
- "analysisSettings": {
- "userIdType": "string",
- "lookbackDays": 0,
- "populationType": "metric",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "startDate": "string",
- "endDate": "string"
}
}
]
}
]
}| experimentId required | string |
curl -X GET 'https://api.growthbook.io/api/v1/dashboards/by-experiment/{experimentId}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "dashboards": [
- {
- "id": "string",
- "uid": "string",
- "organization": "string",
- "experimentId": "string",
- "isDefault": true,
- "isDeleted": true,
- "userId": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "title": "string",
- "projects": [
- "string"
], - "nextUpdate": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "blocks": [
- {
- "organization": "string",
- "id": "string",
- "uid": "string",
- "type": "metric-explorer",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "factMetricId": "string",
- "visualizationType": "histogram",
- "valueType": "avg",
- "metricAnalysisId": "string",
- "analysisSettings": {
- "userIdType": "string",
- "lookbackDays": 0,
- "populationType": "metric",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "startDate": "string",
- "endDate": "string"
}
}
]
}
]
}| id required | string non-empty The unique key for the custom field |
| name required | string The display name of the custom field |
| description | string |
| placeholder | string |
string or number or boolean or string or string or Array of strings or Array of numbers or Array of booleans or Array of strings or Array of strings | |
| type required | string Enum: "text" "textarea" "markdown" "enum" "multiselect" "url" "number" "boolean" "date" "datetime" The type of value this custom field will take |
| values | string |
| required required | boolean |
| projects | Array of strings |
| sections required | Array of strings Items Enum: "feature" "experiment" What types of objects this custom field is applicable to (feature, experiment) |
{- "id": "string",
- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "type": "text",
- "values": "string",
- "required": true,
- "projects": [
- "string"
], - "sections": [
- "feature"
]
}{- "customField": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "type": "text",
- "values": "string",
- "required": true,
- "creator": "string",
- "projects": [
- "string"
], - "sections": [
- "feature"
], - "active": true
}
}curl -X GET 'https://api.growthbook.io/api/v1/custom-fields' \ -H 'Authorization: Bearer YOUR_API_KEY'
[- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "type": "text",
- "values": "string",
- "required": true,
- "creator": "string",
- "projects": [
- "string"
], - "sections": [
- "feature"
], - "active": true
}
]| id required | string |
| index | string |
curl -X DELETE 'https://api.growthbook.io/api/v1/custom-fields/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| id required | string |
curl -X GET 'https://api.growthbook.io/api/v1/custom-fields/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "customField": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "type": "text",
- "values": "string",
- "required": true,
- "creator": "string",
- "projects": [
- "string"
], - "sections": [
- "feature"
], - "active": true
}
}| id required | string |
| name | string The display name of the custom field |
| description | string |
| placeholder | string |
string or number or boolean or string or string or Array of strings or Array of numbers or Array of booleans or Array of strings or Array of strings | |
| values | string |
| required | boolean |
| projects | Array of strings |
| sections | Array of strings Items Enum: "feature" "experiment" What types of objects this custom field is applicable to (feature, experiment) |
| active | boolean |
{- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "values": "string",
- "required": true,
- "projects": [
- "string"
], - "sections": [
- "feature"
], - "active": true
}{- "customField": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "type": "text",
- "values": "string",
- "required": true,
- "creator": "string",
- "projects": [
- "string"
], - "sections": [
- "feature"
], - "active": true
}
}| id required | string |
curl -X GET 'https://api.growthbook.io/api/v1/metric-groups/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "metricGroup": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "owner": "string",
- "ownerEmail": "string",
- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "archived": true
}
}| id required | string |
curl -X DELETE 'https://api.growthbook.io/api/v1/metric-groups/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| id required | string |
| name | string |
| description | string |
| tags | Array of strings |
| projects | Array of strings |
| metrics | Array of strings |
| datasource | string |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| archived | boolean |
{- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "owner": "string",
- "archived": true
}{- "metricGroup": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "owner": "string",
- "ownerEmail": "string",
- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "archived": true
}
}| name required | string |
| description required | string |
| tags | Array of strings |
| projects required | Array of strings |
| metrics required | Array of strings |
| datasource required | string |
| owner | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| archived | boolean |
{- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "owner": "string",
- "archived": true
}{- "metricGroup": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "owner": "string",
- "ownerEmail": "string",
- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "archived": true
}
}curl -X GET 'https://api.growthbook.io/api/v1/metric-groups' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "metricGroups": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "owner": "string",
- "ownerEmail": "string",
- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "archived": true
}
]
}curl -X GET 'https://api.growthbook.io/api/v1/teams/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "team": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "members": [
- "string"
], - "managedByIdp": true,
- "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}
}| id required | string |
| name | string |
| createdBy | string |
| description | string |
| role | string The global role for members of this team |
| limitAccessByEnvironment | boolean |
| environments | Array of strings An empty array means 'all environments' |
Array of objects | |
object | |
| defaultProject | string |
{- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}{- "team": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "members": [
- "string"
], - "managedByIdp": true,
- "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}
}| id required | string |
| deleteMembers | string When 'true', enables deleting a team that contains members |
curl -X DELETE 'https://api.growthbook.io/api/v1/teams/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| name required | string |
| createdBy | string |
| description required | string |
| role required | string The global role for members of this team |
| limitAccessByEnvironment | boolean |
| environments | Array of strings An empty array means 'all environments' |
Array of objects | |
object | |
| defaultProject | string |
{- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}{- "team": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "members": [
- "string"
], - "managedByIdp": true,
- "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}
}curl -X GET 'https://api.growthbook.io/api/v1/teams' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "teams": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "members": [
- "string"
], - "managedByIdp": true,
- "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}
]
}| id required | string |
| members required | Array of strings |
{- "members": [
- "string"
]
}{- "status": 0
}| id required | string |
| members required | Array of strings |
{- "members": [
- "string"
]
}{- "status": 0
}| id required | string |
curl -X GET 'https://api.growthbook.io/api/v1/experiment-templates/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "experimentTemplate": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "project": "string",
- "owner": "string",
- "ownerEmail": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}
}| id required | string |
curl -X DELETE 'https://api.growthbook.io/api/v1/experiment-templates/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| id required | string |
| project | string |
object | |
| type | string Value: "standard" |
| hypothesis | string |
| description | string |
| tags | Array of strings |
object | |
| datasource | string |
| exposureQueryId | string |
| hashAttribute | string |
| fallbackAttribute | string |
| disableStickyBucketing | boolean |
| goalMetrics | Array of strings |
| secondaryMetrics | Array of strings |
| guardrailMetrics | Array of strings |
| activationMetric | string |
| statsEngine | string Enum: "bayesian" "frequentist" |
| segment | string |
| skipPartialData | boolean |
object | |
Array of objects |
{- "project": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}{- "experimentTemplate": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "project": "string",
- "owner": "string",
- "ownerEmail": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}
}| project | string |
required | object |
| type required | string Value: "standard" |
| hypothesis | string |
| description | string |
| tags | Array of strings |
object | |
| datasource required | string |
| exposureQueryId required | string |
| hashAttribute | string |
| fallbackAttribute | string |
| disableStickyBucketing | boolean |
| goalMetrics | Array of strings |
| secondaryMetrics | Array of strings |
| guardrailMetrics | Array of strings |
| activationMetric | string |
| statsEngine required | string Enum: "bayesian" "frequentist" |
| segment | string |
| skipPartialData | boolean |
required | object |
Array of objects |
{- "project": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}{- "experimentTemplate": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "project": "string",
- "owner": "string",
- "ownerEmail": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}
}| projectId | string |
curl -X GET 'https://api.growthbook.io/api/v1/experiment-templates' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "experimentTemplates": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "project": "string",
- "owner": "string",
- "ownerEmail": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}
]
}required | Array of objects | ||||
Array
| |||||
{- "templates": [
- {
- "id": "string",
- "data": {
- "project": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}
}
]
}{- "added": 0,
- "updated": 0
}| cache | string Enum: "preferred" "required" "never" Controls cache behavior for this exploration: |
| datasource required | string ID of the datasource to query |
required | Array of objects or objects or objects or objects |
| chartType required | string Enum: "line" "area" "timeseries-table" "table" "bar" "stackedBar" "horizontalBar" "stackedHorizontalBar" "bigNumber" |
required | object |
| showAs | string Enum: "total" "per_unit" |
| type required | string Value: "metric" |
required | object |
{- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "metric",
- "dataset": {
- "type": "metric",
- "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "metric",
- "metricId": "string",
- "unit": "string",
- "denominatorUnit": "string"
}
]
}
}{- "exploration": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "datasource": "string",
- "status": "running",
- "dateStart": "string",
- "dateEnd": "string",
- "error": "string",
- "result": {
- "rows": [
- {
- "dimensions": [
- "string"
], - "values": [
- {
- "metricId": "string",
- "numerator": 0,
- "denominator": 0
}
]
}
]
}, - "config": {
- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "metric",
- "dataset": {
- "type": "metric",
- "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "metric",
- "metricId": "string",
- "unit": "string",
- "denominatorUnit": "string"
}
]
}
}
}, - "query": {
- "id": "string",
- "organization": "string",
- "datasource": "string",
- "language": "string",
- "query": "string",
- "queryType": "string",
- "createdAt": "string",
- "startedAt": "string",
- "status": "running",
- "externalId": "string",
- "dependencies": [
- "string"
], - "runAtEnd": true
}, - "explorationUrl": "string",
- "message": "string"
}| cache | string Enum: "preferred" "required" "never" Controls cache behavior for this exploration: |
| datasource required | string ID of the datasource to query |
required | Array of objects or objects or objects or objects |
| chartType required | string Enum: "line" "area" "timeseries-table" "table" "bar" "stackedBar" "horizontalBar" "stackedHorizontalBar" "bigNumber" |
required | object |
| showAs | string Enum: "total" "per_unit" |
| type required | string Value: "fact_table" |
required | object |
{- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "fact_table",
- "dataset": {
- "type": "fact_table",
- "factTableId": "string",
- "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "fact_table",
- "valueType": "unit_count",
- "valueColumn": "string",
- "unit": "string"
}
]
}
}{- "exploration": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "datasource": "string",
- "status": "running",
- "dateStart": "string",
- "dateEnd": "string",
- "error": "string",
- "result": {
- "rows": [
- {
- "dimensions": [
- "string"
], - "values": [
- {
- "metricId": "string",
- "numerator": 0,
- "denominator": 0
}
]
}
]
}, - "config": {
- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "fact_table",
- "dataset": {
- "type": "fact_table",
- "factTableId": "string",
- "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "fact_table",
- "valueType": "unit_count",
- "valueColumn": "string",
- "unit": "string"
}
]
}
}
}, - "query": {
- "id": "string",
- "organization": "string",
- "datasource": "string",
- "language": "string",
- "query": "string",
- "queryType": "string",
- "createdAt": "string",
- "startedAt": "string",
- "status": "running",
- "externalId": "string",
- "dependencies": [
- "string"
], - "runAtEnd": true
}, - "explorationUrl": "string",
- "message": "string"
}| cache | string Enum: "preferred" "required" "never" Controls cache behavior for this exploration: |
| datasource required | string ID of the datasource to query |
required | Array of objects or objects or objects or objects |
| chartType required | string Enum: "line" "area" "timeseries-table" "table" "bar" "stackedBar" "horizontalBar" "stackedHorizontalBar" "bigNumber" |
required | object |
| showAs | string Enum: "total" "per_unit" |
| type required | string Value: "data_source" |
required | object |
{- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "data_source",
- "dataset": {
- "type": "data_source",
- "table": "string",
- "path": "string",
- "timestampColumn": "string",
- "columnTypes": {
- "property1": "string",
- "property2": "string"
}, - "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "data_source",
- "valueType": "unit_count",
- "valueColumn": "string",
- "unit": "string"
}
]
}
}{- "exploration": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "datasource": "string",
- "status": "running",
- "dateStart": "string",
- "dateEnd": "string",
- "error": "string",
- "result": {
- "rows": [
- {
- "dimensions": [
- "string"
], - "values": [
- {
- "metricId": "string",
- "numerator": 0,
- "denominator": 0
}
]
}
]
}, - "config": {
- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "data_source",
- "dataset": {
- "type": "data_source",
- "table": "string",
- "path": "string",
- "timestampColumn": "string",
- "columnTypes": {
- "property1": "string",
- "property2": "string"
}, - "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "data_source",
- "valueType": "unit_count",
- "valueColumn": "string",
- "unit": "string"
}
]
}
}
}, - "query": {
- "id": "string",
- "organization": "string",
- "datasource": "string",
- "language": "string",
- "query": "string",
- "queryType": "string",
- "createdAt": "string",
- "startedAt": "string",
- "status": "running",
- "externalId": "string",
- "dependencies": [
- "string"
], - "runAtEnd": true
}, - "explorationUrl": "string",
- "message": "string"
}| id required | string |
curl -X GET 'https://api.growthbook.io/api/v1/ramp-schedule-templates/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampScheduleTemplate": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}
}| id required | string |
curl -X DELETE 'https://api.growthbook.io/api/v1/ramp-schedule-templates/{id}' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "deletedId": "string"
}| id required | string |
| name | string |
Array of objects | |
object | |
| official | boolean |
{- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}{- "rampScheduleTemplate": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}
}| name required | string |
required | Array of objects |
object | |
| official | boolean |
{- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}{- "rampScheduleTemplate": {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- null
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}
}curl -X GET 'https://api.growthbook.io/api/v1/ramp-schedule-templates' \ -H 'Authorization: Bearer YOUR_API_KEY'
{- "rampScheduleTemplates": [
- {
- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": null,
- "ids": [ ]
}
], - "prerequisites": [
- {
- "id": null,
- "condition": null
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}
]
}| id required | string |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| datasource required | string |
| status required | string Enum: "running" "success" "error" |
| dateStart required | string |
| dateEnd required | string |
string or null | |
required | object |
required | object or object or object |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "datasource": "string",
- "status": "running",
- "dateStart": "string",
- "dateEnd": "string",
- "error": "string",
- "result": {
- "rows": [
- {
- "dimensions": [
- "string"
], - "values": [
- {
- "metricId": "string",
- "numerator": 0,
- "denominator": 0
}
]
}
]
}, - "config": {
- "datasource": "string",
- "dimensions": [
- {
- "dimensionType": "date",
- "column": "string",
- "dateGranularity": "auto"
}
], - "chartType": "line",
- "dateRange": {
- "predefined": "today",
- "lookbackValue": 0,
- "lookbackUnit": "hour",
- "startDate": "string",
- "endDate": "string"
}, - "showAs": "total",
- "type": "metric",
- "dataset": {
- "type": "metric",
- "values": [
- {
- "name": "string",
- "rowFilters": [
- {
- "operator": "=",
- "column": "string",
- "values": [
- "string"
]
}
], - "type": "metric",
- "metricId": "string",
- "unit": "string",
- "denominatorUnit": "string"
}
]
}
}
}| id required | string |
| dateCreated required | string |
| dateUpdated required | string |
| name required | string |
| description | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| isPublic required | boolean |
required | object The attributes to set when using this Archetype |
| projects | Array of strings |
{- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "isPublic": true,
- "attributes": {
- "property1": null,
- "property2": null
}, - "projects": [
- "string"
]
}| property required | string |
| datatype required | string Enum: "boolean" "string" "number" "secureString" "enum" "string[]" "number[]" "secureString[]" |
| description | string |
| hashAttribute | boolean |
| archived | boolean |
| enum | string |
| format | string Enum: "" "version" "date" "isoCountryCode" |
| projects | Array of strings |
| tags | Array of strings |
{- "property": "string",
- "datatype": "boolean",
- "description": "string",
- "hashAttribute": true,
- "archived": true,
- "enum": "string",
- "format": "",
- "projects": [
- "string"
], - "tags": [
- "string"
]
}| organization required | string The organization name |
| dateUpdated required | string <date-time> When the code references were last updated |
| feature required | string Feature identifier |
| repo required | string Repository name |
| branch required | string Branch name |
| platform | string Enum: "github" "gitlab" "bitbucket" Source control platform |
required | Array of objects |
{- "organization": "string",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "feature": "string",
- "repo": "string",
- "branch": "string",
- "platform": "github",
- "refs": [
- {
- "filePath": "string",
- "startingLineNumber": 0,
- "lines": "string",
- "flagKey": "string"
}
]
}| id required | string |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| name required | string |
| description | string |
| placeholder | string |
string or number or boolean or string or string or Array of strings or Array of numbers or Array of booleans or Array of strings or Array of strings | |
| type required | string Enum: "text" "textarea" "markdown" "enum" "multiselect" "url" "number" "boolean" "date" "datetime" |
| values | string |
| required required | boolean |
| creator | string |
| projects | Array of strings |
| sections required | Array of strings Items Enum: "feature" "experiment" |
| active | boolean |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "description": "string",
- "placeholder": "string",
- "defaultValue": "string",
- "type": "text",
- "values": "string",
- "required": true,
- "creator": "string",
- "projects": [
- "string"
], - "sections": [
- "feature"
], - "active": true
}| id required | string |
| uid required | string |
| organization required | string |
| experimentId | string |
| isDefault required | boolean |
| isDeleted required | boolean |
| userId required | string |
| editLevel required | string Enum: "published" "private" |
| shareLevel required | string Enum: "published" "private" |
| enableAutoUpdates required | boolean |
object or object | |
| title required | string |
| projects | Array of strings |
| nextUpdate | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| lastUpdated | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
required | Array of objects or objects or objects or objects or objects or objects or objects or objects or objects or objects or objects |
{- "id": "string",
- "uid": "string",
- "organization": "string",
- "experimentId": "string",
- "isDefault": true,
- "isDeleted": true,
- "userId": "string",
- "editLevel": "published",
- "shareLevel": "published",
- "enableAutoUpdates": true,
- "updateSchedule": {
- "type": "stale",
- "hours": 0
}, - "title": "string",
- "projects": [
- "string"
], - "nextUpdate": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "blocks": [
- {
- "organization": "string",
- "id": "string",
- "uid": "string",
- "type": "metric-explorer",
- "title": "string",
- "description": "string",
- "snapshotId": "string",
- "factMetricId": "string",
- "visualizationType": "histogram",
- "valueType": "avg",
- "metricAnalysisId": "string",
- "analysisSettings": {
- "userIdType": "string",
- "lookbackDays": 0,
- "populationType": "metric",
- "populationId": "string",
- "additionalNumeratorFilters": [
- "string"
], - "additionalDenominatorFilters": [
- "string"
], - "startDate": "string",
- "endDate": "string"
}
}
]
}| id required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| type required | string |
| name required | string |
| description required | string |
| projectIds required | Array of strings |
| eventTracker required | string |
required | Array of objects |
required | Array of objects |
required | Array of objects |
object |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "type": "string",
- "name": "string",
- "description": "string",
- "projectIds": [
- "string"
], - "eventTracker": "string",
- "identifierTypes": [
- {
- "id": "string",
- "description": "string"
}
], - "assignmentQueries": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "identifierType": "string",
- "sql": "string",
- "includesNameColumns": true,
- "dimensionColumns": [
- "string"
]
}
], - "identifierJoinQueries": [
- {
- "identifierTypes": [
- "string"
], - "sql": "string"
}
], - "mixpanelSettings": {
- "viewedExperimentEventName": "string",
- "experimentIdProperty": "string",
- "variationIdProperty": "string",
- "extraUserIdProperty": "string"
}
}| id required | string |
| dateCreated required | string |
| dateUpdated required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| datasourceId required | string |
| identifierType required | string |
| name required | string |
| description | string |
| query required | string |
| managedBy | string Enum: "" "api" "config" Where this dimension must be managed from. If not set (empty string), it can be managed from anywhere. |
{- "id": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "managedBy": ""
}| id required | string |
| description required | string |
| toggleOnList required | boolean |
| defaultState required | boolean |
| projects required | Array of strings |
| parent | string |
{- "id": "string",
- "description": "string",
- "toggleOnList": true,
- "defaultState": true,
- "projects": [
- "string"
], - "parent": "string"
}| id required | string |
| trackingKey required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| name required | string |
| type required | string Enum: "standard" "multi-armed-bandit" |
| project required | string |
| hypothesis required | string |
| description required | string |
| tags required | Array of strings |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| archived required | boolean |
| status required | string |
| autoRefresh required | boolean |
| hashAttribute required | string |
| fallbackAttribute | string |
required | 1 (number) or 2 (number) |
| disableStickyBucketing | boolean |
| bucketVersion | number |
| minBucketVersion | number |
required | Array of objects |
required | Array of objects |
required | object (ExperimentAnalysisSettings) |
object | |
| shareLevel | string Enum: "public" "organization" |
| publicUrl | string |
| banditScheduleValue | number |
| banditScheduleUnit | string Enum: "days" "hours" |
| banditBurnInValue | number |
| banditBurnInUnit | string Enum: "days" "hours" |
| banditConversionWindowValue | number |
| banditConversionWindowUnit | string Enum: "days" "hours" |
| linkedFeatures | Array of strings |
| hasVisualChangesets | boolean |
| hasURLRedirects | boolean |
object | |
Array of objects Custom slices that apply to ALL applicable metrics in the experiment | |
| defaultDashboardId | string ID of the default dashboard for this experiment. |
| templateId | string |
{- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string"
}| datasourceId required | string |
| assignmentQueryId required | string |
| experimentId required | string |
| segmentId required | string |
| queryFilter required | string |
| inProgressConversions required | string Enum: "include" "exclude" |
| attributionModel required | string Enum: "firstExposure" "experimentDuration" "lookbackOverride" Setting attribution model to |
object (LookbackOverride) Controls the lookback override for the experiment. For type "window", value must be a non-negative number and valueUnit is required. | |
| statsEngine required | string Enum: "bayesian" "frequentist" |
| regressionAdjustmentEnabled | boolean |
| sequentialTestingEnabled | boolean |
| sequentialTestingTuningParameter | number |
boolean or null When null, the organization default is used. | |
object (ExperimentDecisionFrameworkSettings) Controls the decision framework and metric overrides for the experiment. Replaces the entire stored object on update (does not patch individual fields). | |
Array of objects (ExperimentMetricOverrideEntry) Per-metric analysis overrides; also reflected in goals/secondaryMetrics/guardrails overrides when applicable. On create/update, this replaces the entire stored array (it does not patch individual entries). | |
required | Array of objects (ExperimentMetric) |
required | Array of objects (ExperimentMetric) |
required | Array of objects (ExperimentMetric) |
object (ExperimentMetric) |
{- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}| decisionCriteriaId | string |
Array of objects |
{- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}| metricId required | string |
required | object |
{- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}| id required | string ID of the metric to override settings for. |
| windowType | string Enum: "conversion" "lookback" "" |
| windowHours | number |
| delayHours | number |
| properPriorOverride | boolean Must be true for the override to take effect. If true, the other proper prior settings in this object will be used if present. |
| properPriorEnabled | boolean |
| properPriorMean | number |
| properPriorStdDev | number |
| regressionAdjustmentOverride | boolean Must be true for the override to take effect. If true, the other regression adjustment settings in this object will be used if present. |
| regressionAdjustmentEnabled | boolean |
| regressionAdjustmentDays | number |
{- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}| id required | string |
| dateUpdated required | string |
| experimentId required | string |
| phase required | string |
| dateStart required | string |
| dateEnd required | string |
required | object |
required | object (ExperimentAnalysisSettings) |
| queryIds required | Array of strings |
required | Array of objects |
{- "id": "string",
- "dateUpdated": "string",
- "experimentId": "string",
- "phase": "string",
- "dateStart": "string",
- "dateEnd": "string",
- "dimension": {
- "type": "string",
- "id": "string"
}, - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "queryIds": [
- "string"
], - "results": [
- {
- "dimension": "string",
- "totalUsers": 0,
- "checks": {
- "srm": 0
}, - "metrics": [
- {
- "metricId": "string",
- "variations": [
- {
- "variationId": "string",
- "users": 0,
- "analyses": [
- {
- "engine": "bayesian",
- "numerator": 0,
- "denominator": 0,
- "mean": 0,
- "stddev": 0,
- "percentChange": 0,
- "ciLow": 0,
- "ciHigh": 0,
- "pValue": 0,
- "risk": 0,
- "chanceToBeatControl": 0
}
]
}
]
}
]
}
]
}| id required | string |
| experiment required | string |
| status required | string |
{- "id": "string",
- "experiment": "string",
- "status": "string"
}| id required | string |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| project | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
required | object |
| type required | string Value: "standard" |
| hypothesis | string |
| description | string |
| tags | Array of strings |
object | |
| datasource required | string |
| exposureQueryId required | string |
| hashAttribute | string |
| fallbackAttribute | string |
| disableStickyBucketing | boolean |
| goalMetrics | Array of strings |
| secondaryMetrics | Array of strings |
| guardrailMetrics | Array of strings |
| activationMetric | string |
| statsEngine required | string Enum: "bayesian" "frequentist" |
| segment | string |
| skipPartialData | boolean |
required | object |
Array of objects |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "project": "string",
- "owner": "string",
- "ownerEmail": "string",
- "templateMetadata": {
- "name": "string",
- "description": "string"
}, - "type": "standard",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "customFields": {
- "property1": "string",
- "property2": "string"
}, - "datasource": "string",
- "exposureQueryId": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "goalMetrics": [
- "string"
], - "secondaryMetrics": [
- "string"
], - "guardrailMetrics": [
- "string"
], - "activationMetric": "string",
- "statsEngine": "bayesian",
- "segment": "string",
- "skipPartialData": true,
- "targeting": {
- "coverage": 0,
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "condition": "string"
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
]
}| id required | string |
| trackingKey required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| name required | string |
| type required | string Enum: "standard" "multi-armed-bandit" |
| project required | string |
| hypothesis required | string |
| description required | string |
| tags required | Array of strings |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| archived required | boolean |
| status required | string |
| autoRefresh required | boolean |
| hashAttribute required | string |
| fallbackAttribute | string |
required | 1 (number) or 2 (number) |
| disableStickyBucketing | boolean |
| bucketVersion | number |
| minBucketVersion | number |
required | Array of objects |
required | Array of objects |
required | object (ExperimentAnalysisSettings) |
object | |
| shareLevel | string Enum: "public" "organization" |
| publicUrl | string |
| banditScheduleValue | number |
| banditScheduleUnit | string Enum: "days" "hours" |
| banditBurnInValue | number |
| banditBurnInUnit | string Enum: "days" "hours" |
| banditConversionWindowValue | number |
| banditConversionWindowUnit | string Enum: "days" "hours" |
| linkedFeatures | Array of strings |
| hasVisualChangesets | boolean |
| hasURLRedirects | boolean |
object | |
Array of objects Custom slices that apply to ALL applicable metrics in the experiment | |
| defaultDashboardId | string ID of the default dashboard for this experiment. |
| templateId | string |
object |
{- "id": "string",
- "trackingKey": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "type": "standard",
- "project": "string",
- "hypothesis": "string",
- "description": "string",
- "tags": [
- "string"
], - "owner": "string",
- "ownerEmail": "string",
- "archived": true,
- "status": "string",
- "autoRefresh": true,
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "hashVersion": 1,
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "variations": [
- {
- "variationId": "string",
- "key": "string",
- "name": "string",
- "description": "string",
- "screenshots": [
- "string"
]
}
], - "phases": [
- {
- "name": "string",
- "dateStarted": "string",
- "dateEnded": "string",
- "reasonForStopping": "string",
- "seed": "string",
- "coverage": 0,
- "trafficSplit": [
- {
- "variationId": "string",
- "weight": 0
}
], - "namespace": {
- "namespaceId": "string",
- "enabled": true,
- "range": [
- 0,
- 0
], - "ranges": [
- [
- 0,
- 0
]
]
}, - "targetingCondition": "string",
- "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
]
}
], - "settings": {
- "datasourceId": "string",
- "assignmentQueryId": "string",
- "experimentId": "string",
- "segmentId": "string",
- "queryFilter": "string",
- "inProgressConversions": "include",
- "attributionModel": "firstExposure",
- "lookbackOverride": {
- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}, - "statsEngine": "bayesian",
- "regressionAdjustmentEnabled": true,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "postStratificationEnabled": true,
- "decisionFrameworkSettings": {
- "decisionCriteriaId": "string",
- "decisionFrameworkMetricOverrides": [
- {
- "id": "string",
- "targetMDE": 0
}
]
}, - "metricOverrides": [
- {
- "id": "string",
- "windowType": "conversion",
- "windowHours": 0,
- "delayHours": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
], - "goals": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "secondaryMetrics": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "guardrails": [
- {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
], - "activationMetric": {
- "metricId": "string",
- "overrides": {
- "delayHours": 0,
- "windowHours": 0,
- "window": "conversion",
- "winRiskThreshold": 0,
- "loseRiskThreshold": 0,
- "properPriorOverride": true,
- "properPriorEnabled": true,
- "properPriorMean": 0,
- "properPriorStdDev": 0,
- "regressionAdjustmentOverride": true,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0
}
}
}, - "resultSummary": {
- "status": "string",
- "winner": "string",
- "conclusions": "string",
- "releasedVariationId": "string",
- "excludeFromPayload": true
}, - "shareLevel": "public",
- "publicUrl": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "days",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "days",
- "banditConversionWindowValue": 0,
- "banditConversionWindowUnit": "days",
- "linkedFeatures": [
- "string"
], - "hasVisualChangesets": true,
- "hasURLRedirects": true,
- "customFields": {
- "property1": null,
- "property2": null
}, - "customMetricSlices": [
- {
- "slices": [
- {
- "column": "string",
- "levels": [
- "string"
]
}
]
}
], - "defaultDashboardId": "string",
- "templateId": "string",
- "enhancedStatus": {
- "status": "Running",
- "detailedStatus": "string"
}
}| id required | string |
| name required | string |
| description required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| projects required | Array of strings |
| tags required | Array of strings |
| datasource required | string |
| metricType required | string Enum: "proportion" "retention" "mean" "quantile" "ratio" "dailyParticipation" |
required | object |
object | |
| inverse required | boolean Set to true for things like Bounce Rate, where you want the metric to decrease |
object Controls the settings for quantile metrics (mandatory if metricType is "quantile") | |
required | object Controls how outliers are handled |
required | object Controls the conversion window for the metric |
required | object Controls the bayesian prior for the metric |
required | object Controls the regression adjustment (CUPED) settings for the metric |
| riskThresholdSuccess required | number |
| riskThresholdDanger required | number |
| displayAsPercentage | boolean If true and the metric is a ratio metric, variation means will be displayed as a percentage |
| minPercentChange required | number |
| maxPercentChange required | number |
| minSampleSize required | number |
| targetMDE required | number |
| managedBy required | string Enum: "" "api" "admin" Where this fact metric must be managed from. If not set (empty string), it can be managed from anywhere. |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| archived | boolean |
| metricAutoSlices | Array of strings Array of slice column names that will be automatically included in metric analysis. This is an enterprise feature. |
{- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "metricType": "proportion",
- "numerator": {
- "factTableId": "string",
- "column": "string",
- "aggregation": "sum",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
], - "aggregateFilterColumn": "string",
- "aggregateFilter": "string"
}, - "denominator": {
- "factTableId": "string",
- "column": "string",
- "filters": [
- "string"
], - "inlineFilters": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "rowFilters": [
- {
- "operator": "=",
- "values": [
- "string"
], - "column": "string"
}
]
}, - "inverse": true,
- "quantileSettings": {
- "type": "event",
- "ignoreZeros": true,
- "quantile": 0.001
}, - "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "regressionAdjustmentSettings": {
- "override": true,
- "enabled": true,
- "days": 0
}, - "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "displayAsPercentage": true,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "metricAutoSlices": [
- "string"
]
}| id required | string |
| name required | string |
| description required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| projects required | Array of strings |
| tags required | Array of strings |
| datasource required | string |
| userIdTypes required | Array of strings |
| sql required | string |
| eventName | string The event name used in SQL template variables |
Array of objects (FactTableColumn) Array of column definitions for this fact table | |
string or null Error message if there was an issue parsing the SQL schema | |
| archived | boolean |
| managedBy required | string Enum: "" "api" "admin" Where this fact table must be managed from. If not set (empty string), it can be managed from anywhere. |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
{- "id": "string",
- "name": "string",
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "projects": [
- "string"
], - "tags": [
- "string"
], - "datasource": "string",
- "userIdTypes": [
- "string"
], - "sql": "string",
- "eventName": "string",
- "columns": [
- {
- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
], - "columnsError": "string",
- "archived": true,
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}| column required | string The actual column name in the database/SQL query |
| datatype required | string Enum: "number" "string" "date" "boolean" "json" "other" "" |
| numberFormat | string Enum: "" "currency" "time:seconds" "memory:bytes" "memory:kilobytes" |
object For JSON columns, defines the structure of nested fields | |
| name | string Display name for the column (can be different from the actual column name) |
| description | string |
| alwaysInlineFilter | boolean Default: false Whether this column should always be included as an inline filter in queries |
| deleted | boolean Default: false |
| isAutoSliceColumn | boolean Default: false Whether this column can be used for auto slice analysis. This is an enterprise feature. |
| autoSlices | Array of strings Specific slices to automatically analyze for this column. |
| lockedAutoSlices | Array of strings Locked slices that are protected from automatic updates. These will always be included in the slice levels even if they're not in the top values query results. |
| dateCreated | string <date-time> |
| dateUpdated | string <date-time> |
{- "column": "string",
- "datatype": "number",
- "numberFormat": "",
- "jsonFields": {
- "property1": {
- "datatype": "number"
}, - "property2": {
- "datatype": "number"
}
}, - "name": "string",
- "description": "string",
- "alwaysInlineFilter": false,
- "deleted": false,
- "isAutoSliceColumn": false,
- "autoSlices": [
- "string"
], - "lockedAutoSlices": [
- "string"
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}| id required | string |
| name required | string |
| description required | string |
| value required | string |
| managedBy required | string Enum: "" "api" Where this fact table filter must be managed from. If not set (empty string), it can be managed from anywhere. |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
{- "id": "string",
- "name": "string",
- "description": "string",
- "value": "string",
- "managedBy": "",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}| id required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| archived required | boolean |
| description required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| project required | string |
| valueType required | string Enum: "boolean" "string" "number" "json" |
| defaultValue required | string |
| tags required | Array of strings |
required | object |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
required | object |
object | |
object or null |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}required | string or number or Array of any or object or null |
Array of objects |
{- "defaultValue": "string",
- "rules": [
- {
- "force": "string",
- "weights": [
- 0
], - "variations": [
- "string"
], - "hashAttribute": "string",
- "namespace": [
- 0,
- 0,
- 0
], - "key": "string",
- "coverage": 0,
- "condition": {
- "property1": null,
- "property2": null
}
}
]
}| enabled required | boolean |
| defaultValue required | string |
required | Array of FeatureForceRule (object) or FeatureRolloutRule (object) or FeatureExperimentRule (object) or FeatureExperimentRefRule (object) or FeatureSafeRolloutRule (object) (FeatureRule) |
| definition | string A JSON stringified FeatureDefinition |
object |
{- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}| enabled required | boolean |
| defaultValue required | string |
| definition | string A JSON stringified FeatureDefinition |
{- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "experiment-ref" |
required | Array of objects |
| experimentId required | string |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "experiment-ref",
- "variations": [
- {
- "value": "string",
- "variationId": "string"
}
], - "experimentId": "string"
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "experiment" |
| trackingKey | string |
| hashAttribute | string |
| fallbackAttribute | string |
| disableStickyBucketing | boolean |
| bucketVersion | number |
| minBucketVersion | number |
object | |
| coverage | number [ 0 .. 1 ] |
Array of objects Variation values with weights |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "experiment",
- "trackingKey": "string",
- "hashAttribute": "string",
- "fallbackAttribute": "string",
- "disableStickyBucketing": true,
- "bucketVersion": 0,
- "minBucketVersion": 0,
- "namespace": {
- "enabled": true,
- "name": "string",
- "range": [
- 0,
- 0
]
}, - "coverage": 1,
- "value": [
- {
- "value": "string",
- "weight": 0,
- "name": "string"
}
]
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "force" |
| value required | string |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}| featureId required | string The feature this revision belongs to |
| baseVersion required | integer |
| version required | integer |
| comment required | string |
| date required | string <date-time> |
| status required | string |
| createdBy | string |
| publishedBy | string |
| defaultValue | string The default value at the time this revision was created |
required | object |
object | |
object Per-environment enabled state captured in this revision (only present when kill-switch gating is enabled) | |
object Per-environment prerequisites captured in this revision (only present when prerequisite gating is enabled) | |
Array of objects Feature-level prerequisites captured in this revision (only present when prerequisite gating is enabled) | |
object Metadata fields captured in this revision (only present when metadata gating is enabled) |
{- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}| featureId required | string The feature this revision belongs to |
| baseVersion required | integer |
| version required | integer |
| comment required | string |
| date required | string <date-time> |
| status required | string |
| createdBy | string |
| publishedBy | string |
| defaultValue | string The default value at the time this revision was created |
required | Array of FeatureForceRule (object) or FeatureRolloutRule (object) or FeatureExperimentRule (object) or FeatureExperimentRefRule (object) or FeatureSafeRolloutRule (object) (FeatureRuleV2) Unified rules array. Each rule carries its own environment scope via |
object | |
object Per-environment enabled state captured in this revision (only present when kill-switch gating is enabled) | |
object Per-environment prerequisites captured in this revision (only present when prerequisite gating is enabled) | |
Array of objects Feature-level prerequisites captured in this revision (only present when prerequisite gating is enabled) | |
object Metadata fields captured in this revision (only present when metadata gating is enabled) |
{- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "rollout" |
| value required | string |
| coverage required | number [ 0 .. 1 ] |
| hashAttribute required | string |
| seed | string Optional seed for the hash function; defaults to the rule id |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "rollout",
- "value": "string",
- "coverage": 1,
- "hashAttribute": "string",
- "seed": "string"
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "force" |
| value required | string |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "force" |
| value required | string |
| allEnvironments required | boolean When true the rule applies to all environments. When false only the environments listed in |
| environments | Array of strings The environment IDs this rule is active in. Populated when |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}| description required | string |
| condition | string |
| id required | string |
| enabled required | boolean |
Array of objects (ScheduleRule) Simple time-based on/off schedule for this rule | |
| scheduleType | string Enum: "none" "schedule" "ramp" UI hint for which scheduling mode is active:
|
Array of objects | |
Array of objects | |
| type required | string Value: "safe-rollout" |
| controlValue required | string |
| variationValue required | string |
| seed | string |
| hashAttribute | string |
| trackingKey | string |
| safeRolloutId | string |
| status | string Enum: "running" "released" "rolled-back" "stopped" |
{- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "safe-rollout",
- "controlValue": "string",
- "variationValue": "string",
- "seed": "string",
- "hashAttribute": "string",
- "trackingKey": "string",
- "safeRolloutId": "string",
- "status": "running"
}| id required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| archived required | boolean |
| description required | string |
| owner required | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| project required | string |
| valueType required | string Enum: "boolean" "string" "number" "json" |
| defaultValue required | string |
| tags required | Array of strings |
required | Array of FeatureForceRule (object) or FeatureRolloutRule (object) or FeatureExperimentRule (object) or FeatureExperimentRefRule (object) or FeatureSafeRolloutRule (object) (FeatureRuleV2) Unified rules array. Each rule carries its own environment scope via |
required | object Per-environment enabled state and SDK payload. Rules are on the top-level |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
required | object |
object | |
object or null |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}
}| id required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| archived required | boolean |
| description required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| project required | string |
| valueType required | string Enum: "boolean" "string" "number" "json" |
| defaultValue required | string |
| tags required | Array of strings |
required | object |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
required | object |
object | |
object or null | |
Array of objects (FeatureRevision) |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "ownerEmail": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string",
- "draft": {
- "enabled": true,
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "definition": "string"
}
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}, - "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": {
- "property1": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
], - "property2": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string"
}
]
}, - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
]
}| id required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| archived required | boolean |
| description required | string |
| owner required | string The userId or email address of the owner. If an email address is provided, it will be used to look up the userId of the matching organization member. If an ID is provided, it will be validated as existing in the organization. |
| project required | string |
| valueType required | string Enum: "boolean" "string" "number" "json" |
| defaultValue required | string |
| tags required | Array of strings |
required | Array of FeatureForceRule (object) or FeatureRolloutRule (object) or FeatureExperimentRule (object) or FeatureExperimentRefRule (object) or FeatureSafeRolloutRule (object) (FeatureRuleV2) Unified rules array. Each rule carries its own environment scope via |
required | object Per-environment enabled state and SDK payload. Rules are on the top-level |
| prerequisites | Array of strings Feature IDs. Each feature must evaluate to |
required | object |
object | |
object or null | |
Array of objects (FeatureRevisionV2) |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "archived": true,
- "description": "string",
- "owner": "string",
- "project": "string",
- "valueType": "boolean",
- "defaultValue": "string",
- "tags": [
- "string"
], - "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "environments": {
- "property1": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}, - "property2": {
- "enabled": true,
- "defaultValue": "string",
- "definition": "string"
}
}, - "prerequisites": [
- "string"
], - "revision": {
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "createdBy": "string",
- "publishedBy": "string"
}, - "customFields": {
- "property1": null,
- "property2": null
}, - "holdout": {
- "id": "string",
- "value": "string"
}, - "revisions": [
- {
- "featureId": "string",
- "baseVersion": 0,
- "version": 0,
- "comment": "string",
- "date": "2019-08-24T14:15:22Z",
- "status": "string",
- "createdBy": "string",
- "publishedBy": "string",
- "defaultValue": "string",
- "rules": [
- {
- "description": "string",
- "condition": "string",
- "id": "string",
- "enabled": true,
- "scheduleRules": [
- {
- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}
], - "scheduleType": "none",
- "savedGroupTargeting": [
- {
- "matchType": "all",
- "savedGroups": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "type": "force",
- "value": "string",
- "allEnvironments": true,
- "environments": [
- "string"
]
}
], - "definitions": {
- "property1": "string",
- "property2": "string"
}, - "environmentsEnabled": {
- "property1": true,
- "property2": true
}, - "envPrerequisites": {
- "property1": [
- {
- "id": "string",
- "condition": "string"
}
], - "property2": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "metadata": {
- "description": "string",
- "owner": "string",
- "project": "string",
- "tags": [
- "string"
], - "neverStale": true,
- "valueType": "string",
- "jsonSchema": {
- "schemaType": "schema",
- "schema": "string",
- "simple": {
- "property1": null,
- "property2": null
}, - "date": "2019-08-24T14:15:22Z",
- "enabled": true
}, - "customFields": {
- "property1": null,
- "property2": null
}
}
}
]
}| id required | string |
| datasourceId required | string |
| status required | string Enum: "PENDING" "COMPLETE" |
object | |
required | Array of objects |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
{- "id": "string",
- "datasourceId": "string",
- "status": "PENDING",
- "error": {
- "errorType": "generic",
- "message": "string"
}, - "databases": [
- {
- "databaseName": "string",
- "path": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "schemas": [
- {
- "schemaName": "string",
- "path": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "tables": [
- {
- "tableName": "string",
- "path": "string",
- "id": "string",
- "numOfColumns": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}
]
}
]
}
], - "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}| id required | string |
| datasourceId required | string |
| informationSchemaId required | string |
| tableName required | string |
| tableSchema required | string |
| databaseName required | string |
required | Array of objects |
| refreshMS required | number |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
{- "id": "string",
- "datasourceId": "string",
- "informationSchemaId": "string",
- "tableName": "string",
- "tableSchema": "string",
- "databaseName": "string",
- "columns": [
- {
- "columnName": "string",
- "dataType": "string"
}
], - "refreshMS": 0,
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}| type required | string Enum: "date" "window" |
required | number or string For "window" type - non-negative numeric value (e.g. 7 for 7 days). For "date" type a date string. |
| valueUnit | string Enum: "minutes" "hours" "days" "weeks" Used when type is "window". Defaults to "days". |
{- "type": "date",
- "value": 0,
- "valueUnit": "minutes"
}| id required | string |
| name | string |
| email required | string |
| globalRole required | string |
| environments | Array of strings |
| limitAccessByEnvironment | boolean |
| managedbyIdp | boolean |
| teams | Array of strings |
Array of objects | |
| lastLoginDate | string <date-time> |
| dateCreated | string <date-time> |
| dateUpdated | string <date-time> |
{- "id": "string",
- "name": "string",
- "email": "string",
- "globalRole": "string",
- "environments": [
- "string"
], - "limitAccessByEnvironment": true,
- "managedbyIdp": true,
- "teams": [
- "string"
], - "projectRoles": [
- {
- "project": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
]
}
], - "lastLoginDate": "2019-08-24T14:15:22Z",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z"
}| id required | string |
| managedBy required | string Enum: "" "api" "config" "admin" Where this metric must be managed from. If not set (empty string), it can be managed from anywhere. |
| dateCreated required | string |
| dateUpdated required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| datasourceId required | string |
| name required | string |
| description required | string |
| type required | string Enum: "binomial" "count" "duration" "revenue" |
| tags required | Array of strings |
| projects required | Array of strings |
| archived required | boolean |
required | object |
object | |
object | |
object |
{- "id": "string",
- "managedBy": "",
- "dateCreated": "string",
- "dateUpdated": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "name": "string",
- "description": "string",
- "type": "binomial",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "archived": true,
- "behavior": {
- "goal": "increase",
- "cappingSettings": {
- "type": "none",
- "value": 0,
- "ignoreZeros": true
}, - "cap": 0,
- "capping": "absolute",
- "capValue": 0,
- "windowSettings": {
- "type": "none",
- "delayValue": 0,
- "delayUnit": "minutes",
- "windowValue": 0,
- "windowUnit": "minutes"
}, - "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "conversionWindowStart": 0,
- "conversionWindowEnd": 0,
- "riskThresholdSuccess": 0,
- "riskThresholdDanger": 0,
- "minPercentChange": 0,
- "maxPercentChange": 0,
- "minSampleSize": 0,
- "targetMDE": 0
}, - "sql": {
- "identifierTypes": [
- "string"
], - "conversionSQL": "string",
- "userAggregationSQL": "string",
- "denominatorMetricId": "string"
}, - "sqlBuilder": {
- "identifierTypeColumns": [
- {
- "identifierType": "string",
- "columnName": "string"
}
], - "tableName": "string",
- "valueColumnName": "string",
- "timestampColumnName": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "string",
- "value": "string"
}
]
}, - "mixpanel": {
- "eventName": "string",
- "eventValue": "string",
- "userAggregation": "string",
- "conditions": [
- {
- "property": "string",
- "operator": "string",
- "value": "string"
}
]
}
}| id required | string The ID of the created metric analysis |
| status required | string The status of the analysis (e.g., "running", "completed", "error") |
object |
{- "id": "string",
- "status": "string",
- "settings": {
- "property1": null,
- "property2": null
}
}| id required | string |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| name required | string |
| description required | string |
| tags required | Array of strings |
| projects required | Array of strings |
| metrics required | Array of strings |
| datasource required | string |
| archived required | boolean |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "owner": "string",
- "ownerEmail": "string",
- "name": "string",
- "description": "string",
- "tags": [
- "string"
], - "projects": [
- "string"
], - "metrics": [
- "string"
], - "datasource": "string",
- "archived": true
}| metricId required | string The metric ID |
| error | string Set when the metric does not exist or the caller has no permission to read it. |
Array of objects List of experiments using this metric | |
string or null The most recent snapshot attempt across all experiments using this metric |
{- "metricId": "string",
- "error": "string",
- "experiments": [
- {
- "experimentId": "string",
- "experimentStatus": "draft",
- "lastSnapshotAttempt": "2019-08-24T14:15:22Z"
}
], - "lastSnapshotAttempt": "2019-08-24T14:15:22Z"
}| id required | string The unique internal identifier for the namespace (e.g. 'ns-abc123'). |
| displayName required | string Human-readable display name. |
| description required | string |
| status required | string Enum: "active" "inactive" |
| format required | string Enum: "legacy" "multiRange" Namespace format. 'multiRange' supports multiple ranges per experiment and a configurable hash attribute. |
| hashAttribute | string The user attribute used to assign bucket membership. Only present on multiRange namespaces. |
| seed | string The seed used for bucket hashing. Changing this re-randomizes which traffic is eligible for which experiment. Use the rotateSeed endpoint to change it. |
{- "id": "string",
- "displayName": "string",
- "description": "string",
- "status": "active",
- "format": "legacy",
- "hashAttribute": "string",
- "seed": "string"
}| id required | string The internal experiment ID. |
| name required | string Display name of the experiment. |
| trackingKey required | string The experiment tracking key used by the SDK. |
| status required | string Enum: "draft" "running" "stopped" The current status of the experiment. |
required | Array of items The ranges claimed within this namespace, as [start, end] pairs between 0 and 1. |
{- "id": "string",
- "name": "string",
- "trackingKey": "string",
- "status": "draft",
- "ranges": [
- [
- 0,
- 0
]
]
}| id | string The Growthbook unique identifier for the organization |
| externalId | string An optional identifier that you use within your company for the organization |
| dateCreated | string <date-time> The date the organization was created |
| name | string The name of the organization |
| ownerEmail | string The email address of the organization owner |
{- "id": "string",
- "externalId": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "name": "string",
- "ownerEmail": "string"
}| limit required | integer |
| offset required | integer |
| count required | integer |
| total required | integer |
| hasMore required | boolean |
required | integer or null |
{- "limit": 0,
- "offset": 0,
- "count": 0,
- "total": 0,
- "hasMore": true,
- "nextOffset": 0
}| id required | string |
| name required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| description | string |
| publicId | string URL-safe slug used in SDK payload metadata. Auto-generated from name if not provided. |
object |
{- "id": "string",
- "name": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "description": "string",
- "publicId": "string",
- "settings": {
- "statsEngine": "string",
- "confidenceLevel": 0,
- "pValueThreshold": 0
}
}| id required | string |
| organization required | string |
| datasource required | string |
| language required | string |
| query required | string |
| queryType required | string |
| createdAt required | string |
| startedAt required | string |
| status required | string Enum: "running" "queued" "failed" "partially-succeeded" "succeeded" |
| externalId required | string |
| dependencies required | Array of strings |
| runAtEnd required | boolean |
{- "id": "string",
- "organization": "string",
- "datasource": "string",
- "language": "string",
- "query": "string",
- "queryType": "string",
- "createdAt": "string",
- "startedAt": "string",
- "status": "running",
- "externalId": "string",
- "dependencies": [
- "string"
], - "runAtEnd": true
}| id required | string Unique identifier (rs_ prefix) |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| name required | string |
| entityType required | string Value: "feature" |
| entityId required | string |
required | Array of objects Controlled entity references |
required | Array of objects Ordered ramp steps |
Array of objects Actions applied on top of all step patches when the ramp completes. Represents the final desired rule state. | |
string or null When the ramp fires. Absent/null means immediately on publish; set to a future datetime to delay start and keep the rule disabled until that time. | |
object or null Optional hard deadline for standard (no-step) schedules | |
| status required | string Enum: "pending" "ready" "running" "paused" "pending-approval" "completed" "rolled-back" |
| currentStepIndex required | integer >= -1 Index of current step; -1 = not yet started |
string or null | |
string or null Anchor for cumulative interval timing; resets after each approval gate | |
string or null | |
required | string or null When the next step fires; null for approval steps and terminal states |
string or null | |
integer or null Milliseconds since startedAt (computed at response time, not stored) |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "entityType": "feature",
- "entityId": "string",
- "targets": [
- {
- "id": "string",
- "entityType": "feature",
- "entityId": "string",
- "ruleId": "string",
- "environment": "string",
- "status": "pending-join",
- "activatingRevisionVersion": 0
}
], - "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endActions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "force": null,
- "enabled": true
}
}
], - "startDate": "2019-08-24T14:15:22Z",
- "endCondition": {
- "trigger": {
- "type": "scheduled",
- "at": "2019-08-24T14:15:22Z"
}
}, - "status": "pending",
- "currentStepIndex": -1,
- "startedAt": "2019-08-24T14:15:22Z",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "pausedAt": "2019-08-24T14:15:22Z",
- "nextStepAt": "2019-08-24T14:15:22Z",
- "nextProcessAt": "2019-08-24T14:15:22Z",
- "elapsedMs": 0
}| id required | string |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| name required | string |
required | Array of objects |
object | |
| official | boolean |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "steps": [
- {
- "trigger": {
- "type": "interval",
- "seconds": 0
}, - "actions": [
- {
- "targetType": "feature-rule",
- "targetId": "string",
- "patch": {
- "ruleId": "string",
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
], - "enabled": true
}
}
], - "approvalNotes": "string"
}
], - "endPatch": {
- "coverage": 1,
- "condition": "string",
- "savedGroups": [
- {
- "match": "all",
- "ids": [
- "string"
]
}
], - "prerequisites": [
- {
- "id": "string",
- "condition": "string"
}
]
}, - "official": true
}| id required | string |
| type required | string Enum: "condition" "list" |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| name required | string |
| owner | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| condition | string When type = 'condition', this is the JSON-encoded condition for the group |
| attributeKey | string When type = 'list', this is the attribute key the group is based on |
| values | Array of strings When type = 'list', this is the list of values for the attribute key |
| description | string |
| projects | Array of strings |
{- "id": "string",
- "type": "condition",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "owner": "string",
- "ownerEmail": "string",
- "condition": "string",
- "attributeKey": "string",
- "values": [
- "string"
], - "description": "string",
- "projects": [
- "string"
]
}| enabled required | boolean Whether the rule should be enabled or disabled at the specified timestamp. |
required | string or null ISO timestamp when the rule should activate. |
{- "enabled": true,
- "timestamp": "2019-08-24T14:15:22Z"
}| id required | string |
| dateCreated required | string <date-time> |
| dateUpdated required | string <date-time> |
| name required | string |
| organization required | string |
| languages required | Array of strings |
| sdkVersion | string |
| environment required | string |
| project required | string Use 'projects' instead. This is only for backwards compatibility and contains the first project only. |
| projects | Array of strings |
| encryptPayload required | boolean |
| encryptionKey required | string |
| includeVisualExperiments | boolean |
| includeDraftExperiments | boolean |
| includeExperimentNames | boolean |
| includeRedirectExperiments | boolean |
| includeRuleIds | boolean |
| includeProjectIdInMetadata | boolean |
| includeCustomFieldsInMetadata | boolean |
| allowedCustomFieldsInMetadata | Array of strings |
| includeTagsInMetadata | boolean |
| key required | string |
| proxyEnabled required | boolean |
| proxyHost required | string |
| proxySigningKey required | string |
| sseEnabled | boolean |
| hashSecureAttributes | boolean |
| remoteEvalEnabled | boolean |
| savedGroupReferencesEnabled | boolean |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "organization": "string",
- "languages": [
- "string"
], - "sdkVersion": "string",
- "environment": "string",
- "project": "string",
- "projects": [
- "string"
], - "encryptPayload": true,
- "encryptionKey": "string",
- "includeVisualExperiments": true,
- "includeDraftExperiments": true,
- "includeExperimentNames": true,
- "includeRedirectExperiments": true,
- "includeRuleIds": true,
- "includeProjectIdInMetadata": true,
- "includeCustomFieldsInMetadata": true,
- "allowedCustomFieldsInMetadata": [
- "string"
], - "includeTagsInMetadata": true,
- "key": "string",
- "proxyEnabled": true,
- "proxyHost": "string",
- "proxySigningKey": "string",
- "sseEnabled": true,
- "hashSecureAttributes": true,
- "remoteEvalEnabled": true,
- "savedGroupReferencesEnabled": true
}| id required | string |
| owner required | string The userId of the owner (or raw owner name/email for legacy records) |
| ownerEmail | string The email address of the owner, when the owner can be resolved to a known user. |
| datasourceId required | string |
| identifierType required | string |
| name required | string |
| description | string |
| query | string |
| dateCreated required | string |
| dateUpdated required | string |
| managedBy | string Enum: "" "api" "config" Where this segment must be managed from. If not set (empty string), it can be managed from anywhere. |
| type | string Enum: "SQL" "FACT" |
| factTableId | string |
| filters | Array of strings |
| projects | Array of strings |
{- "id": "string",
- "owner": "string",
- "ownerEmail": "string",
- "datasourceId": "string",
- "identifierType": "string",
- "name": "string",
- "description": "string",
- "query": "string",
- "dateCreated": "string",
- "dateUpdated": "string",
- "managedBy": "",
- "type": "SQL",
- "factTableId": "string",
- "filters": [
- "string"
], - "projects": [
- "string"
]
}| confidenceLevel required | number |
required | object or null |
required | object |
| pastExperimentsMinLength required | number |
| metricAnalysisDays required | number |
required | object or null |
| multipleExposureMinPercent required | number |
required | object |
| statsEngine required | string |
| pValueThreshold required | number |
| regressionAdjustmentEnabled required | boolean |
| regressionAdjustmentDays required | number |
| sequentialTestingEnabled required | boolean |
| sequentialTestingTuningParameter required | number |
| attributionModel required | string Enum: "firstExposure" "experimentDuration" "lookbackOverride" |
| targetMDE required | number |
| delayHours required | number |
| windowType required | string |
| windowHours required | number |
| winRisk required | number |
| loseRisk required | number |
| secureAttributeSalt required | string |
| killswitchConfirmation required | boolean |
| featureKillSwitchBehavior | string Enum: "off" "warn" |
required | Array of objects |
| restApiBypassesReviews | boolean |
| featureKeyExample required | string |
| featureRegexValidator required | string |
| banditScheduleValue required | number |
| banditScheduleUnit required | string Enum: "hours" "days" |
| banditBurnInValue required | number |
| banditBurnInUnit required | string Enum: "hours" "days" |
| experimentMinLengthDays required | number |
number or null | |
string or null | |
| maxMetricSliceLevels | number |
{- "confidenceLevel": 0,
- "northStar": {
- "title": "string",
- "metricIds": [
- "string"
]
}, - "metricDefaults": {
- "priorSettings": {
- "override": true,
- "proper": true,
- "mean": 0,
- "stddev": 0
}, - "minimumSampleSize": 0,
- "maxPercentageChange": 0,
- "minPercentageChange": 0,
- "targetMDE": 0
}, - "pastExperimentsMinLength": 0,
- "metricAnalysisDays": 0,
- "updateSchedule": {
- "type": "cron",
- "cron": "string",
- "hours": 0
}, - "multipleExposureMinPercent": 0,
- "defaultRole": {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
]
}, - "statsEngine": "string",
- "pValueThreshold": 0,
- "regressionAdjustmentEnabled": true,
- "regressionAdjustmentDays": 0,
- "sequentialTestingEnabled": true,
- "sequentialTestingTuningParameter": 0,
- "attributionModel": "firstExposure",
- "targetMDE": 0,
- "delayHours": 0,
- "windowType": "string",
- "windowHours": 0,
- "winRisk": 0,
- "loseRisk": 0,
- "secureAttributeSalt": "string",
- "killswitchConfirmation": true,
- "featureKillSwitchBehavior": "off",
- "requireReviews": [
- {
- "requireReviewOn": true,
- "resetReviewOnChange": true,
- "environments": [
- "string"
], - "projects": [
- "string"
], - "featureRequireEnvironmentReview": true,
- "featureRequireMetadataReview": true
}
], - "restApiBypassesReviews": true,
- "featureKeyExample": "string",
- "featureRegexValidator": "string",
- "banditScheduleValue": 0,
- "banditScheduleUnit": "hours",
- "banditBurnInValue": 0,
- "banditBurnInUnit": "hours",
- "experimentMinLengthDays": 0,
- "experimentMaxLengthDays": 0,
- "preferredEnvironment": "string",
- "maxMetricSliceLevels": 0
}| id required | string |
| dateCreated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| dateUpdated required | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... |
| name required | string |
| createdBy required | string |
| description required | string |
| role required | string |
| limitAccessByEnvironment required | boolean |
| environments required | Array of strings |
Array of objects | |
| members required | Array of strings |
| managedByIdp required | boolean |
object | |
| defaultProject | string |
{- "id": "string",
- "dateCreated": "2019-08-24T14:15:22Z",
- "dateUpdated": "2019-08-24T14:15:22Z",
- "name": "string",
- "createdBy": "string",
- "description": "string",
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "projectRoles": [
- {
- "role": "string",
- "limitAccessByEnvironment": true,
- "environments": [
- "string"
], - "teams": [
- "string"
], - "project": "string"
}
], - "members": [
- "string"
], - "managedByIdp": true,
- "managedBy": {
- "type": "vercel",
- "resourceId": "string"
}, - "defaultProject": "string"
}| description | string |
| css | string |
| js | string |
| variation required | string |
Array of objects |
{- "description": "string",
- "css": "string",
- "js": "string",
- "variation": "string",
- "domMutations": [
- {
- "selector": "string",
- "action": "append",
- "attribute": "string",
- "value": "string",
- "parentSelector": "string",
- "insertBeforeSelector": "string"
}
]
}| id | string |
required | Array of objects |
| editorUrl required | string |
| experiment required | string |
required | Array of objects |
{- "id": "string",
- "urlPatterns": [
- {
- "include": true,
- "type": "simple",
- "pattern": "string"
}
], - "editorUrl": "string",
- "experiment": "string",
- "visualChanges": [
- {
- "description": "string",
- "css": "string",
- "js": "string",
- "variation": "string",
- "domMutations": [
- {
- "selector": "string",
- "action": "append",
- "attribute": "string",
- "value": "string",
- "parentSelector": "string",
- "insertBeforeSelector": "string"
}
]
}
]
}