---
title: "UI state"
method: GET
path: "/devices/{deviceId}/ui-state"
tags: ["Tools/Navigation"]
---

# UI state

`GET /devices/{deviceId}/ui-state`

Returns the current accessibility UI state of the device as a structured tree of on-screen elements. An optional filter query reduces the result to interactive elements.

## Path parameters

- `deviceId` string, required

## Query parameters

- `filter` boolean

## Headers

- `X-Device-Display-ID` integer

## Response `200`

OK

- AndroidState
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `a11y_tree` A11YNode, required
    - `boundsInScreen` A11YBounds, required
      - `bottom` integer, required
      - `left` integer, required
      - `right` integer, required
      - `top` integer, required
    - `children` A11YNode[], nullable, required
    - `className` string, required
    - `contentDescription` string, required
    - `isCheckable` boolean, required
    - `isChecked` boolean, required
    - `isClickable` boolean, required
    - `isEnabled` boolean, required
    - `isFocusable` boolean, required
    - `isFocused` boolean, required
    - `isLongClickable` boolean, required
    - `isPassword` boolean, required
    - `isScrollable` boolean, required
    - `isSelected` boolean, required
    - `isVisibleToUser` boolean
    - `packageName` string, required
    - `resourceId` string, required
    - `text` string, required
  - `device_context` DeviceContext, required
    - `display_metrics` DisplayMetrics, required
      - `density` number, double, required
      - `densityDpi` integer, required
      - `heightPixels` integer, required
      - `scaledDensity` number, double, required
      - `widthPixels` integer, required
    - `filtering_params` FilteringParams, required
      - `min_element_size` integer, required
      - `overlay_offset` integer, required
    - `screen_bounds` Rect, required
      - `height` integer, required
      - `width` integer, required
  - `ime_tree` A11YNode, required
    - `boundsInScreen` A11YBounds, required
      - `bottom` integer, required
      - `left` integer, required
      - `right` integer, required
      - `top` integer, required
    - `children` A11YNode[], nullable, required
    - `className` string, required
    - `contentDescription` string, required
    - `isCheckable` boolean, required
    - `isChecked` boolean, required
    - `isClickable` boolean, required
    - `isEnabled` boolean, required
    - `isFocusable` boolean, required
    - `isFocused` boolean, required
    - `isLongClickable` boolean, required
    - `isPassword` boolean, required
    - `isScrollable` boolean, required
    - `isSelected` boolean, required
    - `isVisibleToUser` boolean
    - `packageName` string, required
    - `resourceId` string, required
    - `text` string, required
  - `phone_state` PhoneState, required
    - `activityName` string
    - `currentApp` string
    - `focusedElement` PhoneStateFocusedElementStruct
      - `className` string
      - `resourceId` string
      - `text` string
    - `isEditable` boolean, required
    - `keyboardVisible` boolean, required
    - `packageName` string

## Other responses

- `default` — Error

## Changes

- **2026-07-24** `618bd1cc1aed` — 2 info
  - added the optional property `a11y_tree/isVisibleToUser` to the response with the `200` status
  - added the optional property `ime_tree/isVisibleToUser` to the response with the `200` status
- **2026-07-07** `d5d1e5ee8188` — 2 info
  - api tag `Tools/Navigation` added
  - api tag `Tools` removed
- **2026-06-29** `3cb3612f45e0` — 1 info
  - endpoint added
- **2026-06-29** `8ea6db3daeac` — 1 breaking
  - api path removed without deprecation
- **2026-06-05** `49b7fa16d8f6` — 3 breaking, 35 info
  - the `a11y_tree` response's property type/format changed from ``/`` to `object`/`` for status `200`
  - the `ime_tree` response's property type/format changed from ``/`` to `object`/`` for status `200`
  - removed the required property `device_context/screenSize` from the response with the `200` status
  - the response property `ime_tree` became required for the status `200`
  - …34 more

[Full history](https://skmtc.dev/droidrun/apis/droidrun-cloud/changes/devices/:deviceId/ui-state/get.md)

---

[API](https://skmtc.dev/droidrun/apis/droidrun-cloud.md) · [All operations](https://skmtc.dev/droidrun/apis/droidrun-cloud/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/droidrun/droidrun-cloud/revisions/b6fd8aed4bf4/schema)
