Live forwarding status: per-destination counters plus any online poller that cannot supply the original bytes, so a byte-exact destination silently degrading is visible in the UI.
const url = 'https://example.com/api/v1/forwarding/status';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/forwarding/status \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Per-destination counters and the pollers that cannot feed them
The GET /api/v1/forwarding/status body.
object
Runtime counters, one entry per running destination.
A destination’s runtime status, as the API serializes it.
object
Whether the circuit breaker is currently open (sends are being dropped fast).
Messages dropped without being sent (full queue, rate cap, or open circuit).
Failed sends.
Messages the filter rejected.
Destination id.
Last error text, truncated.
Last successful send, Unix ms; None if there has not been one.
Destination name.
Messages currently queued for this destination.
Messages sent re-rendered because no raw payload was available, despite verbatim.
Messages handed to the collector.
Online pollers that relay no flow datagrams at all, so a flow destination fed only by these receives nothing.
Online pollers that cannot attach the original bytes, so their traffic degrades to rendered.
False on an HA standby, whose dispatcher is not running (destination CRUD still works).
Examplegenerated
{ "destinations": [ { "circuit_open": true, "dropped": 1, "errors": 1, "filtered": 1, "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "last_error": "example", "last_success_unix_ms": 1, "name": "example", "queue_depth": 1, "rendered": 1, "sent": 1 } ], "pollers_without_flow_relay": [ "example" ], "pollers_without_raw_capture": [ "example" ], "sending": true}No valid bearer token
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Role lacks the ManageConfig permission
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Skeleton mode: no forwarder
The ADR-019 envelope every failure renders as. pub(crate) and schema-bearing so the OpenAPI
document can name one error shape for every endpoint (ADR-035) instead of leaving 4xx/5xx bodies
undescribed — a client that has to guess the failure shape ends up parsing the success shape and
reading undefined.
object
object
Stable machine-readable code. Clients branch on this, never on the message.
Operator-facing sentence. Safe to display; never carries an internal error’s own text.
Examplegenerated
{ "error": { "code": "example", "message": "example" }}