Sandboxes API — Agentuity Documentation

Sandboxes API

Create and manage isolated execution environments with full lifecycle, file system, snapshot, and checkpoint support

Create and manage isolated execution environments with full lifecycle, file system, snapshot, and checkpoint support.

https://catalyst-usw.agentuity.cloud

Authentication

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.

HeaderValue
AuthorizationBearer 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.

POST/sandbox
https://catalyst-usw.agentuity.cloud/sandbox

Parameters

query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Sandbox creation payload.

FieldTypeDescription
projectIdstringProject ID to associate the sandbox with (optional)
runtimestringRuntime name (e.g., "bun:1", "python:3.14") (optional)
runtimeIdstringRuntime ID (e.g., "srt_xxx") (optional)
namestringOptional sandbox name (optional)
descriptionstringOptional sandbox description (optional)
resourcesobjectResource constraints for the sandbox (optional)
resources.memorystringMemory limit (e.g., "512Mi", "1Gi") (optional)
resources.cpustringCPU limit (e.g., "0.5", "1") (optional)
resources.diskstringDisk size limit (e.g., "1Gi", "10Gi") (optional)
envobjectEnvironment variables to set in the sandbox (optional)
networkobjectNetwork configuration for the sandbox (optional)
network.enabledbooleanWhether network access is enabled (optional)
network.portnumberPort to expose from the sandbox (1024-65535) (optional)
streamobjectStream configuration for I/O redirection (optional)
stream.stdoutstringStream ID for stdout output (optional)
stream.stderrstringStream ID for stderr output (optional)
stream.stdinstringStream ID for stdin input (optional)
stream.timestampsbooleanWhether to include timestamps in output (optional)
timeoutobjectTimeout settings for the sandbox (optional)
timeout.idlestringIdle timeout duration (e.g., "5m", "1h") (optional)
timeout.executionstringMaximum execution time (e.g., "30m", "2h") (optional)
commandobjectInitial command to run in the sandbox (optional)
command.execstring[]Command and arguments to execute
command.filesobject[]Files to write before execution (deprecated: use top-level files) (optional)
command.files[].pathstringPath to the file relative to the sandbox workspace
command.files[].contentstringBase64-encoded file content
command.modestringExecution mode: oneshot runs once, interactive keeps running (optional)
filesobject[]Files to write to sandbox on creation (optional)
files[].pathstringPath to the file relative to the sandbox workspace
files[].contentstringBase64-encoded file content
snapshotstringSnapshot ID to restore the sandbox from (optional)
dependenciesstring[]Apt packages to install when creating the sandbox (optional)
packagesstring[]npm/bun packages to install globally when creating the sandbox (optional)
metadataobjectOptional user-defined metadata to associate with the sandbox (optional)

Response

Returns the sandbox ID, status, and optional stream URLs for stdout/stderr.

StatusDescription
201Sandbox created
401Unauthorized — invalid or missing API key

Response Fields

FieldTypeDescription
sandboxIdstringUnique identifier for the created sandbox
statusstringCurrent status of the sandbox
stdoutStreamIdstringStream ID for reading stdout (optional)
stdoutStreamUrlstringURL for streaming stdout output (optional)
stderrStreamIdstringStream ID for reading stderr (optional)
stderrStreamUrlstringURL for streaming stderr output (optional)
auditStreamIdstringStream ID for reading audit events (optional)
auditStreamUrlstringURL 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.

GET/sandbox
https://catalyst-usw.agentuity.cloud/sandbox

Parameters

query
NameTypeRequiredDescription
orgIdstringNoOrganization ID
namestringNoFilter by name
modestringNoFilter by mode
projectIdstringNoFilter by project
statusstringNoFilter by status
livebooleanNoOnly running sandboxes
limitnumberNoMaximum results to return
offsetnumberNoPagination offset
sortstringNoField to sort by
directionstringNoSort direction
deletedOnlybooleanNoOnly deleted sandboxes

