Journeys overviewMenu
On this page

Journeys

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

EndpointRequest
List journeysGET /v1/journeys
Create a journeyPOST /v1/journeys
Retrieve a journeyGET /v1/journeys/{id}
Update a journeyPATCH /v1/journeys/{id}
Delete a journeyDELETE /v1/journeys/{id}
Simulate a journeyPOST /v1/journeys/{id}/simulate
Activate a journeyPOST /v1/journeys/{id}/activate
Pause a journeyPOST /v1/journeys/{id}/pause
End a journeyPOST /v1/journeys/{id}/end
Duplicate a journeyPOST /v1/journeys/{id}/duplicate
Retrieve a journey's metricsGET /v1/journeys/{id}/metrics
Retrieve a journey's metrics step by stepGET /v1/journeys/{id}/step-metrics
Check a journey before activatingGET /v1/journeys/{id}/activation-check

The Journey object

Journey example
{
  "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"
}
idstringrequired

uuid

namestringrequired
triggerobjectrequired

What starts an enrollment.

One of 6 shapes
Event trigger
4 child attributes
type"event"required
namestringrequired

The event that starts an enrollment.

1–128 characters

whereobject[]optional

Conditions on the event's properties; all must hold.

at least 1 item · at most 5 items

3 child attributes
propertystringrequired

The event property key.

1–64 characters

operatorstringrequired

notEquals also matches an event without the property. equals and notEquals compare the property as text, ignoring case and accents.

one of equals, notEquals, gt, gte, lt, lte

valuestringrequired

What to compare with, as text ("pro", "true"); a number ("50") for gt, gte, lt and lte.

up to 255 characters

reentryobjectrequired

Whether a contact may enter again: once (the default), or repeatable once waitAfterEntry has 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"required
waitAfterEntryDurationOrZerorequired

How 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"required
listIdstringoptional

The list whose new members enter; unset, joining any list starts it.

uuid

reentryobjectrequired

Whether a contact may enter again: once (the default), or repeatable once waitAfterEntry has 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"required
waitAfterEntryDurationOrZerorequired

How 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"required
segmentIdstringoptional

The segment whose matches enter; a draft may leave it unset.

uuid

onstringrequired

enter: when a contact begins matching it; exit: when they stop. Found by the background sweep within 15 minutes.

one of enter, exit · default "enter"

reentryobjectrequired

Whether a contact may enter again: once (the default), or repeatable once waitAfterEntry has 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"required
waitAfterEntryDurationOrZerorequired

How 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"required
formIdstringoptional

The form whose submissions enter; unset, any form starts it.

uuid

whereobject[]optional

Conditions on the submission, such as outcome equals created for new contacts only; all must hold.

at least 1 item · at most 5 items

3 child attributes
propertystringrequired

The event property key.

1–64 characters

operatorstringrequired

notEquals also matches an event without the property. equals and notEquals compare the property as text, ignoring case and accents.

one of equals, notEquals, gt, gte, lt, lte

valuestringrequired

What to compare with, as text ("pro", "true"); a number ("50") for gt, gte, lt and lte.

up to 255 characters

reentryobjectrequired

Whether a contact may enter again: once (the default), or repeatable once waitAfterEntry has 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"required
waitAfterEntryDurationOrZerorequired

How 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"required
keystringrequired

The contact attribute whose change starts an enrollment.

pattern ^[\p{L}\p{N}\p{M}_.-]{1,64}$

whereobject[]optional

Conditions on the change: value is the new value, previous_value the old one. For a list attribute, value equals an item when it was added.

at least 1 item · at most 5 items

3 child attributes
propertystringrequired

The event property key.

1–64 characters

operatorstringrequired

notEquals also matches an event without the property. equals and notEquals compare the property as text, ignoring case and accents.

one of equals, notEquals, gt, gte, lt, lte

valuestringrequired

What to compare with, as text ("pro", "true"); a number ("50") for gt, gte, lt and lte.

up to 255 characters

reentryobjectrequired

Whether a contact may enter again: once (the default), or repeatable once waitAfterEntry has 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"required
waitAfterEntryDurationOrZerorequired

How 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
fieldstringrequired

The contact date field the journey runs from.

pattern ^[A-Za-z][A-Za-z0-9_]{0,63}$

