Sign Up

Admin

GET/admin/runners
AuthorizationBearer <token>

API Key access

In: header

Query Parameters

regionId?string

Filter runners by region ID

Response Body

application/json

curl -X GET "https://example.com/admin/runners"
[  {    "id": "runner123",    "domain": "runner1.example.com",    "apiUrl": "https://api.runner1.example.com",    "proxyUrl": "https://proxy.runner1.example.com",    "cpu": 8,    "memory": 16,    "disk": 100,    "gpu": 1,    "gpuType": "string",    "sandboxClass": "linux-vm",    "currentCpuUsagePercentage": 45.6,    "currentMemoryUsagePercentage": 68.2,    "currentDiskUsagePercentage": 33.8,    "currentAllocatedCpu": 4000,    "currentAllocatedMemoryGiB": 8000,    "currentAllocatedDiskGiB": 50000,    "currentSnapshotCount": 12,    "currentStartedSandboxes": 5,    "availabilityScore": 85,    "region": "us",    "name": "runner1",    "state": "initializing",    "lastChecked": "2024-10-01T12:00:00Z",    "unschedulable": false,    "tags": [      "gpu",      "us-east"    ],    "createdAt": "2023-10-01T12:00:00Z",    "updatedAt": "2023-10-01T12:00:00Z",    "version": "0",    "apiVersion": "0",    "runnerClass": "container",    "appVersion": "v0.0.0-dev",    "class": "small",    "apiKey": "dtn_1234567890",    "regionType": "shared"  }]
POST/admin/runners
AuthorizationBearer <token>

API Key access

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/admin/runners" \  -H "Content-Type: application/json" \  -d '{    "regionId": "string",    "name": "string",    "apiKey": "string",    "apiVersion": "2"  }'
{  "id": "runner123",  "apiKey": "dtn_1234567890"}
GET/admin/runners/{id}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

Runner ID

Response Body

application/json

curl -X GET "https://example.com/admin/runners/string"
{  "id": "runner123",  "domain": "runner1.example.com",  "apiUrl": "https://api.runner1.example.com",  "proxyUrl": "https://proxy.runner1.example.com",  "cpu": 8,  "memory": 16,  "disk": 100,  "gpu": 1,  "gpuType": "string",  "sandboxClass": "linux-vm",  "currentCpuUsagePercentage": 45.6,  "currentMemoryUsagePercentage": 68.2,  "currentDiskUsagePercentage": 33.8,  "currentAllocatedCpu": 4000,  "currentAllocatedMemoryGiB": 8000,  "currentAllocatedDiskGiB": 50000,  "currentSnapshotCount": 12,  "currentStartedSandboxes": 5,  "availabilityScore": 85,  "region": "us",  "name": "runner1",  "state": "initializing",  "lastChecked": "2024-10-01T12:00:00Z",  "unschedulable": false,  "tags": [    "gpu",    "us-east"  ],  "createdAt": "2023-10-01T12:00:00Z",  "updatedAt": "2023-10-01T12:00:00Z",  "version": "0",  "apiVersion": "0",  "runnerClass": "container",  "appVersion": "v0.0.0-dev",  "class": "small",  "apiKey": "dtn_1234567890",  "regionType": "shared"}
DELETE/admin/runners/{id}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

Runner ID

Query Parameters

force?boolean

Delete the runner without waiting for sandboxes already marked for destruction. Requires the runner to have stopped reporting as ready.

Response Body

curl -X DELETE "https://example.com/admin/runners/string"
Empty
PATCH/admin/runners/{id}/scheduling
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

Response Body

curl -X PATCH "https://example.com/admin/runners/string/scheduling"
Empty
POST/admin/sandbox/{sandboxId}/recover
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

sandboxId*string

ID of the sandbox

Response Body

application/json

