Sign Up

Computer Use

Find accessibility nodes

POST
/computeruse/a11y/find

Searches accessibility nodes within the requested scope.

Request Body

application/json
  1. body

Accessibility find request.

limit?|

Maximum number of matches. Omitted or <=0 uses the platform default.

Formatint64
name?string

Name filter. Omitted = any name.

nameMatch?string

Name match mode: exact, substring, or regex.

pid?|

Owning process id when scope=pid.

Formatint64
role?string

Exact role filter. Omitted = any role.

scope?string

Scope selector: omitted or focused for the focused window, pid for one process, or all for all windows.

states?array<string>

Required state names.

Response Body

application/json
  1. response

Accessibility find response.

matches*array<>

Matching nodes in traversal order.

truncated*boolean

Whether traversal stopped because of node or wall-clock limits.

curl -X POST 'http://sandbox:2280/computeruse/a11y/find' \  -H 'Content-Type: application/json' \  -d '{}'
{  "matches": [    {      "actions": [        "string"      ],      "bounds": {        "height": 0,        "width": 0,        "x": 0,        "y": 0      },      "children": [        {}      ],      "description": "string",      "id": "string",      "name": "string",      "role": "string",      "states": [        "string"      ],      "value": "string",      "valueTruncated": true    }  ],  "truncated": true}
POST
/computeruse/a11y/node/focus

Moves desktop focus to the requested accessibility node.

Request Body

application/json
  1. body

Accessibility node request.

action?|

Optional action name for invoke requests.

id*string

The stable node id returned by tree/find.

value?|

Optional text value for editable nodes.

Response Body

Node focused

curl -X POST 'http://sandbox:2280/computeruse/a11y/node/focus' \  -H 'Content-Type: application/json' \  -d '{  "id": "string"}'
Empty
POST
/computeruse/a11y/node/invoke

Invokes the requested accessibility node action.

Request Body

application/json
  1. body

Accessibility node request.

action?|

Optional action name for invoke requests.

id*string

The stable node id returned by tree/find.

value?|

Optional text value for editable nodes.

Response Body

Node invoked

curl -X POST 'http://sandbox:2280/computeruse/a11y/node/invoke' \  -H 'Content-Type: application/json' \  -d '{  "id": "string"}'
Empty
POST
/computeruse/a11y/node/value

Sets the editable value of the requested accessibility node.

Request Body

application/json
  1. body

Accessibility node request.

action?|

Optional action name for invoke requests.

id*string

The stable node id returned by tree/find.

value?|

Optional text value for editable nodes.

Response Body

Node value set

curl -X POST 'http://sandbox:2280/computeruse/a11y/node/value' \  -H 'Content-Type: application/json' \  -d '{  "id": "string"}'
Empty

Accessibility tree

GET
/computeruse/a11y/tree

Returns an accessibility tree rooted at the requested scope.

Query Parameters

scope?string

Scope selector: omitted or focused for the focused window, pid for one process, or all for all windows.

pid?integer

Owning process id when scope=pid.

Formatint64
maxDepth?integer

Maximum tree depth. Omitted or -1 means unbounded.

Formatint64

Response Body

application/json
  1. response

Accessibility tree response.

root*

The selected root node.

truncated*boolean

Whether traversal stopped because of node or wall-clock limits.

curl -X GET 'http://sandbox:2280/computeruse/a11y/tree'
{  "root": {    "actions": [      "string"    ],    "bounds": {      "height": 0,      "width": 0,      "x": 0,      "y": 0    },    "children": [      {}    ],    "description": "string",    "id": "string",    "name": "string",    "role": "string",    "states": [      "string"    ],    "value": "string",    "valueTruncated": true  },  "truncated": true}

Display inventory

GET
/computeruse/display/info

Returns the current display/monitor list.

Response Body

application/json
  1. response

Display inventory response.

displays*array<>

The current display list.

