See also: Journeys concept and configuration for what this API powers, when to call it, and how it is configured.

GET /api/v1/journeys
List all journeys with offset-based pagination.Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | — | Filter by status: "draft", "active", "paused", "archived" |
limit | integer | 50 | Max results (max 200) |
offset | integer | 0 | Pagination offset |
Response
POST /api/v1/journeys
Create a new journey.Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Journey name (max 255 chars) |
description | string | No | Description (max 2000 chars) |
definition | object | No | Flow definition with nodes and edges. Default: { nodes: [], edges: [] } |
entryCondition | object | No | Entry trigger condition |
maxDurationDays | integer | No | Max journey duration in days (1-365). Default: 30 |
Example
201 Created
GET /api/v1/journeys/
Get journey details.PUT /api/v1/journeys/
Update a journey. All fields are optional.| Field | Type | Description |
|---|---|---|
name | string | Updated name |
description | string | Updated description |
status | string | "draft", "active", "paused", "archived" |
definition | object | Updated flow definition |
entryCondition | object | Updated entry condition |
maxDurationDays | integer | Updated max duration |
200 OK
DELETE /api/v1/journeys/
Delete a journey. Requires admin role. Response:204 No Content
POST /api/v1/journeys//enroll
Enroll one or more customers into an active journey. The journey must be inactive status. Duplicate enrollments are silently skipped (not errors).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
customerId | string | No | Single customer ID to enroll |
customerIds | string[] | No | Batch of customer IDs to enroll (max 1000) |
customerId or customerIds, not both.
Response — 201 Created
| Field | Description |
|---|---|
journeyId | The journey ID |
journeyName | The journey’s display name |
enrolled | Number of customers newly enrolled |
skipped | Number of customers already enrolled (duplicates) |
errors | Number of enrollment failures (e.g., database errors) |
total | Total customers processed |
Error Codes
| Code | Reason |
|---|---|
400 | Journey is not in active status |
404 | Journey not found |
POST /api/v1/journeys//test
Simulate journey execution with sample customer attributes. Walks through the flow graph step by step, evaluating condition splits and producing a trace of decisions.Request Body
| Field | Type | Required | Description |
|---|---|---|---|
customerAttributes | object | No | Simulated customer attributes for condition evaluation |
Response
Supported Node Types
| Node Type | Behavior |
|---|---|
entry_trigger | Journey entry point |
wait | Wait for configured duration |
condition_split | Evaluates condition against customer attributes (true/false branching) |
nba_decision | Requests a next-best-action decision |
channel_action | Sends via configured channel |
exit | Journey complete |
GET /api/v1/journeys//analytics
Get journey funnel analytics including enrollment counts, completion rates, and per-step metrics.Response
Roles
| Endpoint | Allowed Roles |
|---|---|
GET /journeys | admin, editor |
POST /journeys | admin, editor |
PUT /journeys/{id} | admin, editor |
DELETE /journeys/{id} | admin |
POST /journeys/{id}/enroll | admin, editor |
POST /journeys/{id}/test | admin, editor |
GET /journeys/{id}/analytics | admin, editor, viewer |