Response

Returns paginated list of sandboxes.

StatusDescription
200Sandboxes returned
401Unauthorized — invalid or missing API key

Response Fields

FieldTypeDescription
sandboxesobject[]Array of sandbox information
sandboxes[].sandboxIdstringUnique sandbox identifier
sandboxes[].identifierstringShort identifier used for DNS hostname (optional)
sandboxes[].namestringSandbox name (optional)
sandboxes[].descriptionstringSandbox description (optional)
sandboxes[].statusstringCurrent status
sandboxes[].modestringSandbox mode (interactive or oneshot) (optional)
sandboxes[].createdAtstringCreation timestamp (ISO 8601)
sandboxes[].regionstringRegion where the sandbox is running (optional)
sandboxes[].runtimeobjectRuntime information (optional)
sandboxes[].runtime.idstringUnique runtime identifier
sandboxes[].runtime.namestringRuntime name (e.g., "bun:1", "python:3.14")
sandboxes[].runtime.iconUrlstringURL for runtime icon (optional)
sandboxes[].runtime.brandColorstringBrand color for the runtime (hex color code) (optional)
sandboxes[].runtime.tagsstring[]Optional tags for categorization (optional)
sandboxes[].snapshotobjectSnapshot information (optional)
sandboxes[].executionsnumberNumber of executions run in this sandbox
sandboxes[].exitCodenumberExit code from the last execution (only available for terminated/failed sandboxes) (optional)
sandboxes[].stdoutStreamUrlstringURL to the stdout output stream (optional)
sandboxes[].stderrStreamUrlstringURL to the stderr output stream (optional)
sandboxes[].auditStreamIdstringID of the audit event stream (eBPF/Tetragon security events) (optional)
sandboxes[].auditStreamUrlstringURL to the audit event stream (eBPF/Tetragon security events) (optional)
sandboxes[].dependenciesstring[]Apt packages installed in the sandbox (optional)
sandboxes[].packagesstring[]npm/bun packages installed globally in the sandbox (optional)
sandboxes[].metadataobjectUser-defined metadata associated with the sandbox (optional)
sandboxes[].resourcesobjectResource limits for this sandbox (optional)
sandboxes[].resources.memorystringMemory limit (e.g., "500Mi", "1Gi") (optional)
sandboxes[].resources.cpustringCPU limit in millicores (e.g., "500m", "1000m") (optional)
sandboxes[].resources.diskstringDisk limit (e.g., "500Mi", "1Gi") (optional)
sandboxes[].cpuTimeMsnumberTotal CPU time consumed in milliseconds (available when terminated) (optional)
sandboxes[].memoryByteSecnumberTotal memory usage in byte-seconds (available when terminated) (optional)
sandboxes[].networkEgressBytesnumberTotal network egress in bytes (available when terminated) (optional)
sandboxes[].networkEnabledbooleanWhether network access is enabled for this sandbox (optional)
sandboxes[].networkPortnumberNetwork port exposed from the sandbox (1024-65535) (optional)
sandboxes[].urlstringPublic URL for the sandbox (only set if networkPort is configured) (optional)
sandboxes[].userobjectUser who created the sandbox (if available) (optional)
sandboxes[].user.idstringUser ID
sandboxes[].user.firstNamestringUser's first name (optional)
sandboxes[].user.lastNamestringUser's last name (optional)
sandboxes[].agentobjectAgent associated with the sandbox (if available) (optional)
sandboxes[].agent.idstringAgent ID
sandboxes[].agent.namestringAgent name
sandboxes[].projectobjectProject associated with the sandbox (if available) (optional)
sandboxes[].project.idstringProject ID
sandboxes[].project.namestringProject name
sandboxes[].orgobjectOrganization associated with the sandbox
sandboxes[].org.idstringOrganization ID
sandboxes[].org.namestringOrganization name
sandboxes[].timeoutobjectTimeout configuration for this sandbox (optional)
sandboxes[].timeout.idlestringIdle timeout duration (e.g., "10m0s") (optional)
sandboxes[].timeout.executionstringExecution timeout duration (e.g., "5m0s") (optional)
sandboxes[].commandobjectStartup command configured for this sandbox (optional)
sandboxes[].command.execstring[]Command and arguments
sandboxes[].command.modestringExecution mode (optional)
totalnumberTotal 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.

