On this page

Every MIOSA API error follows a single envelope shape. The HTTP status indicates the broad class; the code field is the machine-readable reason.

{
  "error": {
    "code": "NOT_FOUND",
    "message": "sandbox not found",
    "request_id": "req_01jv..."
  }
}

Include request_id whenever you contact support. It correlates the request across all internal services.


Authentication errors

Returned by the ApiKeyAuth plug before the request reaches any controller.

CodeHTTPMeaningWhat to do
invalid_token401Authorization header missing, malformed, or the key/JWT is invalidVerify the header is Authorization: Bearer msk_...
invalid_token401Refresh token used on a non-auth endpointUse a workspace API key (msk_*), not a refresh token
insufficient_scope403Key exists but lacks the required scope for this operationAdjust key scopes in the dashboard
rate_limit_exceeded429Too many requests from this key or IPBack off and retry after Retry-After seconds

General resource errors

These codes appear across all resource types (computers, sandboxes, deployments, workspaces, etc.).

CodeHTTPMeaningWhat to do
NOT_FOUND404Resource does not exist or belongs to a different tenantConfirm the ID and that the key’s tenant owns the resource
FORBIDDEN403Authenticated but not authorized to access this resourceCheck membership or ownership
INVALID_ID400Path parameter is not a valid UUIDUse a UUID v4 ID, not a slug or name
MISSING_PARAM400A required request body field is absentCheck the field name in the request body schema
VALIDATION_ERROR422One or more fields failed schema validationInspect details for per-field messages
VALIDATION_FAILED422Changeset validation failed (alias of VALIDATION_ERROR in some controllers)Inspect details
TENANT_RESOLUTION_FAILED422Cannot determine the tenant for the authenticated identityThe API key may belong to a workspace that has been deleted or suspended
INTERNAL_ERROR500Unexpected server-side errorRetry with exponential backoff; report if persistent

Sandbox errors

CodeHTTPMeaningWhat to do
INSUFFICIENT_CREDITS402Not enough credits to provision this sandboxTop up credits in the dashboard or reduce the resource request
SANDBOX_LIMIT_REACHED409Tenant has hit the concurrent sandbox cap (default 10)Destroy idle sandboxes or contact support to raise the limit
SANDBOX_NOT_RUNNING409Operation requires the sandbox to be in running stateWait until state is running; poll GET /sandboxes/{id} or subscribe to events
AGENT_UNAVAILABLE502The in-VM envd agent is reachable but not respondingWait and retry; if persistent, destroy and recreate the sandbox
INVALID_TEMPLATE400template_id is not a recognized templateUse GET /api/v1/sandbox-templates to list valid IDs
MISSING_PATH400path field is required but absentInclude path in the request body
INVALID_PATH400path is not a valid absolute filesystem pathUse an absolute path (starts with /)
MISSING_FILE400Multipart upload missing the file partInclude the file part in the multipart form
INVALID_BODY400Request body could not be parsed or decodedVerify JSON or base64 encoding
MISSING_MODE400chmod call missing mode fieldInclude an octal mode string, e.g. "0644"
INVALID_PORT422Expose port is outside 165535Use a port in the valid range
MISSING_PARAM400port omitted on /expose and template has no default preview portProvide port explicitly
SANDBOX_NOT_RUNNING409/deploy called but sandbox is not runningConfirm sandbox state before promoting
SANDBOX_RUNTIME_UNAVAILABLE409Sandbox is marked running but has no VM IP yetRetry after a few seconds

Sandbox template build errors

CodeHTTPMeaningWhat to do
TEMPLATE_NOT_FOUND404Template ID does not existVerify the template ID
BUILD_NOT_FOUND404Build record does not existVerify the build ID
BUILD_ALREADY_TERMINAL409Cannot cancel a build that is already ready, failed, or cancelledNo action needed; build is in a terminal state
BUILD_NOT_RETRYABLE409Build is not in a state that allows retry (failed or cancelled only)Only failed or cancelled builds may be retried
UNAUTHORIZED401SSE ticket missing, invalid, or expiredRe-issue a ticket via POST /auth/sse-ticket and reconnect

Computer errors

CodeHTTPMeaningWhat to do
INSUFFICIENT_CREDITS402Not enough credits to start this computerTop up credits
COMPUTER_NOT_RUNNING409Desktop or exec operation requires a running computerStart the computer first
COMPUTER_NOT_FOUND404Computer does not exist in this tenantVerify the computer ID
AGENT_UNAVAILABLE502In-VM envd agent unreachableComputer may be starting; retry after a few seconds

Deployment errors

CodeHTTPMeaningWhat to do
DEPLOYMENT_NOT_FOUND404Deployment ID does not existVerify the deployment ID
VALIDATION_ERROR422Deployment fields failed validationCheck details for field-level messages
SANDBOX_NOT_RUNNING409Publishing requires a running sandboxConfirm sandbox state
RUNTIME_TARGET_UNAVAILABLE409Sandbox has no IP yet — cannot route to itRetry after a few seconds
RUNTIME_LOGS_UNAVAILABLE502Cannot fetch runtime logs from the sandboxRetry or check sandbox health
EMPTY_ARTIFACT422Publish output contained no filesVerify your build step produces output files
SERVICE_UNAVAILABLE503A required internal service (e.g. encryption) is not configuredContact support

Snapshot errors

Snapshots are accessed under /api/v1/computers/{id}/snapshots and /api/v1/sandboxes/{id}/snapshots.

CodeHTTPMeaningWhat to do
NOT_FOUND (snapshot)404Snapshot does not exist or belongs to a different computerVerify snapshot ID and computer ID
FORBIDDEN403Authenticated tenant does not own this snapshotCheck ownership
already_deleted409Snapshot has already been deletedNo action; already in terminal state
snapshot is not in ready state409Restore attempted before snapshot reached readyPoll snapshot status until ready
missing sse ticket401SSE stream opened without a ticketIssue a ticket via POST /auth/sse-ticket first

Custom domain errors

CodeHTTPMeaningWhat to do
DOMAIN_NOT_FOUND404Custom domain record not foundVerify the domain ID
COMPUTER_NOT_FOUND404The computer this domain is attached to was not foundVerify the computer ID
FORBIDDEN403Domain belongs to a different tenantVerify ownership
VALIDATION_FAILED422fqdn missing or invalidInclude a valid fully-qualified domain name

Workspace errors

CodeHTTPMeaningWhat to do
VALIDATION_FAILED422Workspace creation or update fields are invalidInspect details
TEMPLATE_NAME_TAKEN409A template with that name already exists in this workspaceChoose a different name

Rate-limit and quota errors

CodeHTTPMeaningWhat to do
rate_limit_exceeded429General API rate limit hitRespect the Retry-After response header
SANDBOX_LIMIT_REACHED409Concurrent sandbox cap reachedDestroy idle sandboxes or upgrade plan
INSUFFICIENT_CREDITS402Credit balance depletedPurchase credits from the billing dashboard

See also

Was this helpful?