Scrapybara Code Execution API
Run bash commands and execute arbitrary code against a named kernel on an instance, capturing stdout, stderr, and results for agent workflows and data processing.
Run bash commands and execute arbitrary code against a named kernel on an instance, capturing stdout, stderr, and results for agent workflows and data processing.
openapi: 3.0.3
info:
title: Scrapybara API
description: >-
Scrapybara provides virtual desktops for AI agents. This representative
OpenAPI describes the public REST surface for starting and managing
cloud instances (ubuntu / browser / windows), running computer actions,
driving a Chromium browser over Playwright CDP, executing bash and code,
managing the filesystem and Jupyter notebooks, saving browser auth
states, and setting instance environment variables. All requests
authenticate with the `x-api-key` header.
termsOfService: https://scrapybara.com/terms
contact:
name: Scrapybara Support
url: https://scrapybara.com
email: hello@scrapybara.com
version: '1.0'
servers:
- url: https://api.scrapybara.com/v1
description: Scrapybara production API
security:
- ApiKeyAuth: []
tags:
- name: Instances
- name: Computer Actions
- name: Browser
- name: Code Execution
- name: Filesystem
- name: Notebook
- name: Auth States
- name: Environment
paths:
/start:
post:
operationId: startInstance
tags:
- Instances
summary: Start instance
description: Start a new cloud instance of type ubuntu, browser, or windows.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/StartInstanceRequest'
responses:
'200':
description: Instance started
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceResponse'
/instances:
get:
operationId: getInstances
tags:
- Instances
summary: List all instances
responses:
'200':
description: List of instances
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/InstanceResponse'
/instances/{instance_id}:
get:
operationId: getInstance
tags:
- Instances
summary: Get instance by ID
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Instance details
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceResponse'
/instances/{instance_id}/stop:
post:
operationId: stopInstance
tags:
- Instances
summary: Stop instance
description: Terminate the instance and release its resources.
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Instance stopped
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
/instances/{instance_id}/pause:
post:
operationId: pauseInstance
tags:
- Instances
summary: Pause instance
description: Pause the instance, preserving its state for a later resume.
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Instance paused
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
/instances/{instance_id}/resume:
post:
operationId: resumeInstance
tags:
- Instances
summary: Resume instance
description: Resume a previously paused instance.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
timeout_hours:
type: number
minimum: 0.01
maximum: 24
responses:
'200':
description: Instance resumed
content:
application/json:
schema:
$ref: '#/components/schemas/InstanceResponse'
/instances/{instance_id}/screenshot:
get:
operationId: takeScreenshot
tags:
- Computer Actions
summary: Take screenshot
description: Capture a base64-encoded screenshot of the instance desktop.
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Screenshot captured
content:
application/json:
schema:
type: object
properties:
base_64_image:
type: string
/instances/{instance_id}/stream-url:
get:
operationId: getStreamUrl
tags:
- Computer Actions
summary: Get stream URL
description: Get the interactive streaming URL for the instance desktop.
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Stream URL
content:
application/json:
schema:
type: object
properties:
stream_url:
type: string
format: uri
/instances/{instance_id}/computer:
post:
operationId: runComputerAction
tags:
- Computer Actions
summary: Run computer actions
description: >-
Run a computer action such as move_mouse, click_mouse, drag_mouse,
scroll, press_key, type_text, wait, take_screenshot, get_cursor_position.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ComputerActionRequest'
responses:
'200':
description: Action result
content:
application/json:
schema:
$ref: '#/components/schemas/ComputerActionResponse'
/instances/{instance_id}/bash:
post:
operationId: runBash
tags:
- Code Execution
summary: Run bash actions
description: Execute a bash command on the instance.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
command:
type: string
restart:
type: boolean
responses:
'200':
description: Command output
content:
application/json:
schema:
$ref: '#/components/schemas/CommandResponse'
/instances/{instance_id}/edit:
post:
operationId: runEdit
tags:
- Filesystem
summary: Run edit actions
description: >-
Run a text-editor file action (view, create, str_replace, insert,
undo_edit) against a path on the instance.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
command:
type: string
path:
type: string
file_text:
type: string
old_str:
type: string
new_str:
type: string
responses:
'200':
description: Edit result
content:
application/json:
schema:
$ref: '#/components/schemas/CommandResponse'
/instances/{instance_id}/file:
post:
operationId: runFile
tags:
- Filesystem
summary: Run file actions
description: >-
Run a filesystem action (read, write, list, exists, delete) against a
path on the instance.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
command:
type: string
path:
type: string
content:
type: string
responses:
'200':
description: File action result
content:
application/json:
schema:
$ref: '#/components/schemas/CommandResponse'
/instances/{instance_id}/upload:
post:
operationId: uploadFile
tags:
- Filesystem
summary: Upload file
description: Upload a binary file to a path on the instance filesystem.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
path:
type: string
responses:
'200':
description: Upload result
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
/instances/{instance_id}/browser/start:
post:
operationId: startBrowser
tags:
- Browser
summary: Start browser
description: Start a Chromium browser on the instance.
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Browser started
content:
application/json:
schema:
type: object
properties:
cdp_url:
type: string
format: uri
/instances/{instance_id}/browser/stop:
post:
operationId: stopBrowser
tags:
- Browser
summary: Stop browser
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Browser stopped
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
/instances/{instance_id}/browser/cdp-url:
get:
operationId: getCdpUrl
tags:
- Browser
summary: Get CDP URL
description: Get the Playwright Chrome DevTools Protocol URL for the browser.
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: CDP URL
content:
application/json:
schema:
type: object
properties:
cdp_url:
type: string
format: uri
/instances/{instance_id}/browser/current-url:
get:
operationId: getCurrentUrl
tags:
- Browser
summary: Get current URL
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Current URL
content:
application/json:
schema:
type: object
properties:
current_url:
type: string
format: uri
/instances/{instance_id}/browser/save-auth:
post:
operationId: saveAuth
tags:
- Auth States
summary: Save auth state
description: Save the current browser session as a reusable auth state.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
responses:
'200':
description: Auth state saved
content:
application/json:
schema:
$ref: '#/components/schemas/AuthStateResponse'
/instances/{instance_id}/browser/authenticate:
post:
operationId: authenticateBrowser
tags:
- Auth States
summary: Authenticate with saved state
description: Load a previously saved auth state into the browser session.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
auth_state_id:
type: string
responses:
'200':
description: Authenticated
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
/instances/{instance_id}/auth-states/{auth_state_id}:
post:
operationId: modifyAuth
tags:
- Auth States
summary: Modify auth state
parameters:
- $ref: '#/components/parameters/InstanceId'
- name: auth_state_id
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
responses:
'200':
description: Auth state modified
content:
application/json:
schema:
$ref: '#/components/schemas/AuthStateResponse'
/auth-states:
get:
operationId: getAuthStates
tags:
- Auth States
summary: List auth states
responses:
'200':
description: List of auth states
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AuthStateResponse'
/instances/{instance_id}/code/execute:
post:
operationId: executeCode
tags:
- Code Execution
summary: Execute code
description: Execute code against a named kernel on the instance.
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
code:
type: string
kernel_name:
type: string
timeout:
type: integer
responses:
'200':
description: Execution result
content:
application/json:
schema:
$ref: '#/components/schemas/CommandResponse'
/instances/{instance_id}/notebooks/kernels:
get:
operationId: listKernels
tags:
- Notebook
summary: List kernels
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: List of kernels
content:
application/json:
schema:
type: array
items:
type: object
/instances/{instance_id}/notebooks:
post:
operationId: createNotebook
tags:
- Notebook
summary: Create notebook
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
kernel_name:
type: string
responses:
'200':
description: Notebook created
content:
application/json:
schema:
$ref: '#/components/schemas/NotebookResponse'
/instances/{instance_id}/notebooks/{notebook_id}:
get:
operationId: getNotebook
tags:
- Notebook
summary: Get notebook
parameters:
- $ref: '#/components/parameters/InstanceId'
- $ref: '#/components/parameters/NotebookId'
responses:
'200':
description: Notebook details
content:
application/json:
schema:
$ref: '#/components/schemas/NotebookResponse'
delete:
operationId: deleteNotebook
tags:
- Notebook
summary: Delete notebook
parameters:
- $ref: '#/components/parameters/InstanceId'
- $ref: '#/components/parameters/NotebookId'
responses:
'200':
description: Notebook deleted
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
/instances/{instance_id}/notebooks/{notebook_id}/cells:
post:
operationId: addCell
tags:
- Notebook
summary: Add cell
parameters:
- $ref: '#/components/parameters/InstanceId'
- $ref: '#/components/parameters/NotebookId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
type:
type: string
enum: [code, markdown]
content:
type: string
responses:
'200':
description: Cell added
content:
application/json:
schema:
type: object
/instances/{instance_id}/notebooks/{notebook_id}/cells/{cell_id}/execute:
post:
operationId: executeCell
tags:
- Notebook
summary: Execute cell
parameters:
- $ref: '#/components/parameters/InstanceId'
- $ref: '#/components/parameters/NotebookId'
- name: cell_id
in: path
required: true
schema:
type: string
responses:
'200':
description: Cell execution result
content:
application/json:
schema:
$ref: '#/components/schemas/CommandResponse'
/instances/{instance_id}/notebooks/{notebook_id}/execute:
post:
operationId: executeNotebook
tags:
- Notebook
summary: Execute all cells
parameters:
- $ref: '#/components/parameters/InstanceId'
- $ref: '#/components/parameters/NotebookId'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
timeout:
type: integer
responses:
'200':
description: Notebook execution result
content:
application/json:
schema:
$ref: '#/components/schemas/NotebookResponse'
/instances/{instance_id}/env:
get:
operationId: getEnv
tags:
- Environment
summary: Get environment variables
parameters:
- $ref: '#/components/parameters/InstanceId'
responses:
'200':
description: Environment variables
content:
application/json:
schema:
type: object
properties:
variables:
type: object
additionalProperties:
type: string
post:
operationId: setEnv
tags:
- Environment
summary: Set environment variables
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
variables:
type: object
additionalProperties:
type: string
responses:
'200':
description: Variables set
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
delete:
operationId: deleteEnv
tags:
- Environment
summary: Delete environment variables
parameters:
- $ref: '#/components/parameters/InstanceId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
keys:
type: array
items:
type: string
responses:
'200':
description: Variables deleted
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
parameters:
InstanceId:
name: instance_id
in: path
required: true
schema:
type: string
NotebookId:
name: notebook_id
in: path
required: true
schema:
type: string
schemas:
StartInstanceRequest:
type: object
properties:
instance_type:
type: string
enum: [ubuntu, browser, windows]
default: ubuntu
timeout_hours:
type: number
minimum: 0.01
maximum: 24
blocked_domains:
type: array
items:
type: string
resolution:
type: array
items:
type: integer
minItems: 2
maxItems: 2
InstanceResponse:
type: object
properties:
id:
type: string
launch_time:
type: string
format: date-time
instance_type:
type: string
enum: [ubuntu, browser, windows]
status:
type: string
enum: [pending, running, paused, resuming, terminated, error]
resolution:
type: array
nullable: true
items:
type: integer
StatusResponse:
type: object
properties:
status:
type: string
ComputerActionRequest:
type: object
properties:
action:
type: string
enum:
- move_mouse
- click_mouse
- drag_mouse
- scroll
- press_key
- type_text
- wait
- take_screenshot
- get_cursor_position
coordinates:
type: array
items:
type: integer
button:
type: string
enum: [left, right, middle]
text:
type: string
keys:
type: array
items:
type: string
duration:
type: number
ComputerActionResponse:
type: object
properties:
output:
type: string
base_64_image:
type: string
cursor_position:
type: array
items:
type: integer
CommandResponse:
type: object
properties:
output:
type: string
error:
type: string
exit_code:
type: integer
AuthStateResponse:
type: object
properties:
id:
type: string
name:
type: string
NotebookResponse:
type: object
properties:
id:
type: string
name:
type: string
kernel_name:
type: string
cells:
type: array
items:
type: object