Skip to main content

Get session timeline

Retrieve the full step-attempt history for a session

Retrieve a flat, newest-first list of every step attempt for a session. Each entry includes the step identity, attempt number, outcome status, timestamps, and any data blocks produced by that attempt. Use this endpoint for debugging, audit trails, and understanding retry behaviour — for example, when a step was retried multiple times before completing.


Endpoint

GET /api/v1/{environment}/sessions/{sessionId}/timeline

Path parameters

ParameterTypeRequiredDescription
sessionIdstringYesThe unique identifier of the session
environmentstringYesEnvironment name (staging or live)

Request

No request body is required for this endpoint.

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token for authentication

Response

The response contains a timeline array, sorted newest-first by clock. Each element represents one attempt on one step.

Response parameters

ParameterTypeDescription
timelinearrayAll step attempts for the session, sorted newest-first by clock
timeline[].stepIdstringUnique identifier of the workflow step
timeline[].stepTypestringStep type (e.g. DOC_ID:v4, BIOMETRIC_VERIFICATION:v1)
timeline[].stepDescriptionstringHuman-readable description of the step as configured in the flow definition
timeline[].stepAttemptintegerMonotonically increasing attempt number per stepId, starting at 1. Stable across repeated calls for the same session.
timeline[].stepStatusstringOutcome of this attempt. See Step statuses below.
timeline[].stepStartedAtstringISO 8601 timestamp when this attempt started
timeline[].stepConcludedAtstring | nullISO 8601 timestamp when this attempt concluded. null when stepStatus is STARTED (attempt still in progress).
timeline[].dataBlocksarrayData blocks produced by this attempt. Empty for attempts that produced no output.
timeline[].dataBlocks[].dataBlockIdstringUnique identifier of the data block (UUID)
timeline[].dataBlocks[].typestringData block type (e.g. basicIdentity, documentVerification)
timeline[].dataBlocks[].createdByobjectStep and clock that produced this data block
timeline[].dataBlocks[].createdAtstringISO 8601 timestamp when the data block was created
timeline[].dataBlocks[].statusstringSTORED or DELETED
timeline[].dataBlocks[].contentobject | nullData block content as documented in Core concepts: Data blocks. null if deleted.

Step statuses

ValueMeaning
STARTEDAttempt is in progress — stepConcludedAt is null
COMPLETEDDefinitive result — step finished successfully
ROLLED_BACKSuperseded by a later attempt on the same step
ABORTEDSession ended before this step completed
ERRORStep failed with an unrecoverable error
WORKFLOW_EXPIREDSession timed out before this step completed

Example

curl https://localhost:3000/api/v1/live/sessions/0197c55f-5af6-7e3d-af9b-f2359b104be8/timeline \
-H "Authorization: Bearer YOUR_API_KEY"

Response examples

Session with a single completed attempt

{
"timeline": [
{
"stepId": "doc_idv",
"stepType": "DOC_ID:v4",
"stepDescription": "Document verification",
"stepAttempt": 1,
"stepStatus": "COMPLETED",
"stepStartedAt": "2026-02-26T22:30:00.000Z",
"stepConcludedAt": "2026-02-26T22:32:55.206Z",
"dataBlocks": [
{
"dataBlockId": "4d720f95-1548-47fc-8f78-5bec27c24865",
"type": "documentVerification",
"createdBy": { "stepId": "doc_idv", "clock": 3 },
"createdAt": "2026-02-26T22:32:55.206Z",
"status": "STORED",
"content": {
"verdict": { "status": "VERIFIED", "reason": null },
"issues": [],
"evidences": []
}
}
]
}
]
}

Session with a rolled-back attempt followed by a completed attempt (newest-first)

{
"timeline": [
{
"stepId": "doc_idv",
"stepType": "DOC_ID:v4",
"stepDescription": "Document verification",
"stepAttempt": 2,
"stepStatus": "COMPLETED",
"stepStartedAt": "2026-02-26T22:31:00.000Z",
"stepConcludedAt": "2026-02-26T22:33:10.000Z",
"dataBlocks": []
},
{
"stepId": "doc_idv",
"stepType": "DOC_ID:v4",
"stepDescription": "Document verification",
"stepAttempt": 1,
"stepStatus": "ROLLED_BACK",
"stepStartedAt": "2026-02-26T22:30:00.000Z",
"stepConcludedAt": "2026-02-26T22:30:55.000Z",
"dataBlocks": []
}
]
}

Notes

  • The timeline array is sorted newest-first by the step's internal clock. For a strictly oldest-first view, reverse the array on the client.
  • ROLLED_BACK attempts are included. These represent earlier attempts on the same step that were superseded — useful for understanding retry history.
  • dataBlocks[].content is null when dataBlocks[].status is DELETED (the end-user exercised their right to erasure, or the data block was otherwise removed).
  • An in-progress attempt (stepStatus: "STARTED") may appear at the head of the list if the session is still running.