Blockbook API
v2.0.0-drafthttps://etc-blockbook.nownodes.ioCanonical description of the Blockbook public API, based on blockbook-api.ts, api/xpub.go, and the api/server handlers.
API V2 is the current Blockbook API. It is available over REST and over WebSocket using the WsRequest/WsResponse JSON envelope documented below. The normalized API shapes are shared by all supported coins, while blockchain-specific payloads remain extensible where Blockbook returns raw backend JSON.
Amounts are strings in the lowest denomination of the chain, such as satoshis or wei, without a decimal point. Empty fields are omitted: empty means null, an empty string, numeric zero, a null object, or an empty array. Since the same API serves many different chains, this can sometimes hide otherwise meaningful zero values such as transaction version 0.
Legacy API V1 is a Bitcore Insight-compatible subset for Bitcoin-type coins. It is provided as-is for compatibility and is not being extended.
Load estimates are qualitative hints for client authors. Low means a small constant-time lookup or cached metadata. Medium means bounded indexed work or response size. High means potentially large scans, large payloads, broadcast/backend work, or external RPC enrichment. Actual cost also depends on chain speed, backend health, cache warmth, mempool size, pageSize, gap, and the number of addresses, transactions, tokens, filters, or timestamps involved.
Authentication
api-keyAuthapiKeyAPI Key: api-key in header
MAINNET / Blockbook 0.6.0
BlockBook
Get Blockbook and backend status.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns Blockbook sync state and connected backend metadata.
Load estimate: Low; constant-size status metadata.
Response
Current Blockbook and backend status.
Public API error. Public validation errors are HTTP 400; internal errors are HTTP 500.
Get status from the API index handler.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Alias served by the same handler as /api/status on full public interfaces.
Load estimate: Low; constant-size status metadata.
Response
Current Blockbook and backend status.
Public API error.
Get a block hash by height.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns the block hash for a height on the backend main chain. Blockbook follows the backend main chain; after a rollback or reorg, height lookups resolve to the current main-chain block.
Load estimate: Low; indexed height-to-hash lookup.
Parameters
heightinteger>= 0requiredpathBlock height on the backend main chain.
Response
Block hash at the requested height.
Public API error.
Get a block by height or hash.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns block information with paged transactions. When full transaction details are unavailable, the response can contain only transaction ids.
Blockbook follows the backend main chain. Height lookups always return the current main-chain block. Hash lookups can return a block from another fork only if the backend still keeps it.
Load estimate: Medium; grows mainly with block transaction count and requested page.
Parameters
blockIdstringrequiredpathBlock height or block hash.
pageinteger>= 1query1-based page index. Values outside safe bounds are sanitized to the closest possible page.
Response
Block details.
Public API error.
Get raw block hex.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Not available on this endpoint: the request returns HTTP 500 with {"error":"Internal server error"}.
Returns raw serialized block data.
Load estimate: High for large blocks; payload size grows with the raw block size.
Parameters
blockIdstringrequiredpathBlock height or block hash.
Response
Raw block data.
Public API error.
Get compact block filters.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns compact block filters for the script type configured on this Blockbook instance. Provide either lastN or a from/to range. When to is omitted for a range, the current best height is used.
Compact block filters are a feature of UTXO networks. On this network the endpoint returns an error.
Compact block filters are a feature of UTXO networks. On this network the endpoint returns an error.
Load estimate: High for wide ranges; work and payload grow linearly with the number of requested filters.
Parameters
scriptTypestringrequiredqueryScript type configured for block filters on this instance, for example taproot.
lastNinteger>= 1queryReturn filters for the last N blocks.
frominteger>= 0queryFirst block height in the requested range.
tointeger>= 0queryLast block height in the requested range. Defaults to the current best height when omitted.
Response
Block filters keyed by block height.
Public API error.
Get a normalized transaction.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns normalized transaction data with the same general structure for all supported coins. Coin-specific fields that do not fit the common shape are omitted here; use getTransactionSpecific for backend-native JSON.
Bitcoin-like confirmed transactions include blockHash, confirmations, blockTime, size/vsize, value/valueIn, fees, and hex. Unconfirmed transactions can include confirmationETABlocks and confirmationETASeconds.
Ethereum-like transactions have one vin and one vout, tokenTransfers, ethereumSpecific execution data, and optional addressAliases. Parsed input data is included when the 4byte signature can be resolved.
For mined transactions, blockTime is the block timestamp. For mempool transactions, blockTime is when this Blockbook instance first learned about the transaction and can differ between instances.
Load estimate: Medium; grows with inputs, outputs, token transfers, address aliases, and spending=true extra lookups.
Parameters
txidstringrequiredpathTransaction id/hash.
spendingbooleanqueryInclude spending transaction metadata for UTXO outputs when available.
Response
Normalized transaction.
Public API error.
Get blockchain-specific transaction JSON.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns transaction data in the exact backend-specific format. Use this when a chain exposes fields that are intentionally absent from the normalized Tx schema.
Load estimate: Medium; payload size depends on chain-specific fields and transaction complexity.
Parameters
txidstringrequiredpathTransaction id/hash.
Response
Chain-specific transaction payload.
Public API error.
Get raw transaction hex.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Unversioned public endpoint exposed by Blockbook for raw transaction data.
Load estimate: Medium; payload size grows with raw transaction size.
Parameters
txidstringrequiredpathTransaction id/hash.
Response
Raw transaction hex as a JSON string.
Public API error.
Broadcast a raw transaction using the path.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Broadcasts hex-encoded raw transaction data. Prefer POST for large payloads.
Load estimate: High; validates and forwards to the backend, with cost growing with transaction size and backend mempool policy checks.
Parameters
hexstringrequiredpathRaw transaction.
Response
Broadcast result.
Public API error.
Broadcast a raw transaction using the request body.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Broadcasts hex-encoded raw transaction data from the request body. The trailing slash is mandatory in the Blockbook handler. POST bodies are limited to 8 MiB.
Load estimate: High; validates and forwards to the backend, with cost growing with transaction size and backend mempool policy checks.
Body
Response
Broadcast result.
Public API error.
Get address/account details.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns balances and transactions of an address. Transactions are sorted by block height with newest blocks first. Response size is controlled by the details parameter.
At details=basic, mempool transactions are not aggregated: unconfirmedBalance, unconfirmedSending, and unconfirmedReceiving are omitted, and unconfirmedTxs reports the raw mempool index size for the address.
Load estimate: Variable; basic is low, token/tokenBalances and txids/txslight are medium, and txs can be high as it grows with pageSize, transactions, token rows, filters, and protocol enrichment.
Parameters
addressstringrequiredpathChain address.
pageinteger>= 1query1-based page index. Values outside safe bounds are sanitized to the closest possible page.
pageSizeinteger[1, 1000]queryNumber of history items per page. The default and maximum for REST account endpoints is 1000.
frominteger>= 0queryFirst block height included in account transaction filtering.
tointeger>= 0queryLast block height included in account transaction filtering.
detailsstringbasictokenstokenBalancestxidstxslighttxstxidsqueryControls how much account data is returned. basic returns balances and counts only. tokens adds known token rows. tokenBalances returns token rows with balances. txids adds paged transaction ids. txslight adds limited transaction details from the index. txs adds full transaction details.
filterstring | integerqueryFilter account history by input/output side, or by numeric token/internal filter id.
contractstringqueryContract address used to filter token data.
protocolsArray<string>queryOptional protocol enrichments, comma-separated or repeated. Currently supported value: erc4626. Unknown values are rejected.
secondarystringquerySecondary currency code used to populate fiat values.
Response
Address/account details.
Public API error.
Get account balance history.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns balance history points for an address, XPUB, or descriptor. from and to are Unix timestamps. groupBy is an aggregation interval in seconds and defaults to 3600. When fiatcurrency is omitted, rates can contain all available currencies. sentToSelf is the amount sent from an address to itself or within addresses of the same XPUB.
Load estimate: High; grows with account transaction history, time span, grouping cardinality, fiat rate lookups, and XPUB/descriptor gap.
Parameters
descriptorstringrequiredpathAddress, XPUB, or supported descriptor. URL-encode descriptors.
frominteger<int64>queryUnix timestamp lower bound.
tointeger<int64>queryUnix timestamp upper bound.
fiatcurrencystringqueryOptional fiat currency code to include in rates.
groupByinteger>= 1queryAggregation interval in seconds. Defaults to 3600.
gapinteger[0, 10000]queryXPUB/address derivation gap limit.
Response
Balance history points.
Public API error.
Get contract metadata.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns indexed token/contract metadata and optional current protocol enrichments such as ERC4626.
blockHeight reflects the indexer's best block at request time. ERC4626 fields under protocols.erc4626 are fetched through JSON-RPC calls pinned to that exact blockHeight, so the ERC4626 values are a consistent snapshot. If a vault is detected but the underlying asset metadata cannot be resolved, protocols.erc4626 contains error and omits asset; callers must not derive fiat rates or human-unit exchange rates from such a partial response.
Load estimate: Medium; indexed metadata is cheap, but optional protocol enrichment can add backend RPC calls and token metadata lookups.
Parameters
contractstringrequiredpathSmart contract address.
currencystringquerySecondary currency code for rates.
protocolsArray<string>queryOptional protocol enrichments, comma-separated or repeated.
Response
Contract metadata.
Public API error.
Estimate a fee target.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Returns backend fee estimation for the requested confirmation target.
Load estimate: Low; a small backend fee estimate lookup.
Parameters
blocksinteger>= 1requiredpathConfirmation target in blocks.
conservativebooleantruequeryUse conservative smart fee estimation where supported.
Response
Decimal fee estimate in chain base currency.
Public API error.
Get fee statistics for a block.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Not available on this endpoint: the request returns HTTP 500 with {"error":"Internal server error"}.
Returns fee statistics for transactions in one block.
Load estimate: Medium to high; grows with the number of transactions in the requested block.
Parameters
blockIdstringrequiredpathBlock height or block hash.
Response
Fee statistics.
Public API error.
Get current or historical fiat rates.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Not available on this endpoint: the request returns HTTP 400 with {"error":"No tickers found!"}.
Fiat rates are not configured for this network, so this endpoint returns an error.
Returns currency rates for the requested currency and date. If a rate is unavailable for the exact timestamp, the closest available rate can be returned. Responses include the actual rate timestamp. Without a currency parameter, all available currencies can be returned. A rate of -1 marks an unavailable or invalid currency for that timestamp.
Load estimate: Low to medium; specific currency lookups are cheap, while omitted currency and token lookups increase response size.
Parameters
currencystringqueryOptional currency code. When omitted, all available rates can be returned.
timestampinteger<int64>queryUnix timestamp for historical rates.
blockstringqueryBlock height or hash whose timestamp should be used for historical rates.
tokenstringqueryOptional token symbol or contract/address key for token-specific rates.
Response
Fiat rate ticker.
Public API error.
Get fiat rates for multiple timestamps.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Not available on this endpoint: the request returns HTTP 400 with {"error":"No tickers found"}.
Fiat rates are not configured for this network, so this endpoint returns an error.
Returns fiat rate tickers for a comma-separated list of Unix timestamps.
Load estimate: Medium; work and payload grow linearly with timestamp count, plus token/currency selection.
Parameters
timestampstringrequiredqueryComma-separated Unix timestamps.
currencystringqueryOptional currency code.
tokenstringqueryOptional token symbol or contract/address key.
Response
Fiat rate tickers.
Public API error.
Get currencies available for a timestamp.
Authorizations
ApiKeyAuthApiKeyAuthapi-key string
NOWNodes API key passed in the api-key header.
Not available on this endpoint: the request returns HTTP 400 with {"error":"No tickers found"}.
Fiat rates are not configured for this network, so this endpoint returns an error.
Returns available secondary currencies for a date together with the actual rate timestamp.
Load estimate: Low to medium; token lookups and wide currency lists increase response size.
Parameters
timestampinteger<int64>requiredqueryUnix timestamp for the requested currency list.
tokenstringqueryOptional token symbol or contract/address key.
Response
Available currencies.
Public API error.