{"api_surface":{"auth":"none — these paths carry no key, which is what lets an existing client use them as they are; the global per-second ceiling still applies","base":"/api","covered":["GET /api/address/{address}","GET /api/address/{address}/txs","GET /api/address/{address}/txs/chain[/{last_seen_txid}]","GET /api/address/{address}/txs/mempool (always empty: confirmed data only)","GET /api/address/{address}/utxo","GET /api/v1/validate-address/{address}","GET /api/block/{hash}","GET /api/block/{hash}/header","GET /api/block/{hash}/raw","GET /api/block/{hash}/status","GET /api/block/{hash}/txid/{index}","GET /api/block/{hash}/txids","GET /api/block/{hash}/txs[/{start_index}]","GET /api/block-height/{height}","GET /api/v1/mining/blocks/timestamp/{timestamp}","GET /api/blocks[/{start_height}]","GET /api/v1/blocks-bulk/{min_height}[/{max_height}]","GET /api/blocks/tip/height","GET /api/blocks/tip/hash","GET /api/tx/{txid}","GET /api/tx/{txid}/hex","GET /api/tx/{txid}/outspend/{vout}","GET /api/tx/{txid}/outspends","GET /api/tx/{txid}/merkle-proof","GET /api/mempool","GET /api/mempool/txids","GET /api/mempool/recent","GET /api/v1/fees/mempool-blocks","GET /api/v1/fees/recommended","GET /api/v1/replacements","GET /api/v1/fullrbf/replacements","GET /api/v1/cpfp/{txid}","GET /api/v1/block/{hash}/audit-summary","GET /api/v1/mining/blocks/audit/score/{hash}","GET /api/v1/mining/blocks/audit/scores[/{height}]"],"cursor_note":"the :last_seen_txid cursor is resolved by walking (bounded at 20,000 entries); /v1/address/{address}/txs?after=p:… is the seek-based cursor","limits":["no broadcast: there is no POST /api/tx, and the service accepts no writes","pending transactions come from one node's mempool, re-read every 5 seconds: each mempool response carries the snapshot's unix time in X-Mempool-Updated, and is 503 for the few seconds after a restart before the first snapshot","address mempool history (/api/address/{address}/txs/mempool) is always empty: the mempool index is by transaction, not by address","sigops is computed the way consensus counts it (legacy x4, witness x1, output scripts included)","funded_txo_count / spent_txo_count are null for addresses over 2,000 transactions","mining statistics, Lightning, price and difficulty history are not indexed","cpfp: pending txs from the mempool graph; confirmed txs from their block's own in-block parents and children. Clusters are linearized by ancestor-set selection, which matches Core 31's cluster ordering on chains and fans and may differ on unusual shapes","block audits start when the service first sees a block arrive: blocks mined before that are not audited (404). Summaries are kept 30 days, scores indefinitely; acceleratedTxs is always empty (no accelerator here), and template flags infer input types from witness shapes (nonstandard and coinjoin bits are not set)","replacements are the ones this node observed while the service ran: the newest 25 trees, kept for an hour; a replacement from before a restart is absent","an outspend says whether an output is spent, not who spent it: the coin index deletes a spent coin and keeps no spender","projected blocks pack transactions with their unconfirmed parents (ancestor fee rate), as Core builds a block; feeRange holds those effective rates","UTXO order is chain order; the set and every field are exact"],"note":"unkeyed endpoints serving the same data as /v1, in a layout many Bitcoin REST clients already expect; the response shapes match that layout field for field"},"auth":{"get_a_key":"POST /v1/accounts (no auth, returns a key once)","header":"Authorization: Bearer <key>","scheme":"bearer","scopes":["api","electrum"]},"bootstrap":["/AGENTS.md","/llms.txt","/v1","/v1/pricing","/v1/openapi.json","/health"],"electrum":{"auth":"none — the Electrum protocol has no field for a key; connections are capped per source address","history_limit":25000,"host":"electrum.blocknil.com","keyed_tokens":"not yet; per-account Electrum tokens arrive with billing","port":50002,"same_index_as":"/v1","transport":"tls"},"endpoints":{"data":["GET /v1/address/{address}/txs","GET /v1/address/{address}/utxos","GET /v1/address/{address}/analyze","GET /v1/address/{address}/counterparties","GET /v1/utxo-index/stats","GET /v1/fees","GET /v1/fees/recommended","GET /v1/mempool","GET /v1/blocks/tip/height","GET /v1/blocks/tip/hash","GET /v1/chain/info","GET /v1/latest","GET /v1/block/{height}/analyze","GET /v1/tx/{txid}/analyze","GET /v1/tx/{txid}/facts","GET /v1/tx/{txid}/change","GET /v1/tx/{txid}/content","GET /v1/tx/{txid}/graph_data","GET /v1/tx/{txid}/is_inscription","GET /v1/tx/{txid}/related","GET /v1/ordinals/status","GET /v1/ordinals/inscription/{id or number}","GET /v1/ordinals/inscription/{id}/history","GET /v1/ordinals/inscription/{id}/content","GET /v1/ordinals/address/{address}","GET /v1/ordinals/output/{txid}:{vout}","GET /v1/ordinals/tx/{txid}","GET /v1/ordinals/block/{height}","GET /v1/ordinals/runes","GET /v1/ordinals/rune/{id, name or number}","GET /v1/ordinals/rune/{rune}/activity"],"keyed":["GET /v1/accounts/me","POST /v1/accounts/keys","POST /v1/keys/{id}/disable","GET /v1/usage"],"public":["GET /health","GET /v1","GET /v1/pricing","GET /v1/openapi.json","POST /v1/accounts"]},"errors":{"401":"no key or unknown key — POST /v1/accounts","403":"key or account disabled, or the key lacks the scope","429":"burst or daily quota exhausted; see Retry-After and X-RateLimit-*","503":"global request ceiling reached for this second; back off briefly"},"limits":{"free_per_day":1000,"global_per_second":500,"paid_per_day":100000,"per_minute_per_key":120},"not_yet":{"entity_attribution":"entities, their addresses and their activity are being polished and are not sold yet; the entity paths do not exist under /v1"},"service":"clearblock","version":"v1","what":"indexed Bitcoin chain data with entity attribution and transaction analysis"}