PATCH /experiments/{experiment_id}

Update an experiment by ID.

Servers

Path parameters

Name Type Required Description
experiment_id Integer Yes

The Experiment ID of the Experiment you want to change

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Query parameters

Name Type Required Description
action String No

Action to change the state of the experiment. publish saves and stages your experiment. If you have not started your experiment or the experiment is paused, your changes will not be visible to visitors when you publish. start makes your experiment live to all visitors who are in your targeted audience and changes the status to running. pause stops the experiment and changes the status to paused. No new visitors will see a paused experiment until you restart it. See Differences among publish, start, and pause for details. resume resumes the experiment from a paused status without publishing any new changes. Status will be running. unarchive unarchives an archived experiment. Status will be paused.

Valid values:

  • "resume"
  • "unarchive"
  • "start"
  • "publish"
  • "pause"

Request body fields

Name Type Required Description
metrics[] Array No

An ordered list of metrics to track for the Experiment

metrics[].aggregator String No

The aggregation function for the numerator of the metric. 'unique' measures the number of unique visitors/sessions that include the specified Event. 'count' measures the total number of occurrences of Event for the scope (visitor/session). 'sum' is the sum of the 'field' value

Valid values:

  • "count"
  • "sum"
  • "unique"
metrics[].field String No

The field to aggregate for the numerator of the metric. Required when 'aggregator' = 'sum', otherwise omitted

Valid values:

  • "revenue"
  • "value"
metrics[].winning_direction String No

The winning direction of this metric

Valid values:

  • "decreasing"
  • "increasing"
metrics[].event_id Integer No

The ID for the Event to select data from. Omitted for global metrics that are not relative to a specific Event, i.e. "overall revenue"

metrics[].scope String No

Specifies how Events should be grouped together. Can also be thought of as the denonimator of the metric. 'session' divides by the number of sessions. "Influenced sessions", or sessions that do not contain a decision Event but carry a decision from a previous session are not included in counts for numerator or denominator. 'visitor' divides by the number of visitors. 'event' divides by the total occurrences (impressions) of the specified Event

Valid values:

  • "event"
  • "session"
  • "visitor"
page_ids[] Array No

A list of Page IDs used in the Experiment. Only url_targeting or page_ids can be used when updating an experiment, but not both.

audience_conditions String No

The audiences that should see this experiment. To target everyone, use the string "everyone". Multiple audiences can be combined with "and" or "or" using the same structure as audience conditions

variations[] Array No

List of IDs of all variations in the Experiment

variations[].actions[] Array No

A collection of changes to run for each page in an experiment. Only applicable to Optimizely X Web.

variations[].actions[].changes[] Array No

The list of changes to apply to the Page. If 'dependencies' is supplied in a Change within 'changes', each ID in 'dependencies' must also be in 'changes'.

variations[].actions[].changes[].preserve_parameters Boolean No

Whether or not to preserve parameters from original request when redirecting to new destination URL. Required for changes of type 'redirect'. For redirects using destination_function, preserve_parameters must be false.

variations[].actions[].changes[].attributes Object No
variations[].actions[].changes[].attributes.href String No

Value of href attribute to add to element(s) matched by a selector

variations[].actions[].changes[].attributes.html String No

Value of HTML attribute to add to element(s) matched by a selector

variations[].actions[].changes[].attributes.remove Boolean No

Whether or not to remove the element(s) matched by a selector

variations[].actions[].changes[].attributes.text String No

Value of text attribute to add to the element(s) matched by a selector

variations[].actions[].changes[].attributes.hide Boolean No

Whether or not to hide the element(s) matched by a selector

variations[].actions[].changes[].attributes.class String No

Name of the class to set the element(s) matched by a selector to

variations[].actions[].changes[].attributes.src String No

Value of src attribute to add to element(s) matched by a selector

variations[].actions[].changes[].attributes.style String No

Value of style attribute to add to element(s) matched by a selector

variations[].actions[].changes[].destination_function String No

A function string to redirect to. Required for changes of type 'redirect'. destination and destination_function cannot be used at the same time

variations[].actions[].changes[].destination String No

URL to redirect to. Required for changes of type 'redirect'. destination and destination_function cannot be used at the same time

variations[].actions[].changes[].rearrange Object No

A directive to place the DOM element(s) matched by 'selector' to the position of the element matched by 'insertSelector', with the relation specified by 'operator'. The supplied example moves element matched by 'selector' above the element of class .greyBox

variations[].actions[].changes[].config Object No

Configuration properties for the extension

variations[].actions[].changes[].value String No

The value for the change can be custom Javascript or CSS as a string. Required for changes of type 'custom_css' and 'custom_code'

variations[].actions[].changes[].extension_id String No

ID of the extension to insert. Required for changes of type 'extension'

variations[].actions[].changes[].id String No

The ID of the change

variations[].actions[].changes[].selector String No

CSS selector to determine where changes are applied. Required for changes of type 'attribute', 'insert_html', and 'insert_image'

variations[].actions[].changes[].name String No

Name of the change

variations[].actions[].changes[].operator String No

Where to instert HTML or image for types 'insert_html' and 'insert_image' with respect to the element(s) matched by 'selector'

variations[].actions[].changes[].dependencies[] Array No

A list of dependent change IDs that must happen before this change

variations[].actions[].changes[].src String No

The path to the change payload on the CDN. Only present if 'async' is True.

variations[].actions[].changes[].css Object No
variations[].actions[].changes[].css.font-size String No
variations[].actions[].changes[].css.height String No
variations[].actions[].changes[].css.border-width String No
variations[].actions[].changes[].css.width String No
variations[].actions[].changes[].css.background-image String No
variations[].actions[].changes[].css.border-style String No
variations[].actions[].changes[].css.font-weight String No
variations[].actions[].changes[].css.position String No
variations[].actions[].changes[].css.background-color String No
variations[].actions[].changes[].css.border-color String No
variations[].actions[].changes[].css.color String No
variations[].actions[].changes[].type String Yes

