---
title: "Observe the screen"
method: GET
path: "/v1/phones/{id}/observe"
tags: ["phone"]
---

# Observe the screen

`GET /v1/phones/{id}/observe`

## Request

- Base URL: `https://phonebox.dev`
- URL: `https://phonebox.dev/v1/phones/{id}/observe`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Query parameters

- `screenshot` 'none' | 'jpeg' | 'png'
- `max_width` integer
- `format` 'json' | 'text'

## Response `200`

The screen as numbered elements. With format=text, the same list as plain text, with its snapshot in X-Snapshot-Id.

- object
  - `snapshot_id` string, required
  - `taken_at` string, date-time, required: ISO 8601 timestamp (UTC)
  - `app` object, required
    - `package` string, nullable, required
    - `activity` string, nullable, required
  - `keyboard` object, required
    - `visible` boolean, required
    - `focused_editable` boolean, required
  - `screen` object, required
    - `width` integer, required
    - `height` integer, required
  - `elements` object[], required
    - `ref` integer, required
    - `type` string, required
    - `text` string, nullable, required
    - `desc` string, nullable, required
    - `id` string, nullable, required
    - `state` string[], required
  - `truncated` boolean, required
  - `text` string, required
  - `screenshot` object
    - `format` 'jpeg' | 'png', required
    - `width` integer, required
    - `height` integer, required
    - `scale` number, required
    - `data` string, required

## Other responses

- `400`: Invalid request; details.issues lists each problem as {path, message}
- `401`: Missing or invalid key
- `402`: Insufficient credits, spending limit reached, or the project is frozen
- `403`: Insufficient scope, a phone this key can't use, a browser request, or a setup request that was declined
- `404`: Not found
- `409`: Conflict: the phone's status doesn't allow this, a phone limit is reached, the Idempotency-Key was used with another body, another install is still running on the phone, a newer version of the app is on the phone, an upload that isn't ready, the project's upload storage is full, the clipboard can't be read, a recording is already running or isn't ready, the project keeps 20 recordings, a setup request that expired or already delivered its key, the project has 50 active keys
- `413`: Body too large
- `422`: The request can't be applied, such as an app that isn't in Phonebox's app library, a file that isn't an APK, an install the phone refused, or a feature this phone doesn't offer (feature_unavailable)
- `429`: Rate limited
- `500`: Unexpected server error; keep the request ID
- `502`: The phone service returned an error, or didn't confirm the action
- `503`: No capacity, the phone is briefly unavailable, Phonebox is paused, or payments aren't connected. A batch refused with this error body did nothing on the phone; a 502 or 504 without it, from a proxy or the platform, leaves the outcome unknown.
- `504`: The phone didn't respond in time

---

[API](https://skmtc.dev/phonebox/apis/phonebox-api.md) · [All operations](https://skmtc.dev/phonebox/apis/phonebox-api/llms.txt) · [OpenAPI document](https://skmtc.dev/phonebox/apis/phonebox-api/revisions/87eb2f5211b2?raw)
