Skip to main content

Interactive browser viewer

The dashboard opens the interactive viewer for an owned, ready session. It sends mouse and keyboard interactions to that phone while displaying live video. GET /sessions/{sid}/owner-viewer returns an authenticated viewer URL and its expiry:
Illustrative response
The response URL is opaque and contains access authority. Do not construct it yourself, alter its query, log it, or share it publicly. It is bounded by the phone’s existing deadline. Obtain another URL when reconnecting; doing so does not create a new session or extend its duration.
The current owner viewer is configured for the Phone Harness dashboard’s embedding origin. The endpoint is not a general-purpose SDK for embedding a controllable phone on any website. Use the dashboard for hands-on access and the operations API for your automation.
Reloading the dashboard reconnects to an existing session. API readiness alone does not prove that video has arrived or rendered in your browser.

Download a snapshot

The current Android service returns a PNG. The endpoint can also return image/jpeg for compatible providers, so inspect Content-Type when building a general client. This is a still-image endpoint. It coalesces captures, attempts to refresh at most once every two seconds, and can return a cached image while another operation is running. It does not keep a session alive and is not a real-time streaming endpoint. 409 means the session is not ready or is closing. 503 with no frame yet means no snapshot is available yet.

Capture over ADB

Once connected with ADB, a screenshot is one command:

Read-only sharing

watch_url opens the same live video as the dashboard, without control: the page cannot tap, type or install anything. It carries a limited view grant, valid for six hours, that also allows reading the session’s metadata and snapshots, so share it only with intended viewers. Behind the page is GET /sessions/{sid}/viewer, which mints the view-only viewer URL. The owner may call it with a bearer credential; the watch link passes its grant as token. The URL is opaque and bounded by the phone’s deadline, like the owner viewer. Legacy /stream, /ws, and control-ticket transports are retired. Use the owner viewer or snapshots instead.