On this page

Experiment Management API Holdout Group Endpoints

NameDescription
ListList holdout groups with their configuration details.
Get detailsGet the configuration details of a holdout group.
EditEdit a holdout group.
CreateCreate a new holdout group.

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/holdouts

Fetch a list of holdout groups with their configuration details.

Query parameters

NameTypeRequiredDescription
limitIntegerNoThe maximum number of holdout groups to return. Capped at 1000.
cursorStringNoThe offset to start the page of results from.

Response

A successful request returns a 200 OK response and a list of holdout groups encoded as JSON in the response body.

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

Get details

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

Fetch the configuration details of a holdout group.

Path variables

NameTypeRequiredDescription
idStringYesThe holdout group's ID.

Response

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

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

Edit

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

Edit a holdout group.

Path variables

NameDescription
idRequired. String. Holdout group's ID.

Request body

NameTypeRequiredDescription
nameStringNoThe holdout group name.
descriptionStringNoThe holdout group description.
experimentsNumber arrayNoList of experiment IDs to include in this holdout group. Experiment evaluation mode must be compatible with the holdout group's evaluation mode.
individualInclusionString arrayNoList of user IDs or device IDs to include in this holdout group. Included users never experience the experiments.
individualExclusionString arrayNoList of user IDs or device IDs to exclude from this holdout group. Excluded users may experience the experiments.
archiveBooleanNoArchives the holdout group. Setting this property marks the holdout group as deleted and removes it from all child experiments' parent dependencies.

Example request

json
{
  "name": "updated name",
  "description": "updated description",
  "experiments": [123],
  "individualInclusion": ["x@amplitude.com"]
}

Response

A successful request returns a 200 OK response.

Request

curl
curl --request PATCH \
    --url 'https://experiment.amplitude.com/api/1/holdouts/<id>' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>' \
    --data '{"name": "updated name"}'

Create

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

Create a new holdout group.

Request body

NameTypeRequiredDescription
projectIdNumberYesProject ID of the holdout group.
nameStringYesThe holdout group name.
keyStringNoThe holdout group key. Must be unique. If not specified, Amplitude generates a random key.
descriptionStringNoThe holdout group description.
holdoutPercentageNumberYesHoldout percentage. An integer between 1 and 99, inclusive.
evaluationModeStringNoEvaluation mode. Options are local and remote. Defaults to remote.
bucketingKeyStringNoBucketing key. Defaults to amplitude_id.
experimentsNumber arrayNoList of experiment IDs to include in this holdout group. Experiment evaluation mode must be compatible with the holdout group's evaluation mode.
individualInclusionString arrayNoList of user IDs or device IDs to include in this holdout group. Included users never experience the experiments.
individualExclusionString arrayNoList of user IDs or device IDs to exclude from this holdout group. Excluded users may experience the experiments.

Example request

json
{
    "projectId": <projectId>,
    "name": "Example Holdout",
  	"key": "example-holdout",
    "holdoutPercentage": 5,
    "evaluationMode": "local",
    "bucketingKey": "device_id",
    "experiments": [21197],
    "individualInclusion": ["x@amplitude.com"],
    "individualExclusion": ["y@amplitude.com"],
}

Response

A successful request returns a 200 OK response and a JSON object with the holdout group's ID and URL.

bash
curl --request POST \
    --url 'https://experiment.amplitude.com/api/1/holdouts' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'Authorization: Bearer <management-api-key>' \
    --data '{"projectId":"<projectId>","name":"Example Holdout","holdoutPercentage":5}'

Was this helpful?