unsandbox.com
Anonymous remote code, compile, & execution API for humans & machine learning agents.
Docs 📚 View Pricing →The JavaScript examples below require the following 3rd party libraries:
axios
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 (JavaScript)
const https = require("https");
const payload = JSON.stringify({
language: "python",
code: "print('Hello from unsandbox!')",
});
const options = {
hostname: "api.unsandbox.com",
port: 443,
path: "/execute",
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
"Content-Length": payload.length,
},
};
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
const result = JSON.parse(data);
if (result.success) {
console.log("Output:", result.stdout);
} else {
console.log("Error:", result.stderr);
}
});
});
req.on("error", (error) => console.error("Request failed:", error));
req.write(payload);
req.end();
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 (JavaScript)
const https = require("https");
function makeRequest(options, postData = null) {
return new Promise((resolve, reject) => {
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => resolve(JSON.parse(data)));
});
req.on("error", reject);
if (postData) req.write(postData);
req.end();
});
}
async function main() {
const payload = JSON.stringify({
language: "rust",
code: 'fn main() { println!("Computing..."); }',
ttl: 300,
});
// Submit job
const submitOptions = {
hostname: "api.unsandbox.com",
port: 443,
path: "/execute/async",
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
"Content-Length": payload.length,
},
};
const submitResponse = await makeRequest(submitOptions, payload);
const jobId = submitResponse.job_id;
console.log(`Job submitted: ${jobId}`);
// Poll for results
const statusOptions = {
hostname: "api.unsandbox.com",
port: 443,
path: `/jobs/${jobId}`,
method: "GET",
headers: {
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
},
};
while (true) {
const status = await makeRequest(statusOptions);
if (status.status === "completed") {
if (status.success) {
console.log("Output:", status.stdout);
} else {
console.log("Error:", status.stderr);
}
break;
} else if (["timeout", "cancelled"].includes(status.status)) {
console.log(`Job ${status.status}`);
break;
}
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
main().catch((error) => console.error("Request failed:", error));
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 (JavaScript)
const https = require("https");
const jobId = "job_1234567890_abc";
const options = {
hostname: "api.unsandbox.com",
port: 443,
path: `/jobs/${jobId}`,
method: "GET",
headers: {
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
},
};
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
const job = JSON.parse(data);
console.log(`Status: ${job.status}`);
if (job.status === "completed") {
console.log(`Exit Code: ${job.result.exit_code}`);
console.log(`Output: ${job.stdout}`);
}
});
});
req.on("error", (error) => console.error("Request failed:", error));
req.end();
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 (JavaScript)
const https = require("https");
const options = {
hostname: "api.unsandbox.com",
port: 443,
path: "/jobs",
method: "GET",
headers: {
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
},
};
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
const jobs = JSON.parse(data);
jobs.forEach((job) => {
console.log(`${job.job_id}: ${job.status} (${job.language})`);
});
});
});
req.on("error", (error) => console.error("Request failed:", error));
req.end();
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 (JavaScript)
const https = require("https");
const jobId = "job_1234567890_abc";
const options = {
hostname: "api.unsandbox.com",
port: 443,
path: `/jobs/${jobId}`,
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
},
};
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
const result = JSON.parse(data);
console.log(`Cancelled: ${result.message}`);
if (result.stdout) {
console.log(`Partial output: ${result.stdout}`);
}
});
});
req.on("error", (error) => console.error("Request failed:", error));
req.end();
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 (JavaScript)
const https = require("https");
const code = `#!/usr/bin/env python3
print("Language auto-detected!")`;
const options = {
hostname: "api.unsandbox.com",
port: 443,
path: "/run",
method: "POST",
headers: {
"Content-Type": "text/plain",
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
"Content-Length": code.length,
},
};
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
const result = JSON.parse(data);
console.log(`Detected: ${result.detected_language}`);
console.log(`Output: ${result.stdout}`);
});
});
req.on("error", (error) => console.error("Request failed:", error));
req.write(code);
req.end();
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 (JavaScript)
const https = require("https");
function makeRequest(options, postData = null) {
return new Promise((resolve, reject) => {
const req = https.request(options, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => resolve(JSON.parse(data)));
});
req.on("error", reject);
if (postData) req.write(postData);
req.end();
});
}
async function main() {
const code = `#!/usr/bin/env ruby
puts "Running async with auto-detect!"`;
// Submit job
const submitOptions = {
hostname: "api.unsandbox.com",
port: 443,
path: "/run/async",
method: "POST",
headers: {
"Content-Type": "text/plain",
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
"Content-Length": code.length,
},
};
const submitResponse = await makeRequest(submitOptions, code);
const jobId = submitResponse.job_id;
console.log(`Job submitted: ${jobId}`);
// Poll for results
const statusOptions = {
hostname: "api.unsandbox.com",
port: 443,
path: `/jobs/${jobId}`,
method: "GET",
headers: {
Authorization: `Bearer ${process.env.UNSANDBOX_API_KEY || "unsb-sk-test0-vault-unlck-12345"}`,
},
};
while (true) {
const status = await makeRequest(statusOptions);
if (status.status === "completed") {
const result = status.result;
console.log(`Detected: ${result.detected_language}`);
if (result.success) {
console.log(`Output: ${result.stdout}`);
}
break;
} else if (["timeout", "cancelled"].includes(status.status)) {
console.log(`Job ${status.status}`);
break;
}
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
main().catch((error) => console.error("Request failed:", error));
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
}
}