unsandbox.com
Anonymous remote code, compile, & execution API for humans & machine learning agents.
Docs 📚 View Pricing →The D examples below require the following 3rd party libraries:
requests
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 (D)
import requests;
import std.stdio;
import std.json;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto rq = Request();
rq.addHeaders([
"Content-Type": "application/json",
"Authorization": "Bearer " ~ getAPIKey()
]);
auto payload = JSONValue([
"language": JSONValue("d"),
"code": JSONValue(`import std.stdio; void main() { writeln("Hello from unsandbox!"); }`)
]);
auto response = rq.post("https://api.unsandbox.com/execute", payload.toString());
auto result = parseJSON(response.responseBody.data);
if (result["success"].boolean) {
writeln("Output: ", result["stdout"].str);
} else {
writeln("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 (D)
import requests;
import std.stdio;
import std.json;
import core.thread;
import core.time;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto rq = Request();
rq.addHeaders([
"Content-Type": "application/json",
"Authorization": "Bearer " ~ getAPIKey()
]);
// Submit job
auto payload = JSONValue([
"language": JSONValue("rust"),
"code": JSONValue(`fn main() { println!("Computing..."); }`),
"ttl": JSONValue(300)
]);
auto response = rq.post("https://api.unsandbox.com/execute/async", payload.toString());
auto job = parseJSON(response.responseBody.data);
auto jobId = job["job_id"].str;
writeln("Job submitted: ", jobId);
// Poll for results
auto statusUrl = "https://api.unsandbox.com/jobs/" ~ jobId;
while (true) {
auto statusRq = Request();
statusRq.addHeaders(["Authorization": "Bearer " ~ getAPIKey()]);
auto statusResponse = statusRq.get(statusUrl);
auto status = parseJSON(statusResponse.responseBody.data);
if (status["status"].str == "completed") {
auto result = status["result"];
if (result["success"].boolean) {
writeln("Output: ", result["stdout"].str);
} else {
writeln("Error: ", result["stderr"].str);
}
break;
} else if (status["status"].str == "timeout" || status["status"].str == "cancelled") {
writeln("Job ", status["status"].str);
}
Thread.sleep(dur!"seconds"(1));
}
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 (D)
import requests;
import std.stdio;
import std.json;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto jobId = "job_1234567890_abc";
auto url = "https://api.unsandbox.com/jobs/" ~ jobId;
auto rq = Request();
rq.addHeaders(["Authorization": "Bearer " ~ getAPIKey()]);
auto response = rq.get(url);
auto job = parseJSON(response.responseBody.data);
writeln("Status: ", job["status"].str);
if (job["status"].str == "completed") {
writeln("Success: ", job["success"].boolean);
writeln("Output: ", job["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 (D)
import requests;
import std.stdio;
import std.json;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto rq = Request();
rq.addHeaders(["Authorization": "Bearer " ~ getAPIKey()]);
auto response = rq.get("https://api.unsandbox.com/jobs");
auto jobs = parseJSON(response.responseBody.data);
foreach (job; jobs.array) {
writefln("%s: %s (%s)",
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 (D)
import requests;
import std.stdio;
import std.json;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto jobId = "job_1234567890_abc";
auto url = "https://api.unsandbox.com/jobs/" ~ jobId;
auto rq = Request();
rq.addHeaders(["Authorization": "Bearer " ~ getAPIKey()]);
auto response = rq.exec!"DELETE"(url);
auto result = parseJSON(response.responseBody.data);
writeln("Cancelled: ", result["message"].str);
if ("result" in result) {
writeln("Partial output: ", result["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 (D)
import requests;
import std.stdio;
import std.json;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto rq = Request();
rq.addHeaders([
"Content-Type": "text/plain",
"Authorization": "Bearer " ~ getAPIKey()
]);
auto code = `#!/usr/bin/env python3
print("Language auto-detected!")`;
auto response = rq.post("https://api.unsandbox.com/run", code);
auto result = parseJSON(response.responseBody.data);
writeln("Detected: ", result["detected_language"].str);
writeln("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 (D)
import requests;
import std.stdio;
import std.json;
import core.thread;
import core.time;
import std.process;
auto getAPIKey() {
auto key = environment.get("UNSANDBOX_API_KEY");
return key.length > 0 ? key : "unsb-sk-test0-vault-unlck-12345";
}
void main()
{
auto rq = Request();
rq.addHeaders([
"Content-Type": "text/plain",
"Authorization": "Bearer " ~ getAPIKey()
]);
auto code = `#!/usr/bin/env ruby
puts "Running async with auto-detect!"`;
// Submit job
auto response = rq.post("https://api.unsandbox.com/run/async", code);
auto job = parseJSON(response.responseBody.data);
auto jobId = job["job_id"].str;
writeln("Job submitted: ", jobId);
// Poll for results
auto statusUrl = "https://api.unsandbox.com/jobs/" ~ jobId;
while (true) {
auto statusRq = Request();
statusRq.addHeaders(["Authorization": "Bearer " ~ getAPIKey()]);
auto statusResponse = statusRq.get(statusUrl);
auto status = parseJSON(statusResponse.responseBody.data);
if (status["status"].str == "completed") {
auto result = status["result"];
writeln("Detected: ", result["detected_language"].str);
if (result["success"].boolean) {
writeln("Output: ", result["stdout"].str);
}
break;
} else if (status["status"].str == "timeout" || status["status"].str == "cancelled") {
writeln("Job ", status["status"].str);
}
Thread.sleep(dur!"seconds"(1));
}
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
}
}