On this page

Experiment Management API Flag Endpoints

NameDescription
ListList of flags including their configuration details.
Get detailsGet the configuration details of a flag.
List versionsList all versions for a flag.
Get version detailsGet a specific version for a flag.
List variantsList all variants for a flag.
Get variant detailsGet a specific variant for a flag.
Get variant inclusionsGet all inclusions (users) for a variant.
Get variant cohort inclusionsGet all cohort inclusions for a variant.
Create variantCreate a new variant for a flag.
Edit variantEdit a variant for a flag.
Remove variantRemove a variant from a flag.
Add users to variantAdd users to flag's variant.
Add cohorts to variantAdd cohorts to flag's variant.
Remove users from variantRemove users from flag's variant.
Remove all users from variantRemove all users from flag's variant.
Bulk remove users from variantBulk remove users from experiment's variant.
Bulk remove cohorts from variantBulk remove cohorts from flag's variant.
List deploymentsList all deployments for a flag.
Create deploymentAdd a deployment for a flag.
Remove deploymentRemove a deployment from a flag.
EditEdit flag.
CreateCreate a new flag.

EU data residency

The examples on this page use the default base URL https://experiment.amplitude.com. If your project uses Amplitude's EU data center, use https://experiment.eu.amplitude.com instead. For more information, refer to Regions.

List

bash
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

NameDescription
keyFilter flags whose flag key matches this value.
projectIdFilter flags that belong to this project.
limitThe maximum number of flags to return. Capped at 1000.
cursorThe offset to start the page of results from.
includeArchivedFilter to include archived flags. Default is false.

Response

A successful request returns a 200 OK response and a JSON-encoded list of flags in the response body. createdAt and lastModifiedAt are in UTC in ISO 8601 format.

bash
curl --request GET \
--url 'https://experiment.amplitude.com/api/1/flags?limit=1000' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <management-api-key>'

Get details

bash
GET https://experiment.amplitude.com/api/1/flags/<id>

Fetch the configuration details of a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.

Response

A successful request returns a 200 OK response and a JSON object with the flag's details.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

List versions

bash
GET https://experiment.amplitude.com/api/1/flags/{id}/versions

Fetch a list of all versions for a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.

Response

A successful request returns a 200 OK response and the flag's versions as an array of JSON objects in the response body. Versions are sorted in descending order.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/versions' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

Get version details

bash
GET https://experiment.amplitude.com/api/1/flags/{id}/versions/{versionId}

Fetch details of a specific version of a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
versionIdRequired. Type: string. The version's ID.

Response

A successful request returns a 200 OK response and a JSON object with details of the version.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/versions/<versionId>' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

List variants

bash
GET https://experiment.amplitude.com/api/1/flags/{id}/variants

Fetch a list of all variants for a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.

Response

A successful request returns a 200 OK response and the variants as an array of JSON objects in the response body.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/variants' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

Get variant details

bash
GET https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}

Fetch details of a specific variant of a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Response

A successful request returns a 200 OK response and a JSON object with details of a flag variant.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

Get variant inclusions

bash
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

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Response

A successful request returns a 200 OK response and the variant's inclusions as an array of JSON objects.

bash
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>'

Get variant cohort inclusions

bash
GET https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/cohorts

Fetch a list of cohort inclusions for a specific variant of a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Response

A successful request returns a 200 OK response and the variant's cohort inclusions as an array of cohort IDs.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/cohorts' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

Create variant

bash
POST https://experiment.amplitude.com/api/1/flags/{id}/variants

Create a new variant for a flag

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.

Request body

NameDescription
keyRequired. Type: string. The variant key. Can only contain letters, numbers, underscores (_), and hyphens (-).
descriptionOptional. Type: string. Description for the variant.
nameOptional. Type: string. Name for the variant.
payloadOptional. Type: JSON. Optional payload. Value must be a valid JSON element, such as an object, string, or number.
rolloutWeightOptional. Type: number. Rollout weight for non-targeted users.

