Skip to main content
POST
JavaScript

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Idempotency-Key
string

A unique key that makes this request idempotent. If Courier receives another request with the same Idempotency-Key, it returns the stored response from the first request without performing the operation again (including the original status code and any error). Use it to safely retry POST requests after network failures without risking duplicate sends. The key is scoped to this endpoint.

x-idempotency-expiration
string

How long the idempotency key remains valid, as a Unix epoch timestamp in seconds or an ISO 8601 date string. Only applies when Idempotency-Key is provided. If omitted, the key is retained for 25 hours; the maximum is 1 year.

Body

application/json

Request body for creating a journey.

name
string
required
Minimum string length: 1
nodes
(API Invoke Trigger · object | Segment Trigger · object | Audience Trigger · object | Webhook Trigger · object | Send · object | Delay for Duration · object | Delay Until · object | Fetch (GET/DELETE) · object | Fetch (POST/PUT) · object | AI · object | Throttle (Static) · object | Throttle (Dynamic) · object | Batch · object | Send to Digest · object | Exit · object | JourneyBranchNode · object)[]
required
Minimum array length: 1

A single node in a journey DAG. Discriminated by type, with a secondary discriminator on some variants (trigger_type for trigger, mode for delay, method for fetch, scope for throttle).

enabled
boolean
state
enum<string>

Lifecycle state of a journey.

Available options:
DRAFT,
PUBLISHED
cancelation_token
string

Cancelation token stored on the journey definition. It tags every run the journey creates so that POST /journeys/cancel can later cancel those runs by token. Accepts a templated string such as order-{{data.order_id}}, which is resolved per run when the journey is invoked. On a replace, omitting this field preserves any existing token and sending a value replaces it.

Minimum string length: 1
Example:

"order-{{data.order_id}}"

Response

Journey created

A journey, with its current draft or published nodes and metadata.

id
string
required
name
string
required
state
enum<string>
required

Lifecycle state of a journey.

Available options:
DRAFT,
PUBLISHED
enabled
boolean
required
nodes
(API Invoke Trigger · object | Segment Trigger · object | Audience Trigger · object | Webhook Trigger · object | Send · object | Delay for Duration · object | Delay Until · object | Fetch (GET/DELETE) · object | Fetch (POST/PUT) · object | AI · object | Throttle (Static) · object | Throttle (Dynamic) · object | Batch · object | Send to Digest · object | Exit · object | JourneyBranchNode · object)[]
required

A single node in a journey DAG. Discriminated by type, with a secondary discriminator on some variants (trigger_type for trigger, mode for delay, method for fetch, scope for throttle).

created
integer<int64> | null
required
creator
string | null
required
updated
integer<int64> | null
required
updater
string | null
required
published
integer<int64> | null
required
cancelation_token
string | null
required

The journey cancelation token, or null when none is set. A token authored in the dashboard is returned in its raw templated form, such as order-{{data.order_id}}, so it can be read back and asserted.

Example:

"order-{{data.order_id}}"