recurrencestringrequired

once runs on the date a single time; annual repeats every year.

one of once, annual

offsetSignedDurationrequired

How 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
valueintegerrequired
unitstringrequired

one of seconds, minutes, hours, days

timestringrequired

Time of day to start, as HH:MM in the contact's timezone, else the workspace's.

pattern ^(?:[01]\d|2[0-3]):[0-5]\d$

leapDaystringrequired

For 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[]required

Events that end a contact's enrollment early.

One of 2 shapes
Event exit
3 child attributes
type"event"required
namestringrequired

The event that ends a contact's enrollment when they do it.

1–128 characters

whereobject[]optional

Conditions on the event's properties; all must hold.

at least 1 item · at most 5 items

3 child attributes
propertystringrequired

The event property key.

1–64 characters

operatorstringrequired

notEquals also matches an event without the property. equals and notEquals compare the property as text, ignoring case and accents.

one of equals, notEquals, gt, gte, lt, lte

valuestringrequired

What to compare with, as text ("pro", "true"); a number ("50") for gt, gte, lt and lte.

up to 255 characters

Conversion goal exit
1 child attribute
type"conversion_goal"required
stepsobject[]required

The 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
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"wait"required
durationDurationoptional

How long to wait; at most 365 days. Or set until or businessDays.

2 child attributes
valueintegerrequired

min > 0

unitstringrequired

one of seconds, minutes, hours, days

untilobjectoptional

Wait until a date the contact or the triggering event holds, instead.

3 child attributes
fromstringrequired

contact: an attribute or date; event: the trigger event.

one of contact, event

keystringrequired

The attribute or date key (trial_ends_at), or the event property; a dotted path reads a nested one.

1–128 characters

offsetSignedDurationoptional

How far before (negative) or after the date; 3 days before is { "value": -3, "unit": "days" }. At most 365 days either way.

2 child attributes
valueintegerrequired
unitstringrequired

one of seconds, minutes, hours, days

businessDaysintegeroptional

Wait this many working days instead, counted in the contact's local time and ending at the same time of day: the days of window.days when set, else Monday to Friday.

min 1 · max 260

windowobjectoptional

Hours the wait may end in, in the contact's local time.

3 child attributes
startHourintegerrequired

Hour of day (0-23) the window opens, inclusive.

min 0 · max 23

endHourintegerrequired

Hour of day (1-24) the window closes; it must be after startHour.

min 1 · max 24

daysinteger[]optional

Days 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 | nulloptional

The id of the step to run next. Omitted, the next step in steps runs (after the last one the journey ends); null ends the journey here. The last step of a branch should set null, 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
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"wait_until"required
eventobjectrequired

The event to wait for, and the conditions it must meet.

2 child attributes
namestringrequired

The event to wait for.

1–128 characters

whereobject[]optional

Conditions on the event's properties; all must hold.

at least 1 item · at most 5 items

3 child attributes
propertystringrequired

The event property key.

1–64 characters

operatorstringrequired

notEquals also matches an event without the property. equals and notEquals compare the property as text, ignoring case and accents.

one of equals, notEquals, gt, gte, lt, lte

valuestringrequired

What to compare with, as text ("pro", "true"); a number ("50") for gt, gte, lt and lte.

up to 255 characters

timeoutDurationrequired

How long to wait for the event: 1 minute to 90 days.

2 child attributes
valueintegerrequired

min > 0

unitstringrequired

one of seconds, minutes, hours, days

onMatchStepstringrequired

The id of the step to take when the event happens.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

onTimeoutStepstring | nullrequired

The id of the step to take on timeout; null ends the journey.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

Digest step
5 child attributes
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"digest"required
gatherForDurationrequired

How long to gather events: 1 minute to 7 days.

2 child attributes
valueintegerrequired

min > 0

unitstringrequired

one of seconds, minutes, hours, days

nextStepstring | nulloptional

The id of the step to run next. Omitted, the next step in steps runs (after the last one the journey ends); null ends the journey here. The last step of a branch should set null, 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
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"send"required
channel"email"required
contentobjectrequired

The email, as saved.

7 child attributes
subjectstringoptional

The subject line. Merge tags are allowed.

1–998 characters

previewTextstringoptional

