curl --request POST \
--url https://api.agentsfleet.net/v1/runners/me/reports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cached_input_tokens": 1,
"checkpoint": {
"last_event_id": "<string>",
"last_response": "<string>"
},
"event_id": "<string>",
"failure_detail": "<string>",
"fencing_token": 1,
"input_tokens": 1,
"lease_id": "<string>",
"output_tokens": 1,
"response_text": "<string>",
"telemetry": {
"time_to_first_token_ms": 1,
"wall_ms": 1
},
"tokens": 1
}
'import requests
url = "https://api.agentsfleet.net/v1/runners/me/reports"
payload = {
"cached_input_tokens": 1,
"checkpoint": {
"last_event_id": "<string>",
"last_response": "<string>"
},
"event_id": "<string>",
"failure_detail": "<string>",
"fencing_token": 1,
"input_tokens": 1,
"lease_id": "<string>",
"output_tokens": 1,
"response_text": "<string>",
"telemetry": {
"time_to_first_token_ms": 1,
"wall_ms": 1
},
"tokens": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cached_input_tokens: 1,
checkpoint: {last_event_id: '<string>', last_response: '<string>'},
event_id: '<string>',
failure_detail: '<string>',
fencing_token: 1,
input_tokens: 1,
lease_id: '<string>',
output_tokens: 1,
response_text: '<string>',
telemetry: {time_to_first_token_ms: 1, wall_ms: 1},
tokens: 1
})
};
fetch('https://api.agentsfleet.net/v1/runners/me/reports', 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/runners/me/reports",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cached_input_tokens' => 1,
'checkpoint' => [
'last_event_id' => '<string>',
'last_response' => '<string>'
],
'event_id' => '<string>',
'failure_detail' => '<string>',
'fencing_token' => 1,
'input_tokens' => 1,
'lease_id' => '<string>',
'output_tokens' => 1,
'response_text' => '<string>',
'telemetry' => [
'time_to_first_token_ms' => 1,
'wall_ms' => 1
],
'tokens' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.agentsfleet.net/v1/runners/me/reports"
payload := strings.NewReader("{\n \"cached_input_tokens\": 1,\n \"checkpoint\": {\n \"last_event_id\": \"<string>\",\n \"last_response\": \"<string>\"\n },\n \"event_id\": \"<string>\",\n \"failure_detail\": \"<string>\",\n \"fencing_token\": 1,\n \"input_tokens\": 1,\n \"lease_id\": \"<string>\",\n \"output_tokens\": 1,\n \"response_text\": \"<string>\",\n \"telemetry\": {\n \"time_to_first_token_ms\": 1,\n \"wall_ms\": 1\n },\n \"tokens\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.agentsfleet.net/v1/runners/me/reports")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cached_input_tokens\": 1,\n \"checkpoint\": {\n \"last_event_id\": \"<string>\",\n \"last_response\": \"<string>\"\n },\n \"event_id\": \"<string>\",\n \"failure_detail\": \"<string>\",\n \"fencing_token\": 1,\n \"input_tokens\": 1,\n \"lease_id\": \"<string>\",\n \"output_tokens\": 1,\n \"response_text\": \"<string>\",\n \"telemetry\": {\n \"time_to_first_token_ms\": 1,\n \"wall_ms\": 1\n },\n \"tokens\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/runners/me/reports")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cached_input_tokens\": 1,\n \"checkpoint\": {\n \"last_event_id\": \"<string>\",\n \"last_response\": \"<string>\"\n },\n \"event_id\": \"<string>\",\n \"failure_detail\": \"<string>\",\n \"fencing_token\": 1,\n \"input_tokens\": 1,\n \"lease_id\": \"<string>\",\n \"output_tokens\": 1,\n \"response_text\": \"<string>\",\n \"telemetry\": {\n \"time_to_first_token_ms\": 1,\n \"wall_ms\": 1\n },\n \"tokens\": 1\n}"
response = http.request(request)
puts response.read_body{
"ok": true
}{
"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>"
}Report the result of one run
The terminal result of one lease. A report from a holder the fleet has already superseded is refused by the fence and writes nothing. A stale writer therefore cannot land a partial finalize on the current holder’s run.
curl --request POST \
--url https://api.agentsfleet.net/v1/runners/me/reports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cached_input_tokens": 1,
"checkpoint": {
"last_event_id": "<string>",
"last_response": "<string>"
},
"event_id": "<string>",
"failure_detail": "<string>",
"fencing_token": 1,
"input_tokens": 1,
"lease_id": "<string>",
"output_tokens": 1,
"response_text": "<string>",
"telemetry": {
"time_to_first_token_ms": 1,
"wall_ms": 1
},
"tokens": 1
}
'import requests
url = "https://api.agentsfleet.net/v1/runners/me/reports"
payload = {
"cached_input_tokens": 1,
"checkpoint": {
"last_event_id": "<string>",
"last_response": "<string>"
},
"event_id": "<string>",
"failure_detail": "<string>",
"fencing_token": 1,
"input_tokens": 1,
"lease_id": "<string>",
"output_tokens": 1,
"response_text": "<string>",
"telemetry": {
"time_to_first_token_ms": 1,
"wall_ms": 1
},
"tokens": 1
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cached_input_tokens: 1,
checkpoint: {last_event_id: '<string>', last_response: '<string>'},
event_id: '<string>',
failure_detail: '<string>',
fencing_token: 1,
input_tokens: 1,
lease_id: '<string>',
output_tokens: 1,
response_text: '<string>',
telemetry: {time_to_first_token_ms: 1, wall_ms: 1},
tokens: 1
})
};
fetch('https://api.agentsfleet.net/v1/runners/me/reports', 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/runners/me/reports",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cached_input_tokens' => 1,
'checkpoint' => [
'last_event_id' => '<string>',
'last_response' => '<string>'
],
'event_id' => '<string>',
'failure_detail' => '<string>',
'fencing_token' => 1,
'input_tokens' => 1,
'lease_id' => '<string>',
'output_tokens' => 1,
'response_text' => '<string>',
'telemetry' => [
'time_to_first_token_ms' => 1,
'wall_ms' => 1
],
'tokens' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.agentsfleet.net/v1/runners/me/reports"
payload := strings.NewReader("{\n \"cached_input_tokens\": 1,\n \"checkpoint\": {\n \"last_event_id\": \"<string>\",\n \"last_response\": \"<string>\"\n },\n \"event_id\": \"<string>\",\n \"failure_detail\": \"<string>\",\n \"fencing_token\": 1,\n \"input_tokens\": 1,\n \"lease_id\": \"<string>\",\n \"output_tokens\": 1,\n \"response_text\": \"<string>\",\n \"telemetry\": {\n \"time_to_first_token_ms\": 1,\n \"wall_ms\": 1\n },\n \"tokens\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.agentsfleet.net/v1/runners/me/reports")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cached_input_tokens\": 1,\n \"checkpoint\": {\n \"last_event_id\": \"<string>\",\n \"last_response\": \"<string>\"\n },\n \"event_id\": \"<string>\",\n \"failure_detail\": \"<string>\",\n \"fencing_token\": 1,\n \"input_tokens\": 1,\n \"lease_id\": \"<string>\",\n \"output_tokens\": 1,\n \"response_text\": \"<string>\",\n \"telemetry\": {\n \"time_to_first_token_ms\": 1,\n \"wall_ms\": 1\n },\n \"tokens\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.agentsfleet.net/v1/runners/me/reports")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cached_input_tokens\": 1,\n \"checkpoint\": {\n \"last_event_id\": \"<string>\",\n \"last_response\": \"<string>\"\n },\n \"event_id\": \"<string>\",\n \"failure_detail\": \"<string>\",\n \"fencing_token\": 1,\n \"input_tokens\": 1,\n \"lease_id\": \"<string>\",\n \"output_tokens\": 1,\n \"response_text\": \"<string>\",\n \"telemetry\": {\n \"time_to_first_token_ms\": 1,\n \"wall_ms\": 1\n },\n \"tokens\": 1\n}"
response = http.request(request)
puts response.read_body{
"ok": true
}{
"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
The opaque agt_r token minted when the runner enrols (POST /v1/runners)
Body
POST /v1/runners/me/reports — one batched write keyed by event id.
Cumulative cache-read tokens for the whole run.
x >= 0Where to resume this session.
Show child attributes
Show child attributes
The event this report is about.
Human-readable cause, stored only on failure.
Monotonic guard, verified against the fleet's live sequence.
x >= 0Cumulative prompt tokens for the whole run.
x >= 0The lease being reported on.
The binary verdict.
processed, fleet_error Cumulative completion tokens for the whole run.
x >= 0The run's output.
Latency the runner observed.
Show child attributes
Show child attributes
The run's total tokens, for reporting. Billing charges the three cumulative fields below, which settle against the usage ledger.
x >= 0The granular cause when the run failed.
startup_posture, policy_deny, timeout_kill, oom_kill, resource_kill, runner_crash, transport_loss, landlock_deny, lease_expired, renewal_terminate, budget_breach Response
OK
POST /v1/runners/me/reports reply.
Whether the write landed.