Runloop · Capability

Runloop Devboxes (devbox)

Runloop devboxes capability covering one Runloop business surface. 40 operations.

Runloop Devboxes (devbox) is a Naftiko capability published by Runloop, one of 17 capabilities the APIs.io network indexes for this provider. It bundles 40 operations across the POST and GET methods rooted at /v1/devboxes.

The capability includes 15 read-only operations and 25 state-changing operations. Lead operation: Create a Devbox. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Runloop, Devboxes, AI Agents, and Sandboxes.

Run with Naftiko RunloopDevboxesAI AgentsSandboxes

What You Can Do

POST
Createdevbox — Create a Devbox.
/v1/devboxes
GET
Listdevboxes — List Devboxes.
/v1/devboxes
GET
Getdevboxdisksnapshotlist — List disk snapshots of a Devbox.
/v1/devboxes/disk_snapshots
GET
Listpublicsnapshots — List public disk snapshots.
/v1/devboxes/disk_snapshots/list_public
GET
Getsnapshotmetadatakeys — List available snapshot metadata keys.
/v1/devboxes/disk_snapshots/metadata/keys
GET
Getsnapshotmetadatavalues — List values for a specific snapshot metadata key.
/v1/devboxes/disk_snapshots/metadata/keys/{key}/values
GET
Getpublicsnapshotmetadatakeys — List available public snapshot metadata keys.
/v1/devboxes/disk_snapshots/public/metadata/keys
GET
Getpublicsnapshotmetadatavalues — List values for a specific public snapshot metadata key.
/v1/devboxes/disk_snapshots/public/metadata/keys/{key}/values
POST
Updatedisksnapshot — Update metadata of Disk Snapshot.
/v1/devboxes/disk_snapshots/{id}
POST
Deletesnapshot — Delete a disk snapshot of a Devbox.
/v1/devboxes/disk_snapshots/{id}/delete
GET
Querydisksnapshotasync — Query the status of an asynchronous disk snapshot.
/v1/devboxes/disk_snapshots/{id}/status
GET
Getdevboxmetadatakeys — List available devbox metadata keys.
/v1/devboxes/metadata/keys
GET
Getdevboxmetadatavalues — List values for a specific devbox metadata key.
/v1/devboxes/metadata/keys/{key}/values
GET
Queryasynccommand — Get status of an asynchronous execution on a Devbox.
/v1/devboxes/{devbox_id}/executions/{execution_id}
POST
Killasyncexecution — Kill an asynchronous execution currently running on a devbox
/v1/devboxes/{devbox_id}/executions/{execution_id}/kill
POST
Sendstdin — Send Content to Std In for a running execution.
/v1/devboxes/{devbox_id}/executions/{execution_id}/send_std_in
POST
Waitforcommandcompletion — Wait for an asynchronous execution to reach a specific status.
/v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status
POST
Updatedevbox — Update a Devbox.
/v1/devboxes/{id}
GET
Getdevbox — Get Devbox details.
/v1/devboxes/{id}
POST
Createdevboxptytunnel — Create an ephemeral PTY tunnel for a running Devbox.
/v1/devboxes/{id}/create_pty_tunnel
POST
Createdevboxsshkey — Create an SSH key for a Devbox
/v1/devboxes/{id}/create_ssh_key
POST
Devboxdownloadfile — Download binary file contents from Devbox filesystem.
/v1/devboxes/{id}/download_file
POST
Enabledevboxtunnel — Enable a tunnel for a running Devbox.
/v1/devboxes/{id}/enable_tunnel
POST
Executecommand — Execute a command with a known ID, optimistically waiting for completion
/v1/devboxes/{id}/execute
POST
Execasynccommand — Asynchronously execute a command via the Devbox shell
/v1/devboxes/{id}/execute_async
POST
Execsynccommand — (Deprecated, please use /execute_async) Synchronously execute a shell command on a Devbox
/v1/devboxes/{id}/execute_sync
POST
Keepalivedevbox — Reset the idle timer of a running Devbox.
/v1/devboxes/{id}/keep_alive
GET
Listdevboxlogs — Get Devbox logs.
/v1/devboxes/{id}/logs
GET
Taildevboxlogs — Live Tail Devbox Logs.
/v1/devboxes/{id}/logs/tail
POST
Devboxreadfilecontents — Read text file contents from Devbox filesystem.
/v1/devboxes/{id}/read_file_contents
POST
Removedevboxtunnel — Remove a tunnel from the Devbox.
/v1/devboxes/{id}/remove_tunnel
POST
Resumedevbox — Resume a suspended Devbox
/v1/devboxes/{id}/resume
POST
Shutdowndevbox — Shutdown a running Devbox.
/v1/devboxes/{id}/shutdown
POST
Createdisksnapshot — Synchronously create a disk snapshot of a running Devbox.
/v1/devboxes/{id}/snapshot_disk
POST
Createdisksnapshotasync — Start an asynchronous disk snapshot of a running Devbox.
/v1/devboxes/{id}/snapshot_disk_async
POST
Suspenddevbox — Suspend a running Devbox
/v1/devboxes/{id}/suspend
POST
Devboxuploadfile — Upload binary file contents to Devbox filesystem.
/v1/devboxes/{id}/upload_file
GET
Getdevboxresourceusage — Get resource usage for a Devbox.
/v1/devboxes/{id}/usage
POST
Waitfordevboxstatus — Wait for a Devbox to reach one of the specified statuses.
/v1/devboxes/{id}/wait_for_status
POST
Devboxwritefilecontents — Write text file contents to Devbox filesystem.
/v1/devboxes/{id}/write_file_contents