GET/sandbox/{sandboxId}
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID
includeDeletedbooleanNoInclude deleted sandboxes

Response

Returns full sandbox details including resources, runtime, network, timeout, and usage metrics.

StatusDescription
200Sandbox returned
401Unauthorized — invalid or missing API key
404Sandbox 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.

DELETE/sandbox/{sandboxId}
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Destroys the sandbox and releases all resources.

StatusDescription
200Sandbox destroyed
401Unauthorized — invalid or missing API key
404Sandbox 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.

GET/sandbox/status/{sandboxId}
https://catalyst-usw.agentuity.cloud/sandbox/status/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Returns the sandbox status.

StatusDescription
200Status returned
401Unauthorized — invalid or missing API key
404Sandbox not found

Response Fields

FieldTypeDescription
sandboxIdstringUnique identifier for the sandbox.
statusstringCurrent status of the sandbox.
exitCodenumberExit 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.

POST/sandbox/{sandboxId}/pause
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/pause

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Pauses the sandbox and creates a checkpoint.

StatusDescription
200Sandbox paused
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/sandbox/{sandboxId}/resume
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/resume

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Resumes a paused sandbox from its checkpoint.

StatusDescription
200Sandbox resumed
401Unauthorized — invalid or missing API key
404Sandbox 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.

PATCH/sandbox/env/{sandboxId}
https://catalyst-usw.agentuity.cloud/sandbox/env/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Environment variable updates.

FieldTypeDescription
envobjectKey-value pairs. Set value to null to delete a variable.

Response

Returns the current environment after update.

StatusDescription
200Environment updated
401Unauthorized — invalid or missing API key
404Sandbox not found

Response Fields

FieldTypeDescription
envobjectCurrent 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.

POST/sandbox/{sandboxId}/execute
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/execute

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Command execution payload.

FieldTypeDescription
commandstring[]Command and arguments to execute
filesobject[]Files to write before execution (optional)
files[].pathstringFile path relative to workspace
files[].contentstringBase64-encoded file content
timeoutstringExecution timeout (e.g., "30s", "5m") (optional)
streamobjectStream configuration for output redirection (optional)
stream.stdoutstringStream ID for stdout output (optional)
stream.stderrstringStream ID for stderr output (optional)
stream.timestampsbooleanWhether to include timestamps in output (optional)

Response

Returns execution ID and stream URLs. Returns 409 if sandbox is busy.

StatusDescription
200Command executed
401Unauthorized — invalid or missing API key
404Sandbox not found
409Conflict — sandbox is busy with another execution

Response Fields

FieldTypeDescription
executionIdstringUnique identifier for the execution
statusstringCurrent status of the execution
exitCodenumberExit code of the executed command (optional)
durationMsnumberExecution duration in milliseconds (optional)
stdoutStreamUrlstringURL for streaming stdout output (optional)
stderrStreamUrlstringURL 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.

GET/sandbox/execution/{executionId}
https://catalyst-usw.agentuity.cloud/sandbox/execution/{executionId}

Parameters

path
NameTypeRequiredDescription
executionIdstringYesExecution ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID
waitstringNoLong-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.

StatusDescription
200Execution returned
401Unauthorized — invalid or missing API key
404Execution 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.

GET/sandbox/sandboxes/{sandboxId}/executions
https://catalyst-usw.agentuity.cloud/sandbox/sandboxes/{sandboxId}/executions

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID
limitnumberNoMaximum results to return

Response

Returns list of executions for the sandbox.

StatusDescription
200Executions returned
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/fs/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Files to write.

