Sandboxes API

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 API or 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)
timeout.pausedstringMaximum time sandbox can remain paused before termination (e.g., "24h", "0s" for infinite) (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)
scopesstring[]Permission scopes for automatic service access (e.g., "services:read", "services:write"). (optional)
disableSnapshotsbooleanSkip workspace disk snapshots (instant checkpoints and rollback) for faster I/O (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
executionIdstringInitial execution identifier for oneshot sandbox creation (optional)
urlstringPublic URL for the sandbox (only set when a network port is configured) (optional)
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

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. If the sandbox was suspended, it is automatically resumed and the response includes autoResumed: true. Returns 409 if sandbox is busy.

StatusDescription
200Command executed (may include autoResumed: true if sandbox was suspended)
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)
outputTruncatedbooleanWhether the captured output was truncated due to size limits (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'

Events

List Events

List lifecycle events for a specific sandbox. Events are returned in chronological order (oldest first) by default.

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

Parameters

path
NameTypeRequiredDescription
sandboxIdstringYesSandbox ID
query
NameTypeRequiredDescription
orgIdstringNoOrganization ID
limitnumberNoMaximum results to return (default: 50, max: 100)
directionstringNoSort direction: 'asc' (default, oldest first) or 'desc' (newest first)

Response

Returns list of lifecycle events for the sandbox.

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

Response Fields

FieldTypeDescription
eventsobject[]List of sandbox events
events[].eventIdstringUnique identifier for the event
events[].sandboxIdstringID of the sandbox this event belongs to
events[].typestringType of event (e.g., create, destroy, lifecycle:started)
events[].eventobjectEvent data payload
events[].createdAtstringISO timestamp when the event was recorded

Example

curl -X GET 'https://catalyst-usw.agentuity.cloud/sandbox/sandboxes/sbx_abc123/events' \
  -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[].isSymlinkbooleanWhether the entry is a symbolic link (optional)
files[].linkTargetstringTarget path of the symbolic link (optional)
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

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

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>'

Sandbox Checkpoints

Create Checkpoint

Create a named checkpoint of the sandbox filesystem. Checkpoint names must be unique — creating a checkpoint with a name that already exists returns 409 Conflict. Checkpoints are persisted across pause/resume cycles.

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
409Conflict — checkpoint name already exists, or sandbox is suspended

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. Checkpoints are persisted across pause/resume cycles.

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
409Conflict — sandbox is suspended

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
409Conflict — sandbox is suspended

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
409Conflict — sandbox is suspended

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

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'