curl -X GET 'http://sandbox:2280/computeruse/display/info'
{  "displays": [    {      "height": 0,      "id": 0,      "isActive": true,      "width": 0,      "x": 0,      "y": 0    }  ]}

Window inventory

GET
/computeruse/display/windows

Returns the current top-level window list.

Response Body

application/json
  1. response

Window inventory response.

windows*array<>

The current top-level window list.

curl -X GET 'http://sandbox:2280/computeruse/display/windows'
{  "windows": [    {      "height": 0,      "id": 0,      "isActive": true,      "title": "string",      "width": 0,      "x": 0,      "y": 0    }  ]}

Press a hotkey

POST
/computeruse/keyboard/hotkey

Presses a +-delimited hotkey chord.

Request Body

application/json
  1. body

Keyboard hotkey request (ctrl+shift+p).

keys*string

+-delimited chord string.

Response Body

Hotkey pressed

curl -X POST 'http://sandbox:2280/computeruse/keyboard/hotkey' \  -H 'Content-Type: application/json' \  -d '{  "keys": "string"}'
Empty

Press one key

POST
/computeruse/keyboard/key

Presses one key with optional modifiers.

Request Body

application/json
  1. body

Keyboard key request.

key*string

The main key name.

modifiers?array<string>

Modifier key names held while pressing key.

Response Body

Key pressed

curl -X POST 'http://sandbox:2280/computeruse/keyboard/key' \  -H 'Content-Type: application/json' \  -d '{  "key": "string"}'
Empty

Type text

POST
/computeruse/keyboard/type

Types UTF-8 text into the desktop.

Request Body

application/json
  1. body

Keyboard typing request.

delay?integer

Delay in milliseconds between key presses. Omitted = 0.

Formatint64
Range0 <= value
text*string

UTF-8 text to type.

Response Body

Text typed

curl -X POST 'http://sandbox:2280/computeruse/keyboard/type' \  -H 'Content-Type: application/json' \  -d '{  "text": "string"}'
Empty

Click the mouse

POST
/computeruse/mouse/click

Moves the cursor and clicks the requested mouse button.

Request Body

application/json
  1. body

Mouse click request.

button?string

Button name (left, middle, right). Omitted = left.

double?boolean

Whether to double-click instead of single-clicking.

x*integer

Target X coordinate in desktop pixels.

Formatint64
y*integer

Target Y coordinate in desktop pixels.

Formatint64

Response Body

application/json
  1. response

A point in desktop pixels.

x*integer

Horizontal desktop coordinate.

Formatint32
y*integer

Vertical desktop coordinate.

Formatint32
curl -X POST 'http://sandbox:2280/computeruse/mouse/click' \  -H 'Content-Type: application/json' \  -d '{  "x": 0,  "y": 0}'
{  "x": 0,  "y": 0}

Drag the mouse

POST
/computeruse/mouse/drag

Presses a mouse button, drags between two coordinates, and releases it.

Request Body

application/json
  1. body

Mouse drag request.

button?string

Button name (left, middle, right). Omitted = left.

endX*integer

Drag end X coordinate in desktop pixels.

Formatint64
endY*integer

Drag end Y coordinate in desktop pixels.

Formatint64
startX*integer

Drag start X coordinate in desktop pixels.

Formatint64
startY*integer

Drag start Y coordinate in desktop pixels.

Formatint64

Response Body

application/json
  1. response

A point in desktop pixels.

x*integer

Horizontal desktop coordinate.

Formatint32
y*integer

Vertical desktop coordinate.

Formatint32
curl -X POST 'http://sandbox:2280/computeruse/mouse/drag' \  -H 'Content-Type: application/json' \  -d '{  "endX": 0,  "endY": 0,  "startX": 0,  "startY": 0}'
{  "x": 0,  "y": 0}

Move the mouse

POST
/computeruse/mouse/move

Moves the cursor to the requested desktop coordinates.

Request Body

application/json
  1. body