FieldTypeDescription
filesobject[]Array of files to write
files[].pathstringPath to the file relative to the sandbox workspace
files[].contentstringBase64-encoded file content

Response

Returns the number of files written.

StatusDescription
200Files written
401Unauthorized — invalid or missing API key
404Sandbox not found

Response Fields

FieldTypeDescription
filesWrittennumberNumber 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.

GET/fs/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
pathstringYesFile path to read
orgIdstringNoOrganization ID

Response

Returns the raw file contents as a stream.

StatusDescription
200File contents returned
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/fs/mkdir/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/mkdir/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Directory creation payload.

FieldTypeDescription
pathstringPath to the directory to create
recursivebooleanCreate parent directories if needed (optional)

Response

Directory created successfully.

StatusDescription
200Directory created
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/fs/rmdir/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/rmdir/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Directory removal payload.

FieldTypeDescription
pathstringPath to the directory to remove
recursivebooleanRemove directory and all contents (optional)

Response

Directory removed successfully.

StatusDescription
200Directory removed
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/fs/rm/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/rm/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

File removal payload.

FieldTypeDescription
pathstringPath to the file to remove

Response

File removed successfully.

StatusDescription
200File removed
401Unauthorized — invalid or missing API key
404Sandbox 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.

GET/fs/list/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/list/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
pathstringNoDirectory to list
orgIdstringNoOrganization ID

Response

Returns list of files in the directory.

StatusDescription
200Files listed
401Unauthorized — invalid or missing API key
404Sandbox not found

Response Fields

FieldTypeDescription
filesobject[]Array of file information
files[].pathstringFile path relative to the listed directory
files[].sizenumberFile size in bytes
files[].isDirbooleanWhether the entry is a directory
files[].modestringUnix permissions as octal string (e.g., "0644")
files[].modTimestringModification 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.

GET/fs/download/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/download/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
pathstringNoDirectory to archive
formatstringNo'zip' or 'tar.gz'
orgIdstringNoOrganization ID

Response

Returns a streaming archive of the sandbox filesystem.

StatusDescription
200Archive returned
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/fs/upload/{sandboxId}
https://catalyst-usw.agentuity.cloud/fs/upload/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
pathstringNoTarget directory
formatstringNoArchive format
orgIdstringNoOrganization ID

Response

Uploads and extracts a compressed archive to the sandbox. Send raw binary with Content-Type: application/octet-stream.

StatusDescription
200Archive uploaded and extracted
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/sandbox/{sandboxId}/snapshot
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/snapshot

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Snapshot creation payload.

FieldTypeDescription
namestringDisplay name for the snapshot (letters, numbers, underscores, dashes only) (optional)
descriptionstringDescription of the snapshot (optional)
tagstringTag for the snapshot (defaults to "latest") (optional)
publicbooleanMake the snapshot publicly accessible (optional)

Response

Returns the created snapshot.

StatusDescription
201Snapshot created
401Unauthorized — invalid or missing API key
404Sandbox 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.

GET/sandbox/snapshots/{snapshotId}
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}

Parameters

path
NameTypeRequiredDescription
snapshotIdstringYesSnapshot ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Returns the snapshot object.

StatusDescription
200Snapshot returned
401Unauthorized — invalid or missing API key
404Snapshot 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.

GET/sandbox/snapshots
https://catalyst-usw.agentuity.cloud/sandbox/snapshots

Parameters

query
NameTypeRequiredDescription
sandboxIdstringNoFilter by sandbox
limitnumberNoMaximum results to return
offsetnumberNoPagination offset
sortstringNoField to sort by
directionstringNoSort direction
orgIdstringNoOrganization ID

Response

Returns paginated list of snapshots.

StatusDescription
200Snapshots returned
401Unauthorized — invalid or missing API key

Response Fields

