---
title: "List Session Frames"
method: GET
path: "/v1/sessions/{session_id}/frames"
tags: ["sessions"]
---

# List Session Frames

`GET /v1/sessions/{session_id}/frames`

List captured frames for a session, with presigned S3 URLs for the
full-res webp and thumbnail.

Designed for post-call agents (e.g. a coding agent given the conversation
link) that need to reconstruct the visual context of the call alongside
the transcript. Frames are ordered oldest-first by `captured_at`.

Query params:
  - `start` / `end` — wall-clock window in seconds (agent clock; same
    timestamps as the transcript). Both optional.
  - `limit` — max frames to return (default 500, hard cap 2000).
  - `sources` — comma-separated subset of captured frame sources
    (`speaking_tick,motion_spike,turn_end,silent_watch,pointer_trace`, etc.).
  - `user_turn_index` — restrict to frames captured during a specific real
    user turn. Match against `transcript[].real_user_turn_index` (user rows)
    or `transcript[].responding_to_user_turn_index` (assistant rows).

Each frame returns presigned URLs valid for 1 hour. Re-call this endpoint
to refresh URLs.

## Path parameters

- `session_id` string, required

## Query parameters

- `start` number, nullable
- `end` number, nullable
- `limit` integer
- `sources` string, nullable
- `user_turn_index` integer, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