MCP Tools

runloop-devbox-devboxes-createDevbox

Create a Devbox.

runloop-devbox-devboxes-listDevboxes

List Devboxes.

read-only idempotent
runloop-devbox-devboxes-getDevboxDiskSnapshotList

List disk snapshots of a Devbox.

read-only idempotent
runloop-devbox-devboxes-listPublicSnapshots

List public disk snapshots.

read-only idempotent
runloop-devbox-devboxes-getSnapshotMetadataKeys

List available snapshot metadata keys.

read-only idempotent
runloop-devbox-devboxes-getSnapshotMetadataValues

List values for a specific snapshot metadata key.

read-only idempotent
runloop-devbox-devboxes-getPublicSnapshotMetadataKeys

List available public snapshot metadata keys.

read-only idempotent
runloop-devbox-devboxes-getPublicSnapshotMetadataValues

List values for a specific public snapshot metadata key.

read-only idempotent
runloop-devbox-devboxes-updateDiskSnapshot

Update metadata of Disk Snapshot.

runloop-devbox-devboxes-deleteSnapshot

Delete a disk snapshot of a Devbox.

runloop-devbox-devboxes-queryDiskSnapshotAsync

Query the status of an asynchronous disk snapshot.

read-only idempotent
runloop-devbox-devboxes-getDevboxMetadataKeys

List available devbox metadata keys.

read-only idempotent
runloop-devbox-devboxes-getDevboxMetadataValues

List values for a specific devbox metadata key.

read-only idempotent
runloop-devbox-devboxes-queryAsyncCommand

Get status of an asynchronous execution on a Devbox.

read-only idempotent
runloop-devbox-devboxes-killAsyncExecution

Kill an asynchronous execution currently running on a devbox

runloop-devbox-devboxes-sendStdIn

Send Content to Std In for a running execution.

runloop-devbox-devboxes-waitForCommandCompletion

Wait for an asynchronous execution to reach a specific status.

runloop-devbox-devboxes-updateDevbox

Update a Devbox.

runloop-devbox-devboxes-getDevbox

Get Devbox details.

read-only idempotent
runloop-devbox-devboxes-createDevboxPtyTunnel

Create an ephemeral PTY tunnel for a running Devbox.

runloop-devbox-devboxes-createDevboxSshKey

Create an SSH key for a Devbox

runloop-devbox-devboxes-devboxDownloadFile

Download binary file contents from Devbox filesystem.

runloop-devbox-devboxes-enableDevboxTunnel

Enable a tunnel for a running Devbox.

runloop-devbox-devboxes-executeCommand

Execute a command with a known ID, optimistically waiting for completion

runloop-devbox-devboxes-execAsyncCommand

Asynchronously execute a command via the Devbox shell

runloop-devbox-devboxes-execSyncCommand

(Deprecated, please use /execute_async) Synchronously execute a shell command on a Devbox

runloop-devbox-devboxes-keepAliveDevbox

Reset the idle timer of a running Devbox.

runloop-devbox-devboxes-listDevboxLogs

Get Devbox logs.

read-only idempotent
runloop-devbox-devboxes-tailDevboxLogs

Live Tail Devbox Logs.

read-only idempotent
runloop-devbox-devboxes-devboxReadFileContents

