Update mutable experiment fields. State and protocol restrictions apply.
PATCH behavior
Omitted fields stay unchanged, including fields inside datadog_flag_configuration.
Supplied tags, teams, related_links, decision_metrics, and variants replace their stored lists.
Validation can return several field errors before saving any changes. The response is HTTP 400 if any error
concerns invalid input. It is HTTP 409 if all errors concern state or protocol conflicts.
Result refreshes
This endpoint does not start a pipeline run. meta.needs_pipeline_refresh states whether the edit requires a
run. When true, POST to meta.refresh_endpoint after finishing your edits. Its full_refresh query parameter
selects the run type.
Keep refresh requirements across edits. A later false value does not clear an earlier requirement. Any
full_refresh=true requirement takes priority.
After start, STATIC and STEPS exposure changes for warehouse experiments without a Datadog flag attempt to
recalculate stored results. Changes to decision metrics or the control variant also attempt recalculation when
results exist. If stored data is insufficient or recalculation fails, the edit stays saved and
meta.needs_pipeline_refresh is true.
Exposure rules
Draft experiments can replace the full STATIC or STEPS plan through traffic_exposure.
Warehouse steps start at assignments_start_date and can have different durations.
Running warehouse experiments can replace step fractions, durations, and exposure mode. Retained variant
weights cannot change through this API. You can send unchanged values again.
After a warehouse experiment ends, configuration replacement supports only STATIC fraction changes.
New Datadog plans have at most five steps. The first fraction must be positive. All steps except the last
have equal durations. Durations exclude pauses.
The last step has a null duration. Its fraction stays in effect until assignment ends.
After start, use the experiment UI to change traffic exposure for experiments linked to a Datadog flag.
Metadata
structured_metadata updates fields by field_key. Use freetext_value: "" or enum_values: [] to clear an
optional field. Omitted fields stay unchanged. A null or empty structured_metadata attribute makes no
change.
Flag changes
Before start, a Datadog update creates or edits the saved draft allocation. To add or replace a flag, send
variants and traffic_exposure. Inside datadog_flag_configuration, send feature_flag_id,
environment_id, targeting_rules, and entry_point. Use targeting_rules: [] and entry_point: null when
unused.
To replace a flag, also set reset_on_feature_flag_change: true inside that object. The server deletes the
old draft and creates a new one in the same transaction. The response includes a
datadog_flag_configuration_reset warning in meta.warnings.
Set datadog_flag_configuration: null to delete the draft allocation. This also clears the experiment’s flag
association, variants, assignment sources, and entry point. The experiment remains.
Flag replacement and removal require a draft experiment without warehouse exposure. These actions do not
convert hybrid experiments.
This endpoint requires the product_analytics_experiments_write permission.
OAuth apps require the product_analytics_experiments_write authorization scope to access this endpoint.
ID of the feature flag environment used by the experiment.
feature_flag_id
string
ID of the feature flag linked to the experiment.
reset_on_feature_flag_change
boolean
Set true to replace an existing draft allocation when feature_flag_id changes. The replacement resets all flag-bound randomization state.
targeting_rules
[object]
Omit to keep the stored rules. Use an empty array to remove targeting rules.
conditions [required]
[ <oneOf>]
Conditions that must all match for this rule. Each condition must use exactly one shape: saved_filter_id alone or operator plus attribute plus value.
Object 1
object
A condition that uses a saved filter. Inline fields must be omitted or null.
saved_filter_id [required]
uuid
Saved-filter UUID.
Object 2
object
An inline condition. The saved_filter_id field must be omitted or null.
attribute [required]
string
Attribute to evaluate.
operator [required]
enum
Required with attribute and value for an inline condition; omit when saved_filter_id is set.
Allowed enum values: LT,LTE,GT,GTE,MATCHES,NOT_MATCHES,ONE_OF,NOT_ONE_OF,IS_NULL,EQUALSShow 6 more,SEMVER_EQ,SEMVER_NEQ,SEMVER_LT,SEMVER_LTE,SEMVER_GT,SEMVER_GTE
value [required]
[string]
Values used by the operator. Every operator requires at least one value.
decision_metrics
[object]
Metrics used to decide the experiment outcome.
is_primary [required]
boolean
Whether this is the experiment primary metric.
metric_id [required]
uuid
Decision metric UUID.
events_end_date
date-time
End of the time window for metric events.
events_start_date
date-time
Start of the time window for metric events.
hypothesis
string
Expected effect that the experiment is intended to test.
migration_metadata
Metadata retained for resources imported from another system.
name
string
Display name of the experiment.
related_links
[object]
Links to supporting material for the experiment.
id
string
Link ID. Omit it when adding a link.
title
string
Optional display title.
url [required]
string
Absolute URL.
split_by_properties
[object]
Complete replacement for the Datadog split-by selection. Identify each property by column_name. Omit this field to leave the selection unchanged.
column_name [required]
string
Exposure field that identifies the property.
column_type
enum
Data type of the column evaluated by the entry-point filter.
Allowed enum values: varchar,int,double,boolean,varchar_array,int_array,double_array,raw
name
string
Optional display name. Defaults to column_name for a new property.
structured_metadata
[object]
Metadata values to update. Omit this field, send null, or send an empty array to leave metadata unchanged.
enum_values
[string]
Selected values for an enumerated metadata field.
field_key [required]
string
Key that identifies the metadata field.
freetext_value
string
Text value for a free-text metadata field.
subject_type_id
string
ID of the subject type used by this configuration.
summary
string
Summary text recorded for the experiment.
tags
[string]
Tags attached to the experiment.
teams
[string]
Teams associated with the experiment.
traffic_exposure
object
Traffic exposure fraction or schedule configured for the experiment.
fraction
double
STATIC exposure fraction. Draft experiments can change this value. After start only warehouse experiments without a Datadog flag can change a STATIC fraction through the public API.
mode [required]
enum
Whether exposure uses a fixed fraction or a sequence of steps.
Allowed enum values: STATIC,STEPS
steps
[object]
Configured exposure plan rather than wall-clock history. At least two steps must have strictly increasing fractions and no gaps. Warehouse steps start at assignments_start_date and can use different durations. New Datadog plans have at most five steps and a first fraction above zero. Their nonfinal durations must be equal and exclude time paused. Datadog steps start with the experiment. Running warehouse experiments can replace step fractions, durations, and the exposure mode. After start, Datadog exposure plans cannot change through the public API. The final duration is null and its fraction holds until assignment ends.
duration_ms [required]
int64
Positive step duration in milliseconds. Datadog durations exclude pauses. Send null for the final step.
fraction [required]
double
Fraction of traffic exposed during this step.
variants
[object]
Variants configured for the experiment.
feature_flag_variant_id
uuid
Stable backing flag variant ID. Required for Datadog-backed experiments and omitted for Warehouse-only experiments.
is_active
boolean
Whether this variant participates in the experiment. Responses always include this field. On writes an included variant defaults to active; omit its row to remove or unselect it. Explicit false supports sending an unchanged response back.
is_control [required]
boolean
Whether this is the single control variant.
key [required]
string
Assignment value. Datadog flag variant keys are server-owned.
name
string
Display name. Datadog flag variant names are server-owned.
weight [required]
double
Traffic allocation percentage. Existing variant weights cannot change through the public API after the experiment starts.
warehouse_exposure_configuration
object
Warehouse model and experiment key used to read assignment data.
entry_point [required]
object
Optional Warehouse measure that scopes analyzed subjects.
ID of the feature flag environment used by the experiment.
feature_flag_id
string
ID of the feature flag linked to the experiment.
targeting_rules
[object]
Rules that select subjects for the experiment.
conditions [required]
[ <oneOf>]
Conditions that must all match for this rule. Each condition must use exactly one shape: saved_filter_id alone or operator plus attribute plus value.
Object 1
object
A condition that uses a saved filter. Inline fields must be omitted or null.
saved_filter_id [required]
uuid
Saved-filter UUID.
Object 2
object
An inline condition. The saved_filter_id field must be omitted or null.
attribute [required]
string
Attribute to evaluate.
operator [required]
enum
Required with attribute and value for an inline condition; omit when saved_filter_id is set.
Allowed enum values: LT,LTE,GT,GTE,MATCHES,NOT_MATCHES,ONE_OF,NOT_ONE_OF,IS_NULL,EQUALSShow 6 more,SEMVER_EQ,SEMVER_NEQ,SEMVER_LT,SEMVER_LTE,SEMVER_GT,SEMVER_GTE
value [required]
[string]
Values used by the operator. Every operator requires at least one value.
decision_metrics
[object]
Metrics used to decide the experiment outcome.
is_primary [required]
boolean
Whether this is the experiment primary metric.
metric_id [required]
uuid
Decision metric UUID.
decision_variant_key
string
Key of the variant selected in the experiment decision.
events_end_date
date-time
End of the time window for metric events.
events_start_date
date-time
Start of the time window for metric events.
experiment_type
string
Kind of experiment. STANDARD is an ordinary experiment. Other values, such as CANARY and HOLDOUT, identify experiments owned by another workflow. New kinds may be added; treat unknown values as non-standard.
hypothesis
string
Expected effect that the experiment is intended to test.
migration_metadata
Metadata retained for resources imported from another system.
name
string
Display name of the experiment.
pipeline_table_suffix
string
Suffix used to identify the experiment's pipeline output table.
protocol_id
string
ID of the protocol associated with the experiment.
related_links
[object]
Links to supporting material for the experiment.
id
string
Link ID. Omit it when adding a link.
title
string
Optional display title.
url [required]
string
Absolute URL.
results_last_updated
date-time
Time of the most recent update to the experiment's results.
split_by_properties
[object]
Properties used to split the experiment results into groups.
column_name [required]
string
Exposure field or Warehouse column used for the analysis dimension.
column_type [required]
enum
Type of the Datadog exposure field or Warehouse column.
Allowed enum values: varchar,int,double,boolean,varchar_array,int_array,double_array,raw,STRING,INTEGERShow 4 more,FLOAT,BOOLEAN,DATE,TIMESTAMP
id [required]
string
Read-only property ID. Omit it from POST and PATCH; writes identify properties by column_name.
name [required]
string
Display name for the analysis dimension.
status
enum
Current stage in the experiment lifecycle.
Allowed enum values: DRAFT,SCHEDULED,IN_PROGRESS,READY_FOR_DECISION,DECISION_MADE,CANCELLED,UNKNOWN
structured_metadata
[object]
Values of structured metadata fields attached to the experiment.
enum_values
[string]
Selected values for an enumerated metadata field.
field_display_name
string
Display name of the metadata field.
field_key [required]
string
Key that identifies the metadata field.
field_type
enum
Type of value stored in the structured metadata field.
Allowed enum values: FREETEXT,ENUM
freetext_value
string
Text value for a free-text metadata field.
subject_type_id
string
ID of the subject type used by this configuration.
summary
string
Summary text recorded for the experiment.
tags
[string]
Tags attached to the experiment.
teams
[string]
Teams associated with the experiment.
traffic_exposure
object
Traffic exposure fraction or schedule configured for the experiment.
fraction
double
STATIC exposure fraction. Draft experiments can change this value. After start only warehouse experiments without a Datadog flag can change a STATIC fraction through the public API.
mode [required]
enum
Whether exposure uses a fixed fraction or a sequence of steps.
Allowed enum values: STATIC,STEPS
steps
[object]
Configured exposure plan rather than wall-clock history. At least two steps must have strictly increasing fractions and no gaps. Warehouse steps start at assignments_start_date and can use different durations. New Datadog plans have at most five steps and a first fraction above zero. Their nonfinal durations must be equal and exclude time paused. Datadog steps start with the experiment. Running warehouse experiments can replace step fractions, durations, and the exposure mode. After start, Datadog exposure plans cannot change through the public API. The final duration is null and its fraction holds until assignment ends.
duration_ms [required]
int64
Positive step duration in milliseconds. Datadog durations exclude pauses. Send null for the final step.
fraction [required]
double
Fraction of traffic exposed during this step.
updated_at
date-time
Time when this resource was last updated.
variants
[object]
Variants configured for the experiment.
feature_flag_variant_id
string
Backing feature flag variant ID. Present for Datadog feature flag experiments and omitted for Warehouse experiments.
is_active [required]
boolean
Whether this variant participates in the experiment.
is_control [required]
boolean
Whether this is the single control variant.
key [required]
string
Value recorded in exposure data for this variant.
name
string
Display name of the experiment variant.
weight [required]
double
Traffic allocation percentage.
warehouse_exposure_configuration
object
Warehouse exposure model and settings used to identify experiment assignments.
entry_point [required]
object
Optional Warehouse measure that scopes analyzed subjects.
Refresh requirements and warnings returned by an experiment update.
needs_pipeline_refresh [required]
boolean
Whether this edit needs a full or non-full pipeline run. This operation does not start the run. A later false value does not clear a refresh required by an earlier edit.
refresh_endpoint
string
POST to this endpoint after finishing your edits. The full_refresh query parameter selects the required run type. Across multiple edits any full_refresh=true requirement takes priority.
warnings
[object]
Warnings returned after the experiment update.
code [required]
string
Code that identifies the warning.
detail [required]
string
Explanation of the warning and its effect on the update.
Invalid request: malformed field, a read-only attribute was sent, a referenced ID doesn't exist, an allocation change is not supported after start, or the resulting analysis configuration is invalid. May return multiple errors.
A human-readable explanation specific to this occurrence of the error.
meta
object
Non-standard meta-information about the error
source
object
References to the source of the error.
header
string
A string indicating the name of a single request header which caused the error.
parameter
string
A string indicating which URI query parameter caused the error.
pointer
string
A JSON pointer to the value in the request document that caused the error.
status
string
Status code of the response.
title
string
Short human-readable summary of the error.
{"errors":[{"detail":"Missing required attribute in body","meta":{},"source":{"header":"Authorization","parameter":"limit","pointer":"/data/attributes/title"},"status":"400","title":"Bad Request"}]}
Authenticated caller lacks the product_analytics_experiments_write permission, lacks permission to edit this experiment, or lacks feature-flag and environment read permissions for a Datadog-backed configuration.
A human-readable explanation specific to this occurrence of the error.
meta
object
Non-standard meta-information about the error
source
object
References to the source of the error.
header
string
A string indicating the name of a single request header which caused the error.
parameter
string
A string indicating which URI query parameter caused the error.
pointer
string
A JSON pointer to the value in the request document that caused the error.
status
string
Status code of the response.
title
string
Short human-readable summary of the error.
{"errors":[{"detail":"Missing required attribute in body","meta":{},"source":{"header":"Authorization","parameter":"limit","pointer":"/data/attributes/title"},"status":"400","title":"Bad Request"}]}
The requested configuration is incompatible with the experiment, or a feature flag change requires explicit reset consent and a complete target configuration (codes: unsupported_configuration, feature_flag_change_requires_reset, or feature_flag_change_requires_complete_configuration).
## default
#
# Path parameters exportexperiment_id="550e8400-e29b-41d4-a716-446655440000" # Use a Personal Access Token or Service Access Token exportDD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"