A journey is an automation that contacts enter on a trigger, such as an event or joining a list, and move through step by step over time. Where a campaign is one send to everyone at once, a journey sends to each contact when they reach each step. A live journey can be edited: the change reaches new entries, and a send step's content reaches everyone who has not reached the step yet. One an agent key wrote needs a person to confirm it before it goes live. See Objects and rules. A contact's journeys: GET /v1/contacts/{id}/journeys.
Endpoints
| Endpoint | Request |
|---|---|
| List journeys | GET /v1/journeys |
| Create a journey | POST /v1/journeys |
| Retrieve a journey | GET /v1/journeys/{id} |
| Update a journey | PATCH /v1/journeys/{id} |
| Delete a journey | DELETE /v1/journeys/{id} |
| Simulate a journey | POST /v1/journeys/{id}/simulate |
| Activate a journey | POST /v1/journeys/{id}/activate |
| Pause a journey | POST /v1/journeys/{id}/pause |
| End a journey | POST /v1/journeys/{id}/end |
| Duplicate a journey | POST /v1/journeys/{id}/duplicate |
| Retrieve a journey's metrics | GET /v1/journeys/{id}/metrics |
| Retrieve a journey's metrics step by step | GET /v1/journeys/{id}/step-metrics |
| Check a journey before activating | GET /v1/journeys/{id}/activation-check |
The Journey object
{
"id": "0192f3a4-3d5e-7a7f-8c43-6b8c9d0e1f2a",
"name": "Welcome series",
"trigger": {
"type": "event",
"name": "Signed Up",
"reentry": {
"mode": "once"
}
},
"exitConditions": [],
"steps": [
{
"id": "wait-an-hour",
"name": "Wait an hour",
"type": "wait",
"duration": {
"value": 1,
"unit": "hours"
}
},
{
"id": "welcome-email",
"name": "Welcome email",
"type": "send",
"channel": "email",
"content": {
"subject": "Welcome to Acme Shop",
"previewText": "Your first order ships free",
"from": "Acme Shop <[email protected]>",
"templateSnapshot": {
"schemaVersion": 1,
"blocks": [
{
"id": "title",
"type": "heading",
"text": "Welcome to Acme Shop",
"size": "28px"
},
{
"id": "intro",
"type": "text",
"text": "Hi {{ contact.firstName }}, your first order ships free."
},
{
"id": "shop",
"type": "button",
"text": "Start shopping",
"href": "https://acme-shop.com"
}
],
"theme": {}
}
},
"nextStep": null
}
],
"messageLimits": {
"apply": true,
"retryFor": {
"value": 24,
"unit": "hours"
}
},
"utm": null,
"maxEntries": null,
"enrolledCount": 128,
"activeCount": 12,
"status": "active",
"pendingAgentReview": false,
"tags": [
"Onboarding"
],
"revision": 2,
"createdAt": "2026-10-01T09:30:00.000Z",
"updatedAt": "2026-10-02T14:05:00.000Z"
}idstringrequireduuid
namestringrequiredtriggerobjectrequiredWhat starts an enrollment.
One of 6 shapes
- Event trigger
4 child attributes
type"event"requirednamestringrequiredThe event that starts an enrollment.
1–128 characters
whereobject[]optionalConditions on the event's properties; all must hold.
at least 1 item · at most 5 items
3 child attributes
propertystringrequiredThe event property key.
1–64 characters
operatorstringrequirednotEqualsalso matches an event without the property.equalsandnotEqualscompare the property as text, ignoring case and accents.one of
equals,notEquals,gt,gte,lt,ltevaluestringrequiredWhat to compare with, as text (
"pro","true"); a number ("50") forgt,gte,ltandlte.up to 255 characters
reentryobjectrequiredWhether a contact may enter again:
once(the default), orrepeatableoncewaitAfterEntryhas passed since their last entry started.default
{"mode":"once"}One of 2 shapes
- Once
1 child attribute
mode"once"required
- Repeatable
2 child attributes
mode"repeatable"requiredwaitAfterEntryDurationOrZerorequiredHow long after a contact's last entry started before they may enter again, at most 3,650 days; zero lets entries overlap.
- List trigger
3 child attributes
type"list"requiredlistIdstringoptionalThe list whose new members enter; unset, joining any list starts it.
uuid
reentryobjectrequiredWhether a contact may enter again:
once(the default), orrepeatableoncewaitAfterEntryhas passed since their last entry started.default
{"mode":"once"}One of 2 shapes
- Once
1 child attribute
mode"once"required
- Repeatable
2 child attributes
mode"repeatable"requiredwaitAfterEntryDurationOrZerorequiredHow long after a contact's last entry started before they may enter again, at most 3,650 days; zero lets entries overlap.
- Segment trigger
4 child attributes
type"segment"requiredsegmentIdstringoptionalThe segment whose matches enter; a draft may leave it unset.
uuid
onstringrequiredenter: when a contact begins matching it;exit: when they stop. Found by the background sweep within 15 minutes.one of
enter,exit· default"enter"reentryobjectrequiredWhether a contact may enter again:
once(the default), orrepeatableoncewaitAfterEntryhas passed since their last entry started.default
{"mode":"once"}One of 2 shapes
- Once
1 child attribute
mode"once"required
- Repeatable
2 child attributes
mode"repeatable"requiredwaitAfterEntryDurationOrZerorequiredHow long after a contact's last entry started before they may enter again, at most 3,650 days; zero lets entries overlap.
- Form trigger
4 child attributes
type"form"requiredformIdstringoptionalThe form whose submissions enter; unset, any form starts it.
uuid
whereobject[]optionalConditions on the submission, such as
outcomeequalscreatedfor new contacts only; all must hold.at least 1 item · at most 5 items
3 child attributes
propertystringrequiredThe event property key.
1–64 characters
operatorstringrequirednotEqualsalso matches an event without the property.equalsandnotEqualscompare the property as text, ignoring case and accents.one of
equals,notEquals,gt,gte,lt,ltevaluestringrequiredWhat to compare with, as text (
"pro","true"); a number ("50") forgt,gte,ltandlte.up to 255 characters
reentryobjectrequiredWhether a contact may enter again:
once(the default), orrepeatableoncewaitAfterEntryhas passed since their last entry started.default
{"mode":"once"}One of 2 shapes
- Once
1 child attribute
mode"once"required
- Repeatable
2 child attributes
mode"repeatable"requiredwaitAfterEntryDurationOrZerorequiredHow long after a contact's last entry started before they may enter again, at most 3,650 days; zero lets entries overlap.
- Attribute trigger
4 child attributes
type"attribute"requiredkeystringrequiredThe contact attribute whose change starts an enrollment.
pattern
^[\p{L}\p{N}\p{M}_.-]{1,64}$whereobject[]optionalConditions on the change:
valueis the new value,previous_valuethe old one. For a list attribute,valueequalsan item when it was added.at least 1 item · at most 5 items
3 child attributes
propertystringrequiredThe event property key.
1–64 characters
operatorstringrequirednotEqualsalso matches an event without the property.equalsandnotEqualscompare the property as text, ignoring case and accents.one of
equals,notEquals,gt,gte,lt,ltevaluestringrequiredWhat to compare with, as text (
"pro","true"); a number ("50") forgt,gte,ltandlte.up to 255 characters
reentryobjectrequiredWhether a contact may enter again:
once(the default), orrepeatableoncewaitAfterEntryhas passed since their last entry started.default
{"mode":"once"}One of 2 shapes
- Once
1 child attribute
mode"once"required
- Repeatable
2 child attributes
mode"repeatable"requiredwaitAfterEntryDurationOrZerorequiredHow long after a contact's last entry started before they may enter again, at most 3,650 days; zero lets entries overlap.
- Date trigger
6 child attributes
fieldstringrequiredThe contact date field the journey runs from.
pattern
^[A-Za-z][A-Za-z0-9_]{0,63}$recurrencestringrequiredonceruns on the date a single time;annualrepeats every year.one of
once,annualoffsetSignedDurationrequiredHow far from the date to start, in whole days: negative before it, positive after, at most 365 days either way. Defaults to the day itself.
2 child attributes
valueintegerrequiredunitstringrequiredone of
seconds,minutes,hours,days
timestringrequiredTime of day to start, as
HH:MMin the contact's timezone, else the workspace's.pattern
^(?:[01]\d|2[0-3]):[0-5]\d$leapDaystringrequiredFor an annual 29 February date in a common year: run on 28 Feb, on 1 Mar, or skip.
one of
feb28,mar1,skip· default"feb28"type"date"required
exitConditionsobject[]requiredEvents that end a contact's enrollment early.
One of 2 shapes
- Event exit
3 child attributes
type"event"requirednamestringrequiredThe event that ends a contact's enrollment when they do it.
1–128 characters
whereobject[]optionalConditions on the event's properties; all must hold.
at least 1 item · at most 5 items
3 child attributes
propertystringrequiredThe event property key.
1–64 characters
operatorstringrequirednotEqualsalso matches an event without the property.equalsandnotEqualscompare the property as text, ignoring case and accents.one of
equals,notEquals,gt,gte,lt,ltevaluestringrequiredWhat to compare with, as text (
"pro","true"); a number ("50") forgt,gte,ltandlte.up to 255 characters
- Conversion goal exit
1 child attribute
type"conversion_goal"required
stepsobject[]requiredThe steps, in the order of the default path. People partway through keep the steps they entered with; an edit applies to new entries.
Any of 10 shapes
- Wait step
8 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"wait"requireddurationDurationoptionalHow long to wait; at most 365 days. Or set
untilorbusinessDays.2 child attributes
valueintegerrequiredmin > 0
unitstringrequiredone of
seconds,minutes,hours,days
untilobjectoptionalWait until a date the contact or the triggering event holds, instead.
3 child attributes
fromstringrequiredcontact: an attribute or date;event: the trigger event.one of
contact,eventkeystringrequiredThe attribute or date key (
trial_ends_at), or the event property; a dotted path reads a nested one.1–128 characters
offsetSignedDurationoptionalHow far before (negative) or after the date; 3 days before is
{ "value": -3, "unit": "days" }. At most 365 days either way.2 child attributes
valueintegerrequiredunitstringrequiredone of
seconds,minutes,hours,days
businessDaysintegeroptionalWait this many working days instead, counted in the contact's local time and ending at the same time of day: the days of
window.dayswhen set, else Monday to Friday.min 1 · max 260
windowobjectoptionalHours the wait may end in, in the contact's local time.
3 child attributes
startHourintegerrequiredHour of day (0-23) the window opens, inclusive.
min 0 · max 23
endHourintegerrequiredHour of day (1-24) the window closes; it must be after
startHour.min 1 · max 24
daysinteger[]optionalDays of the week the window is open, 0 = Sunday to 6 = Saturday; every day when left out.
at least 1 item · at most 7 items
nextStepstring | nulloptionalThe id of the step to run next. Omitted, the next step in
stepsruns (after the last one the journey ends);nullends the journey here. The last step of a branch should setnull, or the enrollment continues into the steps that follow it.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Wait-until step
7 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"wait_until"requiredeventobjectrequiredThe event to wait for, and the conditions it must meet.
2 child attributes
namestringrequiredThe event to wait for.
1–128 characters
whereobject[]optionalConditions on the event's properties; all must hold.
at least 1 item · at most 5 items
3 child attributes
propertystringrequiredThe event property key.
1–64 characters
operatorstringrequirednotEqualsalso matches an event without the property.equalsandnotEqualscompare the property as text, ignoring case and accents.one of
equals,notEquals,gt,gte,lt,ltevaluestringrequiredWhat to compare with, as text (
"pro","true"); a number ("50") forgt,gte,ltandlte.up to 255 characters
timeoutDurationrequiredHow long to wait for the event: 1 minute to 90 days.
2 child attributes
valueintegerrequiredmin > 0
unitstringrequiredone of
seconds,minutes,hours,days
onMatchStepstringrequiredThe id of the step to take when the event happens.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$onTimeoutStepstring | nullrequiredThe id of the step to take on timeout;
nullends the journey.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Digest step
5 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"digest"requiredgatherForDurationrequiredHow long to gather events: 1 minute to 7 days.
2 child attributes
valueintegerrequiredmin > 0
unitstringrequiredone of
seconds,minutes,hours,days
nextStepstring | nulloptionalThe id of the step to run next. Omitted, the next step in
stepsruns (after the last one the journey ends);nullends the journey here. The last step of a branch should setnull, or the enrollment continues into the steps that follow it.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Email send step
10 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"send"requiredchannel"email"requiredcontentobjectrequiredThe email, as saved.
7 child attributes
subjectstringoptionalThe subject line. Merge tags are allowed.
1–998 characters
previewTextstringoptionalShown by inboxes after the subject. Merge tags are allowed; keep it near 100 characters.
1–255 characters
htmlstringoptionalThe HTML body. Rendered from the design when one is set.
1–512,000 characters
textstringoptionalThe plain-text alternative.
1–512,000 characters
fromstringoptionalThe sender address, on a verified sending domain.
1–320 characters
replyTostringoptionalWhere replies go; the part before the @ must be ASCII.
email
templateSnapshotobjectoptionalThe email: a design, or HTML. Copied from a template, or written here; later template edits do not change it.
One of 2 shapes
- DesignSnapshot
- HtmlSnapshot
nextStepstring | nulloptionalThe id of the step to run next. Omitted, the next step in
stepsruns (after the last one the journey ends);nullends the journey here. The last step of a branch should setnull, or the enrollment continues into the steps that follow it.pattern
^[a-z0-9][a-z0-9_-]{0,63}$onUnreachableStepstringoptionalThe id of the step to go to when the contact cannot receive this channel; unset skips the send.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$onFailureStepstringoptionalThe id of the step to go to when the message cannot be queued because the plan's sending allowance is used up or its marketing contacts are past the plan's limit (recorded
skipped, reasonplan_limit_reached); later delivery failures do not branch. Unset continues tonextStep.pattern
^[a-z0-9][a-z0-9_-]{0,63}$topicIdstringoptionalSends only to contacts the topic reaches; unset sends to everyone with consent.
uuid
transactionalbooleanoptionalA service message the contact needs whatever their marketing choices (an order receipt, a booking reminder): sent without email consent or a topic, not held by quiet hours or message limits, with no unsubscribe link, as a transactional send is. Only an address that bounced, or marked transactional email as spam, is skipped. Not for promotions.
- Push send step
9 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"send"requiredchannel"push"requiredcontentobjectrequiredThe notification. Any part may be missing on a draft.
2 child attributes
pushProjectIdstringoptionalThe push app to send through.
uuid
pushobjectoptionalThe notification content.
13 child attributes
titlestringoptionalThe notification title (up to 100 characters).
1–100 characters
bodystringoptionalThe notification text (up to 500 characters).
1–500 characters
actionUrlstringoptionalThe HTTPS page opened when the notification is tapped.
uri · up to 2,048 characters
imageUrlstringoptionalA large picture: web and Android show it; iOS needs the app's service extension.
uri · up to 2,048 characters
iconUrlstringoptionalWeb only; iOS and Android show the app's own notification icon.
uri · up to 2,048 characters
datamap<string, string>optionalUp to 10 string key-value pairs passed to the app untouched, for deep links and in-app routing.
at most 10 keys · keys: pattern
^[A-Za-z0-9_.-]{1,64}$· values: up to 1,024 charactersbuttonsobject[]optionalUp to 2 action buttons.
at least 1 item · at most 2 items
collapseKeystringoptionalA newer notification with the same key replaces the older one on the device.
pattern
^[A-Za-z0-9_-]{1,64}$soundstringoptionalThe name of a sound the app ships; the device's default if unset.
1–64 characters
badgeintegeroptionalThe number shown on the iOS app icon.
min 0 · max 99999
ttlDurationOrZerooptionalHow long a provider keeps trying an offline device, up to 28 days; zero delivers now or never. Defaults to one day.
urgencystringoptionalhighasks the push service to deliver promptly, even to a sleeping device;normallets it wait for a good moment to save battery. Device settings and the app still decide whether and how it is shown. Unset, a transactional push ishighand any othernormal.one of
high,normaloverridesobjectoptionalFields that differ on one platform, each replacing the shared one there (a whole
datamap, not merged key by key). On iOS and AndroidactionUrlmay be an app link such asmyapp://orders; the shared one and the web one must be HTTPS.
nextStepstring | nulloptionalThe id of the step to run next. Omitted, the next step in
stepsruns (after the last one the journey ends);nullends the journey here. The last step of a branch should setnull, or the enrollment continues into the steps that follow it.pattern
^[a-z0-9][a-z0-9_-]{0,63}$onUnreachableStepstringoptionalThe id of the step to go to when the contact cannot receive this channel; unset skips the send.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$onFailureStepstringoptionalThe id of the step to go to when the message cannot be queued because the plan's sending allowance is used up or its marketing contacts are past the plan's limit (recorded
skipped, reasonplan_limit_reached); later delivery failures do not branch. Unset continues tonextStep.pattern
^[a-z0-9][a-z0-9_-]{0,63}$topicIdstringoptionalSends only to contacts the topic reaches; unset sends to everyone with consent.
uuid
- Branch step
6 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"branch"requiredwhereobject[]requiredConditions on the trigger event's properties; all must hold.
at least 1 item · at most 5 items
3 child attributes
propertystringrequiredThe event property key.
1–64 characters
operatorstringrequirednotEqualsalso matches an event without the property.equalsandnotEqualscompare the property as text, ignoring case and accents.one of
equals,notEquals,gt,gte,lt,ltevaluestringrequiredWhat to compare with, as text (
"pro","true"); a number ("50") forgt,gte,ltandlte.up to 255 characters
onMatchStepstringrequiredThe id of the step to take when the conditions hold.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$otherwiseStepstring | nullrequiredThe id of the step to take when they do not;
nullends the journey.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Filter step
7 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"filter"requiredmodestringrequiredoncechecks the rules here only;continuousre-checks them before every later step.one of
once,continuousrulesobjectrequiredThe contact must match these rules.
Any of 2 shapes
- Match all
1 child attribute
allobject[]requiredEvery rule or nested group must match.
at least 1 item · at most 20 items
- Match any
1 child attribute
anyobject[]requiredAt least one rule or nested group must match.
at least 1 item · at most 20 items
onMatchStepstringrequiredThe id of the step to take when the contact matches.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$otherwiseStepstring | nullrequiredThe id of the step to take when they do not;
nullends the journey.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Split step
5 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"split"requiredpathsobject[]requiredPaths checked in order; the first whose rules match is taken.
at least 1 item · at most 5 items
2 child attributes
rulesobjectrequiredThe contact takes this path when they match.
Any of 2 shapes
- Match all
- Match any
nextStepstringrequiredThe id of the step this path leads to.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$
otherwiseStepstring | nullrequiredThe id of the step to take when no path matches;
nullends the journey.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Random split step
4 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"random_split"requiredpathsobject[]requiredTwo to five paths whose shares add up to 100. A contact takes the same path each time it enters, until the shares change.
at least 2 items · at most 5 items
2 child attributes
percentintegerrequiredShare of the contacts taking this path, in percent.
min 1 · max 99
nextStepstring | nullrequiredThe id of the step this path leads to;
nullis a holdout.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
- Action step
5 child attributes
idstringrequiredThe step's id, unique within the journey: transitions name it, and its metrics follow it across edits. Reusing a deleted step's id merges their metrics.
pattern
^[a-z0-9][a-z0-9_-]{0,63}$namestringoptionalA label for the step, shown in metrics.
1–255 characters
type"action"requiredactionobjectrequiredWhat this step does to the contact.
One of 5 shapes
- Set attribute
3 child attributes
kind"set_attribute"requiredkeystringrequiredThe contact attribute's key.
pattern
^[\p{L}\p{N}\p{M}_.-]{1,64}$valuestring | number | boolean | nullrequiredThe value to set;
nullclears it.
- Add to or remove from list attribute
3 child attributes
kindstringrequiredone of
add_to_attribute,remove_from_attributekeystringrequiredThe contact attribute's key.
pattern
^[\p{L}\p{N}\p{M}_.-]{1,64}$valuestring | number | booleanrequiredThe one item to add to, or remove from, the list; other items are kept.
- Add to list
2 child attributes
kind"add_to_list"requiredlistIdstringrequiredThe list to add the contact to.
uuid
- Remove from list
2 child attributes
kind"remove_from_list"requiredlistIdstringrequiredThe list to remove the contact from.
uuid
- Send webhook
3 child attributes
kind"webhook"requiredwebhookIdstringrequiredThe webhook endpoint to notify.
uuid
datamap<string, any>requiredExtra data sent in the
journey.action_reachedpayload.default
{}
nextStepstring | nulloptionalThe id of the step to run next. Omitted, the next step in
stepsruns (after the last one the journey ends);nullends the journey here. The last step of a branch should setnull, or the enrollment continues into the steps that follow it.pattern
^[a-z0-9][a-z0-9_-]{0,63}$
messageLimitsMessageLimitUserequired2 child attributes
applybooleanrequiredWhether its messages count toward the workspace's message limits and are held by them.
retryForDurationoptionalHow long a message over a limit keeps being retried before it is skipped with reason
message_limit: whole hours, at most 48. Unset, it is skipped at once. Absent whenapplyis false.2 child attributes
valueintegerrequiredmin > 0
unitstringrequiredone of
seconds,minutes,hours,days
utmobject | nullrequiredLink tags for the journey's email;
nullfollows the workspace.6 child attributes
enabledbooleanrequiredsourcestringoptionalpattern
^[\p{L}\p{N}\p{M} ._\-+/]+$· 1–100 charactersmediumstringoptionalpattern
^[\p{L}\p{N}\p{M} ._\-+/]+$· 1–100 characterscampaignstringoptionalpattern
^[\p{L}\p{N}\p{M} ._\-+/]+$· 1–100 characterscontentstringoptionalpattern
^[\p{L}\p{N}\p{M} ._\-+/]+$· 1–100 characterstermstringoptionalpattern
^[\p{L}\p{N}\p{M} ._\-+/]+$· 1–100 characters
maxEntriesinteger | nullrequiredThe most enrollments the journey starts over its life;
nullhas no cap. It is full onceenrolledCountreaches it: it staysactivebut nobody new enters.min > 0
enrolledCountintegerrequiredEnrollments ever started.
min 0
activeCountintegerrequiredEnrollments in progress now.
min 0
statusstringrequiredended: nobody enters and enrollments in progress were exited; it cannot restart.one of
draft,active,paused,endedpendingAgentReviewbooleanrequiredAn agent key authored or edited it and it is a draft or paused, so it waits in the agent review queue: activating needs a person's approval.
tagsstring[]requiredTag names, sorted without case.
revisionintegerrequiredRaised by every edit. Send it back as
expectedRevisionon the update so a change made since you read it is refused instead of overwritten.min > 0 · max 2147483647
createdAtstringrequireddate-time
updatedAtstringrequireddate-time