> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Sequence Enrollment

> Read one enrollment token, including how it entered and which branches it already took

# Get Sequence Enrollment

Read a single enrollment in a sequence: how it entered, the redacted branch
decisions it has already taken, and the recorded graph walk from ClickHouse.

Use this when [list enrollments](/api-reference/sequences/list-enrollments)
shows a completed token with `enteredVia` unknown or sitting on the completion
node and you need to know **why** the first branch took its else path. Listing
does not return ClickHouse history; this endpoint does.

## Request

<ParamField path="sequenceId" type="string" required>
  Sequence ID.
</ParamField>

<ParamField path="enrollmentId" type="string" required>
  Enrollment token ID from [list
  enrollments](/api-reference/sequences/list-enrollments) (`enrollmentId`).
</ParamField>

```bash theme={null}
curl "https://api.sequenzy.com/api/v1/sequences/seq_abc123/enrollments/tok_abc123" \
  -H "Authorization: Bearer seq_live_xxx"
```

## Response fields

`enrollment` is the same row shape as [list
enrollments](/api-reference/sequences/list-enrollments), including `enteredVia`,
`entryContext`, and `branchDecisions`.

* `entryContext` is event or manual-enrollment context captured at entry:
  trigger type, event id, event name, and **property keys only**. Values from
  the enrolling payload are never returned.
* `branchDecisions` is the redacted if/else (or random-split) verdict this token
  already took within the retained window, persisted on the token going
  forward. `branchDecisionCount` is the total and
  `branchDecisionsTruncated` says whether older decisions were omitted. Compared values are
  summaries (`missing`, `empty`, `nonempty`, `equals_expected`), never the raw
  field or event-property value.
* `nodeHistory` is the ClickHouse graph walk for this token, oldest first. Each
  step may include a `branchDecision` reconstructed from stored node-completion
  metadata. Legacy rows that stored an unredacted evaluation reason are
  redacted on read.
* `nodeHistoryTruncated` says whether more events exist beyond the returned
  `nodeHistoryLimit` events. Do not treat a truncated graph walk as complete.
* `historySource` is `node_events`, `token_context`, `both`, or `none`.

```json theme={null}
{
  "success": true,
  "sequenceId": "seq_abc123",
  "sequenceName": "New Producer Activation",
  "historySource": "both",
  "enrollment": {
    "enrollmentId": "tok_abc123",
    "status": "completed",
    "enteredVia": {
      "kind": "event",
      "value": "producer.activation.needed",
      "name": null,
      "description": "Event \"producer.activation.needed\""
    },
    "entryContext": {
      "triggerType": "event_received",
      "eventId": "evt_abc123",
      "eventName": "producer.activation.needed",
      "hasEventProperties": true,
      "eventPropertyKeys": ["catalogueStage"],
      "hasFieldSnapshots": false,
      "fieldSnapshotKeys": []
    },
    "branchDecisions": [
      {
        "nodeId": "node_branch",
        "decidedAt": "2026-08-22T00:00:01.234Z",
        "splitMode": "condition",
        "selectedPath": "else",
        "matchedBranchId": null,
        "matchedBranchIndex": -1,
        "routedEdgeBranchId": "else",
        "evaluations": [
          {
            "branchId": "branch-stage",
            "branchIndex": 0,
            "conditionType": "field_equals",
            "fieldName": "catalogueStage",
            "outcome": "fail",
            "compared": {
              "present": false,
              "summary": "missing",
              "kind": null
            },
            "reason": "Field catalogueStage not found on subscriber"
          }
        ]
      }
    ],
    "branchDecisionCount": 1,
    "branchDecisionsTruncated": false
  },
  "nodeHistory": [
    {
      "nodeId": "node_branch",
      "nodeType": "logic_branch",
      "nodeLabel": "catalogueStage",
      "eventType": "completed",
      "eventTime": "2026-08-22T00:00:01.234Z",
      "branchDecision": {
        "selectedPath": "else"
      }
    }
  ],
  "nodeHistoryTruncated": false,
  "nodeHistoryLimit": 200
}
```