The type of this change.

  • Changes of type 'attribute' have required fields 'selector' and 'attributes'
  • Changes of type 'custom_code' have required field 'value'
  • Changes of type 'custom_css' have required field 'value'
  • Changes of type 'extension' have required field 'extension_id'
  • Changes of type 'insert_html' have required field 'selector'
  • Changes of type 'insert_image' have required field 'selector'
  • Changes of type 'redirect' have required fields 'destination', 'preserve_parameters', and 'allow_additional_redirect'

Valid values:

  • "insert_image"
  • "extension"
  • "attribute"
  • "custom_code"
  • "custom_css"
  • "redirect"
  • "insert_html"
variations[].actions[].changes[].allow_additional_redirect Boolean No

Whether or not to allow additional redirects after redirecting to destination. Required for changes of type 'redirect'

variations[].actions[].changes[].async Boolean No

Indicates whether or not to execute the change asyncronously. If true, src will be returned in the response. Otherwise, it will be not included.

variations[].actions[].share_link String No

The share link for the provided Variation and Page combination

variations[].actions[].page_id Integer Yes

The ID of the Page to apply changes to

variations[].name String No

The name of the variation. Required for Web Experiments and Personalization experiences. Not required for Full Stack Experiments.

variations[].archived Boolean No

Whether the variation is archived

variations[].description String No

A description for the variation.

variations[].key String No

Unique string identifier for this variation within the Experiment. Only applicable for Full Stack and Mobile projects.

variations[].feature_enabled Boolean No

For Feature Tests, indicates if the feature should be enabled for the variation

variations[].variable_values Object No

For Feature Tests, the variable values for the variation represented as a map of Variable keys to their values.

variations[].status String No

Current status of the variation

Valid values:

  • "active"
  • "archived"
  • "paused"
variations[].weight Integer Yes

The percentage of your visitors that should see this variation, measured in basis points. 100 basis points = 1% traffic. Variation weights must add up to 10000.

variations[].variation_id Integer No

An immutable unique identifier for the variation. Required to update an existing variation.

description String No

The description or hypothesis for an Experiment

schedule Object No
schedule.time_zone String No

The time zone to use for Experiment start and stop times with respect to an IANA time zone (ex. "America/New_York"). The time zones expressed by GMT (e.g. "GMT-08:00") are no longer supported.

schedule.start_time String No

The start time for the Experiment, in date-time or date format (as defined by ISO 8601), and rounded to the nearest minute. If only date is supplied without time, the start time defaults to 00:00 on the specified start date.

schedule.stop_time String No

The stop time for the Experiment, in date-time or full-date format (as defined by ISO 8601), and rounded to the nearest minute. If only date is supplied without time, the stop time defaults to 00:00 on the specified stop date.

url_targeting Object No
url_targeting.activation_type String No

How this page is activated. See the full documentation on the Page object.

Valid values:

  • "manual"
  • "url_changed"
  • "immediate"
  • "callback"
  • "polling"
  • "dom_changed"
url_targeting.key String No

Unique string identifier for this Page within the Project

url_targeting.activation_code String No

Stringified Javascript function that determines when the Page is activated. Only required when activation_type is 'polling' or 'callback'.

url_targeting.conditions String No

Conditions to activate the experiment; our knowledge base article on Activation Types is the best guide for how to set up this data.

url_targeting.page_id Integer No

The unique identifier of the Page that represents the experiment or campaign's URL Targeting.

url_targeting.edit_url String Yes

URL to load in the editor for this page

environments Object No

String identifier for the Experiment's status in each Environment based on the environment key.

environments.name Object No
environments.name.status String Yes

Update the Experiment's status in different Environments based on the environment key.

Valid values:

  • "not_started"
  • "paused"
  • "running"
whitelist[] Array No

A list containing the user IDs and variations of users who have been whitelisted

whitelist[].variation_id Integer Yes

The unique identifier for the variation

whitelist[].user_id String Yes

The ID of the user being whitelisted

changes[] Array No

Custom CSS or JavaScript that will run before all variations in the Experiment (for Experiments in Web Projects only)

changes[].id String No

The ID of the change

changes[].selector String No

CSS selector to determine where changes are applied. Required for changes of type 'custom_css'.

changes[].name String No

Name of the change

changes[].dependencies[] Array No

A list of dependent change IDs that must happen before this change

changes[].src String No

The path to the change payload on the CDN. Only present if 'async' is True.

changes[].type String Yes

The type of this change.

Valid values:

  • "custom_code"
  • "custom_css"
changes[].value String Yes

The value for the change can be JavaScript or CSS as a string.

changes[].async Boolean No

Indicates whether or not to execute the change asyncronously. If true, src will be returned in the response. Otherwise, it will be not included.

holdback Integer No

Percent of traffic to exclude from the experiment, measured in basis points. 100 basis points = 1% traffic. For example, a value of 9900 would mean that 1% of visitors will be eligible for the experiment. This is only applicable for Web.

name String No

Name of the Experiment

key String No

Unique string identifier for this Experiment within the Project. Only applicable for Full Stack and Mobile projects.

traffic_allocation Integer No

Percent of traffic allocated for the experiment, measured in basis points. 100 basis points = 1% traffic. For example, a value of 5500 would mean that 55% of visitors will be eligible for the experiment. This is only applicable for Full Stack.

feature_id Integer No

The ID of a Feature to attach to the Experiment. This turns an Experiment into a Feature Test.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.