---
title: "A clip on a run's live research wall, as a JPEG for an <img> tag"
method: GET
path: "/v1/runs/{run_id}/thumbs/{key}"
tags: ["runs"]
---

# A clip on a run's live research wall, as a JPEG for an <img> tag

`GET /v1/runs/{run_id}/thumbs/{key}`

## Request

- Base URL: `https://api.hookdetector.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.hookdetector.com/v1/runs/{run_id}/thumbs/{key}`
- Auth: none declared

The cover of one clip a run in flight is working on: the thumb_url of an entry in
progress.feed. No key needed (an <img> cannot send one): the URL is the secret, an HMAC
of the run and the clip under the server's secret, so it cannot be guessed. Served from
the cover the run already holds, re-encoded; 404 once the run no longer shows it. Cached
for a day. Free. On MCP the same URL is in get_run's progress.feed.

## Path parameters

- `run_id` string, uuid, required
- `key` string, required

## Response `200`

the clip's cover as a JPEG, at most 400 KB

## Other responses

- `404`: not found on this account
- `422`: invalid input
- `429`: rate limited; see Retry-After
- `500`: our fault; names the request id

---

[API](https://skmtc.dev/hookdetector/apis/hook-detector.md) · [All operations](https://skmtc.dev/hookdetector/apis/hook-detector/llms.txt) · [OpenAPI document](https://skmtc.dev/hookdetector/apis/hook-detector/revisions/b136a2804d2b?raw)
