Skip to main content
GET
View journey
Beta. The Journeys API is in beta. Endpoints and response fields can still change.

Overview

Retrieve a single Journey by its UUID. The response is the full detail representation, including the journey’s audience, schedule, lifecycle rules, and its nodes graph. The View journeys list omits those fields. Use this fetch as the source of node and branch ids and the concurrency_key before Update journey or Update journey node.

How to use this API

Authenticate with your App API Key. The authenticated key must have permission to view journeys. Find a journey’s id from the View journeys API or in the dashboard URL when viewing the journey. The response includes a concurrency_key. Treat it as an opaque token: send it back unchanged on a later update. Do not construct, parse, or compare it yourself.

Journey structure

A journey is an ordered list of nodes. Linear nodes (such as wait or send_push) are siblings in the list and run in order. Branching nodes (split_range, yes_no, wait_until) nest their sub-graphs inline through their branches array. Convergence is implicit: after a branching node resolves, flow continues to the next sibling in the parent list. Server-assigned identifiers on journeys, nodes, and branches (id) are read-only. The optional client_node_id is a customer-assigned identifier. It is persisted and returned on this endpoint. On create or update, use it to reference a node that does not yet have a server id.

Node kinds

Node fields follow the same schema and validation as Create journey.

Error responses

Coded errors use the shape { "errors": [{ "code", "title", "meta" }] }.

Headers

Authorization
string
default:Key YOUR_APP_API_KEY
required

Your App API key with prefix Key. See Keys & IDs.

Path Parameters

app_id
string
default:YOUR_APP_ID
required

Your OneSignal App ID in UUID v4 format. See Keys & IDs.

id
string
default:YOUR_JOURNEY_ID
required

UUID of the journey to retrieve.

Response

200

Full journey representation returned by the detail and create endpoints.

id
string

Journey UUID. Read-only.

app_id
string

UUID of the app the journey belongs to. Read-only.

name
string

Journey name, up to 300 characters.

description
string | null

Journey description, up to 1024 characters. Defaults to an empty string.

state
enum<string>

Journey state. Read-only. New journeys are created as draft. processing is a transient state while an activation is in progress, and archived is a journey that has been stopped. Change it through the state field on Update journey.

Available options:
draft,
scheduled,
processing,
active,
archived
created_at
string

ISO 8601 creation time. Read-only.

updated_at
string

ISO 8601 last-update time. Read-only.

started_at
string | null

ISO 8601 time the journey was activated, or null. Read-only. May stay null briefly after you set state to active: activation is enqueued for processing, and started_at populates once the journey finishes processing and becomes active.

archived_at
string | null

ISO 8601 time the journey was archived, or null. Read-only.

created_source
string | null

Origin of the journey, for example public_api or dashboard. Read-only.

audience
segment · object

The journey entry audience. Either a segment-based or event-triggered audience.

early_exit
object | null

Conditions that remove a user from the journey before it completes. At least one rule must be set under rules; an early_exit that configures no rule is rejected. Send null to remove early exit entirely, or null for an individual rule to drop just that rule.

reentry_rules
object | null

Controls whether and how soon a user can re-enter the journey. null means re-entry is not allowed.

schedule
object | null

Optional future start and/or stop time. null means no scheduled activation.

nodes
object[]

Ordered list of journey nodes.

A journey node. The kind field selects the shape. Branching nodes (split_range, yes_no, wait_until) nest their sub-graphs inline via branches[].nodes.

concurrency_key
string

Opaque optimistic-concurrency token. Read-only. Pass it back on update to guard against overwriting a concurrent change (409 journey-stale). Send it back exactly as read from this response; do not construct or parse it.