Skip to content

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.

GET
/api/v1/forwarding/status
curl --request GET \
--url https://example.com/api/v1/forwarding/status \
--header 'Authorization: Bearer <token>'

Per-destination counters and the pollers that cannot feed them

Media typeapplication/json

The GET /api/v1/forwarding/status body.

object
destinations
required

Runtime counters, one entry per running destination.

Array<object>

A destination’s runtime status, as the API serializes it.

object
circuit_open
required

Whether the circuit breaker is currently open (sends are being dropped fast).

boolean
dropped
required

Messages dropped without being sent (full queue, rate cap, or open circuit).

integer format: int64
errors
required

Failed sends.

integer format: int64
filtered
required

Messages the filter rejected.

integer format: int64
id
required

Destination id.

string format: uuid
last_error

Last error text, truncated.

string | null
last_success_unix_ms

Last successful send, Unix ms; None if there has not been one.

integer | null format: int64
name
required

Destination name.

string
queue_depth
required

Messages currently queued for this destination.

integer format: int64
rendered
required

Messages sent re-rendered because no raw payload was available, despite verbatim.

integer format: int64
sent
required

Messages handed to the collector.

integer format: int64
pollers_without_flow_relay
required

Online pollers that relay no flow datagrams at all, so a flow destination fed only by these receives nothing.

Array<string>
pollers_without_raw_capture
required

Online pollers that cannot attach the original bytes, so their traffic degrades to rendered.

Array<string>
sending
required

False on an HA standby, whose dispatcher is not running (destination CRUD still works).

boolean
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

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Role lacks the ManageConfig permission

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}

Skeleton mode: no forwarder

Media typeapplication/json

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
error
required
object
code
required

Stable machine-readable code. Clients branch on this, never on the message.

string
message
required

Operator-facing sentence. Safe to display; never carries an internal error’s own text.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example"
}
}