Mouse move request.

x*integer

Target X coordinate in desktop pixels.

Formatint64
y*integer

Target Y coordinate in desktop pixels.

Formatint64

Response Body

application/json
  1. response

A point in desktop pixels.

x*integer

Horizontal desktop coordinate.

Formatint32
y*integer

Vertical desktop coordinate.

Formatint32
curl -X POST 'http://sandbox:2280/computeruse/mouse/move' \  -H 'Content-Type: application/json' \  -d '{  "x": 0,  "y": 0}'
{  "x": 0,  "y": 0}

Mouse position

GET
/computeruse/mouse/position

Returns the current cursor position.

Response Body

application/json
  1. response

A point in desktop pixels.

x*integer

Horizontal desktop coordinate.

Formatint32
y*integer

Vertical desktop coordinate.

Formatint32
curl -X GET 'http://sandbox:2280/computeruse/mouse/position'
{  "x": 0,  "y": 0}

Scroll the mouse wheel

POST
/computeruse/mouse/scroll

Moves the cursor and scrolls the wheel at the requested position.

Request Body

application/json
  1. body

Mouse scroll request.

amount?|

Number of wheel steps. Omitted = 1.

Formatint64
direction*string

Scroll direction (up or down).

x*integer

Target X coordinate in desktop pixels.

Formatint64
y*integer

Target Y coordinate in desktop pixels.

Formatint64

Response Body

application/json
  1. response

Scroll success response.

success*boolean

Always true when the request succeeds.

curl -X POST 'http://sandbox:2280/computeruse/mouse/scroll' \  -H 'Content-Type: application/json' \  -d '{  "direction": "string",  "x": 0,  "y": 0}'
{  "success": true}
GET
/computeruse/process-status

Returns the state of every desktop automation process.

Response Body

application/json
  1. response

The process-status map keyed by process name.

[key: string]?

One desktop automation process.

curl -X GET 'http://sandbox:2280/computeruse/process-status'
{  "property1": {    "AutoRestart": true,    "Failed": true,    "Pid": 0,    "Priority": 0,    "RestartAttempts": 0,    "RestartBackoffMs": 0,    "Running": true,    "Status": "string"  },  "property2": {    "AutoRestart": true,    "Failed": true,    "Pid": 0,    "Priority": 0,    "RestartAttempts": 0,    "RestartBackoffMs": 0,    "Running": true,    "Status": "string"  }}
GET
/computeruse/process/{name}/errors

Returns available stderr/error logs for one desktop automation process.

Path Parameters

name*string

Desktop process name

Response Body

application/json
  1. response

The stderr/errors of one named process.

errors*string

The retained stderr/error log text.

processName*string

The requested process name.

curl -X GET 'http://sandbox:2280/computeruse/process/string/errors'
{  "errors": "string",  "processName": "string"}
GET
/computeruse/process/{name}/logs

Returns available stdout logs for one desktop automation process.

Path Parameters

name*string

Desktop process name

Response Body

application/json
  1. response

The logs of one named process.

logs*string

The retained stdout log text.

processName*string

The requested process name.

curl -X GET 'http://sandbox:2280/computeruse/process/string/logs'
{  "logs": "string",  "processName": "string"}
POST
/computeruse/process/{name}/restart

Restarts one desktop automation process when the desktop is ready.

Path Parameters

name*string

Desktop process name

Response Body

application/json
  1. response

The response returned by POST /computeruse/process/{name}/restart.

message*string

Stable success text.

processName*string

The restarted process name.

curl -X POST 'http://sandbox:2280/computeruse/process/string/restart'
{  "message": "string",  "processName": "string"}
GET
/computeruse/process/{name}/status

Returns the running state of one desktop automation process.

Path Parameters

name*string

Desktop process name

Response Body

application/json
  1. response

The running state of one named process.

processName*string

The requested process name.

running*boolean

Whether the named process is currently alive.