Shown by inboxes after the subject. Merge tags are allowed; keep it near 100 characters.

1–255 characters

htmlstringoptional

The HTML body. Rendered from the design when one is set.

1–512,000 characters

textstringoptional

The plain-text alternative.

1–512,000 characters

fromstringoptional

The sender address, on a verified sending domain.

1–320 characters

replyTostringoptional

Where replies go; the part before the @ must be ASCII.

email

templateSnapshotobjectoptional

The 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 | nulloptional

The id of the step to run next. Omitted, the next step in steps runs (after the last one the journey ends); null ends the journey here. The last step of a branch should set null, or the enrollment continues into the steps that follow it.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

onUnreachableStepstringoptional

The 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}$

onFailureStepstringoptional

The 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, reason plan_limit_reached); later delivery failures do not branch. Unset continues to nextStep.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

topicIdstringoptional

Sends only to contacts the topic reaches; unset sends to everyone with consent.

uuid

transactionalbooleanoptional

A 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
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"send"required
channel"push"required
contentobjectrequired

The notification. Any part may be missing on a draft.

2 child attributes
pushProjectIdstringoptional

The push app to send through.

uuid

pushobjectoptional

The notification content.

13 child attributes
titlestringoptional

The notification title (up to 100 characters).

1–100 characters

bodystringoptional

The notification text (up to 500 characters).

1–500 characters

actionUrlstringoptional

The HTTPS page opened when the notification is tapped.

uri · up to 2,048 characters

imageUrlstringoptional

A large picture: web and Android show it; iOS needs the app's service extension.

uri · up to 2,048 characters

iconUrlstringoptional

Web only; iOS and Android show the app's own notification icon.

uri · up to 2,048 characters

datamap<string, string>optional

Up 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 characters

buttonsobject[]optional

Up to 2 action buttons.

at least 1 item · at most 2 items

collapseKeystringoptional

A newer notification with the same key replaces the older one on the device.

pattern ^[A-Za-z0-9_-]{1,64}$

soundstringoptional

The name of a sound the app ships; the device's default if unset.

1–64 characters

badgeintegeroptional

The number shown on the iOS app icon.

min 0 · max 99999

ttlDurationOrZerooptional

How long a provider keeps trying an offline device, up to 28 days; zero delivers now or never. Defaults to one day.

urgencystringoptional

high asks the push service to deliver promptly, even to a sleeping device; normal lets 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 is high and any other normal.

one of high, normal

overridesobjectoptional

Fields that differ on one platform, each replacing the shared one there (a whole data map, not merged key by key). On iOS and Android actionUrl may be an app link such as myapp://orders; the shared one and the web one must be HTTPS.

nextStepstring | nulloptional

The id of the step to run next. Omitted, the next step in steps runs (after the last one the journey ends); null ends the journey here. The last step of a branch should set null, or the enrollment continues into the steps that follow it.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

onUnreachableStepstringoptional

The 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}$

onFailureStepstringoptional

The 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, reason plan_limit_reached); later delivery failures do not branch. Unset continues to nextStep.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

topicIdstringoptional

Sends only to contacts the topic reaches; unset sends to everyone with consent.

uuid

Branch step
6 child attributes
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"branch"required
whereobject[]required

Conditions on the trigger event's properties; all must hold.

at least 1 item · at most 5 items

3 child attributes
propertystringrequired

The event property key.

1–64 characters

operatorstringrequired

notEquals also matches an event without the property. equals and notEquals compare the property as text, ignoring case and accents.

one of equals, notEquals, gt, gte, lt, lte

valuestringrequired

What to compare with, as text ("pro", "true"); a number ("50") for gt, gte, lt and lte.

up to 255 characters

onMatchStepstringrequired

The id of the step to take when the conditions hold.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

otherwiseStepstring | nullrequired

The id of the step to take when they do not; null ends the journey.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

Filter step
7 child attributes
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"filter"required
modestringrequired

once checks the rules here only; continuous re-checks them before every later step.

one of once, continuous

rulesobjectrequired

The contact must match these rules.

Any of 2 shapes
Match all
1 child attribute
allobject[]required

Every rule or nested group must match.

at least 1 item · at most 20 items

Match any
1 child attribute
anyobject[]required

