---
title: "Get session timeline"
method: GET
path: "/api/sessions/{sessionId}/timeline"
tags: ["Sessions"]
---

# Get session timeline

`GET /api/sessions/{sessionId}/timeline`

## Request

- Base URL: `https://aximo.autify.com`
- URL: `https://aximo.autify.com/api/sessions/{sessionId}/timeline`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/autify/apis/aximo-api/docs/api/sessions/:sessionId/timeline/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the merged step timeline: each step combines a message (tool call,
assistant turn, or user input) with any screenshots captured for that step.

This is the recommended endpoint for downstream consumers (e.g. generating
a Playwright spec from the session) — it gives ordered, paired data without
having to join messages and screenshots manually.

## Path parameters

- `sessionId` string, uuid, required

## Response `200`

Session timeline.

- SessionTimeline
  - `sessionId` string, uuid, required
  - `stepCount` integer, required
  - `steps` TimelineStep[], required
    - `index` integer, required
    - `messageId` string, required
    - `role` string, required
    - `toolName` string, nullable
    - `toolInput` unknown
    - `toolOutput` unknown
    - `text` string, nullable
    - `rewritten` boolean: True when `text` is the AI-normalized form of the user's prompt (restructured into ordered steps). Only present on the first user step.
    - `originalPrompt` string: The user's exact prompt text. Present when `rewritten` is true.
    - `createdAt` string, date-time, required
    - `screenshots` SessionScreenshot[], required
      - `id` string, uuid, required
      - `url` string, required: Resolved screenshot URL. May be a presigned S3 URL (expires in 1 hour), a relative `/api/screenshots/...` path, or a `data:` URI.
      - `messageId` string, uuid, nullable
      - `width` integer, nullable
      - `height` integer, nullable
      - `resizedWidth` integer, nullable
      - `resizedHeight` integer, nullable
      - `capturedAt` string, date-time, required

## Other responses

- `401`: Missing or invalid API key.
- `404`: Session not found.
- `429`: Rate limit exceeded — e.g. the daily session limit was reached for the organization, or too many API requests were sent in a short window (retry after the number of seconds in the `Retry-After` header).
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/autify/apis/aximo-api.md) - [All operations](https://skmtc.dev/autify/apis/aximo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/autify/apis/aximo-api/revisions/590722011284?raw)
