Skip to main content
Sitecore Documentation
  • Learn
  • Downloads
  • Changelog
  • Roadmap
PersonalizeCloud Portal
Sitecore Personalize developer documentation
  • Developing with Sitecore Personalize
  1. REST APIs
  1. Sitecore Personalize developer documentation
  2. REST APIs

Flow definition REST API

The Flow definition REST API enables you to perform CRUD operations on flow definitions. A flow definition is a web, interactive, or triggered experiment or experience.

Use the following attributes for flow definitions:

AttributeTypeDescriptionExample(s)
namestringThe name of the flow definition."Alert bar"
friendlyIdstringThe unique ID of the flow definition.

Only lowercase alphanumeric characters and underscores are allowed.
"alert_bar_1"
typestring enum (uppercase)The type of the flow definition.

For a web experiment or experience, set this value to "INTERACTIVE_WEB_FLOW".

For an interactive experiment or experience, set this value to "INTERACTIVE_API_FLOW".

For a triggered experiment or experience, set this value to "TRIGGERED_V3".
Must be one of:

  • "INTERACTIVE_WEB_FLOW"
  • "INTERACTIVE_API_FLOW"
  • "TRIGGERED_V3"
subtypestring enum (uppercase)The subtype of the flow.

Set this value either to "EXPERIMENT" or "EXPERIENCE".
Must be one of:

  • "EXPERIMENT"
  • "EXPERIENCE"
statusstring enum (uppercase)The status of the flow definition.

When you create an experiment or experience, set this value to "DRAFT".
Must be one of:

  • "DRAFT"
  • "PUBLISHING"
  • "PRODUCTION"
  • "SCHEDULED"
  • "LIVE"
  • "PAUSED"
  • "COMPLETED"
channelsarray of uppercase strings (enum)The touchpoint where the user interacts with your brand.

For example, for webpages, the channel is "WEB". For mobile app screens, the channel is "MOBILE_APP".
Every string must be one of:

  • "CALL_CENTER"
  • "EMAIL"
  • "MOBILE_APP"
  • "MOBILE_WEB"
  • "PUSH_NOTIFICATION"
  • "SMS"
  • "WEB"
businessProcessstringFor a web or interactive experiment or experience, set this value to "interactive_v1".

For a triggered experiment or experience, set this value to "triggered_v1".
  • "interactive_v1"
  • "triggered_v1"
variantsarrayDifferent versions of the same experiment.

For an experience, set this value to an empty array [].
[]
trafficobjectFor an experiment, this object determines what percentage of guests should be exposed to each variant of the experiment.

For an experience, this object determines what percentage of guests should be exposed to the experience.
"mys3cr3tstr1ingforauth1!x"
scheduleobjectThe time frame for when an experiment or experience can run."mys3cr3tstr1ingforauth1!x"
sampleSizeConfigobjectFor an experiment with a primary goal, this object defines A/B test parameters. These parameters affect the minimum sample size required for a test to reach statistical significance."mys3cr3tstr1ingforauth1!x"
archivedbooleanThe archive status of the flow definition.true, false
revisionsarray of objectsAn array of revisions of the flow definition."mys3cr3tstr1ingforauth1!x"
revisionintegerThe sequential number of the template revision.2

The traffic object:

AttributeTypeDescriptionExample(s)
typestring enumThe traffic allocation type for an experiment.

For an experience, set this to "simpleTraffic" or "advancedTraffic".
Must be one of:

  • "simpleTraffic"
  • "advancedTraffic"
weightingAlgorithmstring enumThe algorithm that determines the weights given to each variant in an experiment.Must be one of:

  • "MULTI_ARMED_BANDIT"
  • "USER_DEFINED"
coupledbooleanThis value defines whether the experiment is coupled to other experiments.

For coupled experiments, every guest is assigned a permanent bucket number based on the guest reference.

The bucket number remains the same for the guest across all coupled experiments.
true, false
allocationinteger

Minimum 0. Maximum 100.
For an experiment, set this value to the percentage of guests you want to expose to the experiment.

For an experience, set this value to 100.
100
splitsarray of objectsFor an experiment, specify how to split traffic across variants.

Each object represents a variant. In each object, ref is the variant reference. split is a number that represents the percentage of traffic the variant should receive.

For an experience, set this value to an empty array [].
"mys3cr3tstr1ingforauth1!x"

Here's an example of a simpleTraffic traffic for an experiment that exposes 60 percent of guests to one variant, and 40 percent to another:

{
  "traffic": {
    "type": "simpleTraffic",
    "weightingAlgorithm": "USER_DEFINED",
    "splits": [
      {
        "ref": "71206a12-b1b0-4baa-93ea-a0752a2762b0",
        "split": 60
      },
      {
        "ref": "ffe19d2a-b531-468d-a155-fedf757208e5",
        "split": 40
      }
    ]
  }
}

Here's an example of an advancedTeaffic traffic for an experiment. Guests in buckets 1 to 11 will not be exposed to the experiment. Guests in buckets 12 to 55 will be exposed to one variant, while guests in buckets 56 to 120 will be exposed to another variant.

{
  "traffic": {
    "type": "advancedTraffic",
    "weightingAlgorithm": "USER_DEFINED",
    "modifiedAt": "2026-07-21T16:`09:54`.583Z",
    "allocationLow": 12,
    "allocationHigh": 120,
    "splits": [
      {
        "ref": "3e0c4419-5679-47e8-9d95-7f34b074af4b",
        "lowSplit": 12,
        "highSplit": 55
      },
      {
        "ref": "61705a82-a5d2-4a0f-920f-2c0990897b39",
        "lowSplit": 56,
        "highSplit": 120
      }
    ]
  }
}

The schedule object:

AttributeTypeDescriptionExample(s)
typestring enumThe type of the flow schedule.

Set this value to "simpleSchedule".
"simpleSchedule"
startDatestring (ISO 8601)The earliest possible time the flow can run.2026-07-04T11:46
.810Z
endDate

optional
string (ISO 8601)The last possible time the flow can run.2026-07-22T12:00
.810Z

The sampleSizeConfig object:

AttributeTypeDescriptionExample(s)
baseValuenumberThe anticipated conversion goal value of the primary goal.

The default is 0.02.
0.02
minimumDetectableDifferencenumberThe minimum conversion goal difference to detect relative to the base value.

The default is 0.2.
0.2
confidenceLevelnumberThe required confidence level before the test is considered complete.

This value represents the confidence your organization has that if the null hypothesis is true, the measured difference is not due to random fluctuations.

The default is 0.95.
0.95
If you have suggestions for improving this article, let us know!

Documentation Assistant

This assistant uses AI to generate responses based on Sitecore documentation. While it has access to official sources, answers may be incomplete or inaccurate and should not be considered official advice or support.
Powered by
k
kapa.ai
Protected by reCAPTCHA

© Copyright 2026, Sitecore A/S or a Sitecore affiliated company.
All rights reserved.

Privacy policySitecore Trust CenterTerms of use