curl -X GET 'http://sandbox:2280/computeruse/process/string/status'
{  "processName": "string",  "running": true}

List recordings

GET
/computeruse/recordings

Returns live and retained recording metadata.

Response Body

application/json
  1. response

Recording list response.

recordings*array<>

The current and retained recordings.

curl -X GET 'http://sandbox:2280/computeruse/recordings'
{  "recordings": [    {      "durationSeconds": 0,      "endTime": "string",      "fileName": "string",      "filePath": "string",      "id": "string",      "sizeBytes": 0,      "startTime": "string",      "status": "string"    }  ]}

Start a recording

POST
/computeruse/recordings/start

Starts a desktop recording and returns its metadata.

Request Body

application/json
  1. body

Recording start request.

label?|

Optional label used as the filename prefix.

Response Body

application/json
  1. response

Recording metadata.

durationSeconds?|

Duration in seconds when known.

Formatdouble
endTime?|

Recording end time in RFC 3339 format, omitted while live.

fileName*string

Download filename.

filePath*string

Absolute recording path inside the sandbox.

id*string

Recording id.

sizeBytes?|

Encoded file size in bytes when known.

Formatint64
startTime*string

Recording start time in RFC 3339 format.

status*string

Lifecycle status (recording, stopping, completed, failed, ...).

curl -X POST 'http://sandbox:2280/computeruse/recordings/start' \  -H 'Content-Type: application/json' \  -d '{}'
{  "durationSeconds": 0,  "endTime": "string",  "fileName": "string",  "filePath": "string",  "id": "string",  "sizeBytes": 0,  "startTime": "string",  "status": "string"}

Stop a recording

POST
/computeruse/recordings/stop

Stops a recording and returns its terminal metadata.

Request Body

application/json
  1. body

Recording stop request.

id*string

The recording id.

Response Body

application/json
  1. response

Recording metadata.

durationSeconds?|

Duration in seconds when known.

Formatdouble
endTime?|

Recording end time in RFC 3339 format, omitted while live.

fileName*string

Download filename.

filePath*string

Absolute recording path inside the sandbox.

id*string

Recording id.

sizeBytes?|

Encoded file size in bytes when known.

Formatint64
startTime*string

Recording start time in RFC 3339 format.

status*string

Lifecycle status (recording, stopping, completed, failed, ...).

curl -X POST 'http://sandbox:2280/computeruse/recordings/stop' \  -H 'Content-Type: application/json' \  -d '{  "id": "string"}'
{  "durationSeconds": 0,  "endTime": "string",  "fileName": "string",  "filePath": "string",  "id": "string",  "sizeBytes": 0,  "startTime": "string",  "status": "string"}

Get recording metadata

GET
/computeruse/recordings/{id}

Returns metadata for one recording.

Path Parameters

id*string

Recording id

Response Body

application/json
  1. response

Recording metadata.

durationSeconds?|

Duration in seconds when known.

Formatdouble
endTime?|

Recording end time in RFC 3339 format, omitted while live.

fileName*string

Download filename.

filePath*string

Absolute recording path inside the sandbox.

id*string

Recording id.

sizeBytes?|

Encoded file size in bytes when known.

Formatint64
startTime*string

Recording start time in RFC 3339 format.

status*string

Lifecycle status (recording, stopping, completed, failed, ...).

curl -X GET 'http://sandbox:2280/computeruse/recordings/string'
{  "durationSeconds": 0,  "endTime": "string",  "fileName": "string",  "filePath": "string",  "id": "string",  "sizeBytes": 0,  "startTime": "string",  "status": "string"}

Delete a recording

DELETE
/computeruse/recordings/{id}

Deletes a recording and its retained file.

Path Parameters

id*string

Recording id

Response Body

Recording deleted

curl -X DELETE 'http://sandbox:2280/computeruse/recordings/string'
Empty

Download a recording

GET
/computeruse/recordings/{id}/download