FieldTypeDescription
snapshotsobject[]List of snapshot entries
snapshots[].snapshotIdstringUnique identifier for the snapshot
snapshots[].runtimeIdstring | nullRuntime ID associated with this snapshot (optional)
snapshots[].namestringDisplay name for the snapshot
snapshots[].fullNamestringFull name with org slug for public snapshots (@slug/name:tag) (optional)
snapshots[].descriptionstring | nullDescription of the snapshot (optional)
snapshots[].messagestring | nullBuild message for the snapshot (optional)
snapshots[].tagstring | nullTag for the snapshot (defaults to "latest") (optional)
snapshots[].sizeBytesnumberTotal size of the snapshot in bytes
snapshots[].fileCountnumberNumber of files in the snapshot
snapshots[].parentSnapshotIdstring | nullID of the parent snapshot (for incremental snapshots) (optional)
snapshots[].publicbooleanWhether the snapshot is publicly accessible (optional)
snapshots[].orgNamestringOrganization name (for public snapshots) (optional)
snapshots[].orgSlugstringOrganization slug (for public snapshots) (optional)
snapshots[].orgobject | nullOrganization details (for public snapshots) (optional)
snapshots[].userobject | nullUser who pushed the snapshot (for private snapshots) (optional)
snapshots[].createdAtstringISO timestamp when the snapshot was created
snapshots[].downloadUrlstringURL to download the snapshot archive (optional)
snapshots[].filesobject[] | nullList of files in the snapshot (optional)
snapshots[].userMetadataobject | nullUser-defined metadata key-value pairs (optional)
totalnumberTotal 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.

DELETE/sandbox/snapshots/{snapshotId}
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}

Parameters

path
NameTypeRequiredDescription
snapshotIdstringYesSnapshot ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Empty response on success.

StatusDescription
204Snapshot deleted
401Unauthorized — invalid or missing API key
404Snapshot 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.

PATCH/sandbox/snapshots/{snapshotId}
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}

Parameters

path
NameTypeRequiredDescription
snapshotIdstringYesSnapshot ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Tag update payload.

FieldTypeDescription
tagstring | nullNew tag or null to remove tag

Response

Returns the updated snapshot.

StatusDescription
200Snapshot tag updated
401Unauthorized — invalid or missing API key
404Snapshot 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.

GET/sandbox/snapshots/lineage
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/lineage

Parameters

query
NameTypeRequiredDescription
snapshotstringNoSnapshot ID or name:tag
namestringNoSnapshot name
tagstringNoSnapshot tag
limitnumberNoMaximum results to return
orgIdstringNoOrganization ID

Response

Returns ordered ancestry chain from specified snapshot to root.

StatusDescription
200Lineage returned
401Unauthorized — 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.

GET/sandbox/snapshots/public/{snapshotRef}
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/public/{snapshotRef}

Parameters

path
NameTypeRequiredDescription
snapshotRefstringYesSnapshot ID, full name (@slug/name:tag), or name:tag

Response

Returns public snapshot details. No authentication required.

StatusDescription
200Public snapshot returned
404Snapshot 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.

GET/sandbox/snapshots/public
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/public

Parameters

query
NameTypeRequiredDescription
limitnumberNoMax 100
offsetnumberNoPagination offset

Response

Returns paginated list of public snapshots.

StatusDescription
200Public snapshots returned

Response Fields

