0block docs
Dashboard & API Keys

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

ParameterTypeDescription
limitintegerPage size. Defaults to 50, clamped to 1–100.
beforestringCursor from a previous response's next_cursor, for the next page.
statusenumFilter by lifecycle status: received, forwarded, acked, landed, reverted, failed, expired.
key_idstringFilter 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

FieldTypeDescription
idstringInternal transaction id.
signaturestringThe Solana transaction signature.
key_prefixstringPrefix of the API key that submitted it.
statusenumCurrent lifecycle status: received, forwarded, acked, landed, reverted, failed, or expired.
error_codestring | nullJSON-RPC / pre-check error code when status is failed (never landed); otherwise null. For on-chain reverts see onchain_err.
received_atstringWhen 0block accepted the submission.
forwarded_atstring | nullWhen the bytes were forwarded upstream.
acked_atstring | nullWhen the upstream acknowledged (submission-ack).
landed_atstring | nullWhen it was observed on-chain (landed or reverted).
submitted_slotinteger | nullChain slot observed when 0block received the submission. Exact under latency_source grpc; a processed + 1 estimate under poll.
slotinteger | nullSlot it landed in.
slot_deltainteger | nullSlots 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_msinteger | nullWall-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_msinteger | null0block'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_sourceenum | nullHow the landing was detected: grpc (real-time, exact) or poll (±2s). null until landed/reverted.
target_leaderstring | nullIdentity of the leader of the slot the tx was aimed at (producer of submitted_slot).
landed_leaderstring | nullIdentity 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_errstring | nullFor reverted: the raw serialized Solana transaction error, e.g. {"InstructionError":[3,{"Custom":6062}]}. null otherwise.
program_error_codeinteger | nullFor 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

ParameterTypeDescription
windowenum1h, 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

FieldTypeDescription
windowenumThe requested window.
totalintegerTransactions submitted in the window.
landedintegerCount that landed on-chain and succeeded.
revertedintegerCount that landed on-chain but the program reverted (included, not successful).
failedintegerCount that failed (never made it into a block).
expiredintegerCount that expired.
pendingintegerCount still in flight (received / forwarded / acked).
landing_ratenumber | nullSuccess rate: landed / (landed + reverted + failed + expired). Reverted transactions count against it. 0..1, or null when there are no terminal transactions.
same_slot_ratenumber | nullShare 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_distributionobjectIncluded transactions (landed + reverted) bucketed by slot_delta — keys "0", "1", "2", "3", "4", "5+" with counts. Always present.
latency_msobjectLanding-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_msobject | null0block relay-latency percentiles { p50, p90, p99 } (the gateway's own overhead). null when no acked transactions in the window.
seriesarrayPer-bucket points { bucket_start, total, landed, p50_ms } for charting.