Create and manage isolated execution environments with full lifecycle, file system, snapshot, and checkpoint support.
https://catalyst-usw.agentuity.cloudAuthentication
Most requests require a Bearer token. Pass your SDK key in the Authorization header. Public endpoints (such as listing and fetching public snapshots) are noted below and do not require authentication.
| Header | Value |
|---|---|
Authorization | Bearer YOUR_SDK_KEY |
You can find your SDK key in the Agentuity Console under your project settings.
Sandbox Management
Create Sandbox
Create a new sandbox execution environment.
/sandboxhttps://catalyst-usw.agentuity.cloud/sandboxParameters
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Sandbox creation payload.
| Field | Type | Description |
|---|---|---|
projectId | string | Project ID to associate the sandbox with (optional) |
runtime | string | Runtime name (e.g., "bun:1", "python:3.14") (optional) |
runtimeId | string | Runtime ID (e.g., "srt_xxx") (optional) |
name | string | Optional sandbox name (optional) |
description | string | Optional sandbox description (optional) |
resources | object | Resource constraints for the sandbox (optional) |
resources.memory | string | Memory limit (e.g., "512Mi", "1Gi") (optional) |
resources.cpu | string | CPU limit (e.g., "0.5", "1") (optional) |
resources.disk | string | Disk size limit (e.g., "1Gi", "10Gi") (optional) |
env | object | Environment variables to set in the sandbox (optional) |
network | object | Network configuration for the sandbox (optional) |
network.enabled | boolean | Whether network access is enabled (optional) |
network.port | number | Port to expose from the sandbox (1024-65535) (optional) |
stream | object | Stream configuration for I/O redirection (optional) |
stream.stdout | string | Stream ID for stdout output (optional) |
stream.stderr | string | Stream ID for stderr output (optional) |
stream.stdin | string | Stream ID for stdin input (optional) |
stream.timestamps | boolean | Whether to include timestamps in output (optional) |
timeout | object | Timeout settings for the sandbox (optional) |
timeout.idle | string | Idle timeout duration (e.g., "5m", "1h") (optional) |
timeout.execution | string | Maximum execution time (e.g., "30m", "2h") (optional) |
command | object | Initial command to run in the sandbox (optional) |
command.exec | string[] | Command and arguments to execute |
command.files | object[] | Files to write before execution (deprecated: use top-level files) (optional) |
command.files[].path | string | Path to the file relative to the sandbox workspace |
command.files[].content | string | Base64-encoded file content |
command.mode | string | Execution mode: oneshot runs once, interactive keeps running (optional) |
files | object[] | Files to write to sandbox on creation (optional) |
files[].path | string | Path to the file relative to the sandbox workspace |
files[].content | string | Base64-encoded file content |
snapshot | string | Snapshot ID to restore the sandbox from (optional) |
dependencies | string[] | Apt packages to install when creating the sandbox (optional) |
packages | string[] | npm/bun packages to install globally when creating the sandbox (optional) |
metadata | object | Optional user-defined metadata to associate with the sandbox (optional) |
Response
Returns the sandbox ID, status, and optional stream URLs for stdout/stderr.
| Status | Description |
|---|---|
| 201 | Sandbox created |
| 401 | Unauthorized — invalid or missing API key |
Response Fields
| Field | Type | Description |
|---|---|---|
sandboxId | string | Unique identifier for the created sandbox |
status | string | Current status of the sandbox |
stdoutStreamId | string | Stream ID for reading stdout (optional) |
stdoutStreamUrl | string | URL for streaming stdout output (optional) |
stderrStreamId | string | Stream ID for reading stderr (optional) |
stderrStreamUrl | string | URL for streaming stderr output (optional) |
auditStreamId | string | Stream ID for reading audit events (optional) |
auditStreamUrl | string | URL for streaming audit events (optional) |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "dev-sandbox",
"runtime": "node-20",
"resources": {
"memory": 512
},
"env": {
"NODE_ENV": "development"
}
}'List Sandboxes
List sandboxes with optional filtering and pagination.
/sandboxhttps://catalyst-usw.agentuity.cloud/sandboxParameters
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
name | string | No | Filter by name |
mode | string | No | Filter by mode |
projectId | string | No | Filter by project |
status | string | No | Filter by status |
live | boolean | No | Only running sandboxes |
limit | number | No | Maximum results to return |
offset | number | No | Pagination offset |
sort | string | No | Field to sort by |
direction | string | No | Sort direction |
deletedOnly | boolean | No | Only deleted sandboxes |
Response
Returns paginated list of sandboxes.
| Status | Description |
|---|---|
| 200 | Sandboxes returned |
| 401 | Unauthorized — invalid or missing API key |
Response Fields
| Field | Type | Description |
|---|---|---|
sandboxes | object[] | Array of sandbox information |
sandboxes[].sandboxId | string | Unique sandbox identifier |
sandboxes[].identifier | string | Short identifier used for DNS hostname (optional) |
sandboxes[].name | string | Sandbox name (optional) |
sandboxes[].description | string | Sandbox description (optional) |
sandboxes[].status | string | Current status |
sandboxes[].mode | string | Sandbox mode (interactive or oneshot) (optional) |
sandboxes[].createdAt | string | Creation timestamp (ISO 8601) |
sandboxes[].region | string | Region where the sandbox is running (optional) |
sandboxes[].runtime | object | Runtime information (optional) |
sandboxes[].runtime.id | string | Unique runtime identifier |
sandboxes[].runtime.name | string | Runtime name (e.g., "bun:1", "python:3.14") |
sandboxes[].runtime.iconUrl | string | URL for runtime icon (optional) |
sandboxes[].runtime.brandColor | string | Brand color for the runtime (hex color code) (optional) |
sandboxes[].runtime.tags | string[] | Optional tags for categorization (optional) |
sandboxes[].snapshot | object | Snapshot information (optional) |
sandboxes[].executions | number | Number of executions run in this sandbox |
sandboxes[].exitCode | number | Exit code from the last execution (only available for terminated/failed sandboxes) (optional) |
sandboxes[].stdoutStreamUrl | string | URL to the stdout output stream (optional) |
sandboxes[].stderrStreamUrl | string | URL to the stderr output stream (optional) |
sandboxes[].auditStreamId | string | ID of the audit event stream (eBPF/Tetragon security events) (optional) |
sandboxes[].auditStreamUrl | string | URL to the audit event stream (eBPF/Tetragon security events) (optional) |
sandboxes[].dependencies | string[] | Apt packages installed in the sandbox (optional) |
sandboxes[].packages | string[] | npm/bun packages installed globally in the sandbox (optional) |
sandboxes[].metadata | object | User-defined metadata associated with the sandbox (optional) |
sandboxes[].resources | object | Resource limits for this sandbox (optional) |
sandboxes[].resources.memory | string | Memory limit (e.g., "500Mi", "1Gi") (optional) |
sandboxes[].resources.cpu | string | CPU limit in millicores (e.g., "500m", "1000m") (optional) |
sandboxes[].resources.disk | string | Disk limit (e.g., "500Mi", "1Gi") (optional) |
sandboxes[].cpuTimeMs | number | Total CPU time consumed in milliseconds (available when terminated) (optional) |
sandboxes[].memoryByteSec | number | Total memory usage in byte-seconds (available when terminated) (optional) |
sandboxes[].networkEgressBytes | number | Total network egress in bytes (available when terminated) (optional) |
sandboxes[].networkEnabled | boolean | Whether network access is enabled for this sandbox (optional) |
sandboxes[].networkPort | number | Network port exposed from the sandbox (1024-65535) (optional) |
sandboxes[].url | string | Public URL for the sandbox (only set if networkPort is configured) (optional) |
sandboxes[].user | object | User who created the sandbox (if available) (optional) |
sandboxes[].user.id | string | User ID |
sandboxes[].user.firstName | string | User's first name (optional) |
sandboxes[].user.lastName | string | User's last name (optional) |
sandboxes[].agent | object | Agent associated with the sandbox (if available) (optional) |
sandboxes[].agent.id | string | Agent ID |
sandboxes[].agent.name | string | Agent name |
sandboxes[].project | object | Project associated with the sandbox (if available) (optional) |
sandboxes[].project.id | string | Project ID |
sandboxes[].project.name | string | Project name |
sandboxes[].org | object | Organization associated with the sandbox |
sandboxes[].org.id | string | Organization ID |
sandboxes[].org.name | string | Organization name |
sandboxes[].timeout | object | Timeout configuration for this sandbox (optional) |
sandboxes[].timeout.idle | string | Idle timeout duration (e.g., "10m0s") (optional) |
sandboxes[].timeout.execution | string | Execution timeout duration (e.g., "5m0s") (optional) |
sandboxes[].command | object | Startup command configured for this sandbox (optional) |
sandboxes[].command.exec | string[] | Command and arguments |
sandboxes[].command.mode | string | Execution mode (optional) |
total | number | Total count of sandboxes matching the filter |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Get Sandbox
Retrieve a specific sandbox by ID.
/sandbox/{sandboxId}https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
includeDeleted | boolean | No | Include deleted sandboxes |
Response
Returns full sandbox details including resources, runtime, network, timeout, and usage metrics.
| Status | Description |
|---|---|
| 200 | Sandbox returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Destroy Sandbox
Destroy a sandbox and release all resources.
/sandbox/{sandboxId}https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Destroys the sandbox and releases all resources.
| Status | Description |
|---|---|
| 200 | Sandbox destroyed |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X DELETE 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Get Sandbox Status
Lightweight status check backed by Redis (~1ms). Optimized for polling.
/sandbox/status/{sandboxId}https://catalyst-usw.agentuity.cloud/sandbox/status/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Returns the sandbox status.
| Status | Description |
|---|---|
| 200 | Status returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Response Fields
| Field | Type | Description |
|---|---|---|
sandboxId | string | Unique identifier for the sandbox. |
status | string | Current status of the sandbox. |
exitCode | number | Exit code from the last execution, if terminated. |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/status/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Pause Sandbox
Pause a running sandbox and create a checkpoint.
/sandbox/{sandboxId}/pausehttps://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/pauseParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Pauses the sandbox and creates a checkpoint.
| Status | Description |
|---|---|
| 200 | Sandbox paused |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/pause' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Resume Sandbox
Resume a paused sandbox from its checkpoint.
/sandbox/{sandboxId}/resumehttps://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/resumeParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Resumes a paused sandbox from its checkpoint.
| Status | Description |
|---|---|
| 200 | Sandbox resumed |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/resume' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Update Environment
Update environment variables for a sandbox. Set a value to null to delete a variable.
/sandbox/env/{sandboxId}https://catalyst-usw.agentuity.cloud/sandbox/env/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Environment variable updates.
| Field | Type | Description |
|---|---|---|
env | object | Key-value pairs. Set value to null to delete a variable. |
Response
Returns the current environment after update.
| Status | Description |
|---|---|
| 200 | Environment updated |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Response Fields
| Field | Type | Description |
|---|---|---|
env | object | Current environment after update |
Example
curl -X PATCH 'https://catalyst-usw.agentuity.cloud/sandbox/env/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"env": {
"NODE_ENV": "production",
"OLD_VAR": null
}
}'Execution
Execute Command
Execute a command in a sandbox.
/sandbox/{sandboxId}/executehttps://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/executeParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Command execution payload.
| Field | Type | Description |
|---|---|---|
command | string[] | Command and arguments to execute |
files | object[] | Files to write before execution (optional) |
files[].path | string | File path relative to workspace |
files[].content | string | Base64-encoded file content |
timeout | string | Execution timeout (e.g., "30s", "5m") (optional) |
stream | object | Stream configuration for output redirection (optional) |
stream.stdout | string | Stream ID for stdout output (optional) |
stream.stderr | string | Stream ID for stderr output (optional) |
stream.timestamps | boolean | Whether to include timestamps in output (optional) |
Response
Returns execution ID and stream URLs. Returns 409 if sandbox is busy.
| Status | Description |
|---|---|
| 200 | Command executed |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
| 409 | Conflict — sandbox is busy with another execution |
Response Fields
| Field | Type | Description |
|---|---|---|
executionId | string | Unique identifier for the execution |
status | string | Current status of the execution |
exitCode | number | Exit code of the executed command (optional) |
durationMs | number | Execution duration in milliseconds (optional) |
stdoutStreamUrl | string | URL for streaming stdout output (optional) |
stderrStreamUrl | string | URL for streaming stderr output (optional) |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/execute' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"command": [
"node",
"-e",
"console.log('\''hello'\'')"
]
}'Get Execution
Retrieve execution details. Use the wait parameter for long-polling.
/sandbox/execution/{executionId}https://catalyst-usw.agentuity.cloud/sandbox/execution/{executionId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
executionId | string | Yes | Execution ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
wait | string | No | Long-poll duration (e.g., '60s', '5m'). Server holds connection until execution completes or timeout. |
Response
Returns execution details. Use the wait parameter for long-polling.
| Status | Description |
|---|---|
| 200 | Execution returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Execution not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/execution/exec_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'List Executions
List executions for a specific sandbox.
/sandbox/sandboxes/{sandboxId}/executionshttps://catalyst-usw.agentuity.cloud/sandbox/sandboxes/{sandboxId}/executionsParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
limit | number | No | Maximum results to return |
Response
Returns list of executions for the sandbox.
| Status | Description |
|---|---|
| 200 | Executions returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/sandboxes/sbx_abc123/executions' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'File System
Write Files
Write one or more files to the sandbox filesystem.
/fs/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Files to write.
| Field | Type | Description |
|---|---|---|
files | object[] | Array of files to write |
files[].path | string | Path to the file relative to the sandbox workspace |
files[].content | string | Base64-encoded file content |
Response
Returns the number of files written.
| Status | Description |
|---|---|
| 200 | Files written |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Response Fields
| Field | Type | Description |
|---|---|---|
filesWritten | number | Number of files successfully written |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/fs/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"files": [
{
"path": "/app/index.js",
"content": "Y29uc29sZS5sb2coJ2hlbGxvJyk="
}
]
}'Read File
Read a file from the sandbox filesystem.
/fs/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
path | string | Yes | File path to read |
orgId | string | No | Organization ID |
Response
Returns the raw file contents as a stream.
| Status | Description |
|---|---|
| 200 | File contents returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox or file not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/fs/sbx_abc123?path=/home/user/file.txt' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Create Directory
Create a directory in the sandbox filesystem.
/fs/mkdir/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/mkdir/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Directory creation payload.
| Field | Type | Description |
|---|---|---|
path | string | Path to the directory to create |
recursive | boolean | Create parent directories if needed (optional) |
Response
Directory created successfully.
| Status | Description |
|---|---|
| 200 | Directory created |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/fs/mkdir/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"path": "/app/src",
"recursive": true
}'Remove Directory
Remove a directory from the sandbox filesystem.
/fs/rmdir/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/rmdir/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Directory removal payload.
| Field | Type | Description |
|---|---|---|
path | string | Path to the directory to remove |
recursive | boolean | Remove directory and all contents (optional) |
Response
Directory removed successfully.
| Status | Description |
|---|---|
| 200 | Directory removed |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/fs/rmdir/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"path": "/app/tmp",
"recursive": true
}'Remove File
Remove a file from the sandbox filesystem.
/fs/rm/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/rm/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
File removal payload.
| Field | Type | Description |
|---|---|---|
path | string | Path to the file to remove |
Response
File removed successfully.
| Status | Description |
|---|---|
| 200 | File removed |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/fs/rm/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"path": "/app/old-file.js"
}'List Files
List files in a sandbox directory.
/fs/list/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/list/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
path | string | No | Directory to list |
orgId | string | No | Organization ID |
Response
Returns list of files in the directory.
| Status | Description |
|---|---|
| 200 | Files listed |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Response Fields
| Field | Type | Description |
|---|---|---|
files | object[] | Array of file information |
files[].path | string | File path relative to the listed directory |
files[].size | number | File size in bytes |
files[].isDir | boolean | Whether the entry is a directory |
files[].mode | string | Unix permissions as octal string (e.g., "0644") |
files[].modTime | string | Modification time in RFC3339 format |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/fs/list/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Download Archive
Download a compressed archive of the sandbox filesystem.
/fs/download/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/download/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
path | string | No | Directory to archive |
format | string | No | 'zip' or 'tar.gz' |
orgId | string | No | Organization ID |
Response
Returns a streaming archive of the sandbox filesystem.
| Status | Description |
|---|---|
| 200 | Archive returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/fs/download/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Upload Archive
Upload and extract a compressed archive to the sandbox. Send raw binary with Content-Type: application/octet-stream.
/fs/upload/{sandboxId}https://catalyst-usw.agentuity.cloud/fs/upload/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
path | string | No | Target directory |
format | string | No | Archive format |
orgId | string | No | Organization ID |
Response
Uploads and extracts a compressed archive to the sandbox. Send raw binary with Content-Type: application/octet-stream.
| Status | Description |
|---|---|
| 200 | Archive uploaded and extracted |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/fs/upload/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/octet-stream' \
-d '<binary archive data>'Snapshots
Create Snapshot
Create a snapshot of the sandbox filesystem.
/sandbox/{sandboxId}/snapshothttps://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/snapshotParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Snapshot creation payload.
| Field | Type | Description |
|---|---|---|
name | string | Display name for the snapshot (letters, numbers, underscores, dashes only) (optional) |
description | string | Description of the snapshot (optional) |
tag | string | Tag for the snapshot (defaults to "latest") (optional) |
public | boolean | Make the snapshot publicly accessible (optional) |
Response
Returns the created snapshot.
| Status | Description |
|---|---|
| 201 | Snapshot created |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/snapshot' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "baseline",
"tag": "v1.0"
}'Get Snapshot
Retrieve a specific snapshot by ID.
/sandbox/snapshots/{snapshotId}https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshotId | string | Yes | Snapshot ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Returns the snapshot object.
| Status | Description |
|---|---|
| 200 | Snapshot returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Snapshot not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/snp_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'List Snapshots
List snapshots with optional filtering and pagination.
/sandbox/snapshotshttps://catalyst-usw.agentuity.cloud/sandbox/snapshotsParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | No | Filter by sandbox |
limit | number | No | Maximum results to return |
offset | number | No | Pagination offset |
sort | string | No | Field to sort by |
direction | string | No | Sort direction |
orgId | string | No | Organization ID |
Response
Returns paginated list of snapshots.
| Status | Description |
|---|---|
| 200 | Snapshots returned |
| 401 | Unauthorized — invalid or missing API key |
Response Fields
| Field | Type | Description |
|---|---|---|
snapshots | object[] | List of snapshot entries |
snapshots[].snapshotId | string | Unique identifier for the snapshot |
snapshots[].runtimeId | string | null | Runtime ID associated with this snapshot (optional) |
snapshots[].name | string | Display name for the snapshot |
snapshots[].fullName | string | Full name with org slug for public snapshots (@slug/name:tag) (optional) |
snapshots[].description | string | null | Description of the snapshot (optional) |
snapshots[].message | string | null | Build message for the snapshot (optional) |
snapshots[].tag | string | null | Tag for the snapshot (defaults to "latest") (optional) |
snapshots[].sizeBytes | number | Total size of the snapshot in bytes |
snapshots[].fileCount | number | Number of files in the snapshot |
snapshots[].parentSnapshotId | string | null | ID of the parent snapshot (for incremental snapshots) (optional) |
snapshots[].public | boolean | Whether the snapshot is publicly accessible (optional) |
snapshots[].orgName | string | Organization name (for public snapshots) (optional) |
snapshots[].orgSlug | string | Organization slug (for public snapshots) (optional) |
snapshots[].org | object | null | Organization details (for public snapshots) (optional) |
snapshots[].user | object | null | User who pushed the snapshot (for private snapshots) (optional) |
snapshots[].createdAt | string | ISO timestamp when the snapshot was created |
snapshots[].downloadUrl | string | URL to download the snapshot archive (optional) |
snapshots[].files | object[] | null | List of files in the snapshot (optional) |
snapshots[].userMetadata | object | null | User-defined metadata key-value pairs (optional) |
total | number | Total number of snapshots matching the query |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Delete Snapshot
Delete a snapshot.
/sandbox/snapshots/{snapshotId}https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshotId | string | Yes | Snapshot ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Empty response on success.
| Status | Description |
|---|---|
| 204 | Snapshot deleted |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Snapshot not found |
Example
curl -X DELETE 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/snp_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Update Snapshot Tag
Update the tag on a snapshot.
/sandbox/snapshots/{snapshotId}https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshotId | string | Yes | Snapshot ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Tag update payload.
| Field | Type | Description |
|---|---|---|
tag | string | null | New tag or null to remove tag |
Response
Returns the updated snapshot.
| Status | Description |
|---|---|
| 200 | Snapshot tag updated |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Snapshot not found |
Example
curl -X PATCH 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/snp_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"tag": "v2.0"
}'Get Snapshot Lineage
Get the ordered ancestry chain from a specified snapshot to root.
/sandbox/snapshots/lineagehttps://catalyst-usw.agentuity.cloud/sandbox/snapshots/lineageParameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshot | string | No | Snapshot ID or name:tag |
name | string | No | Snapshot name |
tag | string | No | Snapshot tag |
limit | number | No | Maximum results to return |
orgId | string | No | Organization ID |
Response
Returns ordered ancestry chain from specified snapshot to root.
| Status | Description |
|---|---|
| 200 | Lineage returned |
| 401 | Unauthorized — invalid or missing API key |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/lineage' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Get Public Snapshot
Retrieve a public snapshot by ID, full name (@slug/name:tag), or name:tag. No authentication required.
/sandbox/snapshots/public/{snapshotRef}https://catalyst-usw.agentuity.cloud/sandbox/snapshots/public/{snapshotRef}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshotRef | string | Yes | Snapshot ID, full name (@slug/name:tag), or name:tag |
Response
Returns public snapshot details. No authentication required.
| Status | Description |
|---|---|
| 200 | Public snapshot returned |
| 404 | Snapshot not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/public/snp_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'List Public Snapshots
List publicly available snapshots.
/sandbox/snapshots/publichttps://catalyst-usw.agentuity.cloud/sandbox/snapshots/publicParameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Max 100 |
offset | number | No | Pagination offset |
Response
Returns paginated list of public snapshots.
| Status | Description |
|---|---|
| 200 | Public snapshots returned |
Response Fields
| Field | Type | Description |
|---|---|---|
snapshots | object[] | List of snapshot entries |
snapshots[].snapshotId | string | Unique identifier for the snapshot |
snapshots[].runtimeId | string | null | Runtime ID associated with this snapshot |
snapshots[].name | string | Display name for the snapshot |
snapshots[].fullName | string | Full name with org slug for public snapshots (@slug/name:tag) |
snapshots[].description | string | null | Description of the snapshot |
snapshots[].message | string | null | Build message for the snapshot |
snapshots[].tag | string | null | Tag for the snapshot (defaults to "latest") |
snapshots[].sizeBytes | number | Total size of the snapshot in bytes |
snapshots[].fileCount | number | Number of files in the snapshot |
snapshots[].parentSnapshotId | string | null | ID of the parent snapshot (for incremental snapshots) |
snapshots[].public | boolean | Whether the snapshot is publicly accessible |
snapshots[].orgName | string | Organization name (for public snapshots) |
snapshots[].orgSlug | string | Organization slug (for public snapshots) |
snapshots[].org | object | null | Organization details (for public snapshots) |
snapshots[].user | object | null | User who pushed the snapshot (for private snapshots) |
snapshots[].createdAt | string | ISO timestamp when the snapshot was created |
snapshots[].downloadUrl | string | URL to download the snapshot archive |
snapshots[].files | object[] | null | List of files in the snapshot |
snapshots[].userMetadata | object | null | User-defined metadata key-value pairs |
total | number | Total number of snapshots matching the query |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/public' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Initialize Snapshot Build
Initialize a snapshot build. Returns a presigned upload URL for the snapshot archive.
/sandbox/snapshots/buildhttps://catalyst-usw.agentuity.cloud/sandbox/snapshots/buildParameters
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Snapshot build initialization payload.
| Field | Type | Description |
|---|---|---|
runtime | string | Runtime identifier (name:tag or runtime ID) |
name | string | Display name for the snapshot (optional) |
tag | string | Tag for the snapshot (optional) |
description | string | Description of the snapshot (optional) |
contentHash | string | SHA-256 hash of snapshot content for change detection (optional) |
force | boolean | Force rebuild even if content is unchanged (optional) |
encrypt | boolean | Request encryption for the snapshot archive (optional) |
public | boolean | Make snapshot public (enables virus scanning, disables encryption) (optional) |
Response
Returns snapshot ID and presigned upload URL. If unchanged is true, content matches existing snapshot.
| Status | Description |
|---|---|
| 200 | Build initialized |
| 401 | Unauthorized — invalid or missing API key |
Response Fields
| Field | Type | Description |
|---|---|---|
snapshotId | string | Unique identifier for the snapshot being built |
uploadUrl | string | Pre-signed URL for uploading the snapshot archive (private snapshots only) |
publicKey | string | PEM-encoded public key for encrypting the snapshot archive |
unchanged | boolean | True if snapshot content is unchanged |
existingId | string | ID of existing unchanged snapshot |
existingName | string | Name of existing unchanged snapshot |
existingTag | string | Tag of existing unchanged snapshot |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/build' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"runtime": "node-20",
"name": "my-app",
"tag": "latest"
}'Finalize Snapshot Build
Finalize a snapshot build after uploading the archive.
/sandbox/snapshots/{snapshotId}/finalizehttps://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}/finalizeParameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshotId | string | Yes | Snapshot ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Snapshot finalization payload.
| Field | Type | Description |
|---|---|---|
sizeBytes | number | Total size of the snapshot in bytes |
fileCount | number | Number of files in the snapshot |
files | object[] | Array of file metadata |
files[].path | string | File path within the snapshot |
files[].size | number | File size in bytes |
files[].sha256 | string | SHA256 hash of the file contents |
files[].contentType | string | MIME type of the file |
files[].mode | number | Unix file mode/permissions (e.g., 0o644) |
dependencies | string[] | List of apt packages to install (optional) |
packages | string[] | List of npm/bun packages to install globally (optional) |
env | object | Environment variables to set (optional) |
metadata | object | User-defined metadata key-value pairs (optional) |
Response
Returns the finalized snapshot.
| Status | Description |
|---|---|
| 200 | Snapshot finalized |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Snapshot not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/snp_abc123/finalize' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"sizeBytes": 1048576,
"fileCount": 42,
"files": [
{
"path": "/app/index.js",
"size": 1024
}
]
}'Upload Public Snapshot
Upload a gzip archive for public snapshots. Content-Type must be application/gzip. Includes virus scanning.
/sandbox/snapshots/{snapshotId}/uploadhttps://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}/uploadParameters
| Name | Type | Required | Description |
|---|---|---|---|
snapshotId | string | Yes | Snapshot ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Uploads a gzip archive for public snapshots. Content-Type must be application/gzip. Includes virus scanning.
| Status | Description |
|---|---|
| 200 | Snapshot uploaded |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Snapshot not found |
Example
curl -X PUT 'https://catalyst-usw.agentuity.cloud/sandbox/snapshots/snp_abc123/upload' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/gzip' \
-d '<binary gzip data>'Disk Checkpoints
Create Checkpoint
Create a named checkpoint of the sandbox filesystem.
/sandbox/{sandboxId}/checkpointhttps://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/checkpointParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Request Body
Checkpoint creation payload.
| Field | Type | Description |
|---|---|---|
name | string | Name to assign to the new checkpoint |
Response
Returns the created checkpoint.
| Status | Description |
|---|---|
| 201 | Checkpoint created |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Globally unique checkpoint ID (ckpt_xxx) |
name | string | User-provided checkpoint name |
createdAt | string | ISO timestamp of creation |
parent | string | Parent checkpoint name (empty for base) |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/checkpoint' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "before-migration"
}'List Checkpoints
List checkpoints for a specific sandbox.
/sandbox/checkpoints/{sandboxId}https://catalyst-usw.agentuity.cloud/sandbox/checkpoints/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Returns list of checkpoints for the sandbox.
| Status | Description |
|---|---|
| 200 | Checkpoints returned |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/checkpoints/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Restore Checkpoint
Restore the sandbox filesystem to a checkpoint state.
/sandbox/{sandboxId}/checkpoint/{checkpointId}/restorehttps://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/checkpoint/{checkpointId}/restoreParameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
checkpointId | string | Yes | Checkpoint ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Restores the sandbox filesystem to the checkpoint state.
| Status | Description |
|---|---|
| 200 | Checkpoint restored |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox or checkpoint not found |
Example
curl -X POST 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/checkpoint/ckpt_def456/restore' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Delete Checkpoint
Delete a checkpoint.
/sandbox/{sandboxId}/checkpoint/{checkpointId}https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/checkpoint/{checkpointId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
checkpointId | string | Yes | Checkpoint ID |
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
Response
Empty response on success.
| Status | Description |
|---|---|
| 204 | Checkpoint deleted |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox or checkpoint not found |
Example
curl -X DELETE 'https://catalyst-usw.agentuity.cloud/sandbox/sbx_abc123/checkpoint/ckpt_def456' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Runtimes
List Runtimes
List available sandbox runtimes with their requirements.
/sandbox/runtimeshttps://catalyst-usw.agentuity.cloud/sandbox/runtimesParameters
| Name | Type | Required | Description |
|---|---|---|---|
orgId | string | No | Organization ID |
limit | number | No | Maximum results to return |
offset | number | No | Pagination offset |
sort | string | No | Field to sort by |
direction | string | No | Sort direction |
Response
Returns available sandbox runtimes with their requirements.
| Status | Description |
|---|---|
| 200 | Runtimes returned |
| 401 | Unauthorized — invalid or missing API key |
Response Fields
| Field | Type | Description |
|---|---|---|
runtimes | object[] | Array of runtime information |
runtimes[].id | string | Unique runtime identifier |
runtimes[].name | string | Runtime name (e.g., "bun:1", "python:3.14") |
runtimes[].description | string | Optional description (optional) |
runtimes[].iconUrl | string | URL for runtime icon (optional) |
runtimes[].brandColor | string | Brand color for the runtime (hex color code) (optional) |
runtimes[].url | string | URL for runtime documentation or homepage (optional) |
runtimes[].tags | string[] | Optional tags for categorization (optional) |
runtimes[].requirements | object | Runtime requirements (memory, cpu, disk, network) (optional) |
runtimes[].requirements.memory | string | Memory requirement (e.g., "1Gi") (optional) |
runtimes[].requirements.cpu | string | CPU requirement (e.g., "1") (optional) |
runtimes[].requirements.disk | string | Disk requirement (e.g., "500Mi") (optional) |
runtimes[].requirements.networkEnabled | boolean | Whether network access is enabled |
runtimes[].readme | string | Readme content in markdown format (optional) |
total | number | Total count of runtimes |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/runtimes' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'CLI Endpoints
List Sandboxes (Cross-Org)
List sandboxes across all organizations the user belongs to.
/cli/sandboxhttps://catalyst-usw.agentuity.cloud/cli/sandboxParameters
| Name | Type | Required | Description |
|---|---|---|---|
name | string | No | Filter by name |
mode | string | No | 'oneshot' or 'interactive' |
projectId | string | No | Filter by project |
orgId | string | No | Filter by organization |
status | string | No | Filter by status |
limit | number | No | Max 100 |
offset | number | No | Pagination offset |
sort | string | No | Field to sort by |
direction | string | No | Sort direction |
Response
Lists sandboxes across all organizations the user belongs to.
| Status | Description |
|---|---|
| 200 | Sandboxes returned |
| 401 | Unauthorized — invalid or missing API key |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/cli/sandbox' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'Resolve Sandbox
Resolve a sandbox ID to its org, region, and project. Used for cross-org sandbox lookup.
/cli/sandbox/{sandboxId}https://catalyst-usw.agentuity.cloud/cli/sandbox/{sandboxId}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
sandboxId | string | Yes | Sandbox ID |
Response
Resolves a sandbox ID to its org, region, and project. Used for cross-org sandbox lookup.
| Status | Description |
|---|---|
| 200 | Sandbox resolved |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Sandbox not found |
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the sandbox. |
name | string | null | Sandbox name, or null if unnamed. |
region | string | Cloud region where the sandbox is running. |
status | string | Current status of the sandbox. |
orgId | string | Organization ID that owns the sandbox. |
projectId | string | null | Project ID the sandbox belongs to, or null if unassigned. |
Example
curl -X GET 'https://catalyst-usw.agentuity.cloud/cli/sandbox/sbx_abc123' \
-H 'Authorization: Bearer $AGENTUITY_SDK_KEY'