Streams one recording file as video/mp4.

Path Parameters

id*string

Recording id

Response Body

Recording file stream

video/mp4
curl -X GET 'http://sandbox:2280/computeruse/recordings/string/download'
Empty

Restart the desktop

POST
/computeruse/restart

Restarts the desktop and returns its ready status. The body is optional: resolution restarts the desktop at that size (1024x768, 1280x720 or 1920x1080) and keeps it for later starts; omitted, the desktop restarts at its current resolution. Linux only: other platforms refuse a resolution.

Request Body

application/json
  1. body

Response Body

application/json
  1. response

The response returned by POST /computeruse/restart.

desktop*ComputerUseDesktopState

The explicit desktop state after the restart succeeds.

Value in"not_started""starting""ready""failed"
message*string

Stable success text.

status*ComputerUseActivityStatus

Activity status; active after a successful restart.

Value in"active""inactive"
curl -X POST 'http://sandbox:2280/computeruse/restart'
{  "desktop": "not_started",  "message": "string",  "status": "active"}

Full screenshot

GET
/computeruse/screenshot

Captures the full desktop and returns base64-encoded image bytes in JSON.

Query Parameters

show_cursor?string

Whether to include the current cursor position in the JSON response.

showCursor?string

Accepted camelCase alias for show_cursor.

format?string

Image format for compressed screenshot routes. Omitted = png.

quality?string

JPEG quality for compressed screenshot routes. Omitted = 85.

scale?string

Downscale factor for compressed screenshot routes. Omitted = 1.0.

x?string

Region left coordinate for region routes.

y?string

Region top coordinate for region routes.

width?string

Region width for region routes. Must be greater than zero.

height?string

Region height for region routes. Must be greater than zero.

Response Body

application/json
  1. response

Screenshot response.

cursorPosition?null|
screenshot*string

Base64-encoded PNG or JPEG bytes.

sizeBytes*integer

Size of the encoded image in bytes.

Range0 <= value
curl -X GET 'http://sandbox:2280/computeruse/screenshot'
{  "cursorPosition": null,  "screenshot": "string",  "sizeBytes": 0}
GET
/computeruse/screenshot/compressed

Captures the full desktop and applies format, quality, and scale controls before returning JSON.

Query Parameters

show_cursor?string

Whether to include the current cursor position in the JSON response.

showCursor?string

Accepted camelCase alias for show_cursor.

format?string

Image format for compressed screenshot routes. Omitted = png.

quality?string

JPEG quality for compressed screenshot routes. Omitted = 85.

scale?string

Downscale factor for compressed screenshot routes. Omitted = 1.0.

x?string

Region left coordinate for region routes.

y?string

Region top coordinate for region routes.

width?string

Region width for region routes. Must be greater than zero.

height?string

Region height for region routes. Must be greater than zero.

Response Body

application/json
  1. response

Screenshot response.

cursorPosition?null|
screenshot*string

Base64-encoded PNG or JPEG bytes.

sizeBytes*integer

Size of the encoded image in bytes.

Range0 <= value
curl -X GET 'http://sandbox:2280/computeruse/screenshot/compressed'
{  "cursorPosition": null,  "screenshot": "string",  "sizeBytes": 0}

Region screenshot

GET
/computeruse/screenshot/region

Captures a rectangular desktop region and returns base64-encoded image bytes in JSON.

Query Parameters

show_cursor?string

Whether to include the current cursor position in the JSON response.

showCursor?string

Accepted camelCase alias for show_cursor.

format?string

Image format for compressed screenshot routes. Omitted = png.

quality?string

JPEG quality for compressed screenshot routes. Omitted = 85.

scale?string

Downscale factor for compressed screenshot routes. Omitted = 1.0.

x?string

Region left coordinate for region routes.

y?string

Region top coordinate for region routes.

width?string

Region width for region routes. Must be greater than zero.

height?string

Region height for region routes. Must be greater than zero.

