Skip to content

Read the durable journal for a run

View as Markdown
GET
/v1/runs/{runId}/journal
curl --request GET \
--url https://example.com/v1/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/journal \
--header 'Authorization: Bearer <token>'

Returns raw JournalEntry values from the run journal (@kindgi/runtime), in sequence order. Distinct from the SSE wire enum — see docs/API-ROUTE-CONVENTIONS.md §6. Paging is opt-in: with limit, at most that many entries and a nextCursor while more remain; without it, the whole journal in one answer.

runId
required
string format: uuid

RunId — opaque branded string (a UUID).

since
integer

Only return journal entries with sequence > since.

limit
integer
>= 1 <= 100

The most entries in a page, 1..100: then nextCursor while more remain. Without it, the whole journal (after since or cursor) in one answer.

cursor
string

Where the previous page ended: its nextCursor, as it came. A runtime that seals cursors takes one only for the same list, filters and caller, within a day; otherwise 400 bad-input, and the list starts again without it. Absent → first page.

Journal page.

Media typeapplication/json
object
data
required
Array<object>
object
sequence
required
integer
kind
required

Runtime journal kind (bare — distinct from the SSE-only run.*-* wire enum in @kindgi/specs/run-event.schema.json).

string
nodeId
string
payload
timestamp
required
One of:
string format: date-time
hasMore
required
boolean
nextCursor

Opaque cursor for the next page, with limit. Absent when hasMore: false. See docs/API-ROUTE-CONVENTIONS.md §5.

string
Examplegenerated
{
"data": [
{
"sequence": 1,
"kind": "example",
"nodeId": "example",
"payload": "example",
"timestamp": "2026-04-15T12:00:00Z"
}
],
"hasMore": true,
"nextCursor": "example"
}

runId is not a run id (a UUID), limit is not a whole number of 1 or more, or cursor is malformed.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

Missing / malformed / expired / revoked bearer token.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

No run with that id under this tenant.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

See also