curl --request GET \
--url https://api.agentsfleet.net/v1/fleets/runners/{runner_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.agentsfleet.net/v1/fleets/runners/{runner_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.agentsfleet.net/v1/fleets/runners/{runner_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.agentsfleet.net/v1/fleets/runners/{runner_id}",
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.agentsfleet.net/v1/fleets/runners/{runner_id}"
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.agentsfleet.net/v1/fleets/runners/{runner_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/fleets/runners/{runner_id}")
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{
"admin_state": "active",
"created_at": 123,
"degraded": true,
"host_id": "<string>",
"id": "<string>",
"labels": [
"<string>"
],
"last_seen_at": 123,
"liveness": "registered",
"sandbox_tier": "<string>",
"active_fleet_count": 123,
"active_lease_count": 123,
"leases_acquired": 123,
"leases_expired": 123,
"leases_failed": 123,
"leases_succeeded": 123,
"achievable": {
"bubblewrap": true,
"cgroup_controllers": [
"<string>"
],
"egress_enforcement": true,
"landlock": true,
"seccomp": true
},
"assigned_policy": {
"extra_binds": [
{
"mode": "read_only",
"note": "<string>",
"path": "<string>"
}
],
"network_policy": "allow_all",
"registry_allowlist": [
"<string>"
],
"sandbox_tier": "landlock_full",
"worker_count": 1
},
"degraded_reason": "<string>",
"selftest": {
"all_ok": true,
"checks": [
{
"detail": "<string>",
"name": "<string>",
"ok": true
}
],
"network_policy": "<string>",
"sandbox_tier": "<string>"
},
"selftest_completed_at": 123,
"selftest_requested_at": 123
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}Get a fleet runner
Platform-admin read of a single runner. Carries the summary fields, a live-work snapshot, and lifetime counters from durable lease and event rows — never from in-memory metrics. The runner detail page loads from this read.
curl --request GET \
--url https://api.agentsfleet.net/v1/fleets/runners/{runner_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.agentsfleet.net/v1/fleets/runners/{runner_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.agentsfleet.net/v1/fleets/runners/{runner_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.agentsfleet.net/v1/fleets/runners/{runner_id}",
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.agentsfleet.net/v1/fleets/runners/{runner_id}"
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.agentsfleet.net/v1/fleets/runners/{runner_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/fleets/runners/{runner_id}")
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{
"admin_state": "active",
"created_at": 123,
"degraded": true,
"host_id": "<string>",
"id": "<string>",
"labels": [
"<string>"
],
"last_seen_at": 123,
"liveness": "registered",
"sandbox_tier": "<string>",
"active_fleet_count": 123,
"active_lease_count": 123,
"leases_acquired": 123,
"leases_expired": 123,
"leases_failed": 123,
"leases_succeeded": 123,
"achievable": {
"bubblewrap": true,
"cgroup_controllers": [
"<string>"
],
"egress_enforcement": true,
"landlock": true,
"seccomp": true
},
"assigned_policy": {
"extra_binds": [
{
"mode": "read_only",
"note": "<string>",
"path": "<string>"
}
],
"network_policy": "allow_all",
"registry_allowlist": [
"<string>"
],
"sandbox_tier": "landlock_full",
"worker_count": 1
},
"degraded_reason": "<string>",
"selftest": {
"all_ok": true,
"checks": [
{
"detail": "<string>",
"name": "<string>",
"ok": true
}
],
"network_policy": "<string>",
"sandbox_tier": "<string>"
},
"selftest_completed_at": 123,
"selftest_requested_at": 123
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}{
"detail": "<string>",
"docs_uri": "<string>",
"error_code": "<string>",
"request_id": "<string>",
"title": "<string>",
"action_id": "<string>",
"current_state": "<string>",
"etag": "<string>",
"gate_id": "<string>",
"missing_secrets": [
"<string>"
],
"outcome": "<string>",
"resolved_at": 123,
"resolved_by": "<string>",
"user_message": "<string>"
}Authorizations
Obtain a token via the CLI auth flow (POST /v1/auth/sessions) or GitHub OAuth
Path Parameters
UUIDv7 of the runner.
Response
OK
One runner with its live and lifetime counters.
Operator-controlled admission state.
active, cordoned, draining, drained, revoked Enrolment instant in epoch milliseconds.
Whether the assignment exceeds the reported capability.
Stable host identity supplied at enrolment.
Canonical runner identifier.
Placement labels.
Last heartbeat instant in epoch milliseconds.
Runtime state derived from heartbeat and leases.
registered, busy, online, offline Assigned isolation tier spelling.
Fleets represented by live leases.
Live leases currently held.
Lifetime acquired count.
Lifetime expired count.
Lifetime failed count.
Lifetime successful count.
Capability report most recently supplied by the host.
Show child attributes
Show child attributes
Policy currently assigned to the host.
Show child attributes
Show child attributes
Stored explanation for a degraded verdict.
Latest complete self-test report.
Show child attributes
Show child attributes
Latest self-test completion instant.
Outstanding self-test request instant.