curl -X POST "https://example.com/admin/sandbox/string/recover"
{  "id": "sandbox123",  "organizationId": "organization123",  "name": "MySandbox",  "snapshot": "daytonaio/sandbox:latest",  "user": "daytona",  "env": {    "NODE_ENV": "production"  },  "labels": {    "daytona.io/public": "true"  },  "public": false,  "networkBlockAll": false,  "networkAllowList": "192.168.1.0/16,10.0.0.0/24",  "domainAllowList": "example.com,*.daytona.io",  "outboundProxyUrl": "http://user:pass@proxy.example.com:3128",  "otelEndpointOverride": "https://otel-collector.example.com:4318",  "target": "local",  "cpu": 2,  "gpu": 0,  "spot": false,  "spotEvictedAt": "2026-08-13T12:00:00.000Z",  "gpuType": "H100",  "memory": 4,  "disk": 10,  "state": "creating",  "desiredState": "destroyed",  "errorReason": "The sandbox is not running",  "recoverable": true,  "warmPoolId": "string",  "backupState": "None",  "backupCreatedAt": "2024-10-01T12:00:00Z",  "autoStopInterval": 30,  "autoPauseInterval": 60,  "autoArchiveInterval": 10080,  "autoDeleteInterval": 30,  "autoDestroyAt": "2026-07-15T12:00:00.000Z",  "volumes": [    {      "volumeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",      "mountPath": "/data",      "subpath": "users/alice"    }  ],  "buildInfo": {    "dockerfileContent": "FROM node:14\nWORKDIR /app\nCOPY . .\nRUN npm install\nCMD [\"npm\", \"start\"]",    "contextHashes": [      "hash1",      "hash2"    ],    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "snapshotRef": "daytonaio/sandbox:latest"  },  "createdAt": "2024-10-01T12:00:00Z",  "updatedAt": "2024-10-01T12:00:00Z",  "lastActivityAt": "2024-10-01T12:00:00Z",  "sandboxClass": "linux-vm",  "daemonVersion": "1.0.0",  "runnerId": "runner123",  "linkedSandboxId": "sandbox123",  "toolboxProxyUrl": "https://proxy.app.daytona.io/toolbox"}
GET/admin/users
AuthorizationBearer <token>

API Key access

In: header

Response Body

curl -X GET "https://example.com/admin/users"
Empty
POST/admin/users
AuthorizationBearer <token>

API Key access

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X POST "https://example.com/admin/users" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
Empty
POST/admin/users/{id}/regenerate-key-pair
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

Response Body

curl -X POST "https://example.com/admin/users/string/regenerate-key-pair"
Empty
GET/admin/users/{id}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

Response Body

application/json

curl -X GET "https://example.com/admin/users/string"
{  "id": "string",  "name": "string",  "email": "string",  "emailVerified": true,  "pylonEmailHash": "string",  "publicKeys": [    {      "key": "string",      "name": "string"    }  ],  "createdAt": "2019-08-24T14:15:22Z"}
POST/admin/webhooks/organizations/{organizationId}/send
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X POST "https://example.com/admin/webhooks/organizations/string/send" \  -H "Content-Type: application/json" \  -d '{    "eventType": "sandbox.created",    "payload": {      "id": "sandbox-123",      "name": "My Sandbox"    }  }'
Empty
GET/admin/webhooks/organizations/{organizationId}/messages/{messageId}/attempts
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string
messageId*string

Response Body

application/json

curl -X GET "https://example.com/admin/webhooks/organizations/string/messages/string/attempts"
[  {}]
GET/admin/webhooks/status
AuthorizationBearer <token>

API Key access

In: header

Response Body

application/json

curl -X GET "https://example.com/admin/webhooks/status"
{  "enabled": true}
POST/admin/webhooks/organizations/{organizationId}/initialize
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Response Body

curl -X POST "https://example.com/admin/webhooks/organizations/string/initialize"
Empty
POST/admin/docker-registry/{id}/set-default
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

ID of the docker registry

Response Body

application/json