FieldTypeDescription
snapshotsobject[]List of snapshot entries
snapshots[].snapshotIdstringUnique identifier for the snapshot
snapshots[].runtimeIdstring | nullRuntime ID associated with this snapshot
snapshots[].namestringDisplay name for the snapshot
snapshots[].fullNamestringFull name with org slug for public snapshots (@slug/name:tag)
snapshots[].descriptionstring | nullDescription of the snapshot
snapshots[].messagestring | nullBuild message for the snapshot
snapshots[].tagstring | nullTag for the snapshot (defaults to "latest")
snapshots[].sizeBytesnumberTotal size of the snapshot in bytes
snapshots[].fileCountnumberNumber of files in the snapshot
snapshots[].parentSnapshotIdstring | nullID of the parent snapshot (for incremental snapshots)
snapshots[].publicbooleanWhether the snapshot is publicly accessible
snapshots[].orgNamestringOrganization name (for public snapshots)
snapshots[].orgSlugstringOrganization slug (for public snapshots)
snapshots[].orgobject | nullOrganization details (for public snapshots)
snapshots[].userobject | nullUser who pushed the snapshot (for private snapshots)
snapshots[].createdAtstringISO timestamp when the snapshot was created
snapshots[].downloadUrlstringURL to download the snapshot archive
snapshots[].filesobject[] | nullList of files in the snapshot
snapshots[].userMetadataobject | nullUser-defined metadata key-value pairs
totalnumberTotal 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.

POST/sandbox/snapshots/build
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/build

Parameters

query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Snapshot build initialization payload.

FieldTypeDescription
runtimestringRuntime identifier (name:tag or runtime ID)
namestringDisplay name for the snapshot (optional)
tagstringTag for the snapshot (optional)
descriptionstringDescription of the snapshot (optional)
contentHashstringSHA-256 hash of snapshot content for change detection (optional)
forcebooleanForce rebuild even if content is unchanged (optional)
encryptbooleanRequest encryption for the snapshot archive (optional)
publicbooleanMake snapshot public (enables virus scanning, disables encryption) (optional)

Response

Returns snapshot ID and presigned upload URL. If unchanged is true, content matches existing snapshot.

StatusDescription
200Build initialized
401Unauthorized — invalid or missing API key

Response Fields

FieldTypeDescription
snapshotIdstringUnique identifier for the snapshot being built
uploadUrlstringPre-signed URL for uploading the snapshot archive (private snapshots only)
publicKeystringPEM-encoded public key for encrypting the snapshot archive
unchangedbooleanTrue if snapshot content is unchanged
existingIdstringID of existing unchanged snapshot
existingNamestringName of existing unchanged snapshot
existingTagstringTag 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.

POST/sandbox/snapshots/{snapshotId}/finalize
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}/finalize

Parameters

path
NameTypeRequiredDescription
snapshotIdstringYesSnapshot ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Snapshot finalization payload.

FieldTypeDescription
sizeBytesnumberTotal size of the snapshot in bytes
fileCountnumberNumber of files in the snapshot
filesobject[]Array of file metadata
files[].pathstringFile path within the snapshot
files[].sizenumberFile size in bytes
files[].sha256stringSHA256 hash of the file contents
files[].contentTypestringMIME type of the file
files[].modenumberUnix file mode/permissions (e.g., 0o644)
dependenciesstring[]List of apt packages to install (optional)
packagesstring[]List of npm/bun packages to install globally (optional)
envobjectEnvironment variables to set (optional)
metadataobjectUser-defined metadata key-value pairs (optional)

Response

Returns the finalized snapshot.

StatusDescription
200Snapshot finalized
401Unauthorized — invalid or missing API key
404Snapshot 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.

PUT/sandbox/snapshots/{snapshotId}/upload
https://catalyst-usw.agentuity.cloud/sandbox/snapshots/{snapshotId}/upload

Parameters

path
NameTypeRequiredDescription
snapshotIdstringYesSnapshot ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Uploads a gzip archive for public snapshots. Content-Type must be application/gzip. Includes virus scanning.

StatusDescription
200Snapshot uploaded
401Unauthorized — invalid or missing API key
404Snapshot 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.

POST/sandbox/{sandboxId}/checkpoint
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/checkpoint

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Request Body

Checkpoint creation payload.

FieldTypeDescription
namestringName to assign to the new checkpoint

Response

Returns the created checkpoint.

StatusDescription
201Checkpoint created
401Unauthorized — invalid or missing API key
404Sandbox not found

Response Fields

