Model: HoldoutRequestBody
1 min
Model Parameters
- HoldoutRequestBodyExample
{ "audience_conditions": [ "or", { "audience_id": 5340810295 } ], "description": "Holdout group to measure the overall impact of our growth experiments throughout the year", "environment_key": "production", "key": "annual_growth_holdout", "metrics": [ { "aggregator": "unique", "display_title": "Conversion Rate", "scope": "visitor", "winning_direction": "increasing" } ], "name": "Annual Growth Control Group", "project_id": 12345, "project_ids": [ 12345, 67890 ], "scope": "global", "start_time": "2024-01-01T00:00:00.000Z", "traffic_allocation": 500 }- archivedbooleanDescription
- audience_conditionsobject[]ExampleDescription
- audience_idsinteger[]Example
[ 5340810295, 1234567890 ]
Description - created_by_user_emailstringExampleDescription
- created_timestring<date-time>ExampleDescriptionFormatdate-time
- descriptionstringExampleDescriptionMax Length1000
- end_timestring<date-time>ExampleDescriptionFormatdate-time
- environment_keystringExampleDescription
- exclude_targeted_deliveriesbooleanDescriptionDefaultfalse
- idintegerExampleDescription
- keystringrequiredExampleDescriptionMax Length64Pattern^[a-zA-Z0-9_\-]+$
- metricsMetric[]Description
- aggregatorstring<unique | count | sum | ratio>requiredDescriptionAlloweduniquecountsumratio
- display_titlestringDescription
- display_unitstringDescription
- event_idinteger<int64>ExampleDescriptionFormatint64
- event_propertiesobject
- filterobject
- combine_operatorstring<or | and>Allowedorand
- conditionsEventPropertyCondition[]
- namestringrequired
- operatorstring<equal_to | not_equal_to | greater_than | greater_than_or_equal_to | less_than | less_than_or_equal_to | contains | does_not_contain>requiredAllowedequal_tonot_equal_togreater_thangreater_than_or_equal_toless_thanless_than_or_equal_tocontainsdoes_not_contain
- typestring<string | number | boolean>requiredAllowedstringnumberboolean
- valuestringrequired
- event_typestring
- fieldstring<revenue | value>DescriptionAllowedrevenuevalue
- idstringDescription
- metricsSubMetric[]
- aggregatorstring
- display_titlestring
- event_idinteger
- event_typestring
- fieldstring
- rolestring<numerator | denominator>Allowednumeratordenominator
- scopestring
- project_idintegerDescription
- scopestring<session | visitor | event>DescriptionAllowedsessionvisitorevent
- visibilitystring<account | experiment | project>DescriptionAllowedaccountexperimentproject
- winning_directionstring<increasing | decreasing>requiredDescriptionAllowedincreasingdecreasing
- namestringrequiredExampleDescriptionMax Length255
- project_idinteger<int64>ExampleDescriptionFormatint64
- project_idsinteger[]Example
[ 12345, 67890 ]
Description - revisionintegerExampleDescription
- rule_idsinteger[]Example
[ 111, 222 ]
Description - scopestring<global | local>ExampleDescriptionDefaultglobalAllowedgloballocal
- start_timestring<date-time>ExampleDescriptionFormatdate-time
- statusstring<draft | running | concluded>ExampleDescriptionAlloweddraftrunningconcluded
- traffic_allocationintegerExampleDescriptionMinimum0Maximum10000
- updated_timestring<date-time>ExampleDescriptionFormatdate-time
Request body schema for creating or updating a holdout.
Holdouts are experiments that reserve a portion of your traffic to measure the impact of your feature flags and experiments. They help establish a control group by excluding a percentage of users from seeing any experiments, allowing you to measure the overall impact of your experimentation program.
NOTE: This schema is shared between two endpoints with different validation rules:
- POST /projects//holdouts: project_id, project_ids, and rule_ids from the body are ignored (project comes from URL)
- POST /holdouts: project_id is required in the body, plus either project_ids (global) or rule_ids (local)
These constraints are enforced at runtime by the API, not by OpenAPI schema validation.