Management API Flag Endpoints
Name |
Description |
---|---|
List | List of flags including their configuration details. |
Get details | Get the configuration details of a flag. |
List versions | List all versions for a flag. |
Get version details | Get a specific version for a flag. |
List variants | List all variants for a flag. |
Get variant details | Get a specific variant for a flag. |
Get variant inclusions | Get all inclusions (users) for a variant. |
Create variant | Create a new variant for a flag. |
Edit variant | Edit a variant for a flag. |
Remove variant | Remove a variant from a flag. |
Add users to variant | Add users to flag's variant. |
Remove users from variant | Remove users from flag's variant. |
Remove all users from variant | Remove all users from flag's variant. |
Bulk remove users from variant | Bulk remove users from experiment's variant. |
List deployments | List all deployments for a flag. |
Create deployment | Add a deployment for a flag. |
Remove deployment | Remove a deployment from a flag. |
Edit | Edit flag. |
Create | Create a new flag. |
List¶
GET https://experiment.amplitude.com/api/1/flags
Fetch a list of flags including their configuration details. Results are ordered with the most recently created items first.
Query parameters¶
Name | Description |
---|---|
limit |
The max number of flags to be returned. Capped at 1000. |
cursor |
The offset to start the "page" of results from. |
Response¶
A successful request returns a 200 OK
response and a list of flags encoded as JSON in the response body.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags?limit=1000' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
{
"flags": [
{
"id": <id>,
"projectId": <projectId>,
"deployments": [<deploymentId>],
"key": "flag-key",
"name": "flag-name",
"description": "description",
"enabled": false,
"evaluationMode": "remote",
"bucketingKey": "amplitude_id",
"bucketingSalt": <bucketingSalt>,
"bucketingUnit": "User",
"variants": [
{
"key": "on"
}
],
"rolloutPercentage": 0,
"rolloutWeights": {
"on": 1
},
"targetSegments": [
{
"name": "Segment 1",
"conditions": [
{
"prop": "city",
"op": "is",
"type": "property",
"values": []
}
],
"percentage": 0,
"bucketingKey": "amplitude_id",
"rolloutWeights": {
"on": 1
}
}
]
}
],
"nextCursor": <cursorId>
}
Get details¶
GET https://experiment.amplitude.com/api/1/flags/<id>
Fetch the configuration details of a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
Response¶
A successful request returns a 200 OK
response and a JSON object with the flag's details.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
{
"id": <id>,
"projectId": <projectId>,
"deployments": [<deploymentId>],
"key": "flag-key",
"name": "flag-key",
"description": "feature flag access",
"enabled": true,
"evaluationMode": "remote",
"bucketingKey": "amplitude_id",
"bucketingSalt": "mHdQDzeE",
"bucketingUnit": "User",
"variants": [
{
"key": "on"
}
],
"rolloutPercentage": 0,
"rolloutWeights": {
"on": 1
},
"targetSegments": [
{
"name": "Segment 1",
"conditions": [
{
"prop": "country",
"op": "is",
"type": "property",
"values": [
"United States"
]
}
],
"percentage": 0,
"bucketingKey": "amplitude_id",
"rolloutWeights": {
"on": 1
}
}
],
"deleted": false
}
List versions¶
GET https://experiment.amplitude.com/api/1/flags/{id}/versions
Fetch a list of all versions for a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
Response¶
A successful request returns a 200 OK
response and a list of flag's versions encoded as an array of JSON objects in the response body. Versions are sorted in a descending order.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/versions' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
[
{
"createdAt": "2023-07-29T03:32:49.594Z",
"createdBy": <userId>,
"version": 3,
"flagConfig": {
"id": <id>,
"projectId": <projectId>,
"deployments": [<deploymentId>],
"key": "flag-key",
"name": "flag-key",
"description": "feature flag access",
"enabled": true,
"evaluationMode": "remote",
"bucketingKey": "amplitude_id",
"bucketingSalt": "mHdQDzeE",
"bucketingUnit": "User",
"variants": [
{
"key": "on"
}
],
"rolloutPercentage": 0,
"rolloutWeights": {
"on": 1
},
"targetSegments": [
{
"name": "Segment 1",
"conditions": [
{
"prop": "country",
"op": "is",
"type": "property",
"values": [
"United States"
]
}
],
"percentage": 0,
"bucketingKey": "amplitude_id",
"rolloutWeights": {
"on": 1
}
}
]
}
},
{
"createdAt": "2023-07-29T03:32:39.494Z",
"createdBy": <userId>,
"version": 2,
"flagConfig": {
"id": <id>,
"projectId": <projectId>,
"deployments": [<deploymentId>],
"key": "flag-key",
"name": "flag-key",
"description": "feature flag access",
"enabled": false,
"evaluationMode": "remote",
"bucketingKey": "amplitude_id",
"bucketingSalt": "mHdQDzeE",
"bucketingUnit": "User",
"variants": [
{
"key": "on"
}
],
"rolloutPercentage": 0,
"rolloutWeights": {
"on": 1
},
"targetSegments": [
{
"name": "Segment 1",
"conditions": [
{
"prop": "country",
"op": "is",
"type": "property",
"values": [
"United States"
]
}
],
"percentage": 0,
"bucketingKey": "amplitude_id",
"rolloutWeights": {
"on": 1
}
}
]
}
},
{
"createdAt": "2023-07-29T03:30:45.703Z",
"createdBy": <userId>,
"version": 1,
"flagConfig": {
"id": <id>,
"projectId": <projectId>,
"deployments": [],
"key": "flag-key",
"name": "flag-key",
"description": "",
"enabled": false,
"evaluationMode": "remote",
"bucketingKey": "amplitude_id",
"bucketingSalt": "mHdQDzeE",
"bucketingUnit": "User",
"variants": [
{
"key": "on"
}
],
"rolloutPercentage": 0,
"rolloutWeights": {
"on": 1
},
"targetSegments": []
}
}
]
Get version details¶
GET https://experiment.amplitude.com/api/1/flags/{id}/versions/{versionId}
Fetch details of a specific version of a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
versionId |
Required. String. The version's ID. |
Response¶
A successful request returns a 200 OK
response and a JSON object with details of the version.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/versions/<versionId>' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
{
"createdAt": "2023-07-29T03:32:49.594Z",
"createdBy": <userId>,
"version": 3,
"flagConfig": {
"id": <id>,
"projectId": <projectId>,
"deployments": [<deploymentId>],
"key": "flag-key",
"name": "flag-key",
"description": "feature flag access",
"enabled": true,
"evaluationMode": "remote",
"bucketingKey": "amplitude_id",
"bucketingSalt": "mHdQDzeE",
"bucketingUnit": "User",
"variants": [
{
"key": "on"
}
],
"rolloutPercentage": 0,
"rolloutWeights": {
"on": 1
},
"targetSegments": [
{
"name": "Segment 1",
"conditions": [
{
"prop": "country",
"op": "is",
"type": "property",
"values": [
"United States"
]
}
],
"percentage": 0,
"bucketingKey": "amplitude_id",
"rolloutWeights": {
"on": 1
}
}
]
}
}
List variants¶
GET https://experiment.amplitude.com/api/1/flags/{id}/variants
Fetch a list of all variants for a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
Response¶
A successful request returns a 200 OK
response and a list of variants encoded as an array of JSON objects in the response body.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
[
{
"key": "on",
"name": "",
"payload": {},
"description": "",
"rolloutWeight": 1
}
]
Get variant details¶
GET https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}
Fetch details of a specific variant of a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Response¶
A successful request returns a 200 OK
response and a JSON object with details of a flag variant.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
{
"key": "on",
"name": "",
"payload": {},
"description": "",
"rolloutWeight": 1
}
Get variant inclusions¶
GET https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users
Fetch a list of inclusions for a specific variant of a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Response¶
A successful request returns a 200 OK
response and a list of inclusions of flag's variant as an array of JSON objects.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/users' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
[
<user>@<your-company-email>,
<userId>
]
Create variant¶
POST https://experiment.amplitude.com/api/1/flags/{id}/variants
Create a new variant for a flag
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
key |
Required | string | The variant key. |
description |
Optional | string | Description for the variant. |
name |
Optional | string | Name for the variant. |
payload |
Optional | string | Optional payload. Value must be a valid JSON element. |
rolloutWeight |
Optional | number | Rollout weight for non-targeted users. |
Example request (click to open)
{
"key": "new-variant-key",
"description": "optional description for variant",
"name": "optional name for variant",
"payload": {"variant-payload": "example payload"},
"rolloutWeight": 0
}
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request POST \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>' \
--data '{"key":"<key>","name":"<name>","description":"<description>","payload":"<payload>","rolloutWeight":<rolloutWeight>}'
Edit variant¶
POST https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>
Edit a variant for a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Example request (click to open)
{
"key": "updated-variant-key",
"description": "updated optional description for variant",
"name": "optional name for variant",
"payload": {"variant-payload": "example payload"},
"rolloutWeight": 0
}
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
key |
Optional | string | The variant key. |
description |
Optional | string | Description for the variant. |
name |
Optional | string | Name for the variant. |
payload |
Optional | string | Optional payload. Value must be a valid JSON element. |
rolloutWeight |
Optional | number | Rollout weight for non-targeted users. |
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request PATCH \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>' \
--data '{"key":"<key>","name":"<name>","description":"<description>","payload":"<payload>","rolloutWeight":<rolloutWeight>}'
Remove variant¶
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}
Remove a variant from a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request DELETE \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Add users to variant¶
POST https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users
Add inclusions (users or devices) to flag's variant.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
inclusions |
Required | object | Contains an string array of user or device ids. |
Example request (click to open)
{
"inclusions": [<user1>@<your-company-email>, <user2>@<your-company-email>, <userId>]
}
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request POST \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/users' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>' \
--data '{"inclusions":<["id1", "id2", "id3"]>}'
Remove users from variant¶
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users/{userIndex}
Remove inclusions (users or devices) from flag's variant.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
userIndex |
Required. String. The user's index. Zero-indexed. Index-based array of users can be obtained via Get variant inclusions |
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request DELETE \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/users/<userIndex>' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Remove all users from variant¶
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users
Remove all inclusions (users or devices) from flag's variant.
Path variables¶
Name |
Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request DELETE \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/users' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Bulk remove users from variant¶
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/bulk-delete-users
Bulk remove users or devices from flag's variant. Limited to 100 per request.
Path variables¶
Name |
Description |
---|---|
id |
Required. String. Flag's ID. |
variantKey |
Required. String. The variant's key. |
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
users |
Required | object | Contains an string array of user or device ids. |
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request DELETE \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/bulk-delete-users' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>' \
--data '{"users":<["id1", "id2", "id3"]>}'
List deployments¶
GET https://experiment.amplitude.com/api/1/flags/{id}/deployments
List all deployments for a flag.
Path variables¶
Name |
Description |
---|---|
id |
Required. String. Flag's ID. |
Response¶
A successful request returns a 200 OK
response and an array of JSON objects with flag's deployment details.
Example cURL
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/deployments' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Example response (click to open)
[
{
"id": <id>,
"projectId": <projectId>,
"label": "rest-api",
"key": <key>,
"deleted": false
}
]
Create deployment¶
POST https://experiment.amplitude.com/api/1/flags/{id}/deployments
Add a deployment for a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. The object's ID. |
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
deployments |
Required | object | Contains an string array of deployment ids. |
Example request (click to open)
{
"deployments": [<deploymentId>]
}
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request POST \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/deployments' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
--data '{"deployments":[<deploymentId>]}'
Remove deployment¶
DELETE https://experiment.amplitude.com/api/1/flags/{id}/deployments/{deploymentId}
Remove a deployment from a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
deploymentId |
Required. String. The deployment's ID. |
Response¶
A successful request returns a 200 OK
response and OK
text.
Example cURL
curl --request DELETE \
--url 'https://experiment.amplitude.com/api/1/flags/<id>/deployments/<deploymentId>' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'
Edit¶
PATCH https://experiment.amplitude.com/api/1/flags/{id}
Edit a flag.
Path variables¶
Name | Description |
---|---|
id |
Required. String. Flag's ID. |
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
name |
Optional | string | Name. |
description |
Optional | string | Description. |
bucketingKey |
Optional | string | The user property to bucket the user by. |
bucketingSalt |
Optional | string | Bucketing salt. |
bucketingUnit |
Optional | string | Bucketing unit represented by a group type from the accounts add-on. Used for group level bucketing and analysis. |
evaluationMode |
Optional | string | Evaluation mode for the flag, either local or remote . |
rolloutPercentage |
Optional | number | Rollout percentage for non-targeted users. Range 0 - 100. |
targetSegments |
Optional | object | See the targetSegments table for more information. When targetSegments object is provided, it will replace existing target segments. Note: cohorts are not supported at the moment. |
enabled |
Optional | boolean | Property to activate or deactivate flag. |
archive |
Optional | boolean | Property to archive or unarchive flag. |
tags |
Optional | string array | A list of tags for the flag. Tags are added and deleted by the same operation. If you would like to add new tags to the existing ones, you should fetch a list of all flag tags first. |
Example request (click to open)
{
"name": "updated name",
"description": "updated description",
"bucketingKey": "amplitude_id",
"bucketingSalt": <bucketingSalt>,
"bucketingUnit": "org id",
"evaluationMode": "remote",
"rolloutPercentage": 0,
"enabled": false,
"tags": ["prod", "staging"]
}
Response¶
A successful request returns a 200 OK
response.
Example cURL
curl --request PATCH \
--url 'https://experiment.amplitude.com/api/1/flags/<id>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>' \
--data '{"enabled":<enabled>,"rolloutPercentage":<rolloutPercentage>}'
Create¶
POST https://experiment.amplitude.com/api/1/flags
Create a new flag.
Request body¶
Name |
Requirement | Type | Description |
---|---|---|---|
projectId |
Required | string | The project's ID. |
key |
Required | string | The flag key. |
name |
Optional | string | The flag name. |
description |
Optional | string | Description for the flag. |
variants |
Optional | object array | Array of variants . |
bucketingKey |
Optional | string | The user property to bucket the user by. |
rolloutWeights |
Optional | object | Rollout weights for non-targeted users. The object should be a mapping from variant key to rollout weight as an integer. For example: { "control": 1, "treatment": 1 } . |
targetSegments |
Optional | object | See the targetSegments table for more information. |
deployments |
Optional | string array | Array of deployments that the flag should be assigned to. |
evaluationMode |
Optional | string | Experiment evaluation mode; options include remote or local . |
variants
¶
The variants
field contains these objects.
Name |
Requirement | Type | Description |
---|---|---|---|
key |
Required | string | The key (a.k.a value) of the variant. |
payload |
Optional | string | Optional payload. Value must be a valid JSON element. |
name |
Optional | string | The variant name. |
description |
Optional | string | The variant description. |
targetSegments
¶
The targetSegments
field contains these objects.
Name |
Requirement | Type | Description |
---|---|---|---|
name |
Required | string | The segment name. |
conditions |
Required | object array | Array of conditions . |
percentage |
Required | number | The allocation percentage for users who match a condition. |
rolloutWeights |
Required | object | A map from variant key to rollout weight. For example: { "control": 1, "treatment": 1 } . |
conditions
¶
The conditions
field contains these objects.
Name |
Requirement | Type | Description |
---|---|---|---|
type |
Required | string | Must have value: property |
prop |
Required | string | The property to use in the condition. Prefix custom and free-form properties with gp: |
op |
Required | string | The operation to use in this condition. |
values |
Required | string array | The values to use in the operation. |
op
¶
A string value representing operations on a property value. Possible values are:
is
is not
contains
does not contain
less
less or equal
greater
greater or equal
set is
set is not
set contains
set does not contain
glob match
glob does not match
Example request (click to open)
{
"projectId":"<projectId>",
"name": "Analyze button clicks",
"key": "analyze-button-clicks",
"description": "analyze button clicks on the main page",
"variants": [
{
"key": "on"
}
],
"rolloutWeights": {"on": 1},
"targetSegments": [
{
"name": "Segment 1",
"conditions": [
{
"prop": "country",
"op": "is",
"type": "property",
"values": [
"United States"
]
}
],
"percentage": 0,
"bucketingKey": "amplitude_id",
"rolloutWeights": {
"on": 1
}
}
],
"deployments": [<deploymentId>],
"evaluationMode": "remote"
}
Response¶
A successful request returns a 200 OK
response and a JSON object with the flag's id and url.
Example cURL
curl --request POST \
--url 'https://experiment.amplitude.com/api/1/flags' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>' \
--data '{"projectId":"<projectId>","key":"<key>"}'
Example response (click to open)
{
"id": <id>,
"url": "http://experiment.amplitude.com/amplitude/<projectId>/config/<id>"
}