Kernel Browser Processes API
Execute and manage processes on the browser instance.
Execute and manage processes on the browser instance.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/kernel:kernel-browser-processes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Developer tools and cloud infrastructure for AI agents to use web browsers
title: Kernel Browser Processes API
version: 0.1.0
servers:
- description: API Server
url: https://api.onkernel.com
security:
- bearerAuth: []
tags:
- description: Execute and manage processes on the browser instance.
name: Browser Processes
paths:
/browsers/{id_or_name}/process/exec:
post:
operationId: processExec
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessExecRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessExecResult'
description: Execution result
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Execute a command synchronously
tags:
- Browser Processes
/browsers/{id_or_name}/process/spawn:
post:
operationId: processSpawn
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessSpawnRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessSpawnResult'
description: Spawned
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Execute a command asynchronously
tags:
- Browser Processes
/browsers/{id_or_name}/process/{process_id}/kill:
post:
operationId: processKill
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- in: path
name: process_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessKillRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OkResponse'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Send signal to process
tags:
- Browser Processes
/browsers/{id_or_name}/process/{process_id}/resize:
post:
operationId: processResize
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- in: path
name: process_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessResizeRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OkResponse'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Resize a PTY-backed process terminal
tags:
- Browser Processes
/browsers/{id_or_name}/process/{process_id}/status:
get:
operationId: processStatus
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- in: path
name: process_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessStatus'
description: Status
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Get process status
tags:
- Browser Processes
/browsers/{id_or_name}/process/{process_id}/stdin:
post:
operationId: processStdin
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- in: path
name: process_id
required: true
schema:
format: uuid
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessStdinRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProcessStdinResult'
description: Bytes written
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Write to process stdin
tags:
- Browser Processes
/browsers/{id_or_name}/process/{process_id}/stdout/stream:
get:
operationId: processStdoutStream
parameters:
- description: Browser session ID or name
example: htzv5orfit78e1m2biiifpbv
in: path
name: id_or_name
required: true
schema:
type: string
- in: path
name: process_id
required: true
schema:
format: uuid
type: string
responses:
'200':
content:
text/event-stream:
schema:
$ref: '#/components/schemas/ProcessStreamEvent'
description: SSE stream of process output and lifecycle events
headers:
X-SSE-Content-Type:
description: Media type of SSE data events (application/json)
schema:
const: application/json
type: string
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
default:
$ref: '#/components/responses/BrowserProxyError'
security:
- bearerAuth: []
summary: Stream process stdout via SSE
tags:
- Browser Processes
components:
responses:
BadRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Bad Request – invalid input
InternalError:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal Server Error
NotFound:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Resource not found
BrowserProxyError:
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceProxyError'
description: Error returned by the browser or its proxy
schemas:
ProcessStatus:
additionalProperties: false
description: Current status of a process.
properties:
cpu_pct:
description: Estimated CPU usage percentage.
type: number
exit_code:
description: Exit code if the process has exited.
nullable: true
type: integer
mem_bytes:
description: Estimated resident memory usage in bytes.
type: integer
state:
description: Process state.
enum:
- running
- exited
type: string
x-enum-varnames:
- ProcessStatusStateRunning
- ProcessStatusStateExited
type: object
OkResponse:
additionalProperties: false
description: Generic OK response.
properties:
ok:
default: true
description: Indicates success.
type: boolean
required:
- ok
type: object
ProcessExecResult:
additionalProperties: false
description: Result of a synchronous command execution.
properties:
duration_ms:
description: Execution duration in milliseconds.
type: integer
exit_code:
description: Process exit code.
type: integer
stderr_b64:
description: Base64-encoded stderr buffer.
type: string
stdout_b64:
description: Base64-encoded stdout buffer.
type: string
type: object
Error:
properties:
code:
description: Application-specific error code (machine-readable)
example: bad_request
type: string
details:
description: Additional error details (for multiple errors)
items:
$ref: '#/components/schemas/ErrorDetail'
type: array
inner_error:
$ref: '#/components/schemas/ErrorDetail'
message:
description: Human-readable error description for debugging
example: 'Missing required field: app_name'
type: string
required:
- code
- message
type: object
InstanceProxyError:
properties:
code:
$ref: '#/components/schemas/InstanceProxyErrorCode'
message:
description: Human-readable error description for debugging
type: string
required:
- code
- message
type: object
ProcessSpawnResult:
additionalProperties: false
description: Information about a spawned process.
properties:
pid:
description: OS process ID.
type: integer
process_id:
description: Server-assigned identifier for the process.
format: uuid
type: string
started_at:
description: Timestamp when the process started.
format: date-time
type: string
type: object
ProcessResizeRequest:
additionalProperties: false
description: Resize a PTY-backed process terminal.
properties:
cols:
description: New terminal columns.
maximum: 65535
minimum: 1
type: integer
rows:
description: New terminal rows.
maximum: 65535
minimum: 1
type: integer
required:
- rows
- cols
type: object
InstanceProxyErrorCode:
description: Canonical error code returned by browser instance API proxy routes
enum:
- invalid_request
- unauthorized
- forbidden
- session_not_leased
- not_found
- conflict
- session_gone
- rate_limit_exceeded
- internal_error
- browser_unavailable
type: string
ProcessStdinResult:
additionalProperties: false
description: Result of writing to stdin.
properties:
written_bytes:
description: Number of bytes written.
type: integer
type: object
ProcessKillRequest:
additionalProperties: false
description: Signal to send to the process.
properties:
signal:
default: TERM
description: Signal to send.
enum:
- TERM
- KILL
- INT
- HUP
type: string
required:
- signal
type: object
ProcessExecRequest:
additionalProperties: false
description: Request to execute a command synchronously.
properties:
args:
default: []
description: Command arguments.
items:
type: string
type: array
as_root:
default: false
description: Run the process with root privileges.
type: boolean
as_user:
description: Run the process as this user.
nullable: true
type: string
command:
description: Executable or shell command to run.
type: string
cwd:
description: Working directory (absolute path) to run the command in.
nullable: true
pattern: ^/.*
type: string
env:
additionalProperties:
type: string
default: {}
description: Environment variables to set for the process.
type: object
timeout_sec:
description: Maximum execution time in seconds.
nullable: true
type: integer
required:
- command
type: object
ErrorDetail:
properties:
code:
description: Lower-level error code providing more specific detail
example: invalid_input
type: string
message:
description: Further detail about the error
example: Provided version string is not semver compliant
type: string
type: object
ProcessSpawnRequest:
allOf:
- $ref: '#/components/schemas/ProcessExecRequest'
- properties:
allocate_tty:
default: false
description: Allocate a pseudo-terminal (PTY) for interactive shells.
type: boolean
cols:
description: Initial terminal columns. Only used when allocate_tty is true.
maximum: 65535
minimum: 1
type: integer
rows:
description: Initial terminal rows. Only used when allocate_tty is true.
maximum: 65535
minimum: 1
type: integer
type: object
ProcessStreamEvent:
additionalProperties: false
description: SSE payload representing process output or lifecycle events.
properties:
data_b64:
description: Base64-encoded data from the process stream.
type: string
event:
description: Lifecycle event type.
enum:
- exit
type: string
exit_code:
description: Exit code when the event is "exit".
type: integer
stream:
description: Source stream of the data chunk.
enum:
- stdout
- stderr
type: string
type: object
ProcessStdinRequest:
additionalProperties: false
description: Data to write to the process standard input.
properties:
data_b64:
description: Base64-encoded data to write.
type: string
required:
- data_b64
type: object
securitySchemes:
bearerAuth:
scheme: bearer
type: http
x-service-info:
categories:
- browsers
docs:
apiReference: https://www.kernel.sh/docs
homepage: https://www.kernel.sh
llms: https://api.onkernel.com/llms.txt
x-provenance:
method: harvested
publisher: Kernel
source: https://api.onkernel.com/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)