curl -X POST "https://example.com/admin/docker-registry/string/set-default"
{  "id": "123e4567-e89b-12d3-a456-426614174000",  "name": "My Docker Hub",  "url": "https://registry.hub.docker.com",  "username": "username",  "project": "my-project",  "registryType": "internal",  "createdAt": "2024-01-31T12:00:00Z",  "updatedAt": "2024-01-31T12:00:00Z"}
GET/admin/snapshots/can-cleanup-image
AuthorizationBearer <token>

API Key access

In: header

Query Parameters

imageName*string

Image name with tag to check

Response Body

application/json

curl -X GET "https://example.com/admin/snapshots/can-cleanup-image?imageName=string"
true
PATCH/admin/snapshots/{id}/general
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

id*string

Snapshot ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/admin/snapshots/string/general" \  -H "Content-Type: application/json" \  -d '{    "general": true  }'
{  "id": "string",  "organizationId": "string",  "general": true,  "name": "string",  "imageName": "string",  "state": "building",  "size": 0,  "entrypoint": [    "string"  ],  "cpu": 0,  "gpu": 0,  "gpuType": "H100",  "mem": 0,  "disk": 0,  "errorReason": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "lastUsedAt": "2019-08-24T14:15:22Z",  "buildInfo": {    "dockerfileContent": "FROM node:14\nWORKDIR /app\nCOPY . .\nRUN npm install\nCMD [\"npm\", \"start\"]",    "contextHashes": [      "hash1",      "hash2"    ],    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "snapshotRef": "daytonaio/sandbox:latest"  },  "regionIds": [    "string"  ],  "initialRunnerId": "runner123",  "ref": "daytonaio/sandbox:latest",  "sourceSandboxId": "sandbox123",  "sandboxClass": "linux-vm"}
GET/admin/audit
AuthorizationBearer <token>

API Key access

In: header

Query Parameters

page?number

Page number of the results

Range1 <= value
Default1
limit?number

Number of results per page

Range1 <= value <= 200
Default100
from?string
Deprecated

Deprecated alias for createdAt[gte]. From date (ISO 8601 format).

Formatdate-time
to?string
Deprecated

Deprecated alias for createdAt[lte]. To date (ISO 8601 format).

Formatdate-time
nextToken?string

Token for cursor-based pagination. When provided, takes precedence over page parameter.

id?

Filter by audit log ID.

actorId?

Filter by actor user ID.

actorEmail?

Filter by actor email.

actorApiKeyPrefix?

Filter by actor API key prefix.

actorApiKeySuffix?

Filter by actor API key suffix.

action?

Filter by action.

targetType?

Filter by target type.

targetId?

Filter by target ID.

statusCode?

Filter by HTTP status code.

createdAt?

Filter by creation timestamp.

Response Body

application/json

curl -X GET "https://example.com/admin/audit"
{  "items": [    {      "id": "string",      "actorId": "string",      "actorEmail": "string",      "actorApiKeyPrefix": "string",      "actorApiKeySuffix": "string",      "organizationId": "string",      "action": "string",      "targetType": "string",      "targetId": "string",      "statusCode": 0,      "errorMessage": "string",      "ipAddress": "string",      "userAgent": "string",      "source": "string",      "metadata": {},      "createdAt": "2019-08-24T14:15:22Z"    }  ],  "total": 0,  "page": 0,  "totalPages": 0,  "nextToken": "string"}
POST/admin/organizations
AuthorizationBearer <token>

