Runloop Devbox API

The Devbox API from Runloop — 40 operation(s) for devbox.

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-devbox-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-execution-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-snapshot-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-tunnel-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-launch-parameters-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-structure/runloop-devbox-structure.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-blueprint-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-benchmark-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-benchmark-run-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-scenario-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-agent-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-axon-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-object-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-secret-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-network-policy-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-gateway-config-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-mcp-config-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-api-key-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/json-schema/runloop-restricted-key-schema.json

Other Resources

OpenAPI Specification

runloop-ai-devbox-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Runloop agents Devbox API
  version: '0.1'
  description: Register, version, and mount Agents — packaged agent definitions sourced from Git, npm, pip, or storage objects that can be installed on Devboxes for fast, reproducible agent execution.
  contact:
    name: Runloop AI Support
    url: https://runloop.ai
    email: support@runloop.ai
servers:
- url: https://api.runloop.ai
  description: Runloop API
  variables: {}
security:
- bearerAuth: []
tags:
- name: Devbox
paths:
  /pty/{session_name}:
    get:
      tags:
      - Devbox
      summary: Create or reconnect to a PTY session.
      description: 'Looks up the PTY session identified by the path session_name and either reconnects to the existing session or creates it if it does not yet exist. The session_name is a client-chosen session identifier, not an opaque server-issued ID. It must be non-empty (1..=256 chars) and use only ASCII letters, digits, ''-'' and ''_''. A newly created PTY session starts an interactive bash shell on the Devbox. Optional cols and rows query parameters apply an initial terminal size before any I/O; they must both be present and in the range 1..=1000 to take effect. The response returns a PtyConnectView containing connect_url (a server-relative path to the WebSocket data plane), idle_ttl_seconds (how long this session is retained after the last client disconnects), and the resulting cols/rows. The interactive byte stream itself is intentionally not modeled in OpenAPI; see the controller-level documentation for the WebSocket close-code conventions. The single-attach contract is enforced when a client opens the WebSocket data plane, not on this bootstrap call: bootstrap always succeeds for a valid session_name, even if another client is currently attached. Rejection of a second concurrent attach happens at WebSocket upgrade time. If the active client disconnects, the session is preserved for the idle TTL so a later connect using the same session_name resumes the same shell. After the TTL expires, after an explicit close control action, or after the underlying Devbox lifecycle replaces the PTY process (such as through suspend/resume), a later request with the same session_name creates a fresh PTY session without the previous shell state.


        Documentation note: this operation is published from mux strictly as an OpenAPI contract stub for the PTY service control plane. It is not evidence that mux itself serves the interactive PTY transport.'
      operationId: connectDevboxPtySession
      parameters:
      - name: session_name
        in: path
        description: The client-chosen PTY session name. Must be 1..=256 ASCII letters, digits, '-' and '_'. Reusing the same name reconnects to the same logical PTY session when it is still available.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: cols
        in: query
        description: Optional initial terminal width in character cells (1..=1000). Defaults to 80 when omitted. Applied only if both cols and rows are provided; otherwise ignored.
        required: false
        deprecated: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
      - name: rows
        in: query
        description: Optional initial terminal height in character cells (1..=1000). Defaults to 24 when omitted. Applied only if both cols and rows are provided; otherwise ignored.
        required: false
        deprecated: false
        allowEmptyValue: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PtyConnectView'
        '400':
          description: Malformed session_name (alphabet or length out of range).
        '503':
          description: PTY session could not be spawned (host resource exhaustion).
      deprecated: false
  /pty/{session_name}/control:
    post:
      tags:
      - Devbox
      summary: Send a control command to a PTY session.
      description: 'Applies a PTY control operation to an existing session. The action field selects the operation; the other fields in PtyControlParameters are interpreted only when they are relevant to the chosen action.


        resize: cols and rows are required and must each be in 1..=1000. A 0 or out-of-range value returns 400. The new winsize is applied to the PTY master and the kernel delivers SIGWINCH to the foreground process group.


        signal: signal is the POSIX signal name (for example ''SIGTERM'', ''SIGHUP'', ''SIGINT'', ''SIGUSR1''). Unknown signal names return 400. The signal is delivered to the slave''s foreground process group via killpg(2). If the shell has already exited and there is no foreground process group, returns 400.


        close: terminates the session. Sends SIGHUP to the foreground process group (best-effort; ignored if the shell has already exited) and drops the session from the server''s session cache. A subsequent connect with the same session_name will create a fresh PTY session.


        Documentation note: this operation is published from mux strictly as an OpenAPI contract stub for the PTY service control plane. It is not evidence that mux itself serves the interactive PTY transport.'
      operationId: controlDevboxPtySession
      parameters:
      - name: session_name
        in: path
        description: The client-chosen PTY session name. Must be 1..=256 ASCII letters, digits, '-' and '_'.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PtyControlParameters'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PtyControlResultView'
        '400':
          description: 'Invalid action parameters: out-of-range cols/rows on resize, unknown signal name on signal, or no foreground process group on signal.'
        '404':
          description: PTY session not found.
      deprecated: false
  /v1/devboxes:
    post:
      tags:
      - Devbox
      summary: Create a Devbox.
      description: Create a Devbox and begin the boot process. The Devbox will initially launch in the 'provisioning' state while Runloop allocates the necessary infrastructure. It will transition to the 'initializing' state while the booted Devbox runs any Runloop or user defined set up scripts. Finally, the Devbox will transition to the 'running' state when it is ready for use.
      operationId: createDevbox
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxCreateParameters'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxView'
      deprecated: false
    get:
      tags:
      - Devbox
      summary: List Devboxes.
      description: List all Devboxes while optionally filtering by status.
      operationId: listDevboxes
      parameters:
      - name: status
        in: query
        description: Filter by status
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          $ref: '#/components/schemas/DevboxViewStatus'
      - name: limit
        in: query
        description: The limit of items to return. Default is 20. Max is 5000.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: integer
          format: int32
      - name: starting_after
        in: query
        description: Load the next page of data starting after the item with the given ID.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: include_total_count
        in: query
        description: If true (default), includes total_count in the response. Set to false to skip the count query for better performance on large datasets.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxListView'
      deprecated: false
  /v1/devboxes/disk_snapshots:
    get:
      tags:
      - Devbox
      summary: List disk snapshots of a Devbox.
      description: List all snapshots of a Devbox while optionally filtering by Devbox ID, source Blueprint ID, and metadata.
      operationId: getDevboxDiskSnapshotList
      parameters:
      - name: devbox_id
        in: query
        description: Devbox ID to filter by.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: source_blueprint_id
        in: query
        description: Source Blueprint ID to filter snapshots by.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: metadata[key]
        in: query
        description: Filter snapshots by metadata key-value pair. Can be used multiple times for different keys.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: metadata[key][in]
        in: query
        description: Filter snapshots by metadata key with multiple possible values (OR condition).
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: limit
        in: query
        description: The limit of items to return. Default is 20. Max is 5000.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: integer
          format: int32
      - name: starting_after
        in: query
        description: Load the next page of data starting after the item with the given ID.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: include_total_count
        in: query
        description: If true (default), includes total_count in the response. Set to false to skip the count query for better performance on large datasets.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxDiskSnapshotListView'
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/disk_snapshots/list_public:
    get:
      tags:
      - Devbox
      summary: List public disk snapshots.
      description: List all public disk snapshots that are available to all users.
      operationId: listPublicSnapshots
      parameters:
      - name: devbox_id
        in: query
        description: Devbox ID to filter by.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: source_blueprint_id
        in: query
        description: Source Blueprint ID to filter snapshots by.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: metadata[key]
        in: query
        description: Filter snapshots by metadata key-value pair. Can be used multiple times for different keys.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: metadata[key][in]
        in: query
        description: Filter snapshots by metadata key with multiple possible values (OR condition).
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: limit
        in: query
        description: The limit of items to return. Default is 20. Max is 5000.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: integer
          format: int32
      - name: starting_after
        in: query
        description: Load the next page of data starting after the item with the given ID.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      - name: include_total_count
        in: query
        description: If true (default), includes total_count in the response. Set to false to skip the count query for better performance on large datasets.
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxDiskSnapshotListView'
      deprecated: false
  /v1/devboxes/disk_snapshots/metadata/keys:
    get:
      tags:
      - Devbox
      summary: List available snapshot metadata keys.
      description: Returns a list of all available metadata keys that can be used for filtering snapshots.
      operationId: getSnapshotMetadataKeys
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataKeysView'
      deprecated: false
  /v1/devboxes/disk_snapshots/metadata/keys/{key}/values:
    get:
      tags:
      - Devbox
      summary: List values for a specific snapshot metadata key.
      description: Returns a list of all values that exist for a specific metadata key across all snapshots.
      operationId: getSnapshotMetadataValues
      parameters:
      - name: key
        in: path
        description: The metadata key to get values for.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataValuesView'
        '400':
          description: Invalid metadata key provided.
      deprecated: false
  /v1/devboxes/disk_snapshots/public/metadata/keys:
    get:
      tags:
      - Devbox
      summary: List available public snapshot metadata keys.
      description: Returns a list of all available metadata keys from public snapshots only that can be used for filtering.
      operationId: getPublicSnapshotMetadataKeys
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataKeysView'
      deprecated: false
  /v1/devboxes/disk_snapshots/public/metadata/keys/{key}/values:
    get:
      tags:
      - Devbox
      summary: List values for a specific public snapshot metadata key.
      description: Returns a list of all values that exist for a specific metadata key across all public snapshots only.
      operationId: getPublicSnapshotMetadataValues
      parameters:
      - name: key
        in: path
        description: The metadata key to get values for from public snapshots.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataValuesView'
        '400':
          description: Invalid metadata key provided.
      deprecated: false
  /v1/devboxes/disk_snapshots/{id}:
    post:
      tags:
      - Devbox
      summary: Update metadata of Disk Snapshot.
      description: Updates disk snapshot metadata via update vs patch. The entire metadata will be replaced.
      operationId: updateDiskSnapshot
      parameters:
      - name: id
        in: path
        description: The Snapshot ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxSnapshotRequest'
        required: false
      responses:
        '200':
          description: Snapshot created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxDiskSnapshotView'
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/disk_snapshots/{id}/delete:
    post:
      tags:
      - Devbox
      summary: Delete a disk snapshot of a Devbox.
      description: Delete a previously taken disk snapshot of a Devbox.
      operationId: deleteSnapshot
      parameters:
      - name: id
        in: path
        description: The ID of the snapshot.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Snapshot deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmptyRecord'
        '404':
          description: Snapshot not found.
        '409':
          description: Only successfully created snapshots can be deleted.
      deprecated: false
  /v1/devboxes/disk_snapshots/{id}/status:
    get:
      tags:
      - Devbox
      summary: Query the status of an asynchronous disk snapshot.
      description: Get the current status of an asynchronous disk snapshot operation, including whether it is still in progress and any error messages if it failed.
      operationId: queryDiskSnapshotAsync
      parameters:
      - name: id
        in: path
        description: The Snapshot ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: Snapshot status retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxSnapshotAsyncStatusView'
        '404':
          description: Snapshot not found.
      deprecated: false
  /v1/devboxes/metadata/keys:
    get:
      tags:
      - Devbox
      summary: List available devbox metadata keys.
      description: Returns a list of all available metadata keys that can be used for filtering devboxes.
      operationId: getDevboxMetadataKeys
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataKeysView'
      deprecated: false
  /v1/devboxes/metadata/keys/{key}/values:
    get:
      tags:
      - Devbox
      summary: List values for a specific devbox metadata key.
      description: Returns a list of all values that exist for a specific metadata key across all devboxes.
      operationId: getDevboxMetadataValues
      parameters:
      - name: key
        in: path
        description: The metadata key to get values for.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataValuesView'
        '400':
          description: Invalid metadata key provided.
      deprecated: false
  /v1/devboxes/{devbox_id}/executions/{execution_id}:
    get:
      tags:
      - Devbox
      summary: Get status of an asynchronous execution on a Devbox.
      description: Get the latest status of a previously launched asynchronous execuction including stdout/error and the exit code if complete.
      operationId: queryAsyncCommand
      parameters:
      - name: devbox_id
        in: path
        description: The Devbox ID
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: execution_id
        in: path
        description: The Execution ID
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: last_n
        in: query
        description: 'Last n lines of standard error / standard out to return (default: 100)'
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxAsyncExecutionDetailView'
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/{devbox_id}/executions/{execution_id}/kill:
    post:
      tags:
      - Devbox
      summary: Kill an asynchronous execution currently running on a devbox
      description: Kill a previously launched asynchronous execution if it is still running by killing the launched process. Optionally kill the entire process group.
      operationId: killAsyncExecution
      parameters:
      - name: devbox_id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: execution_id
        in: path
        description: The Async Execution ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxKillExecutionRequest'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxAsyncExecutionDetailView'
        '404':
          description: Devbox or Execution not found.
      deprecated: false
  /v1/devboxes/{devbox_id}/executions/{execution_id}/send_std_in:
    post:
      tags:
      - Devbox
      summary: Send Content to Std In for a running execution.
      description: Send content to the Std In of a running execution.
      operationId: sendStdIn
      parameters:
      - name: devbox_id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: execution_id
        in: path
        description: The Async Execution ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxSendStdInRequest'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxSendStdInResult'
        '404':
          description: Devbox or Execution not found.
      deprecated: false
  /v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status:
    post:
      tags:
      - Devbox
      summary: Wait for an asynchronous execution to reach a specific status.
      description: Polls the asynchronous execution's status until it reaches one of the desired statuses or times out. Max is 25 seconds.
      operationId: waitForCommandCompletion
      parameters:
      - name: devbox_id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: execution_id
        in: path
        description: The Async Execution ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: last_n
        in: query
        description: 'Last n lines of standard error / standard out to return (default: 100)'
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxWaitForCommandRequest'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxAsyncExecutionDetailView'
        '400':
          description: Invalid status provided or Devbox not in proper state.
        '404':
          description: Devbox or Execution not found.
        '408':
          description: Timeout waiting for command completion.
      deprecated: false
  /v1/devboxes/{id}:
    post:
      tags:
      - Devbox
      summary: Update a Devbox.
      description: Updates a devbox by doing a complete update the existing name,metadata fields. It does not patch partial values.
      operationId: updateDevbox
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxUpdateParameters'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxView'
      deprecated: false
    get:
      tags:
      - Devbox
      summary: Get Devbox details.
      description: Get the latest details and status of a Devbox.
      operationId: getDevbox
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxView'
      deprecated: false
  /v1/devboxes/{id}/create_pty_tunnel:
    post:
      tags:
      - Devbox
      summary: Create an ephemeral PTY tunnel for a running Devbox.
      description: Create an ephemeral authenticated tunnel for terminal access to a running Devbox. This tunnel is not persisted on the Devbox and is generated fresh on each request. The returned auth_token must be passed as a Bearer token in the Authorization header.
      operationId: createDevboxPtyTunnel
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PtyTunnelView'
        '400':
          description: Devbox is not currently running.
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/{id}/create_ssh_key:
    post:
      tags:
      - Devbox
      summary: Create an SSH key for a Devbox
      description: Create an SSH key for a Devbox to enable remote access.
      operationId: createDevboxSshKey
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxCreateSshKeyView'
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/{id}/download_file:
    post:
      tags:
      - Devbox
      summary: Download binary file contents from Devbox filesystem.
      description: Download file contents of any type (binary, text, etc) from a specified path on the Devbox.
      operationId: devboxDownloadFile
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxDownloadFileParameters'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/octet-stream:
              schema:
                format: binary
          headers:
            Content-Type:
              description: application/octet-stream
              required: true
              schema:
                type: string
            Content-Disposition:
              description: attachment
              required: true
              schema:
                type: string
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/{id}/enable_tunnel:
    post:
      tags:
      - Devbox
      summary: Enable a tunnel for a running Devbox.
      description: 'Enable a V2 tunnel for an existing running Devbox. Tunnels provide encrypted URL-based access to the Devbox without exposing internal IDs. The tunnel URL format is: https://{port}-{tunnel_key}.tunnel.runloop.ai


        Each Devbox can have one tunnel.'
      operationId: enableDevboxTunnel
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TunnelConfig'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelView'
        '400':
          description: Devbox is not running or already has a tunnel configured.
        '404':
          description: Devbox not found.
      deprecated: false
  /v1/devboxes/{id}/execute:
    post:
      tags:
      - Devbox
      summary: Execute a command with a known ID, optimistically waiting for completion
      description: 'Execute a command with a known command ID on a devbox, optimistically waiting for it to complete within the specified timeout. If it completes in time, return the result. If not, return a status indicating the command is still running. Note: attach_stdin parameter is not supported; use execute_async for stdin support.'
      operationId: executeCommand
      parameters:
      - name: id
        in: path
        description: The Devbox ID.
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
      - name: last_n
        in: query
        description: 'Last n lines of standard error / standard out to return (default: 100)'
        required: false
        deprecated: false
        allowEmptyValue: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DevboxStartExecutionParameters'
        required: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevboxAsyncExecutionDetailView'
        '404':
          description: Devbox not found.
        '408':
          description: Comm

# --- truncated at 32 KB (97 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/openapi/runloop-ai-devbox-api-openapi.yml