Prime Intellect Sandbox API

Secure remote code-execution sandboxes for AI agents. Create and manage Python-3.11-slim-based sandboxes, expose ports for HTTP services running inside the sandbox, open SSH sessions, pull rich error context for failures, and provision reverse tunnels back into a sandbox from an external network. Available as a lightweight `prime-sandboxes` Python package (~50KB) in addition to the full `prime` CLI/SDK.

Prime Intellect Sandbox API is one of 6 APIs that Prime Intellect publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko and 1 JSON Schema definition.

Tagged areas include Sandbox, Code Execution, Agents, and Tunnels. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, 2 Naftiko capability specs, and 1 JSON Schema.

OpenAPI Specification

prime-intellect-sandbox-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Prime Intellect Sandbox API
  version: 0.1.0
  description: Secure remote code execution environments for AI agents. Create and manage sandboxes, expose ports, open SSH
    sessions, gather error context, and provision tunnels back to sandboxes. Targets agentic workflows requiring isolated
    Python execution and tool sandboxing.
  contact:
    name: Prime Intellect
    url: https://www.primeintellect.ai
servers:
- url: https://api.primeintellect.ai
security:
- HTTPBearer: []
tags:
- name: Sandbox
- name: Tunnel
paths:
  /api/v1/sandbox:
    post:
      tags:
      - Sandbox
      summary: Create Sandbox Endpoint
      description: Create a new code sandbox
      operationId: create_sandbox_endpoint_api_v1_sandbox_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSandboxRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          500 requests per 60 seconds per IP and token.'
    get:
      tags:
      - Sandbox
      summary: List Sandboxes
      description: List sandboxes for user or team
      operationId: list_sandboxes_api_v1_sandbox_get
      security:
      - HTTPBearer: []
      parameters:
      - name: team_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by team ID
          title: Team Id
        description: Filter by team ID
      - name: user_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by user ID. When set to another user's ID, the caller must be a team admin of the provided team_id.
          title: User Id
        description: Filter by user ID. When set to another user's ID, the caller must be a team admin of the provided team_id.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/SandboxStatus'
          - type: 'null'
          description: Filter by status
          title: Status
        description: Filter by status
      - name: is_active
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Filter to exclude terminated sandboxes when True
          title: Is Active
        description: Filter to exclude terminated sandboxes when True
      - name: labels
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: Filter by labels (sandboxes must have ALL specified labels)
          title: Labels
        description: Filter by labels (sandboxes must have ALL specified labels)
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: Page number
          default: 1
          title: Page
        description: Page number
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: Items per page
          default: 50
          title: Per Page
        description: Items per page
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxListResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          1000 requests per 60 seconds per IP and token.'
    delete:
      tags:
      - Sandbox
      summary: Bulk Delete Sandboxes Endpoint
      description: Bulk delete multiple sandboxes by IDs or labels
      operationId: bulk_delete_sandboxes_endpoint_api_v1_sandbox_delete
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDeleteSandboxRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDeleteSandboxResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          50 requests per 60 seconds per IP and token.'
  /api/v1/sandbox/expose/all:
    get:
      tags:
      - Sandbox
      summary: List All Exposed Ports Endpoint
      description: List all exposed ports across all sandboxes for the current user
      operationId: list_all_exposed_ports_endpoint_api_v1_sandbox_expose_all_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListExposedPortsResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
      - HTTPBearer: []
      x-mint:
        content: '## Rate Limit


          60 requests per 60 seconds per IP and token.'
  /api/v1/sandbox/{sandbox_id}:
    get:
      tags:
      - Sandbox
      summary: Get Sandbox Endpoint
      description: Get a specific sandbox by ID
      operationId: get_sandbox_endpoint_api_v1_sandbox__sandbox_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          300 requests per 60 seconds per IP and token per sandbox.'
    delete:
      tags:
      - Sandbox
      summary: Delete Sandbox Endpoint
      description: Delete a sandbox
      operationId: delete_sandbox_endpoint_api_v1_sandbox__sandbox_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteSandboxResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          500 requests per 60 seconds per IP and token.'
  /api/v1/sandbox/{sandbox_id}/auth:
    post:
      tags:
      - Sandbox
      summary: Get Sandbox Auth Token
      description: Get a token for direct sandbox access.
      operationId: get_sandbox_auth_token_api_v1_sandbox__sandbox_id__auth_post
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxAuthResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          120 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/sandbox/{sandbox_id}/error-context:
    get:
      tags:
      - Sandbox
      summary: Get Sandbox Error Context Endpoint
      description: Get error context for a sandbox (optimized for SDK error handling flows)
      operationId: get_sandbox_error_context_endpoint_api_v1_sandbox__sandbox_id__error_context_get
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxErrorContextResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          600 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/sandbox/{sandbox_id}/expose:
    post:
      tags:
      - Sandbox
      summary: Expose Port Endpoint
      description: Expose a port from a sandbox
      operationId: expose_port_endpoint_api_v1_sandbox__sandbox_id__expose_post
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExposePortRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExposePortResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          20 requests per 60 seconds per IP and token per sandbox.'
    get:
      tags:
      - Sandbox
      summary: List Exposed Ports Endpoint
      description: List all exposed ports for a sandbox
      operationId: list_exposed_ports_endpoint_api_v1_sandbox__sandbox_id__expose_get
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListExposedPortsResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          60 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/sandbox/{sandbox_id}/expose/{exposure_id}:
    delete:
      tags:
      - Sandbox
      summary: Unexpose Port Endpoint
      description: Unexpose a previously exposed port
      operationId: unexpose_port_endpoint_api_v1_sandbox__sandbox_id__expose__exposure_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      - name: exposure_id
        in: path
        required: true
        schema:
          type: string
          title: Exposure Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnexposePortResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          20 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/sandbox/{sandbox_id}/logs:
    get:
      tags:
      - Sandbox
      summary: Get Sandbox Logs Endpoint
      description: Get sandbox logs
      operationId: get_sandbox_logs_endpoint_api_v1_sandbox__sandbox_id__logs_get
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SandboxLogsResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          300 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/sandbox/{sandbox_id}/ssh-session:
    post:
      tags:
      - Sandbox
      summary: Create Ssh Session Endpoint
      description: Create an SSH session using the SSH sidecar (no sshd required in the sandbox image).
      operationId: create_ssh_session_endpoint_api_v1_sandbox__sandbox_id__ssh_session_post
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSSHSessionRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSHSessionResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          20 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/sandbox/{sandbox_id}/ssh-session/{session_id}:
    delete:
      tags:
      - Sandbox
      summary: Close Ssh Session Endpoint
      description: Close an SSH session (removes the TCP exposure).
      operationId: close_ssh_session_endpoint_api_v1_sandbox__sandbox_id__ssh_session__session_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: sandbox_id
        in: path
        required: true
        schema:
          type: string
          title: Sandbox Id
      - name: session_id
        in: path
        required: true
        schema:
          type: string
          title: Session Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnexposePortResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          20 requests per 60 seconds per IP and token per sandbox.'
  /api/v1/tunnel:
    post:
      tags:
      - Tunnel
      summary: Create Tunnel Endpoint
      description: Create a new tunnel for exposing a local service.
      operationId: create_tunnel_endpoint_api_v1_tunnel_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTunnelRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          100 requests per 60 seconds per user.'
    get:
      tags:
      - Tunnel
      summary: List Tunnels Endpoint
      description: List all active tunnels for the current user.
      operationId: list_tunnels_endpoint_api_v1_tunnel_get
      security:
      - HTTPBearer: []
      parameters:
      - name: teamId
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Teamid
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelListResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          300 requests per 60 seconds per user.'
    delete:
      tags:
      - Tunnel
      summary: Bulk Delete Tunnels Endpoint
      description: Bulk delete multiple tunnels by IDs.
      operationId: bulk_delete_tunnels_endpoint_api_v1_tunnel_delete
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkDeleteTunnelRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDeleteTunnelResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          100 requests per 60 seconds per user.'
  /api/v1/tunnel/{tunnel_id}:
    get:
      tags:
      - Tunnel
      summary: Get Tunnel Status Endpoint
      description: Get status of a specific tunnel.
      operationId: get_tunnel_status_endpoint_api_v1_tunnel__tunnel_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: tunnel_id
        in: path
        required: true
        schema:
          type: string
          title: Tunnel Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelStatusResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          300 requests per 60 seconds per tunnel.'
    delete:
      tags:
      - Tunnel
      summary: Delete Tunnel Endpoint
      description: Delete a tunnel and disconnect any active clients.
      operationId: delete_tunnel_endpoint_api_v1_tunnel__tunnel_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: tunnel_id
        in: path
        required: true
        schema:
          type: string
          title: Tunnel Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteTunnelResponse'
        '401':
          description: Authorization failed
        '422':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-mint:
        content: '## Rate Limit


          100 requests per 60 seconds per user.'
