---
title: "List Imported Frames Internal"
method: GET
path: "/v1/sessions/internal/{session_id}/imported-frames"
tags: ["sessions"]
---

# List Imported Frames Internal

`GET /v1/sessions/internal/{session_id}/imported-frames`

Agent polls this every few seconds to discover Recall.ai-bridged
screenshare frames written by the Phase A WebSocket sink (source='imported').

Returns the newest frames after `since` (a captured_at unix timestamp),
so the caller advances `since` to the latest `captured_at` it has seen
and never re-fetches old frames. Internal-secret auth — this is the
same channel the agent already uses for /internal/trace + /internal/results.

Phase B of the Recall screen-share bridge: the agent uses the most
recent frame returned here to populate its `_latest_frame` field so
per-turn LLM injection picks up the screen content without needing a
LiveKit RTC publisher on the backend.

## Path parameters

- `session_id` string, required

## Query parameters

- `since` number
- `limit` integer

## Response `200`

Successful Response

- object

## 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)
