Base URL
Authentication
All requests require a Bearer token in theAuthorization header:
Quick start
1. Create a workspace
Workspaces organize your computers.2. Create a computer
3. Control the computer
Resource hierarchy
Computer specs
| Parameter | Options | Default |
|---|---|---|
os | linux | linux |
cpu | 1, 2, 4, 8, 16 cores | 1 |
ram | 4, 8, 16, 32, 64 GB | 4 |
disk_size_gb | up to plan limit | 8 |
resolution | WIDTHxHEIGHTxDEPTH (e.g., 1024x768x24, 1920x1080x24) | 1280x720x24 |
Recommended configurations
| RAM | CPU | Best for |
|---|---|---|
| 4 GB | 1 core | Standard workflows (default) |
| 8 GB | 2 cores | Heavier automation |
| 16 GB | 4 cores | Development |
| 32 GB | 8 cores | Large-scale processing |
Available actions
Mouse
- Click (left, right, double)
- Drag
- Scroll
Keyboard
- Type text
- Press keys (Enter, Tab, ctrl+c, etc.)
Execution
- Bash commands
- Python code
Real-time (WebSocket)
- Terminal - interactive PTY shell
- Audio - live PCM audio stream from the VM’s virtual speaker
- Events - subscribe to window, clipboard, file, process, and idle events
Lifecycle
- Start, stop, restart
- Auto-stop (optional, opt-in per computer)
- Clone (copy a computer with full disk state)
- Resize (live CPU/RAM/disk hot-resize)
- Move (transfer between workspaces)
Other
- Screenshots
- Wait/delays
- RTMP streaming
Templates
Templates are reproducible computers defined in a singleorgo.ai/v1 file — hardware, installed apps, long-running services, secrets, and lifecycle hooks. Orgo builds the file once into a golden snapshot, and every launch restores from it in seconds.
- Launch a curated template — pass a
system/…ref astemplate_refto Create computer. Works on any paid plan. - Author your own — validate, publish, and build over HTTP (Scale plan). Start at the Templates API.
Resource IDs
Every Orgo resource is identified by a UUID. Pass the UUID in the URL path wherever you see{id} - e.g., /computers/a3bb189e-8bf9-3888-9912-ace4e6543002/click.
Workspace and computer UUIDs are returned in the id field of every
create / get / list response.
Error responses
All errors return a JSON object with anerror field:
| Status | Meaning |
|---|---|
200 | Success |
207 | Partial success (resize only - some dimensions applied, others rejected) |
400 | Invalid request - bad JSON, missing required field, out-of-range value |
401 | Missing or invalid API key |
403 | Authenticated, but not allowed - plan limit exceeded or no access to the resource |
404 | Resource not found, or you don’t have access to it |
405 | Method not allowed - check the verb for the endpoint |
409 | Conflict - resource is in a state that blocks this operation (e.g. stopping a stopped computer) |
422 | Validation failed - all dimensions of a resize were rejected |
429 | Rate limited - back off and retry |
500 | Unexpected server error |
Rate limits
API requests are rate limited per API key. If you hit429, back off with
exponential retry (start at 1s, double each retry, max 60s). Email
spencer@orgo.ai if you need higher limits.
Next steps
Create Workspace
Organize computers
Create Computer
Provision a VM
Templates
Reproducible computers
Authentication
API key setup
Use Any Model
Claude, GPT, Gemini, and more