unsandbox.com
Anonymous remote code, compile, & execution API for humans & machine learning agents.
Docs 📚 View Pricing →The V examples below require the following 3rd party libraries:
net.http (built-in)json (built-in)
Make sure these packages are installed in your environment before running the examples.
Execute code immediately and wait for results. Best for quick scripts and interactive use.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
language |
string | ✓ | Programming language |
code |
string | ✓ | Source code to execute |
env |
object | Environment variables (key-value pairs) | |
network_mode |
string | "zerotrust" or "semitrusted" | |
ttl |
integer | Timeout 1-900s (default: 60) | |
return_artifact |
boolean | Return compiled binary | |
return_wasm_artifact |
boolean | Return WebAssembly binary |
Example (V)
import net.http
import json
struct ExecuteRequest {
language string
code string
}
fn main() {
url := 'https://api.unsandbox.com/execute'
request := ExecuteRequest{
language: 'v'
code: 'println("Hello from unsandbox!")'
}
payload := json.encode(request)
mut req := http.new_request(.post, url, payload)!
req.add_header(.content_type, 'application/json')
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
result := json.decode(map[string]json.Any, resp.body)!
if result['success']!.bool() {
println('Output: ${result['stdout']!.str()}')
} else {
println('Error: ${result['error']!.str()}')
}
}
Response (Success)
{
"success": true,
"stdout": "Hello from unsandbox!\n",
"stderr": "",
"error": null,
"language": "python",
"exit_code": 0
}
Response (Error)
{
"success": false,
"error": "Syntax error in code",
"stderr": "SyntaxError: invalid syntax\n"
}
Submit code for execution and receive a job ID to poll for results. Best for long-running scripts or when you need to decouple submission from execution.
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
language |
string | ✓ | Programming language |
code |
string | ✓ | Source code to execute |
env |
object | Environment variables (key-value pairs) | |
network_mode |
string | "zerotrust" or "semitrusted" | |
ttl |
integer | Timeout 1-900s (default: 60) | |
return_artifact |
boolean | Return compiled binary | |
return_wasm_artifact |
boolean | Return WebAssembly binary |
Example (V)
import net.http
import json
import time
struct ExecuteAsyncRequest {
language string
code string
ttl int
}
fn main() {
// Submit job
url := 'https://api.unsandbox.com/execute/async'
request := ExecuteAsyncRequest{
language: 'rust'
code: 'fn main() { println!("Computing..."); }'
ttl: 300
}
payload := json.encode(request)
mut req := http.new_request(.post, url, payload)!
req.add_header(.content_type, 'application/json')
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
job := json.decode(map[string]json.Any, resp.body)!
job_id := job['job_id']!.str()
println('Job submitted: ${job_id}')
// Poll for results
status_url := 'https://api.unsandbox.com/jobs/${job_id}'
for {
mut status_req := http.new_request(.get, status_url, '')!
status_req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
status_resp := status_req.do()!
status := json.decode(map[string]json.Any, status_resp.body)!
state := status['status']!.str()
if state == 'completed' {
result := status['result']!.as_map()
if result['success']!.bool() {
println('Output: ${result['stdout']!.str()}')
} else {
println('Error: ${result['stderr']!.str()}')
}
break
} else if state == 'timeout' || state == 'cancelled' {
println('Job ${state}')
break
}
time.sleep(1 * time.second)
}
}
Initial Response
{
"job_id": "job_1234567890_abc",
"status": "pending"
}
Check the status and results of an asynchronous job. Poll this endpoint after submitting a job via /execute/async or /run/async.
URL Parameters
| Parameter | Type | Description |
|---|---|---|
id |
string | Job ID returned from async endpoint |
Example (V)
import net.http
import json
fn main() {
job_id := 'job_1234567890_abc'
url := 'https://api.unsandbox.com/jobs/${job_id}'
mut req := http.new_request(.get, url, '')!
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
job := json.decode(map[string]json.Any, resp.body)!
println('Status: ${job['status']!.str()}')
if job['status']!.str() == 'completed' {
result := job['result']!.as_map()
println('Success: ${result['success']!.bool()}')
println('Output: ${result['stdout']!.str()}')
}
}
Response (Completed)
{
"job_id": "job_1234567890_abc",
"status": "completed",
"result": {
"success": true,
"stdout": "Hello from unsandbox!\n",
"stderr": "",
"error": null,
"language": "python",
"exit_code": 0
}
}
Possible Status Values
pending- Job queued, waiting to executerunning- Job currently executingcompleted- Job finished (check result field)timeout- Job exceeded TTL limitcancelled- Job was cancelled via DELETE
List all active (pending or running) jobs for your API key. Useful for monitoring multiple async executions.
Example (V)
import net.http
import json
fn main() {
url := 'https://api.unsandbox.com/jobs'
mut req := http.new_request(.get, url, '')!
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
jobs := json.decode([]map[string]json.Any, resp.body)!
for job in jobs {
println('${job['job_id']!.str()}: ${job['status']!.str()} (${job['language']!.str()})')
}
}
Response
{
"jobs": [
{
"job_id": "job_1234567890_abc",
"status": "running",
"language": "python",
"submitted_at": "2024-01-15T10:30:00Z"
},
{
"job_id": "job_0987654321_xyz",
"status": "pending",
"language": "go",
"submitted_at": "2024-01-15T10:29:45Z"
}
]
}
Cancel a pending or running job. If the job is already executing, it will be terminated and partial output returned.
URL Parameters
| Parameter | Type | Description |
|---|---|---|
id |
string | Job ID to cancel |
Example (V)
import net.http
import json
fn main() {
job_id := 'job_1234567890_abc'
url := 'https://api.unsandbox.com/jobs/${job_id}'
mut req := http.new_request(.delete, url, '')!
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
result := json.decode(map[string]json.Any, resp.body)!
println('Cancelled: ${result['message']!.str()}')
if 'result' in result {
partial := result['result']!.as_map()
println('Partial output: ${partial['stdout']!.str()}')
}
}
Response
{
"message": "Job cancelled",
"job_id": "job_1234567890_abc",
"result": {
"success": false,
"stdout": "Partial output before cancel...",
"stderr": "",
"error": "Job cancelled by user",
"exit_code": -1
}
}
Execute code with automatic language detection via shebang. Send raw code as the request body with Content-Type: text/plain.
Request
- Content-Type:
text/plain - Body: Raw code with shebang (e.g.,
#!/usr/bin/env python3)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
env |
string | URL-encoded JSON object with environment variables | |
network_mode |
string | "zerotrust" or "semitrusted" | |
ttl |
integer | Timeout 1-900s (default: 60) | |
return_artifact |
boolean | Return compiled binary | |
return_wasm_artifact |
boolean | Return WebAssembly binary |
Example (V)
import net.http
import json
fn main() {
url := 'https://api.unsandbox.com/run'
code := '#!/usr/bin/env python3
print("Language auto-detected!")'
mut req := http.new_request(.post, url, code)!
req.add_header(.content_type, 'text/plain')
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
result := json.decode(map[string]json.Any, resp.body)!
println('Detected: ${result['detected_language']!.str()}')
println('Output: ${result['stdout']!.str()}')
}
Response
{
"success": true,
"stdout": "Language auto-detected!\n",
"stderr": "",
"error": null,
"detected_language": "python",
"exit_code": 0
}
Submit code with automatic language detection and receive a job ID. Combines the convenience of /run with the flexibility of async execution.
Request
- Content-Type:
text/plain - Body: Raw code with shebang (e.g.,
#!/usr/bin/env ruby)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
env |
string | URL-encoded JSON object with environment variables | |
network_mode |
string | "zerotrust" or "semitrusted" | |
ttl |
integer | Timeout 1-900s (default: 60) | |
return_artifact |
boolean | Return compiled binary | |
return_wasm_artifact |
boolean | Return WebAssembly binary |
Example (V)
import net.http
import json
import time
fn main() {
url := 'https://api.unsandbox.com/run/async'
code := '#!/usr/bin/env ruby
puts "Running async with auto-detect!"'
// Submit job
mut req := http.new_request(.post, url, code)!
req.add_header(.content_type, 'text/plain')
req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
resp := req.do()!
job := json.decode(map[string]json.Any, resp.body)!
job_id := job['job_id']!.str()
println('Job submitted: ${job_id}')
// Poll for results
status_url := 'https://api.unsandbox.com/jobs/${job_id}'
for {
mut status_req := http.new_request(.get, status_url, '')!
status_req.add_header(.authorization, 'Bearer os.getenv('UNSANDBOX_API_KEY') or { 'unsb-sk-test0-vault-unlck-12345' }')
status_resp := status_req.do()!
status := json.decode(map[string]json.Any, status_resp.body)!
state := status['status']!.str()
if state == 'completed' {
result := status['result']!.as_map()
println('Detected: ${result['detected_language']!.str()}')
if result['success']!.bool() {
println('Output: ${result['stdout']!.str()}')
}
break
} else if state == 'timeout' || state == 'cancelled' {
println('Job ${state}')
break
}
time.sleep(1 * time.second)
}
}
Initial Response
{
"job_id": "job_1234567890_abc",
"status": "pending"
}
Job Result (via GET /jobs/{id})
{
"job_id": "job_1234567890_abc",
"status": "completed",
"result": {
"success": true,
"stdout": "Running async with auto-detect!\n",
"stderr": "",
"error": null,
"detected_language": "ruby",
"exit_code": 0
}
}