---
title: "Run one canonical action or a batch"
method: POST
path: "/api/v1/computers/{computer_id}/actions"
tags: ["computers"]
---

# Run one canonical action or a batch

`POST /api/v1/computers/{computer_id}/actions`

## Request

- Base URL: `https://api.maritime.sh` (the document declares no server; this is the origin it was published from)
- URL: `https://api.maritime.sh/api/v1/computers/{computer_id}/actions`
- Auth: HTTP bearer

## Path parameters

- `computer_id` string, required

## Request body

- union
  - ActionRequest: One canonical desktopd action (desktopd/mcp_server.py COMPUTER_PROPS shape).
    - `action` string, required
    - `coordinate` integer[], nullable
    - `startCoordinate` integer[], nullable
    - `text` string, nullable
    - `modifier` string, nullable
    - `key` string, nullable
    - `repeat` integer, nullable
    - `scrollDirection` 'up' | 'down' | 'left' | 'right', nullable
    - `scrollAmount` integer, nullable
    - `duration` number, nullable
    - `region` integer[], nullable
    - `package` string, nullable
    - `url` string, nullable
    - `path` string, nullable
    - `detail` boolean, nullable
    - `noScreenshot` boolean, nullable
    - `format` 'png' | 'jpeg', nullable
    - `quality` integer, nullable
  - BatchRequest
    - `actions` ActionRequest[], required
      - `action` string, required
      - `coordinate` integer[], nullable
      - `startCoordinate` integer[], nullable
      - `text` string, nullable
      - `modifier` string, nullable
      - `key` string, nullable
      - `repeat` integer, nullable
      - `scrollDirection` 'up' | 'down' | 'left' | 'right', nullable
      - `scrollAmount` integer, nullable
      - `duration` number, nullable
      - `region` integer[], nullable
      - `package` string, nullable
      - `url` string, nullable
      - `path` string, nullable
      - `detail` boolean, nullable
      - `noScreenshot` boolean, nullable
      - `format` 'png' | 'jpeg', nullable
      - `quality` integer, nullable
    - `format` 'png' | 'jpeg', nullable
    - `quality` integer, nullable

## Response `200`

Successful Response

- union
  - ActionResult: A desktopd action result with camelCase names; extra detail keys pass through.
    - `action` string, nullable
    - `ok` boolean, nullable
    - `isError` boolean, nullable
    - `error` string, nullable
    - `frameId` integer, nullable
    - `imageB64` string, nullable
    - `width` integer, nullable
    - `height` integer, nullable
    - `mime` string, nullable
    - `scale` number, nullable
    - `coordinate` integer[], nullable
    - `blocked` boolean, nullable
    - `mode` string, nullable
    - `reason` string, nullable
    - `hint` string, nullable
    - `note` string, nullable
  - BatchResult
    - `results` ActionResult[], required
      - `action` string, nullable
      - `ok` boolean, nullable
      - `isError` boolean, nullable
      - `error` string, nullable
      - `frameId` integer, nullable
      - `imageB64` string, nullable
      - `width` integer, nullable
      - `height` integer, nullable
      - `mime` string, nullable
      - `scale` number, nullable
      - `coordinate` integer[], nullable
      - `blocked` boolean, nullable
      - `mode` string, nullable
      - `reason` string, nullable
      - `hint` string, nullable
      - `note` string, nullable

## Other responses

- `402`: Plan or quota refusal
- `409`: A person is in control of the computer
- `422`: Validation Error
- `503`: Computers disabled or no capacity

---

[API](https://skmtc.dev/maritime/apis/maritime-api.md) - [All operations](https://skmtc.dev/maritime/apis/maritime-api/llms.txt) - [OpenAPI document](https://skmtc.dev/maritime/apis/maritime-api/revisions/acd712090ad6?raw)