Response Body

application/json
  1. response

Screenshot response.

cursorPosition?null|
screenshot*string

Base64-encoded PNG or JPEG bytes.

sizeBytes*integer

Size of the encoded image in bytes.

Range0 <= value
curl -X GET 'http://sandbox:2280/computeruse/screenshot/region'
{  "cursorPosition": null,  "screenshot": "string",  "sizeBytes": 0}
GET
/computeruse/screenshot/region/compressed

Captures a rectangular desktop region and applies format, quality, and scale controls before returning JSON.

Query Parameters

show_cursor?string

Whether to include the current cursor position in the JSON response.

showCursor?string

Accepted camelCase alias for show_cursor.

format?string

Image format for compressed screenshot routes. Omitted = png.

quality?string

JPEG quality for compressed screenshot routes. Omitted = 85.

scale?string

Downscale factor for compressed screenshot routes. Omitted = 1.0.

x?string

Region left coordinate for region routes.

y?string

Region top coordinate for region routes.

width?string

Region width for region routes. Must be greater than zero.

height?string

Region height for region routes. Must be greater than zero.

Response Body

application/json
  1. response

Screenshot response.

cursorPosition?null|
screenshot*string

Base64-encoded PNG or JPEG bytes.

sizeBytes*integer

Size of the encoded image in bytes.

Range0 <= value
curl -X GET 'http://sandbox:2280/computeruse/screenshot/region/compressed'
{  "cursorPosition": null,  "screenshot": "string",  "sizeBytes": 0}

Start the desktop

POST
/computeruse/start

Starts the desktop and returns its process statuses. The body is optional: resolution selects the desktop size (1024x768, 1280x720 or 1920x1080), kept for later starts and restarts; omitted, the desktop uses the resolution last selected, or 1280x720. Starting a running desktop at a different resolution is refused; restart it with the new one instead. Linux only: other platforms refuse a resolution.

Request Body

application/json
  1. body

Response Body

application/json
  1. response

The response returned when starting or stopping the desktop.

message*string

Stable success text.

status*

The post-operation process inventory.

curl -X POST 'http://sandbox:2280/computeruse/start'
{  "message": "string",  "status": {    "property1": {      "AutoRestart": true,      "Failed": true,      "Pid": 0,      "Priority": 0,      "RestartAttempts": 0,      "RestartBackoffMs": 0,      "Running": true,      "Status": "string"    },    "property2": {      "AutoRestart": true,      "Failed": true,      "Pid": 0,      "Priority": 0,      "RestartAttempts": 0,      "RestartBackoffMs": 0,      "Running": true,      "Status": "string"    }  }}

Desktop status

GET
/computeruse/status

Returns the desktop state and activity status.

Response Body

application/json
  1. response

The public desktop status surface.

cause?null|
desktop*ComputerUseDesktopState

The current desktop state.

Value in"not_started""starting""ready""failed"
status*ComputerUseActivityStatus

Activity status corresponding to desktop.

Value in"active""inactive"
curl -X GET 'http://sandbox:2280/computeruse/status'
{  "cause": null,  "desktop": "not_started",  "status": "active"}

Stop the desktop

POST
/computeruse/stop

Stops the desktop and returns its final process statuses.

Response Body

application/json
  1. response

The response returned when starting or stopping the desktop.

message*string

Stable success text.

status*

The post-operation process inventory.

curl -X POST 'http://sandbox:2280/computeruse/stop'
{  "message": "string",  "status": {    "property1": {      "AutoRestart": true,      "Failed": true,      "Pid": 0,      "Priority": 0,      "RestartAttempts": 0,      "RestartBackoffMs": 0,      "Running": true,      "Status": "string"    },    "property2": {      "AutoRestart": true,      "Failed": true,      "Pid": 0,      "Priority": 0,      "RestartAttempts": 0,      "RestartBackoffMs": 0,      "Running": true,      "Status": "string"    }  }}