Skip to main content
Per-camera live view with optional OSD (On-Screen Display) overlay. All endpoints are scoped to a specific camera. See the auto-generated API reference for full request/response schemas.

Workflow

1

Enable or start live view

POST /api/cameras/{id}/live-view/enable or POST /api/cameras/{id}/live-view/start
2

Get frames

GET /api/cameras/{id}/live-view/frame returns a single JPEG frame
3

Optional: enable OSD

POST /api/cameras/{id}/live-view/osd-enable
4

Get OSD frames

GET /api/cameras/{id}/live-view/osd-frame
5

Stop live view

POST /api/cameras/{id}/live-view/stop

Endpoints

Live view is disabled by default in remote-transfer mode. You must call /live-view/enable (or /live-view/start which auto-enables) before requesting frames.

Get Frame

Returns the latest live view frame as a JPEG image. Streaming must be started first.

OSD Overlay

Enable on-screen display — the camera renders its UI (exposure info, focus points, histogram, etc.) as an overlay image composited onto the live view frame.
Two things build on live view. Focus overlays are drawn from AF Frame Position and Remote Touch and Tracking, which report frame coordinates normalized to whatever size you render at. And the OSD frame paired with Button Press is enough to drive the camera’s own menus remotely — press, then read the screen back.

Polling for continuous frames

For a render loop at ~15 fps, poll GET /api/cameras/{id}/live-view/frame at roughly 66 ms intervals. The endpoint returns the latest JPEG the server has captured — the camera-side frame rate is the actual cap. See the live-view polling example for full client implementations in TypeScript, Python, and Swift.