API reference
This page is generated from the code and corresponds to the published routes.
Backward compatibility is guaranteed for /v1/.... /api/... is used by the web client and may change at any time. Do not build integrations against it.
Devices and sessions
| Method | Path | Scope | Description |
|---|---|---|---|
POST | /v1/device/{did}/autorenew | device | Enable or disable automatic renewal. |
GET | /v1/device/{did}/proxy | — | Current egress status. If the upstream status cannot be read, return the error without inventing a status. |
POST | /v1/device/{did}/proxy | device | Apply the proxy and align device identity settings. Restarts the device. |
DELETE | /v1/device/{did}/proxy | device | Remove the egress proxy and restore IP/SIM/GPS/time zone settings. Also restarts the device. |
POST | /v1/device/{did}/proxy/check | device | Check the proxy before applying it. Does not change any device state and can be repeated. |
GET | /v1/device/{did}/renew | — | |
POST | /v1/device/{did}/renew | billing | Renew the device. As with an order, deduct the balance first and refund it if renewal fails. |
GET | /v1/device/{did}/selfcheck | — | |
POST | /v1/device/{did}/session | stream | Issue a streaming session. The ownership check in owned_device must pass before issuance. |
DELETE | /v1/device/{did}/session | stream | |
GET | /v1/devices | — | |
POST | /v1/previews | stream | Retrieve preview images in a batch. A low-cost way to display a device grid. |
POST | /v1/sessions | stream |
Device operations
| Method | Path | Scope | Description |
|---|---|---|---|
POST | /v1/act | input | Run a single action using a selector or coordinates. One device, asynchronous; returns task_id. |
GET | /v1/act/{task_id} | input | Retrieve the result of a single action. |
POST | /v1/inject | input | Inject data into an instance: SMS records, call logs and contacts. |
POST | /v1/input | input | Control a device without streaming: tap, swipe, long press, key presses and text input. |
POST | /v1/ui | input | Retrieve the interactive node tree for the device's current screen. One device, synchronous. |
Automation
| Method | Path | Scope | Description |
|---|---|---|---|
POST | /v1/automation/dispatch | input | Dispatch workflow tasks in a batch. |
DELETE | /v1/automation/schedule/{sid} | input | Delete a scheduled task. |
POST | /v1/automation/schedule/{sid}/toggle | input | Enable or disable a scheduled task. |
GET | /v1/automation/schedules | — | List scheduled tasks. |
POST | /v1/automation/schedules | input | Create scheduled tasks. One task is created per device, so the response is an array. |
GET | /v1/automation/scripts | — | List workflow templates. Read-only; uses the read tier. |
POST | /v1/automation/task/{task_id}/cancel | input | Cancel a pending or running task. |
GET | /v1/automation/task/{task_id}/logs | — | Step-level logs for a task. |
GET | /v1/automation/tasks | — | List workflow tasks. |
Catalog and provisioning
| Method | Path | Scope | Description |
|---|---|---|---|
GET | /v1/catalog | — | Sales catalog. Returns only our selling prices, not upstream costs. |
GET | /v1/orders | — | |
POST | /v1/orders | billing | |
POST | /v1/orders/{oid}/claim | billing | Claim the instance associated with an order. |
Account
| Method | Path | Scope | Description |
|---|---|---|---|
GET | /v1/client/me | — |
Scopes
Keys are issued per application, and scopes belong to the application. Endpoints without a listed scope require only a valid key.
| Scope | Meaning |
|---|---|
device_read | View devices: read devices and tasks, no changes allowed |
stream | View the screen: issue streaming sessions, including batch requests |
device | Configure devices: egress proxy and automatic renewal |
input | Operate devices: tap, swipe, key presses, text input and data injection |
billing | Spend balance: provision new devices and renew devices |