Reference / Agent Sandboxes
Create a terminal ticket
Issue a single-use ticket so a browser can open the terminal without an Authorization header.
/v1/customer/tenants/{tenantId}/sandboxes/{sandboxId}/terminal-ticketBase URL: https://api.runzivo.dev
Authentication
Send Authorization: Bearer <token> with a customer access token or workspace API key.
API key permission: sandboxes:write. These are permissions, not legacy scopes. A key with the all:all scope also works, limited by its creator's current workspace permissions.
Parameters
| Field | Description |
|---|---|
tenantIdstring · pathRequired | Your workspace's tenant ID. Replace the placeholder with an ID your token can access. |
sandboxIdstring · pathRequired | The id returned when the sandbox was created: sbx_ followed by 24 lowercase hexadecimal characters. |
Request body
No request body is required.
Behavior and limits
- Requires a running sandbox. A ticket lasts about 30 seconds and is bound to one sandbox and workspace.
- Append the URL-encoded ticket as ?ticket= to the returned terminal URL. Do not log the query string. A sandbox can have at most ten unused tickets (429 ticket_limit_reached).
- Browser WebSocket connections cannot supply Authorization. Use the ticket without an Authorization header; API and CLI clients can instead authenticate the terminal directly.
Responses
| Status | Meaning |
|---|---|
| 201 Created | application/json |
| 401 Unauthorized | Missing or invalid bearer token. A ticketed terminal request can instead return ticket_invalid. |
| 403 Forbidden | The caller lacks workspace membership or permission, or the API key is not allowed. Codes include tenant_membership_required, permission_required and api_key_scope_required. |
| 404 Not found | No sandbox with this ID exists in the authorized workspace. |
| 409 Conflict | The operation is not allowed in the current sandbox state. See the operation notes for other possible conflict codes. |
| 429 Too many tickets | Ten unused tickets already exist for this sandbox. |
| 500 Internal error | The server could not complete the request. |
| 503 Unavailable | Sandbox service is unavailable. Exec and terminal operations can also return sandbox_exec_unavailable. |
Examples use synthetic IDs, dates and values. Read the actual response and status in your workspace.
Ticket response fields
| Field | Description |
|---|---|
urlstringRequired | Absolute wss URL of this sandbox's terminal. |
ticketstringRequired | Single-use ticket, valid for about 30 seconds. Append as a URL-encoded query parameter. |
expires_atdate-timeRequired | When the ticket expires. |
Page tools
View as MarkdownAsk AI about this page
Open in ChatGPTOpen in ClaudeOpen in CursorClaude shows a caution banner on any prefilled prompt. That is expected: review the prompt, then send it.