At least one rule or nested group must match.

at least 1 item · at most 20 items

onMatchStepstringrequired

The id of the step to take when the contact matches.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

otherwiseStepstring | nullrequired

The id of the step to take when they do not; null ends the journey.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

Split step
5 child attributes
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"split"required
pathsobject[]required

Paths checked in order; the first whose rules match is taken.

at least 1 item · at most 5 items

2 child attributes
rulesobjectrequired

The contact takes this path when they match.

Any of 2 shapes
Match all
Match any
nextStepstringrequired

The id of the step this path leads to.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

otherwiseStepstring | nullrequired

The id of the step to take when no path matches; null ends the journey.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

Random split step
4 child attributes
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"random_split"required
pathsobject[]required

Two 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
percentintegerrequired

Share of the contacts taking this path, in percent.

min 1 · max 99

nextStepstring | nullrequired

The id of the step this path leads to; null is a holdout.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

Action step
5 child attributes
idstringrequired

The 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}$

namestringoptional

A label for the step, shown in metrics.

1–255 characters

type"action"required
actionobjectrequired

What this step does to the contact.

One of 5 shapes
Set attribute
3 child attributes
kind"set_attribute"required
keystringrequired

The contact attribute's key.

pattern ^[\p{L}\p{N}\p{M}_.-]{1,64}$

valuestring | number | boolean | nullrequired

The value to set; null clears it.

Add to or remove from list attribute
3 child attributes
kindstringrequired

one of add_to_attribute, remove_from_attribute

keystringrequired

The contact attribute's key.

pattern ^[\p{L}\p{N}\p{M}_.-]{1,64}$

valuestring | number | booleanrequired

The one item to add to, or remove from, the list; other items are kept.

Add to list
2 child attributes
kind"add_to_list"required
listIdstringrequired

The list to add the contact to.

uuid

Remove from list
2 child attributes
kind"remove_from_list"required
listIdstringrequired

The list to remove the contact from.

uuid

Send webhook
3 child attributes
kind"webhook"required
webhookIdstringrequired

The webhook endpoint to notify.

uuid

datamap<string, any>required

Extra data sent in the journey.action_reached payload.

default {}

nextStepstring | nulloptional

The id of the step to run next. Omitted, the next step in steps runs (after the last one the journey ends); null ends the journey here. The last step of a branch should set null, or the enrollment continues into the steps that follow it.

pattern ^[a-z0-9][a-z0-9_-]{0,63}$

messageLimitsMessageLimitUserequired
2 child attributes
applybooleanrequired

Whether its messages count toward the workspace's message limits and are held by them.

retryForDurationoptional

How 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 when apply is false.

2 child attributes
valueintegerrequired

min > 0

unitstringrequired

one of seconds, minutes, hours, days

utmobject | nullrequired

Link tags for the journey's email; null follows the workspace.

6 child attributes
enabledbooleanrequired
sourcestringoptional

pattern ^[\p{L}\p{N}\p{M} ._\-+/]+$ · 1–100 characters

mediumstringoptional

pattern ^[\p{L}\p{N}\p{M} ._\-+/]+$ · 1–100 characters

campaignstringoptional

pattern ^[\p{L}\p{N}\p{M} ._\-+/]+$ · 1–100 characters

contentstringoptional

pattern ^[\p{L}\p{N}\p{M} ._\-+/]+$ · 1–100 characters

termstringoptional

pattern ^[\p{L}\p{N}\p{M} ._\-+/]+$ · 1–100 characters

maxEntriesinteger | nullrequired

The most enrollments the journey starts over its life; null has no cap. It is full once enrolledCount reaches it: it stays active but nobody new enters.

min > 0

enrolledCountintegerrequired

Enrollments ever started.

min 0

activeCountintegerrequired

Enrollments in progress now.

min 0

statusstringrequired

ended: nobody enters and enrollments in progress were exited; it cannot restart.

one of draft, active, paused, ended

pendingAgentReviewbooleanrequired

An 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[]required

Tag names, sorted without case.

revisionintegerrequired

Raised by every edit. Send it back as expectedRevision on the update so a change made since you read it is refused instead of overwritten.

min > 0 · max 2147483647

createdAtstringrequired

date-time

updatedAtstringrequired

date-time