FieldTypeDescription
idstringGlobally unique checkpoint ID (ckpt_xxx)
namestringUser-provided checkpoint name
createdAtstringISO timestamp of creation
parentstringParent 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.

GET/sandbox/checkpoints/{sandboxId}
https://catalyst-usw.agentuity.cloud/sandbox/checkpoints/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Returns list of checkpoints for the sandbox.

StatusDescription
200Checkpoints returned
401Unauthorized — invalid or missing API key
404Sandbox 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.

POST/sandbox/{sandboxId}/checkpoint/{checkpointId}/restore
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/checkpoint/{checkpointId}/restore

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
checkpointIdstringYesCheckpoint ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Restores the sandbox filesystem to the checkpoint state.

StatusDescription
200Checkpoint restored
401Unauthorized — invalid or missing API key
404Sandbox 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.

DELETE/sandbox/{sandboxId}/checkpoint/{checkpointId}
https://catalyst-usw.agentuity.cloud/sandbox/{sandboxId}/checkpoint/{checkpointId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
checkpointIdstringYesCheckpoint ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID

Response

Empty response on success.

StatusDescription
204Checkpoint deleted
401Unauthorized — invalid or missing API key
404Sandbox 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.

GET/sandbox/runtimes
https://catalyst-usw.agentuity.cloud/sandbox/runtimes

Parameters

query
NameTypeRequiredDescription
orgIdstringNoOrganization ID
limitnumberNoMaximum results to return
offsetnumberNoPagination offset
sortstringNoField to sort by
directionstringNoSort direction

Response

Returns available sandbox runtimes with their requirements.

StatusDescription
200Runtimes returned
401Unauthorized — invalid or missing API key

Response Fields

FieldTypeDescription
runtimesobject[]Array of runtime information
runtimes[].idstringUnique runtime identifier
runtimes[].namestringRuntime name (e.g., "bun:1", "python:3.14")
runtimes[].descriptionstringOptional description (optional)
runtimes[].iconUrlstringURL for runtime icon (optional)
runtimes[].brandColorstringBrand color for the runtime (hex color code) (optional)
runtimes[].urlstringURL for runtime documentation or homepage (optional)
runtimes[].tagsstring[]Optional tags for categorization (optional)
runtimes[].requirementsobjectRuntime requirements (memory, cpu, disk, network) (optional)
runtimes[].requirements.memorystringMemory requirement (e.g., "1Gi") (optional)
runtimes[].requirements.cpustringCPU requirement (e.g., "1") (optional)
runtimes[].requirements.diskstringDisk requirement (e.g., "500Mi") (optional)
runtimes[].requirements.networkEnabledbooleanWhether network access is enabled
runtimes[].readmestringReadme content in markdown format (optional)
totalnumberTotal 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.

GET/cli/sandbox
https://catalyst-usw.agentuity.cloud/cli/sandbox

Parameters

query
NameTypeRequiredDescription
namestringNoFilter by name
modestringNo'oneshot' or 'interactive'
projectIdstringNoFilter by project
orgIdstringNoFilter by organization
statusstringNoFilter by status
limitnumberNoMax 100
offsetnumberNoPagination offset
sortstringNoField to sort by
directionstringNoSort direction

Response

Lists sandboxes across all organizations the user belongs to.

StatusDescription
200Sandboxes returned
401Unauthorized — 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.

GET/cli/sandbox/{sandboxId}
https://catalyst-usw.agentuity.cloud/cli/sandbox/{sandboxId}

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID

Response

Resolves a sandbox ID to its org, region, and project. Used for cross-org sandbox lookup.

StatusDescription
200Sandbox resolved
401Unauthorized — invalid or missing API key
404Sandbox not found

Response Fields

FieldTypeDescription
idstringUnique identifier for the sandbox.
namestring | nullSandbox name, or null if unnamed.
regionstringCloud region where the sandbox is running.
statusstringCurrent status of the sandbox.
orgIdstringOrganization ID that owns the sandbox.
projectIdstring | nullProject 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'