import Runloop from '@runloop/api-client';
const client = new Runloop({
bearerToken: process.env['RUNLOOP_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const devboxView of client.devboxes.list()) {
console.log(devboxView.id);
}import os
from runloop_api_client import Runloop
client = Runloop(
bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
)
page = client.devboxes.list()
page = page.devboxes[0]
print(page.id)curl --request GET \
--url https://api.runloop.ai/v1/devboxes \
--header 'Authorization: Bearer <token>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.runloop.ai/v1/devboxes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.runloop.ai/v1/devboxes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.runloop.ai/v1/devboxes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runloop.ai/v1/devboxes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"devboxes": [
{
"id": "<string>",
"status": "scheduled",
"create_time_ms": 123,
"end_time_ms": 123,
"metadata": {},
"launch_parameters": {
"launch_commands": [
"<string>"
],
"resource_size_request": "X_SMALL",
"available_ports": [
123
],
"keep_alive_time_seconds": 123,
"after_idle": {
"idle_time_seconds": 123,
"on_idle": "shutdown"
},
"custom_cpu_cores": 123,
"custom_gb_memory": 123,
"custom_disk_size": 123,
"architecture": "x86_64",
"user_parameters": {
"username": "<string>",
"uid": 123
},
"required_services": [
"<string>"
],
"network_policy_id": "<string>",
"lifecycle": {
"after_idle": {
"idle_time_seconds": 123,
"on_idle": "shutdown"
},
"resume_triggers": {
"http": true,
"axon_event": true
},
"lifecycle_hooks": {
"suspend_commands": [
"<string>"
],
"suspend_deadline_ms": 123
}
},
"provisioning_tier": "standard"
},
"capabilities": [
"unknown"
],
"state_transitions": [
{
"status": "scheduled",
"transition_time_ms": {},
"failure_reason": "<string>"
}
],
"name": "<string>",
"initiator_type": "unknown",
"initiator_id": "<string>",
"blueprint_id": "<string>",
"snapshot_id": "<string>",
"failure_reason": "out_of_memory",
"shutdown_reason": "api_shutdown",
"tunnel": {
"tunnel_key": "<string>",
"auth_mode": "open",
"create_time_ms": 123,
"http_keep_alive": true,
"wake_on_http": true,
"auth_token": "<string>"
},
"gateway_specs": {},
"mcp_specs": {}
}
],
"has_more": true,
"total_count": 123
}List Devboxes.
List all Devboxes while optionally filtering by status.
import Runloop from '@runloop/api-client';
const client = new Runloop({
bearerToken: process.env['RUNLOOP_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const devboxView of client.devboxes.list()) {
console.log(devboxView.id);
}import os
from runloop_api_client import Runloop
client = Runloop(
bearer_token=os.environ.get("RUNLOOP_API_KEY"), # This is the default and can be omitted
)
page = client.devboxes.list()
page = page.devboxes[0]
print(page.id)curl --request GET \
--url https://api.runloop.ai/v1/devboxes \
--header 'Authorization: Bearer <token>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.runloop.ai/v1/devboxes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.runloop.ai/v1/devboxes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.runloop.ai/v1/devboxes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runloop.ai/v1/devboxes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"devboxes": [
{
"id": "<string>",
"status": "scheduled",
"create_time_ms": 123,
"end_time_ms": 123,
"metadata": {},
"launch_parameters": {
"launch_commands": [
"<string>"
],
"resource_size_request": "X_SMALL",
"available_ports": [
123
],
"keep_alive_time_seconds": 123,
"after_idle": {
"idle_time_seconds": 123,
"on_idle": "shutdown"
},
"custom_cpu_cores": 123,
"custom_gb_memory": 123,
"custom_disk_size": 123,
"architecture": "x86_64",
"user_parameters": {
"username": "<string>",
"uid": 123
},
"required_services": [
"<string>"
],
"network_policy_id": "<string>",
"lifecycle": {
"after_idle": {
"idle_time_seconds": 123,
"on_idle": "shutdown"
},
"resume_triggers": {
"http": true,
"axon_event": true
},
"lifecycle_hooks": {
"suspend_commands": [
"<string>"
],
"suspend_deadline_ms": 123
}
},
"provisioning_tier": "standard"
},
"capabilities": [
"unknown"
],
"state_transitions": [
{
"status": "scheduled",
"transition_time_ms": {},
"failure_reason": "<string>"
}
],
"name": "<string>",
"initiator_type": "unknown",
"initiator_id": "<string>",
"blueprint_id": "<string>",
"snapshot_id": "<string>",
"failure_reason": "out_of_memory",
"shutdown_reason": "api_shutdown",
"tunnel": {
"tunnel_key": "<string>",
"auth_mode": "open",
"create_time_ms": 123,
"http_keep_alive": true,
"wake_on_http": true,
"auth_token": "<string>"
},
"gateway_specs": {},
"mcp_specs": {}
}
],
"has_more": true,
"total_count": 123
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Filter by status The status of the Devbox.
scheduled: Deprecated. The Devbox is waiting for infrastructure allocation to start. Use queued. queued: The Devbox is waiting for infrastructure allocation to start. provisioning: Runloop is allocating and booting the necessary infrastructure resources. initializing: Runloop defined boot scripts are running to enable the environment for interaction. running: The Devbox is ready for interaction. suspending: The Devbox disk is being snapshotted as part of suspension. suspended: The Devbox disk is saved and no more active compute is being used for the Devbox. resuming: The Devbox disk is being loaded as part of booting a suspended Devbox. failure: The Devbox failed as part of booting or running user requested actions. shutdown: The Devbox was successfully shutdown and no more active compute is being used.
scheduled, queued, provisioning, initializing, running, suspending, suspended, resuming, failure, shutdown The limit of items to return. Default is 20. Max is 5000.
Load the next page of data starting after the item with the given ID.
If true (default), includes total_count in the response. Set to false to skip the count query for better performance on large datasets.
Was this page helpful?
