# GET /frame.png

> Talos next · Since 0.6

The cached frame, or `?fresh=1` for one rendered now.

Not in the SPEC table; kept from phase 0. **The cached image is stale by design**: the app reads it back every 30 rendered frames and encodes it off the simulation loop, so it is up to half a second behind at 60 Hz and does not move at all while the world is paused. That is the trade the endpoint exists for — an agent watching a world wants a picture cheaply and often. Which is why `x-argus-frame` here is the frame the **image** was drawn at and not the frame the server is on. A reader comparing the picture with an entity position it just fetched has to be able to see that the two are different moments; before this header it could not, and a verification lane spent a wave chasing a car that was not where its own screenshot showed it. `?fresh=1` renders on demand through the same path as `POST /capture`, so it costs a round trip to the simulation, holds an exact-job slot, and comes back stamped with the frame it actually drew.

## Request

#### Query parameters

| Parameter | Shape | Meaning |
|---|---|---|
| `fresh` | `1`, `true`, `yes` | render one **now** instead of serving the cached image |

## Example

```sh
curl "http://127.0.0.1:7700/frame.png"
```

Start a server with `argus run --serve`; the port is `--port` (7700 by default). The request and response fields are in the query API guide.
