Skip to main content
POST
Launch a journey

Authorizations

Authorization
string
header
required

MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.

Headers

Idempotency-Key
string

Send one. A launch spends model credits, so a retry of a dropped response must not run the journey twice. Replaying a key returns the ORIGINAL run with deduped: true and starts no second runner.

Omitting the header is read as a request that declined to identify itself, and gets a FRESH run every time.

Path Parameters

projectId
string
required

ID of the hosted project that contains the server.

journeyId
string
required

Journey ID, as returned by the project's journey list.

Body

application/json

Optional launch options. Omit the body entirely to run the journey as authored.

Optional. A launch with no options is a BODYLESS POST — omit the body entirely rather than sending null, which is rejected.

waveId
string

Opaque id linking the sibling runs of one co-launched batch. Mint it yourself and reuse it across the launches you want grouped.

Maximum string length: 64
environmentIds
string[]

Fan out across THESE environments instead of the journey's authored targets. NON-EMPTY when present: [] is a caller saying "across these" while naming none, and would have silently launched the authored targets instead. Silently running something other than what was asked for is bad anywhere; on an operation that spends it is worse. Omit the field to mean "as authored".

Minimum array length: 1

Response

The run was accepted and started.

id
string
required

The run id. Poll it, or stop it with cancel.

journeyId
string
required
projectId
string
required
status
enum<string>
required

Always running — the run row exists and its fan-out has started. This is a 202: nothing here says the journey has finished, only that it is under way.

Available options:
running
deduped
boolean
required

True when an Idempotency-Key replayed onto a run that ALREADY existed, so nothing new was started. The response is otherwise identical, which is how a retry of a dropped request tells "I launched it" from "it was already going" without a second read.