Versions
A version is an immutable, content-addressed snapshot of one journey or one template. The latest ready one is the code new executions and new sends use, which is what leaves the previous version running when a compile fails. Journeys and templates share a key space, so both the key and the kind are required.
GET /v1/versions
Section titled “GET /v1/versions”List a journey’s or a template’s versions, newest first
Auth: Session token.
Query parameters
{ "cursor": "string", "limit": 50, "key": "string", "kind": "journey"}| Field | Type | Required | Constraints |
|---|---|---|---|
cursor |
string | no | |
limit |
integer | no | default 50; 1 ≤ x ≤ 100 |
key |
string | yes | length 1–200 |
kind |
“journey” | “template” | yes |
Response 200
{ "data": [ { "id": "string", "orgId": "string", "key": "string", "kind": "journey", "appId": "string", "pushId": "string", "moduleDigest": "string", "manifest": { "key": "string", "tags": {}, "trigger": { "event": "string" }, "purpose": "string", "enrollment": { "cooldown": "string" }, "description": "string", "from": "string", "spine": [ { "name": "sleep", "detail": "string", "timeout": "string", "steps": [], "otherwise": [] } ], "bundle": "string" }, "status": "compiling", "pushedAt": "2026-01-15T09:30:00.000Z", "compiledAt": "2026-01-15T09:30:00.000Z", "error": "string" } ], "meta": { "requestId": "string", "nextCursor": "string", "hasMore": true }}| Field | Type | Required | Constraints |
|---|---|---|---|
data |
object[] | yes | |
data[] |
object | yes | |
data[].id |
string | yes | |
data[].orgId |
string | yes | |
data[].key |
string | yes | |
data[].kind |
“journey” | “template” | yes | |
data[].appId |
string | yes | |
data[].pushId |
string | yes | |
data[].moduleDigest |
string | null | yes | |
data[].manifest |
object | object | yes | |
data[].status |
“compiling” | “ready” | “failed” | yes | |
data[].pushedAt |
string (date-time) | yes | |
data[].compiledAt |
string (date-time) | null | yes | |
data[].error |
string | null | yes | |
meta |
object | no | |
meta.requestId |
string | no | |
meta.nextCursor |
string | null | no | |
meta.hasMore |
boolean | no |
Errors follow the shared envelope and code table.