Example request

json
{
  "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.

Request

bash
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

bash
POST https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>

Edit a variant for a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Example request

json
{
  "key": "updated-variant-key",
  "description": "updated optional description for variant",
  "name": "optional name for variant",
  "payload": { "variant-payload": "example payload" },
  "rolloutWeight": 0
}

Request body

NameDescription
keyOptional. Type: string. The variant key. Can only contain letters, numbers, underscores (_), and hyphens (-).
descriptionOptional. Type: string. Description for the variant.
nameOptional. Type: string. Name for the variant.
payloadOptional. Type: JSON. Optional payload. Value must be a valid JSON element, such as an object, string, or number. This value replaces the existing value for the variant payload.
rolloutWeightOptional. Type: number. Rollout weight for non-targeted users.

Response

A successful request returns a 200 OK response and OK text.

Request

bash
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

bash
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}

Remove a variant from a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Response

A successful request returns a 200 OK response and OK text.

Request

bash
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

bash
POST https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users

You can have up to 2,000 inclusions per variant. If you exceed this limit, Amplitude returns a 400 error.

Add inclusions (users or devices) to a flag's variant.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Request body

NameDescription
inclusionsRequired. Type: object. Contains a string array of user or device IDs.

Example request

json
{
  "inclusions": [
    "<user1>@<your-company-email>, <user2>@<your-company-email>, <userId>"
  ]
}

Response

A successful request returns a 200 OK response and OK text.

Request

bash
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"]>}'

Add cohorts to variant

bash
POST https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/cohorts

Add cohort inclusions to a flag's variant.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Request body

NameDescription
inclusionsRequired. Type: array. An array of cohort IDs to add.

Example request

json
{
  "inclusions": ["cohort-id-1", "cohort-id-2"]
}

Response

A successful request returns a 200 OK response and OK text.

Request

bash
curl --request POST \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/cohorts' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>' \
    --data '{"inclusions":["cohort-id-1", "cohort-id-2"]}'

Remove users from variant

bash
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users/{userIndex}

Remove inclusions (users or devices) from a flag's variant.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.
userIndexRequired. Type: string. The user's index. Zero-indexed. Get an index-based array of users from Get variant inclusions

Response

A successful request returns a 200 OK response and OK text.

Request

bash
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

bash
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/users

Remove all inclusions (users or devices) from a flag's variant.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Response

A successful request returns a 200 OK response and OK text.

Request

bash
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

bash
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/bulk-delete-users

Bulk remove users or devices from a flag's variant. Limited to 100 for each request.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Request body

NameDescription
usersRequired. Type: object. Contains an string array of user or device ids.

Response

A successful request returns a 200 OK response and OK text.

Request

bash
curl --request DELETE \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/bulk-delete-users' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>' \
    --data '{"users":<["id1", "id2", "id3"]>}'

Bulk remove cohorts from variant

bash
DELETE https://experiment.amplitude.com/api/1/flags/{id}/variants/{variantKey}/bulk-delete-cohorts

Bulk remove cohorts from a flag's variant. Limited to 100 for each request.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
variantKeyRequired. Type: string. The variant's key.

Request body

NameDescription
usersRequired. Type: array. An array of cohort IDs to remove.

Response

A successful request returns a 200 OK response and OK text.

Request

bash
curl --request DELETE \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/variants/<variantKey>/bulk-delete-cohorts' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>' \
    --data '{"users":["cohort-id-1", "cohort-id-2"]}'

List deployments

bash
GET https://experiment.amplitude.com/api/1/flags/{id}/deployments

List all deployments for a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.

Response

A successful request returns a 200 OK response and an array of JSON objects with the flag's deployment details.

bash
curl --request GET \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/deployments' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'

Create deployment

bash
POST https://experiment.amplitude.com/api/1/flags/{id}/deployments

Add a deployment for a flag.

