Skip to main content
Audience: SDK users who deploy instances (cloud desktops, Android runtimes, or bring-your-own-device phones) and need to read their state, list the agents that run on them, and discover what a backing device actually is.
Everything in this guide is on the User OpenAPI surface (/api/v1, base URL https://openapi.beeos.ai) and authenticated with an oag_ User API Key — see Authentication & API Keys for how to obtain one. All responses use the standard { success, data } envelope.

1. Get an instance

GET /api/v1/instances/{id} returns the full InstanceDataDTO for one instance you own. This is your starting point for everything else: it tells you what the instance is (osType), whether it’s running (status), whether it’s reachable (connectivity), and where to reach it (endpoint).

Key fields

connectivity (and connectivityReason) describe the live link to the backing device, while status describes the lifecycle the control plane intends. Always check both before issuing control calls — a running + offline instance will reject taps/clicks.

2. List your instances

GET /api/v1/instances returns a paginated array of InstanceDataDTO, plus a total count, so you can build dashboards or pick an instance to act on.

Pagination

total is the unfiltered-by-page count for the current filter set, so paginate until page * pageSize >= total.

Filters

All filters combine with AND. Omit any you don’t need.

3. List agents on an instance

An instance hosts one or more agents. GET /api/v1/agents lists the agents you own; pass instance_id to scope the list to a single instance.

Query parameters

AgentDTO fields


4. BYOD device info

When an instance is backed by a user-provided device (bring your own device, e.g. a phone you registered), you can read the device’s registration / static metadata with:
This is the answer to “what is this phone, and what is it capable of?” It’s the registered hardware snapshot, so it is readable even when the device is offline — the cached static info is returned rather than a 404.

DeviceInfoDTO fields

width / height / density here are the registered geometry from when the device was enrolled. They are the device’s static spec — not necessarily the live foreground geometry at request time (an Android phone can rotate, fold, or change resolution). For the live geometry use /mobile — see below.

5. device/info vs /mobile — which one?

There are two ways to learn about an Android/mobile instance, and they answer different questions: Rule of thumb:
  • Identify / inventory a device (“this is what it is / what config / what it can do”) → device/info.
  • Control it live (“drive it now / current screen geometry”) → /mobile (see the ControlInfo schema and the /mobile/* action endpoints in the API Reference tab).
Don’t use /mobile just to read a device’s static spec — it requires a live control channel and returns 404 for non-mobile (desktop) instances. Use device/info for identity/inventory, which works offline.

6. Two kinds of capabilities

The word “capabilities” appears on both the instance and the device, and they are semantically distinct — don’t conflate them: When the instance has no declared capabilities, the instance-level field is omitted entirely (not emitted as null).

See also