API Key access

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/admin/organizations" \  -H "Content-Type: application/json" \  -d '{    "userId": "user_123",    "name": "My Organization",    "defaultRegionId": "us"  }'
{  "id": "string",  "name": "string",  "createdBy": "string",  "personal": true,  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "suspended": true,  "suspendedAt": "2019-08-24T14:15:22Z",  "suspensionReason": "string",  "suspendedUntil": "2019-08-24T14:15:22Z",  "suspensionCleanupGracePeriodHours": 0,  "maxCpuPerSandbox": 0,  "maxMemoryPerSandbox": 0,  "maxDiskPerSandbox": 0,  "secretQuota": 0,  "maxSecretsPerSandbox": 0,  "snapshotDeactivationTimeoutMinutes": 20160,  "sandboxLimitedNetworkEgress": true,  "previewWarningEnabled": true,  "ssoEnabled": true,  "defaultRegionId": "string",  "authenticatedRateLimit": 0,  "sandboxCreateRateLimit": 0,  "sandboxLifecycleRateLimit": 0,  "experimentalConfig": {},  "otelConfig": {    "endpoint": "string",    "headers": {      "x-api-key": "my-api-key"    },    "organizationId": "string"  },  "authenticatedRateLimitTtlSeconds": 0,  "sandboxCreateRateLimitTtlSeconds": 0,  "sandboxLifecycleRateLimitTtlSeconds": 0}
POST/admin/organizations/{organizationId}/quota/{regionId}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Organization ID

regionId*string

ID of the region the new quota applies to

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/admin/organizations/string/quota/string" \  -H "Content-Type: application/json" \  -d '{    "sandboxClass": "linux-vm",    "totalCpuQuota": 0,    "totalMemoryQuota": 0,    "totalDiskQuota": 0,    "totalGpuQuota": 0  }'
{  "organizationId": "string",  "regionId": "string",  "sandboxClass": "linux-vm",  "totalCpuQuota": 0,  "totalMemoryQuota": 0,  "totalDiskQuota": 0,  "totalGpuQuota": 0,  "allowedGpuTypes": [    "H100"  ],  "maxCpuPerSandbox": 0,  "maxMemoryPerSandbox": 0,  "maxDiskPerSandbox": 0,  "maxDiskPerNonEphemeralSandbox": 0,  "maxCpuPerGpu": 0,  "maxMemoryPerGpu": 0,  "maxDiskPerGpu": 0,  "maxSandboxLifespan": 0}
PATCH/admin/organizations/{organizationId}/quota/{regionId}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Organization ID

regionId*string

Region ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X PATCH "https://example.com/admin/organizations/string/quota/string" \  -H "Content-Type: application/json" \  -d '{    "totalCpuQuota": 0,    "totalMemoryQuota": 0,    "totalDiskQuota": 0,    "totalGpuQuota": 0  }'
Empty
GET/admin/organizations/{organizationId}/quota/{regionId}/{sandboxClass}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Organization ID

regionId*string

Region ID

sandboxClass*string

Sandbox class

Value in

  • "linux-vm"
  • "container"
  • "android"
  • "windows"

Response Body

application/json

curl -X GET "https://example.com/admin/organizations/string/quota/string/linux-vm"
{  "organizationId": "string",  "regionId": "string",  "sandboxClass": "linux-vm",  "totalCpuQuota": 0,  "totalMemoryQuota": 0,  "totalDiskQuota": 0,  "totalGpuQuota": 0,  "allowedGpuTypes": [    "H100"  ],  "maxCpuPerSandbox": 0,  "maxMemoryPerSandbox": 0,  "maxDiskPerSandbox": 0,  "maxDiskPerNonEphemeralSandbox": 0,  "maxCpuPerGpu": 0,  "maxMemoryPerGpu": 0,  "maxDiskPerGpu": 0,  "maxSandboxLifespan": 0}
DELETE/admin/organizations/{organizationId}/quota/{regionId}/{sandboxClass}
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Organization ID

regionId*string

Region ID

sandboxClass*string

Sandbox class

Value in

  • "linux-vm"
  • "container"
  • "android"
  • "windows"

Response Body

curl -X DELETE "https://example.com/admin/organizations/string/quota/string/linux-vm"
Empty
POST/admin/organizations/{organizationId}/preview-warning
AuthorizationBearer <token>

API Key access

In: header

Path Parameters

organizationId*string

Organization ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X POST "https://example.com/admin/organizations/string/preview-warning" \  -H "Content-Type: application/json" \  -d '{    "previewWarningEnabled": true  }'
Empty