GET /frame.png
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 tester spent a long time 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
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.