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/focused, pid, or Linux all/Windows desktop aliases.

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/focused, pid, or Linux all/Windows desktop aliases.

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. i32 so every platform's native coordinate fits (X11 reports i16, Win32 LONG).

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. i32 so every platform's native coordinate fits (X11 reports i16, Win32 LONG).

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. i32 so every platform's native coordinate fits (X11 reports i16, Win32 LONG).

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. i32 so every platform's native coordinate fits (X11 reports i16, Win32 LONG).

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 supervised desktop process.

Response Body

application/json
  1. response

The process-status map keyed by process name.

[key: string]?

One supervised computer-use 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 retained stderr/error logs for one supervised desktop 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 retained stdout logs for one supervised desktop 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 supervised desktop 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 supervised desktop 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 path on the addon host.

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 path on the addon host.

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 path on the addon host.

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

Replaces the current desktop stack and returns the ready desktop status projection.

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

Legacy compatibility state (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

Legacy camelCase alias for show_cursor, accepted but omitted from the schema.

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

Legacy camelCase alias for show_cursor, accepted but omitted from the schema.

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

Legacy camelCase alias for show_cursor, accepted but omitted from the schema.

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

Legacy camelCase alias for show_cursor, accepted but omitted from the schema.

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 stack and returns the supervised-process inventory.

Response Body

application/json
  1. response

The response returned by lifecycle operations that start or stop the stack.

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 explicit desktop lifetime state and the legacy compatibility status field.

Response Body

application/json
  1. response

The public desktop status surface.

cause?null|
desktop*ComputerUseDesktopState

The explicit desktop lifetime state.

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

Legacy compatibility state derived from 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 stack and returns the final supervised-process inventory.

Response Body

application/json
  1. response

The response returned by lifecycle operations that start or stop the stack.

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"    }  }}