curl --request GET \
--url https://api.agentsfleet.net/v1/workspaces/{workspace_id}/fleets/{fleet_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.agentsfleet.net/v1/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/workspaces/{workspace_id}/fleets/{fleet_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{
"budget_used_nanos": 123,
"created_at": 123,
"events_processed": 123,
"id": "<string>",
"name": "<string>",
"pending_approvals": 123,
"source_markdown": "<string>",
"status": "<string>",
"updated_at": 123,
"bundle_content_hash": "<string>",
"trigger_markdown": "<string>",
"triggers": {}
}{
"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
Returns one fleet’s editable source, trigger markdown, bundle pin, trigger list, status, and lifetime counters. The response carries an ETag header over source_markdown and trigger_markdown. Send that value as If-Match when saving source changes to avoid overwriting another operator’s edit.
curl --request GET \
--url https://api.agentsfleet.net/v1/workspaces/{workspace_id}/fleets/{fleet_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.agentsfleet.net/v1/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_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/workspaces/{workspace_id}/fleets/{fleet_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/workspaces/{workspace_id}/fleets/{fleet_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{
"budget_used_nanos": 123,
"created_at": 123,
"events_processed": 123,
"id": "<string>",
"name": "<string>",
"pending_approvals": 123,
"source_markdown": "<string>",
"status": "<string>",
"updated_at": 123,
"bundle_content_hash": "<string>",
"trigger_markdown": "<string>",
"triggers": {}
}{
"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 workspace.
UUIDv7 of the fleet.
Response
OK
GET /v1/workspaces/{workspace_id}/fleets/{fleet_id} — one fleet, whole.
The list row's fields plus the editable surface. Flattened rather than
nested under a summary key, because that is the shape the source editor
already reads.
Lifetime spend, in nanos.
When it was installed.
Lifetime event count.
The fleet's identifier.
Its name in this workspace.
How many approval gates wait on a human's answer for this Fleet.
Counted on the read, so a console showing "N approvals waiting" opens on this one request rather than paging the approvals inbox for a number. The live tail's completion and gate frames carry the same count, so the figure moves without another read.
The authored SKILL.md, verbatim.
Where it stands in its life.
When it last changed.
The bundle a runner materialises support files from.
The authored TRIGGER.md, or null where the bundle carried none.
What may wake this Fleet, as stored. agentsfleet returns the document unchanged.