Blocks Feed
Last updated
Fetch the recent-block feed (newest first) for the block explorer; ?limit (<=100) / ?offset, or ?cursor= for stable keyset paging under head-of-chain inserts (#1851). A conjunctive (AND-ed) filter set (#1991) narrows the feed: ?author=, ?spec_version=, ?from / ?to (observed_at epoch-ms), ?block_start / ?block_end (height range), ?min_extrinsics / ?min_events (non-empty blocks). Pass ?format=csv to download the filtered block rows as CSV. Computed live from the first-party blocks tier (#1345).
Query Parameters
Maximum number of rows to return in one page (at most 100). A larger value, or a non-positive one, is rejected with 400 invalid_query -- so a short page means the result set is exhausted, not that the server quietly capped you (#9916). Omitted, the server applies 50.
1 <= value <= 10050Number of rows to skip before the page begins. Correct only in combination with the page size the response actually returned -- prefer cursor for anything beyond the first few pages, since a row inserted mid-scan shifts every later offset.
0 <= value <= 10000000Opaque pagination token: pass back the next_cursor from the previous response verbatim. Its contents are not stable and must not be parsed or constructed. Stable across inserts, unlike a row offset.
Filter to blocks produced under this runtime spec version.
0 <= valueInclusive first observed_at bound, as epoch MILLISECONDS -- not a block height (use block_start/block_end for that). Omit for an unbounded end. Must not be later than the range's upper bound.
0 <= valueInclusive last observed_at bound, as epoch MILLISECONDS -- not a block height (use block_start/block_end for that). Omit for an unbounded end. Must not be earlier than the range's lower bound.
0 <= valueInclusive first block height of the range to read. Omit for an unbounded end. Must not be later than the range's upper bound.
0 <= valueInclusive last block height of the range to read. Omit for an unbounded end. Must not be earlier than the range's lower bound.
0 <= valueInclusive lower bound: only rows at or above this value are returned.
0 <= valueInclusive lower bound: only rows at or above this value are returned.
0 <= valueResponse format override. Use csv to download the route rows as text/csv; json keeps the default response envelope.
"json"Value in
- "json"
- "csv"
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/blocks"{ "data": { "block_count": 5000000, "blocks": [ { "author": "example", "block_hash": "a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1", "block_number": 5000000, "decode_status": "pending", "economic_activity_tao": 0.5, "economic_activity_usd": 0.5, "event_count": 1, "extrinsic_count": 1, "fee_tao": 0.5, "issuance_tao": 0.5, "native_transfer_tao": 0.5, "observed_at": "2026-06-01T00:00:00.000Z", "parent_hash": "a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1", "spec_version": 1, "stake_flow_tao": 0.5, "subnet_ids": [ 1 ], "tao_usd_basis": "example", "tao_usd_block": 5000000, "tao_usd_observed_at": "2026-06-01T00:00:00.000Z", "tip_tao": 0.5, "usd_per_tao": 0.5 } ], "limit": 1, "next_cursor": "example", "offset": 1, "schema_version": 1 }, "meta": { "artifact_path": "example", "cache": "short", "contract_version": "2026-06-29.1", "generated_at": "2026-06-01T00:00:00.000Z", "observed_through": "2026-06-01T00:00:00.000Z", "pagination": { "collection": "example", "cursor": 1, "limit": 1, "next_cursor": 1, "order": "asc", "returned": 1, "sort": "example", "total": 1 }, "published_at": "2026-06-01T00:00:00.000Z", "source": "live-cron-prober", "stale_contract": { "built_under": "example", "live": "example" } }, "ok": true, "schema_version": 1}