Read text file contents from Devbox filesystem.

runloop-devbox-devboxes-removeDevboxTunnel

Remove a tunnel from the Devbox.

runloop-devbox-devboxes-resumeDevbox

Resume a suspended Devbox

runloop-devbox-devboxes-shutdownDevbox

Shutdown a running Devbox.

runloop-devbox-devboxes-createDiskSnapshot

Synchronously create a disk snapshot of a running Devbox.

runloop-devbox-devboxes-createDiskSnapshotAsync

Start an asynchronous disk snapshot of a running Devbox.

runloop-devbox-devboxes-suspendDevbox

Suspend a running Devbox

runloop-devbox-devboxes-devboxUploadFile

Upload binary file contents to Devbox filesystem.

runloop-devbox-devboxes-getDevboxResourceUsage

Get resource usage for a Devbox.

read-only idempotent
runloop-devbox-devboxes-waitForDevboxStatus

Wait for a Devbox to reach one of the specified statuses.

runloop-devbox-devboxes-devboxWriteFileContents

Write text file contents to Devbox filesystem.

Capability Spec

devbox-devboxes.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Runloop Devboxes (devbox)
  description: Runloop devboxes capability covering one Runloop business surface. 40 operations.
  tags:
  - Runloop
  - Devboxes
  - AI Agents
  - Sandboxes
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    RUNLOOP_API_KEY: RUNLOOP_API_KEY
capability:
  consumes:
  - type: http
    namespace: devbox-devboxes
    baseUri: https://api.runloop.ai
    description: Runloop devboxes business capability. Self-contained, no shared references.
    resources:
    - name: v1-devboxes
      path: /v1/devboxes
      operations:
      - name: createDevbox
        method: POST
        description: Create a Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: listDevboxes
        method: GET
        description: List Devboxes.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: status
          in: query
          type: string
          description: Filter by status
          required: false
        - name: limit
          in: query
          type: integer
          description: The limit of items to return. Default is 20. Max is 5000.
          required: false
        - name: starting_after
          in: query
          type: string
          description: Load the next page of data starting after the item with the given ID.
          required: false
        - name: include_total_count
          in: query
          type: boolean
          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
    - name: v1-devboxes-disk-snapshots
      path: /v1/devboxes/disk_snapshots
      operations:
      - name: getDevboxDiskSnapshotList
        method: GET
        description: List disk snapshots of a Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: devbox_id
          in: query
          type: string
          description: Devbox ID to filter by.
          required: false
        - name: source_blueprint_id
          in: query
          type: string
          description: Source Blueprint ID to filter snapshots by.
          required: false
        - name: metadata[key]
          in: query
          type: string
          description: Filter snapshots by metadata key-value pair. Can be used multiple times for different keys.
          required: false
        - name: metadata[key][in]
          in: query
          type: string
          description: Filter snapshots by metadata key with multiple possible values (OR condition).
          required: false
        - name: limit
          in: query
          type: integer
          description: The limit of items to return. Default is 20. Max is 5000.
          required: false
        - name: starting_after
          in: query
          type: string
          description: Load the next page of data starting after the item with the given ID.
          required: false
        - name: include_total_count
          in: query
          type: boolean
          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
    - name: v1-devboxes-disk-snapshots-list-public
      path: /v1/devboxes/disk_snapshots/list_public
      operations:
      - name: listPublicSnapshots
        method: GET
        description: List public disk snapshots.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: devbox_id
          in: query
          type: string
          description: Devbox ID to filter by.
          required: false
        - name: source_blueprint_id
          in: query
          type: string
          description: Source Blueprint ID to filter snapshots by.
          required: false
        - name: metadata[key]
          in: query
          type: string
          description: Filter snapshots by metadata key-value pair. Can be used multiple times for different keys.
          required: false
        - name: metadata[key][in]
          in: query
          type: string
          description: Filter snapshots by metadata key with multiple possible values (OR condition).
          required: false
        - name: limit
          in: query
          type: integer
          description: The limit of items to return. Default is 20. Max is 5000.
          required: false
        - name: starting_after
          in: query
          type: string
          description: Load the next page of data starting after the item with the given ID.
          required: false
        - name: include_total_count
          in: query
          type: boolean
          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
    - name: v1-devboxes-disk-snapshots-metadata-keys
      path: /v1/devboxes/disk_snapshots/metadata/keys
      operations:
      - name: getSnapshotMetadataKeys
        method: GET
        description: List available snapshot metadata keys.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: _
          in: query
          type: string
          description: ''
          required: false
    - name: v1-devboxes-disk-snapshots-metadata-keys-key-values
      path: /v1/devboxes/disk_snapshots/metadata/keys/{key}/values
      operations:
      - name: getSnapshotMetadataValues
        method: GET
        description: List values for a specific snapshot metadata key.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: key
          in: path
          type: string
          description: The metadata key to get values for.
          required: true
    - name: v1-devboxes-disk-snapshots-public-metadata-keys
      path: /v1/devboxes/disk_snapshots/public/metadata/keys
      operations:
      - name: getPublicSnapshotMetadataKeys
        method: GET
        description: List available public snapshot metadata keys.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: _
          in: query
          type: string
          description: ''
          required: false
    - name: v1-devboxes-disk-snapshots-public-metadata-keys-key-values
      path: /v1/devboxes/disk_snapshots/public/metadata/keys/{key}/values
      operations:
      - name: getPublicSnapshotMetadataValues
        method: GET
        description: List values for a specific public snapshot metadata key.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: key
          in: path
          type: string
          description: The metadata key to get values for from public snapshots.
          required: true
    - name: v1-devboxes-disk-snapshots-id
      path: /v1/devboxes/disk_snapshots/{id}
      operations:
      - name: updateDiskSnapshot
        method: POST
        description: Update metadata of Disk Snapshot.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Snapshot ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-disk-snapshots-id-delete
      path: /v1/devboxes/disk_snapshots/{id}/delete
      operations:
      - name: deleteSnapshot
        method: POST
        description: Delete a disk snapshot of a Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The ID of the snapshot.
          required: true
    - name: v1-devboxes-disk-snapshots-id-status
      path: /v1/devboxes/disk_snapshots/{id}/status
      operations:
      - name: queryDiskSnapshotAsync
        method: GET
        description: Query the status of an asynchronous disk snapshot.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Snapshot ID.
          required: true
    - name: v1-devboxes-metadata-keys
      path: /v1/devboxes/metadata/keys
      operations:
      - name: getDevboxMetadataKeys
        method: GET
        description: List available devbox metadata keys.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: _
          in: query
          type: string
          description: ''
          required: false
    - name: v1-devboxes-metadata-keys-key-values
      path: /v1/devboxes/metadata/keys/{key}/values
      operations:
      - name: getDevboxMetadataValues
        method: GET
        description: List values for a specific devbox metadata key.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: key
          in: path
          type: string
          description: The metadata key to get values for.
          required: true
    - name: v1-devboxes-devbox-id-executions-execution-id
      path: /v1/devboxes/{devbox_id}/executions/{execution_id}
      operations:
      - name: queryAsyncCommand
        method: GET
        description: Get status of an asynchronous execution on a Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: devbox_id
          in: path
          type: string
          description: The Devbox ID
          required: true
        - name: execution_id
          in: path
          type: string
          description: The Execution ID
          required: true
        - name: last_n
          in: query
          type: string
          description: 'Last n lines of standard error / standard out to return (default: 100)'
          required: false
    - name: v1-devboxes-devbox-id-executions-execution-id-kill
      path: /v1/devboxes/{devbox_id}/executions/{execution_id}/kill
      operations:
      - name: killAsyncExecution
        method: POST
        description: Kill an asynchronous execution currently running on a devbox
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: devbox_id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: execution_id
          in: path
          type: string
          description: The Async Execution ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-devbox-id-executions-execution-id-send-std-in
      path: /v1/devboxes/{devbox_id}/executions/{execution_id}/send_std_in
      operations:
      - name: sendStdIn
        method: POST
        description: Send Content to Std In for a running execution.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: devbox_id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: execution_id
          in: path
          type: string
          description: The Async Execution ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-devbox-id-executions-execution-id-wait-for-status
      path: /v1/devboxes/{devbox_id}/executions/{execution_id}/wait_for_status
      operations:
      - name: waitForCommandCompletion
        method: POST
        description: Wait for an asynchronous execution to reach a specific status.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: devbox_id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: execution_id
          in: path
          type: string
          description: The Async Execution ID.
          required: true
        - name: last_n
          in: query
          type: string
          description: 'Last n lines of standard error / standard out to return (default: 100)'
          required: false
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id
      path: /v1/devboxes/{id}
      operations:
      - name: updateDevbox
        method: POST
        description: Update a Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: getDevbox
        method: GET
        description: Get Devbox details.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-create-pty-tunnel
      path: /v1/devboxes/{id}/create_pty_tunnel
      operations:
      - name: createDevboxPtyTunnel
        method: POST
        description: Create an ephemeral PTY tunnel for a running Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-create-ssh-key
      path: /v1/devboxes/{id}/create_ssh_key
      operations:
      - name: createDevboxSshKey
        method: POST
        description: Create an SSH key for a Devbox
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-download-file
      path: /v1/devboxes/{id}/download_file
      operations:
      - name: devboxDownloadFile
        method: POST
        description: Download binary file contents from Devbox filesystem.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-enable-tunnel
      path: /v1/devboxes/{id}/enable_tunnel
      operations:
      - name: enableDevboxTunnel
        method: POST
        description: Enable a tunnel for a running Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-execute
      path: /v1/devboxes/{id}/execute
      operations:
      - name: executeCommand
        method: POST
        description: Execute a command with a known ID, optimistically waiting for completion
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: last_n
          in: query
          type: string
          description: 'Last n lines of standard error / standard out to return (default: 100)'
          required: false
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-execute-async
      path: /v1/devboxes/{id}/execute_async
      operations:
      - name: execAsyncCommand
        method: POST
        description: Asynchronously execute a command via the Devbox shell
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-execute-sync
      path: /v1/devboxes/{id}/execute_sync
      operations:
      - name: execSyncCommand
        method: POST
        description: (Deprecated, please use /execute_async) Synchronously execute a shell command on a Devbox
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-keep-alive
      path: /v1/devboxes/{id}/keep_alive
      operations:
      - name: keepAliveDevbox
        method: POST
        description: Reset the idle timer of a running Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-logs
      path: /v1/devboxes/{id}/logs
      operations:
      - name: listDevboxLogs
        method: GET
        description: Get Devbox logs.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: execution_id
          in: query
          type: string
          description: ID of execution to filter logs by.
          required: false
        - name: shell_name
          in: query
          type: string
          description: Shell Name to filter logs by.
          required: false
    - name: v1-devboxes-id-logs-tail
      path: /v1/devboxes/{id}/logs/tail
      operations:
      - name: tailDevboxLogs
        method: GET
        description: Live Tail Devbox Logs.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: execution_id
          in: query
          type: string
          description: ID of execution to filter logs by.
          required: false
        - name: shell_name
          in: query
          type: string
          description: Shell Name to filter logs by.
          required: false
    - name: v1-devboxes-id-read-file-contents
      path: /v1/devboxes/{id}/read_file_contents
      operations:
      - name: devboxReadFileContents
        method: POST
        description: Read text file contents from Devbox filesystem.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-remove-tunnel
      path: /v1/devboxes/{id}/remove_tunnel
      operations:
      - name: removeDevboxTunnel
        method: POST
        description: Remove a tunnel from the Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-resume
      path: /v1/devboxes/{id}/resume
      operations:
      - name: resumeDevbox
        method: POST
        description: Resume a suspended Devbox
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-shutdown
      path: /v1/devboxes/{id}/shutdown
      operations:
      - name: shutdownDevbox
        method: POST
        description: Shutdown a running Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: force
          in: query
          type: string
          description: If true, force shutdown even if snapshots are in progress. Defaults to false.
          required: false
    - name: v1-devboxes-id-snapshot-disk
      path: /v1/devboxes/{id}/snapshot_disk
      operations:
      - name: createDiskSnapshot
        method: POST
        description: Synchronously create a disk snapshot of a running Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-snapshot-disk-async
      path: /v1/devboxes/{id}/snapshot_disk_async
      operations:
      - name: createDiskSnapshotAsync
        method: POST
        description: Start an asynchronous disk snapshot of a running Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-suspend
      path: /v1/devboxes/{id}/suspend
      operations:
      - name: suspendDevbox
        method: POST
        description: Suspend a running Devbox
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-upload-file
      path: /v1/devboxes/{id}/upload_file
      operations:
      - name: devboxUploadFile
        method: POST
        description: Upload binary file contents to Devbox filesystem.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-usage
      path: /v1/devboxes/{id}/usage
      operations:
      - name: getDevboxResourceUsage
        method: GET
        description: Get resource usage for a Devbox.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
    - name: v1-devboxes-id-wait-for-status
      path: /v1/devboxes/{id}/wait_for_status
      operations:
      - name: waitForDevboxStatus
        method: POST
        description: Wait for a Devbox to reach one of the specified statuses.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-devboxes-id-write-file-contents
      path: /v1/devboxes/{id}/write_file_contents
      operations:
      - name: devboxWriteFileContents
        method: POST
        description: Write text file contents to Devbox filesystem.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: The Devbox ID.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    authentication:
      type: bearer
      value: '{{env.RUNLOOP_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: devbox-devboxes-rest
    port: 8080
    description: REST adapter for Runloop devboxes. One Spectral-compliant resource per consumed operation.
    resources:
    - path: /v1/devboxes
      name: v1-devboxes
      description: REST surface for v1-devboxes.
      operations:
      - method: POST
        name: createDevbox
        description: Create a Devbox.
        call: devbox-devboxes.createDevbox
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: listDevboxes
        description: List Devboxes.
        call: devbox-devboxes.listDevboxes
        with:
          status: rest.params.status
          limit: rest.params.limit
          starting_after: rest.params.starting_after
          include_total_count: rest.params.include_total_count
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots
      name: v1-devboxes-disk-snapshots
      description: REST surface for v1-devboxes-disk-snapshots.
      operations:
      - method: GET
        name: getDevboxDiskSnapshotList
        description: List disk snapshots of a Devbox.
        call: devbox-devboxes.getDevboxDiskSnapshotList
        with:
          devbox_id: rest.params.devbox_id
          source_blueprint_id: rest.params.source_blueprint_id
          metadata[key]: rest.params.metadata[key]
          metadata[key][in]: rest.params.metadata[key][in]
          limit: rest.params.limit
          starting_after: rest.params.starting_after
          include_total_count: rest.params.include_total_count
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots/list_public
      name: v1-devboxes-disk-snapshots-list-public
      description: REST surface for v1-devboxes-disk-snapshots-list-public.
      operations:
      - method: GET
        name: listPublicSnapshots
        description: List public disk snapshots.
        call: devbox-devboxes.listPublicSnapshots
        with:
          devbox_id: rest.params.devbox_id
          source_blueprint_id: rest.params.source_blueprint_id
          metadata[key]: rest.params.metadata[key]
          metadata[key][in]: rest.params.metadata[key][in]
          limit: rest.params.limit
          starting_after: rest.params.starting_after
          include_total_count: rest.params.include_total_count
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots/metadata/keys
      name: v1-devboxes-disk-snapshots-metadata-keys
      description: REST surface for v1-devboxes-disk-snapshots-metadata-keys.
      operations:
      - method: GET
        name: getSnapshotMetadataKeys
        description: List available snapshot metadata keys.
        call: devbox-devboxes.getSnapshotMetadataKeys
        with:
          _: rest.params._
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots/metadata/keys/{key}/values
      name: v1-devboxes-disk-snapshots-metadata-keys-key-values
      description: REST surface for v1-devboxes-disk-snapshots-metadata-keys-key-values.
      operations:
      - method: GET
        name: getSnapshotMetadataValues
        description: List values for a specific snapshot metadata key.
        call: devbox-devboxes.getSnapshotMetadataValues
        with:
          key: rest.params.key
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots/public/metadata/keys
      name: v1-devboxes-disk-snapshots-public-metadata-keys
      description: REST surface for v1-devboxes-disk-snapshots-public-metadata-keys.
      operations:
      - method: GET
        name: getPublicSnapshotMetadataKeys
        description: List available public snapshot metadata keys.
        call: devbox-devboxes.getPublicSnapshotMetadataKeys
        with:
          _: rest.params._
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots/public/metadata/keys/{key}/values
      name: v1-devboxes-disk-snapshots-public-metadata-keys-key-values
      description: REST surface for v1-devboxes-disk-snapshots-public-metadata-keys-key-values.
      operations:
      - method: GET
        name: getPublicSnapshotMetadataValues
        description: List values for a specific public snapshot metadata key.
        call: devbox-devboxes.getPublicSnapshotMetadataValues
        with:
          key: rest.params.key
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/devboxes/disk_snapshots/{id}
      name: v1-devboxes-disk-snapshots-id
      description: REST surface for v1-devboxes-disk-snapshots-id.
      operations:
      - method: POST
        name: updateDiskSnapshot
        description: Update metadata of Disk Snapshot.
        call: devbox-devboxes.updateDiskSnapshot
        with:
          id: rest.params.id
 

# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/runloop-ai/refs/heads/main/capabilities/devbox-devboxes.yaml