---
title: "Read the same work on a clock"
method: GET
path: "/api/v1/trace/timeline/{rootId}"
tags: ["debugging"]
---

# Read the same work on a clock

`GET /api/v1/trace/timeline/{rootId}`

## Request

- Base URL: `https://api.past.dev`
- URL: `https://api.past.dev/api/v1/trace/timeline/{rootId}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Every node around a root with its times, the sends in the window that carried its sources, the recalls that returned it, and which memory replaced which.

## Path parameters

- `rootId` string, uuid, required

## Query parameters

- `from` string, date-time
- `to` string, date-time

## Response `200`

The rooted work on a clock.

- Timeline
  - `root` TraceNode, required
    - `id` string, uuid, required
    - `kind` 'memory' | 'source', required
    - `headline` string, required
    - `memoryKind` string, nullable: The kind of the memory, as artifact.kind on a recall result: observation, claim, rule, membership, identity, mention or temporal-anchor. Null for a source.
    - `dataPointId` string, nullable
    - `revision` integer, nullable
    - `occurredAt` string, date-time, required
    - `createdAt` string, date-time, required
    - `readyAt` string, date-time, nullable: When it became searchable.
    - `validFrom` string, date-time, nullable
    - `validTo` string, date-time, nullable
    - `current` boolean, required
    - `replacedId` string, uuid, nullable
    - `inputCount` integer, required
    - `outputCount` integer, required
    - `phase` 'queued' | 'processing' | 'captured' | 'indexed' | 'failed' | 'nothing-changed' | 'null', nullable
    - `requestId` string, nullable
    - `content` string, nullable: A source's text, cut to 4,000 characters.
    - `contentTruncated` boolean, nullable
  - `window` TimelineWindow, required
    - `from` string, date-time, required
    - `to` string, date-time, required
  - `rows` TimelineRow[], required
    - `node` TraceNode, required
      - `id` string, uuid, required
      - `kind` 'memory' | 'source', required
      - `headline` string, required
      - `memoryKind` string, nullable: The kind of the memory, as artifact.kind on a recall result: observation, claim, rule, membership, identity, mention or temporal-anchor. Null for a source.
      - `dataPointId` string, nullable
      - `revision` integer, nullable
      - `occurredAt` string, date-time, required
      - `createdAt` string, date-time, required
      - `readyAt` string, date-time, nullable: When it became searchable.
      - `validFrom` string, date-time, nullable
      - `validTo` string, date-time, nullable
      - `current` boolean, required
      - `replacedId` string, uuid, nullable
      - `inputCount` integer, required
      - `outputCount` integer, required
      - `phase` 'queued' | 'processing' | 'captured' | 'indexed' | 'failed' | 'nothing-changed' | 'null', nullable
      - `requestId` string, nullable
      - `content` string, nullable: A source's text, cut to 4,000 characters.
      - `contentTruncated` boolean, nullable
    - `section` 'revision' | 'built-from' | 'produced' | 'elsewhere', required: The first section that claims the node.
  - `ingestions` TimelineIngestion[], required
    - `ingestionId` string, uuid, required
    - `requestId` string, nullable
    - `acceptedAt` string, date-time, required
    - `settledAt` string, date-time, nullable
    - `phase` 'queued' | 'processing' | 'captured' | 'indexed' | 'failed' | 'nothing-changed', required
  - `recalls` TimelineRecall[], required
    - `requestId` string, required
    - `receivedAt` string, date-time, required
    - `returned` string[], required: The rows this recall returned.
  - `supersessions` TimelineSupersession[], required
    - `replacedId` string, uuid, required
    - `byId` string, uuid, required
    - `at` string, date-time, required

## Other responses

- `400`: The request is malformed or violates a field constraint. Match behavior on the response code field.
- `401`: missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.
- `403`: project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.
- `404`: No matching memory or source exists in the selected project.
- `429`: The plan's requests per minute are exceeded. This refusal carries no body.
- `default`: Any other failure uses the same JSON error envelope.

---

[API](https://skmtc.dev/past/apis/past-dev-memory-api.md) · [All operations](https://skmtc.dev/past/apis/past-dev-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/past/apis/past-dev-memory-api/revisions/3ddccc19f0eb?raw)
