---
title: "The alarm's picture: the poster, else a frame cut from the clip"
method: GET
path: "/events/{event_id}/snapshot"
tags: ["events"]
---

# The alarm's picture: the poster, else a frame cut from the clip

`GET /events/{event_id}/snapshot`

## Request

- Base URL: `https://api.verdun.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.verdun.ai/events/{event_id}/snapshot`
- Auth: HTTP bearer

Returns a presigned URL for the event's alert picture: one frame cut from the clip where the AI boxed a person or vehicle; else the ingestor's poster when it exists; else a frame cut at the alarm's trigger moment (server-chosen offsets), stored under `snapshots/` so later calls are a HEAD and a presign. The first call for an event can take a few seconds. Tenant scope and visibility exactly like `clip-url`. 409 SNAPSHOT_UNAVAILABLE when there is no poster and no frame can be cut (no clip, clip expired, demo/training rows).

## Path parameters

- `event_id` string, required

## Response `200`

Successful Response

- EventSnapshotResponse
  - `source` 'poster' | 'clip_frame', required: `poster` = the ingestor's alert-frame JPEG (events before 2026-09-10); `clip_frame` = a frame cut from the clip where the AI boxed a person or vehicle, else at the alarm's trigger moment.
  - `offset_ms` integer, nullable: For `clip_frame`, the clip offset the frame was cut at; null for `poster`.
  - `url` string, required: Presigned image URL. A bearer: never persist it, never log it.
  - `expires_in` integer, required: Seconds until `url` expires

## Other responses

- `409`: No picture for this event (code SNAPSHOT_UNAVAILABLE)
- `422`: Validation Error

---

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