Transactions & Stats
Query per-transaction telemetry and aggregate success-rate and latency stats.
Beta — rolling out now. The dashboard and its control-plane API are in active rollout. The contract documented here is stable, but availability may vary by deployment.
All routes are under /api/v1 and require Authorization: Bearer <token>. These endpoints
report telemetry for submissions made with your API keys. For what each
status means, see Tracking your transactions.
GET /transactions
Return your transactions, newest first, with cursor pagination.
Query parameters
| Parameter | Type | Description |
|---|---|---|
limit | integer | Page size. Defaults to 50, clamped to 1–100. |
before | string | Cursor from a previous response's next_cursor, for the next page. |
status | enum | Filter by lifecycle status: received, forwarded, acked, landed, reverted, failed, expired. |
key_id | string | Filter to a single API key (its id, not its prefix). |
Response — 200 OK
{
"transactions": [
{
"id": "e2b1…",
"signature": "5t4eBfVv8A3tN6d2zjZphqStjc6b4YbTL7Yt8Y6XWf9",
"key_prefix": "0b_ab12cd34",
"status": "landed",
"error_code": null,
"received_at": "2026-07-05T18:22:31.010Z",
"forwarded_at": "2026-07-05T18:22:31.014Z",
"acked_at": "2026-07-05T18:22:31.068Z",
"landed_at": "2026-07-05T18:22:31.422Z",
"submitted_slot": 265470112,
"slot": 265470112,
"slot_delta": 0,
"landing_ms": 412,
"relay_ms": 58,
"latency_source": "grpc",
"target_leader": "Fd7btgySLzy5S4YfF6RQXbTHfMehFAJujFhH7QoZWZ2",
"landed_leader": "Fd7btgySLzy5S4YfF6RQXbTHfMehFAJujFhH7QoZWZ2",
"onchain_err": null,
"program_error_code": null
}
],
"next_cursor": "eyJvZmZzZXQiOjUwfQ"
}Fields
| Field | Type | Description |
|---|---|---|
id | string | Internal transaction id. |
signature | string | The Solana transaction signature. |
key_prefix | string | Prefix of the API key that submitted it. |
status | enum | Current lifecycle status: received, forwarded, acked, landed, reverted, failed, or expired. |
error_code | string | null | JSON-RPC / pre-check error code when status is failed (never landed); otherwise null. For on-chain reverts see onchain_err. |
received_at | string | When 0block accepted the submission. |
forwarded_at | string | null | When the bytes were forwarded upstream. |
acked_at | string | null | When the upstream acknowledged (submission-ack). |
landed_at | string | null | When it was observed on-chain (landed or reverted). |
submitted_slot | integer | null | Chain slot observed when 0block received the submission. Exact under latency_source grpc; a processed + 1 estimate under poll. |
slot | integer | null | Slot it landed in. |
slot_delta | integer | null | Slots after the one it was sent during that it landed: max(0, slot - submitted_slot). 0 = landed in the same slot it was sent during (best case); 1 = next slot; null when not landed or the slot couldn't be observed. Exact under grpc, approximate under poll. See Measuring landing speed. |
landing_ms | integer | null | Wall-clock ms from received_at to landing detection. Precise when latency_source is grpc; under poll includes up to ~2s polling granularity and overstates true latency — prefer slot_delta. |
relay_ms | integer | null | 0block's own processing overhead (leader ack − receipt), typically ~40–90 ms — the latency the gateway adds, distinct from landing time. null before the tx is acked. |
latency_source | enum | null | How the landing was detected: grpc (real-time, exact) or poll (±2s). null until landed/reverted. |
target_leader | string | null | Identity of the leader of the slot the tx was aimed at (producer of submitted_slot). |
landed_leader | string | null | Identity of the validator that actually produced the block it landed in. Differs from target_leader when the tx lands a few slots late and crosses into the next leader's window. null until landed/reverted. |
onchain_err | string | null | For reverted: the raw serialized Solana transaction error, e.g. {"InstructionError":[3,{"Custom":6062}]}. null otherwise. |
program_error_code | integer | null | For reverted: the parsed custom program error code (e.g. 6062) when the error carries one; null otherwise. |
next_cursor is null when there are no more pages; otherwise pass it as before to fetch the
next page.
GET /stats
Aggregate success rate, inclusion, and latency over a time window, plus a time series for charting.
Query parameters
| Parameter | Type | Description |
|---|---|---|
window | enum | 1h, 24h, or 7d. |
Response — 200 OK
{
"window": "24h",
"total": 1284,
"landed": 1150,
"reverted": 51,
"failed": 43,
"expired": 12,
"pending": 28,
"landing_rate": 0.916,
"same_slot_rate": 0.62,
"slot_distribution": { "0": 745, "1": 289, "2": 96, "3": 41, "4": 18, "5+": 12 },
"latency_ms": { "p50": 690, "p90": 1180, "p99": 2450 },
"relay_ms": { "p50": 62, "p90": 84, "p99": 92 },
"series": [
{ "bucket_start": "2026-07-05T00:00:00Z", "total": 52, "landed": 49, "p50_ms": 705 }
]
}Fields
| Field | Type | Description |
|---|---|---|
window | enum | The requested window. |
total | integer | Transactions submitted in the window. |
landed | integer | Count that landed on-chain and succeeded. |
reverted | integer | Count that landed on-chain but the program reverted (included, not successful). |
failed | integer | Count that failed (never made it into a block). |
expired | integer | Count that expired. |
pending | integer | Count still in flight (received / forwarded / acked). |
landing_rate | number | null | Success rate: landed / (landed + reverted + failed + expired). Reverted transactions count against it. 0..1, or null when there are no terminal transactions. |
same_slot_rate | number | null | Share of included transactions (landed + reverted) with slot_delta 0 — landed in the same slot they were sent during. 0..1, or null when there are no included transactions. |
slot_distribution | object | Included transactions (landed + reverted) bucketed by slot_delta — keys "0", "1", "2", "3", "4", "5+" with counts. Always present. |
latency_ms | object | Landing-latency percentiles { p50, p90, p99 } over included transactions (each may be null); computed from landing_ms, precise for grpc-detected txs and overstated for poll-detected ones. |
relay_ms | object | null | 0block relay-latency percentiles { p50, p90, p99 } (the gateway's own overhead). null when no acked transactions in the window. |
series | array | Per-bucket points { bucket_start, total, landed, p50_ms } for charting. |