components:
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
  schemas:
    SandboxLogsResponse:
      properties:
        logs:
          type: string
          title: Logs
      type: object
      required:
      - logs
      title: SandboxLogsResponse
    SSHSessionResponse:
      properties:
        session_id:
          type: string
          title: Session Id
        exposure_id:
          type: string
          title: Exposure Id
        sandbox_id:
          type: string
          title: Sandbox Id
        host:
          type: string
          title: Host
        port:
          type: integer
          title: Port
        external_endpoint:
          type: string
          title: External Endpoint
        expires_at:
          type: string
          format: date-time
          title: Expires At
        ttl_seconds:
          type: integer
          title: Ttl Seconds
        gateway_url:
          type: string
          title: Gateway Url
        user_ns:
          type: string
          title: User Ns
        job_id:
          type: string
          title: Job Id
        token:
          type: string
          title: Token
      type: object
      required:
      - session_id
      - exposure_id
      - sandbox_id
      - host
      - port
      - external_endpoint
      - expires_at
      - ttl_seconds
      - gateway_url
      - user_ns
      - job_id
      - token
      title: SSHSessionResponse
    CreateTunnelRequest:
      properties:
        name:
          anyOf:
          - type: string
            maxLength: 64
            minLength: 1
          - type: 'null'
          title: Name
          description: Optional friendly name for the tunnel
        local_port:
          type: integer
          maximum: 65535.0
          minimum: 1.0
          title: Local Port
          description: Local port the tunnel will forward traffic to
          default: 8765
        teamId:
          anyOf:
          - type: string
          - type: 'null'
          title: Teamid
          description: Team ID for team tunnels
      type: object
      title: CreateTunnelRequest
      description: Request to create a new tunnel.
    TunnelStatusResponse:
      properties:
        tunnel_id:
          type: string
          title: Tunnel Id
          description: Unique tunnel identifier
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: Friendly name if set
        status:
          $ref: '#/components/schemas/TunnelStatus'
          description: Current tunnel status
        hostname:
          type: string
          title: Hostname
          description: Tunnel hostname
        url:
          type: string
          title: Url
          description: Full HTTPS URL
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Tunnel creation time
        connected_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Connected At
          description: When the client connected
        expires_at:
          type: string
          format: date-time
          title: Expires At
          description: Token expiration time
        user_id:
          type: string
          title: User Id
          description: Owner user ID
        team_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Team Id
          description: Team ID if applicable
      type: object
      required:
      - tunnel_id
      - status
      - hostname
      - url
      - created_at
      - expires_at
      - user_id
      title: TunnelStatusResponse
      description: Response containing tunnel status information.
    TunnelStatus:
      type: string
      enum:
      - pending
      - connected
      - disconnected
      - expired
      title: TunnelStatus
    ExposePortRequest:
      properties:
        port:
          type: integer
          maximum: 9000.0
          minimum: 22.0
          title: Port
          description: Port number to expose (22-9000)
        name:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Name
          description: Optional human-readable name for the exposure
        protocol:
          type: string
          title: Protocol
          description: Protocol (HTTP or TCP)
          default: HTTP
      type: object
      required:
      - port
      title: ExposePortRequest
    UnexposePortResponse:
      properties:
        success:
          type: boolean
          title: Success
        message:
          type: string
          title: Message
      type: object
      required:
      - success
      - message
      title: UnexposePortResponse
    BulkDeleteTunnelRequest:
      properties:
        tunnel_ids:
          items:
            type: string
          type: array
          maxItems: 500
          minItems: 1
          title: Tunnel Ids
          description: List of tunnel IDs to delete
      type: object
      required:
      - tunnel_ids
      title: BulkDeleteTunnelRequest
      description: Request to bulk delete tunnels.
    BulkDeleteTunnelResponse:
      properties:
        succeeded:
          items:
            type: string
          type: array
          title: Succeeded
          description: Successfully deleted tunnel IDs
        failed:
          items:
            additionalProperties:
              type: string
            type: object
          type: array
          title: Failed
          description: Failed deletions with error messages
        message:
          type: string
          title: Message
          description: Summary message
      type: object
      required:
      - message
      title: BulkDeleteTunnelResponse
      description: Response for bulk tunnel deletion.
    SandboxListResponse:
      properties:
        sandboxes:
          items:
            $ref: '#/components/schemas/SandboxResponse'
          type: array
          title: Sandboxes
        total:
          type: integer
          title: Total
        page:
          type: integer
          title: Page
        per_page:
          type: integer
          title: Per Page
        has_next:
          type: boolean
          title: Has Next
      type: object
      required:
      - sandboxes
      - total
      - page
      - per_page
      - has_next
      title: SandboxListResponse
    ListExposedPortsResponse:
      properties:
        exposures:
          items:
            $ref: '#/components/schemas/ExposedPortInfo'
          type: array
          title: Exposures
      type: object
      required:
      - exposures
      title: ListExposedPortsResponse
    ExposedPortInfo:
      properties:
        exposure_id:
          type: string
          title: Exposure Id
        sandbox_id:
          type: string
          title: Sandbox Id
        port:
          type: integer
          title: Port
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        protocol:
          anyOf:
          - type: string
          - type: 'null'
          title: Protocol
        url:
          type: string
          title: Url
        tls_socket:
          type: string
          title: Tls Socket
        external_port:
          anyOf:
          - type: integer
          - type: 'null'
          title: External Port
          description: External port for TCP/UDP exposures (not applicable for HTTP)
        external_endpoint:
          anyOf:
          - type: string
          - type: 'null'
          title: External Endpoint
          description: External endpoint (host:port) for TCP/UDP exposures (not applicable for HTTP)
        created_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Created At
          description: Creation timestamp (ISO format)
      type: object
      required:
      - exposure_id
      - sandbox_id
      - port
      - name
      - url
      - tls_socket
      title: ExposedPortInfo
    SandboxStatus:
      type: string
      enum:
      - PENDING
      - PROVISIONING
      - RUNNING
      - PAUSED
      - ERROR
      - TERMINATED
      title: SandboxStatus
    ExposePortResponse:
      properties:
        exposure_id:
          type: string
          title: Exposure Id
        sandbox_id:
          type: string
          title: Sandbox Id
        port:
          type: integer
          title: Port
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        protocol:
          type: string
          title: Protocol
        url:
          type: string
          title: Url
          description: Public URL for accessing the exposed port
        tls_socket:
          type: string
          title: Tls Socket
        external_port:
          anyOf:
          - type: integer
          - type: 'null'
          title: External Port
          description: External port for TCP exposures (not applicable for HTTP)
        external_endpoint:
          anyOf:
          - type: string
          - type: 'null'
          title: External Endpoint
          description: External endpoint (host:port) for TCP/UDP exposures (not applicable for HTTP)
      type: object
      required:
      - exposure_id
      - sandbox_id
      - port
      - protocol
      - url
      - tls_socket
      title: ExposePortResponse
    BulkDeleteSandboxResponse:
      properties:
        succeeded:
          items:
            type: string
          type: array
          title: Succeeded
          description: List of successfully deleted sandbox IDs
        failed:
          items:
            additionalProperties:
              type: string
            type: object
          type: array
          title: Failed
          description: List of failed deletions with error messages
        message:
          type: string
          title: Message
      type: object
      required:
      - message
      title: BulkDeleteSandboxResponse
    ErrorResponse:
      properties:
        errors:
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
          title: Errors
      type: object
      required:
      - errors
      title: ErrorResponse
    ErrorDetail:
      properties:
        param:
          type: string
          title: Param
        details:
          type: string
          title: Details
      type: object
      required:
      - param
      - details
      title: Erro

# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/prime-intellect/refs/heads/main/openapi/prime-intellect-sandbox-api-openapi.yml