Appearance
Fresh 🌱
Execute a batch of computer actions sequentially ​
Send an array of computer actions to execute in order on the browser instance. Execution stops on the first error. This reduces network latency compared to sending individual action requests.
OpenAPI ​
yaml
openapi: 3.1.0
info:
title: Kernel API
description: Developer tools and cloud infrastructure for AI agents to use web browsers
version: 0.1.0
servers:
- url: https://api.onkernel.com
description: API Server
security:
- bearerAuth: []
tags:
- name: Browsers
description: Create and manage browser sessions.
- name: Browser Replays
description: Record and manage browser session video replays.
- name: Profiles
description: Create, list, retrieve, and delete browser profiles.
- name: Browser Filesystem
description: Read, write, and manage files on the browser instance.
- name: Browser Computer Controls
description: Control mouse, keyboard, and screen on the browser instance.
- name: Browser Playwright
description: Execute Playwright code against the browser instance.
- name: Browser Processes
description: Execute and manage processes on the browser instance.
- name: Browser Logs
description: Stream logs from the browser instance.
- name: Extensions
description: Create, list, retrieve, and delete browser extensions.
- name: Proxies
description: Create and manage proxy configurations for routing browser traffic.
- name: Browser Pools
description: Create and manage browser pools for acquiring and releasing browsers.
- name: Managed Auth
description: >-
Create and manage auth connections for automated credential capture and
login.
- name: Credentials
description: Create and manage credentials for authentication.
- name: Credential Providers
description: Configure external credential providers like 1Password.
- name: Apps
description: List applications and versions.
- name: Deployments
description: Create and manage app deployments and stream deployment events.
- name: Invocations
description: Invoke actions and stream or query invocation status and events.
- name: Projects
description: Create and manage projects for resource isolation within an organization.
paths:
/browsers/{id}/computer/batch:
post:
tags:
- Browsers
summary: Execute a batch of computer actions sequentially
description: >
Send an array of computer actions to execute in order on the browser
instance.
Execution stops on the first error. This reduces network latency
compared to
sending individual action requests.
operationId: batchComputerAction
parameters:
- name: id
in: path
required: true
description: Browser session ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BatchComputerActionRequest'
responses:
'200':
description: All actions executed successfully
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
security:
- bearerAuth: []
x-codeSamples:
- lang: JavaScript
source: >-
import Kernel from '@onkernel/sdk';
const client = new Kernel({
apiKey: process.env['KERNEL_API_KEY'], // This is the default and can be omitted
});
await client.browsers.computer.batch('id', { actions: [{ type:
'click_mouse' }] });
- lang: Python
source: |-
import os
from kernel import Kernel
client = Kernel(
api_key=os.environ.get("KERNEL_API_KEY"), # This is the default and can be omitted
)
client.browsers.computer.batch(
id="id",
actions=[{
"type": "click_mouse"
}],
)
- lang: Go
source: "package main\n\nimport (\n\t\"context\"\n\n\t\"github.com/kernel/kernel-go-sdk\"\n\t\"github.com/kernel/kernel-go-sdk/option\"\n)\n\nfunc main() {\n\tclient := kernel.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\terr := client.Browsers.Computer.Batch(\n\t\tcontext.TODO(),\n\t\t\"id\",\n\t\tkernel.BrowserComputerBatchParams{\n\t\t\tActions: []kernel.BrowserComputerBatchParamsAction{{\n\t\t\t\tType: \"click_mouse\",\n\t\t\t}},\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n"
components:
schemas:
BatchComputerActionRequest:
type: object
description: A batch of computer actions to execute sequentially.
required:
- actions
properties:
actions:
type: array
description: >-
Ordered list of actions to execute. Execution stops on the first
error.
minItems: 1
maxItems: 100
items:
$ref: '#/components/schemas/ComputerAction'
additionalProperties: false
ComputerAction:
type: object
description: >
A single computer action to execute as part of a batch. The `type` field
selects which
action to perform, and the corresponding field contains the action
parameters.
Exactly one action field matching the type must be provided.
required:
- type
properties:
type:
type: string
description: The type of action to perform.
enum:
- click_mouse
- move_mouse
- type_text
- press_key
- scroll
- drag_mouse
- set_cursor
- sleep
click_mouse:
$ref: '#/components/schemas/ClickMouseRequest'
move_mouse:
$ref: '#/components/schemas/MoveMouseRequest'
type_text:
$ref: '#/components/schemas/TypeTextRequest'
press_key:
$ref: '#/components/schemas/PressKeyRequest'
scroll:
$ref: '#/components/schemas/ScrollRequest'
drag_mouse:
$ref: '#/components/schemas/DragMouseRequest'
set_cursor:
$ref: '#/components/schemas/SetCursorRequest'
sleep:
$ref: '#/components/schemas/SleepAction'
additionalProperties: false
Error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Application-specific error code (machine-readable)
example: bad_request
message:
type: string
description: Human-readable error description for debugging
example: 'Missing required field: app_name'
details:
type: array
description: Additional error details (for multiple errors)
items:
$ref: '#/components/schemas/ErrorDetail'
inner_error:
$ref: '#/components/schemas/ErrorDetail'
ClickMouseRequest:
type: object
required:
- x
- 'y'
properties:
button:
type: string
description: Mouse button to interact with
enum:
- left
- right
- middle
- back
- forward
click_type:
type: string
description: Type of click action
enum:
- down
- up
- click
x:
type: integer
description: X coordinate of the click position
'y':
type: integer
description: Y coordinate of the click position
hold_keys:
type: array
description: Modifier keys to hold during the click
items:
type: string
num_clicks:
type: integer
description: Number of times to repeat the click
default: 1
additionalProperties: false
MoveMouseRequest:
type: object
required:
- x
- 'y'
properties:
x:
type: integer
description: X coordinate to move the cursor to
'y':
type: integer
description: Y coordinate to move the cursor to
hold_keys:
type: array
description: Modifier keys to hold during the move
items:
type: string
smooth:
type: boolean
description: Use human-like Bezier curve path instead of instant mouse movement.
default: true
duration_ms:
type: integer
description: >-
Target total duration in milliseconds for the mouse movement when
smooth=true. Omit for automatic timing based on distance.
minimum: 50
maximum: 5000
additionalProperties: false
TypeTextRequest:
type: object
required:
- text
properties:
text:
type: string
description: Text to type on the browser instance
delay:
type: integer
description: Delay in milliseconds between keystrokes
minimum: 0
default: 0
additionalProperties: false
PressKeyRequest:
type: object
required:
- keys
properties:
keys:
type: array
description: >
List of key symbols to press. Each item should be a key symbol
supported by xdotool
(see X11 keysym definitions). Examples include "Return", "Shift",
"Ctrl", "Alt", "F5".
Items in this list could also be combinations, e.g. "Ctrl+t" or
"Ctrl+Shift+Tab".
items:
type: string
duration:
type: integer
description: >-
Duration to hold the keys down in milliseconds. If omitted or 0,
keys are tapped.
minimum: 0
default: 0
hold_keys:
type: array
description: Optional modifier keys to hold during the key press sequence.
items:
type: string
additionalProperties: false
ScrollRequest:
type: object
required:
- x
- 'y'
properties:
x:
type: integer
description: X coordinate at which to perform the scroll
'y':
type: integer
description: Y coordinate at which to perform the scroll
delta_x:
type: integer
description: >-
Horizontal scroll amount in xdotool "wheel units." Positive scrolls
right, negative scrolls left.
default: 0
delta_y:
type: integer
description: >-
Vertical scroll amount in xdotool "wheel units." Positive scrolls
down, negative scrolls up.
default: 0
hold_keys:
type: array
description: Modifier keys to hold during the scroll
items:
type: string
additionalProperties: false
DragMouseRequest:
type: object
required:
- path
properties:
path:
type: array
description: >-
Ordered list of [x, y] coordinate pairs to move through while
dragging. Must contain at least 2 points.
minItems: 2
items:
type: array
minItems: 2
maxItems: 2
items:
type: integer
button:
type: string
description: Mouse button to drag with
enum:
- left
- middle
- right
delay:
type: integer
description: >-
Delay in milliseconds between button down and starting to move along
the path.
minimum: 0
default: 0
steps_per_segment:
type: integer
description: Number of relative move steps per segment in the path. Minimum 1.
minimum: 1
default: 10
step_delay_ms:
type: integer
description: >-
Delay in milliseconds between relative steps while dragging (not the
initial delay).
minimum: 0
default: 50
hold_keys:
type: array
description: Modifier keys to hold during the drag
items:
type: string
smooth:
type: boolean
description: >-
Use human-like Bezier curves between path waypoints instead of
linear interpolation. When true, steps_per_segment and step_delay_ms
are ignored.
default: true
duration_ms:
type: integer
description: >-
Target total duration in milliseconds for the entire drag movement
when smooth=true. Omit for automatic timing based on total path
length.
minimum: 50
maximum: 10000
additionalProperties: false
SetCursorRequest:
type: object
required:
- hidden
properties:
hidden:
type: boolean
description: Whether the cursor should be hidden or visible
additionalProperties: false
SleepAction:
type: object
description: Pause execution for a specified duration.
required:
- duration_ms
properties:
duration_ms:
type: integer
description: Duration to sleep in milliseconds.
minimum: 0
maximum: 30000
additionalProperties: false
ErrorDetail:
type: object
properties:
code:
type: string
description: Lower-level error code providing more specific detail
example: invalid_input
message:
type: string
description: Further detail about the error
example: Provided version string is not semver compliant
responses:
BadRequest:
description: Bad Request - invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InternalError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
bearerAuth:
type: http
scheme: bearer