Path variables

NameDescription
idRequired. Type: string. The object's ID.

Request body

NameDescription
deploymentsRequired. Type: string array. Contains a string array of deployment IDs.

Example request

json
{
    "deployments": [<deploymentId>]
}

Response

A successful request returns a 200 OK response and OK text.

Request

bash
curl --request POST \
    --url 'https://experiment.amplitude.com/api/1/flags/<id>/deployments' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>'
    --data '{"deployments":[<deploymentId>]}'

Remove deployment

bash
DELETE https://experiment.amplitude.com/api/1/flags/{id}/deployments/{deploymentId}

Remove a deployment from a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.
deploymentIDRequired. Type: string. The deployment's ID.

Response

A successful request returns a 200 OK response and OK text.

Request

bash
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

bash
PATCH https://experiment.amplitude.com/api/1/flags/{id}

Edit a flag.

Path variables

NameDescription
idRequired. Type: string. The flag's ID. Find the ID in the URL of the flag in the Amplitude app.

Request body

NameDescription
nameOptional. Type: string. Name.
descriptionOptional. Type: string. Description.
bucketingKeyOptional. Type: string. The user property to bucket the user by.
bucketingSaltOptional. Type: string. Bucketing salt.
bucketingUnitOptional. Type: string. Bucketing unit represented by a group type from the accounts add-on. Used for group level bucketing and analysis.
evaluationModeOptional. Type: string. Evaluation mode for the flag, either local or remote.
rolloutPercentageOptional. Type: number. Rollout percentage for non-targeted users. Range 0 - 100.
targetSegmentsOptional. Type: object array. Refer to the targetSegments table for more information. When you provide the targetSegments object array, it replaces existing target segments. This option doesn't support cohorts.
enabledOptional. Type: boolean. Property to activate or deactivate the flag.
archiveOptional. Type: boolean. Property to archive or unarchive the flag.
tagsOptional. Type: string array. A list of tags for the flag. Tags are added and deleted by the same operation. To add new tags to existing ones, fetch a list of all flag tags first.

Example request

json
{
  "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.

response

bash
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

bash
POST https://experiment.amplitude.com/api/1/flags

Create a new flag.

Request body

NameDescription
projectIdRequired. Type: string. The project's ID.
keyRequired. Type: string. The flag key.
nameOptional. Type: string. The flag name.
descriptionOptional. Type: string. Description for the flag.
variantsOptional. Type: object array. Array of variants.
bucketingKeyOptional. Type: string. The user property to bucket the user by.
rolloutWeightsOptional. Type: 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 }.
targetSegmentsOptional. Type: object array. Refer to the targetSegments table for more information.
deploymentsOptional. Type: string array. Array of deployments that the flag should be assigned to.
evaluationModeOptional. Type: string. Experiment evaluation mode; options include remote or local.

variants

The variants field contains these objects.

NameDescription
keyRequired. Type: string. The key (also called value) of the variant. Can only contain letters, numbers, underscores (_), and hyphens (-).
payloadOptional. Type: JSON. Optional payload. Value must be a valid JSON element, such as an object, string, or number.
nameOptional. Type: string. The variant name.
descriptionOptional. Type: string. The variant description.

targetSegments

The targetSegments field contains these objects.

NameDescription
nameRequired. Type: string. The segment name.
conditionsRequired. Type: object array. Array of conditions.
percentageRequired. Type: number. The allocation percentage for users who match a condition.
rolloutWeightsRequired. Type: object. A map from variant key to rollout weight. For example: { "control": 1, "treatment": 1 }.

conditions

The conditions field contains these objects.

NameDescription
typeRequired. Type: string. Must have value: property
propRequired. Type: string. The property to use in the condition. Prefix custom and free-form properties with gp:
opRequired. Type: string. The operation to use in this condition.
valuesRequired. Type: 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

json
{
  "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.

bash
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>"}'

Was this helpful?