openapi: 3.1.0
info:
title: Blockstream Esplora HTTP API
version: '1.0'
description: >-
Esplora is Blockstream's open-source Bitcoin block explorer and its HTTP REST
API. It provides read access to blocks, transactions, addresses, the mempool,
fee estimates, and (on Liquid/Elements networks) issued assets. The API is
public and requires no authentication. The same API backs blockstream.info and
its testnet, signet, and Liquid networks. Amounts are in satoshis; hashes and
txids are hex-encoded.
x-generated: '2026-07-18'
x-method: generated
x-source: https://github.com/Blockstream/esplora/blob/master/API.md
contact:
name: Blockstream Esplora
url: https://github.com/Blockstream/esplora
license:
name: MIT
url: https://github.com/Blockstream/esplora/blob/master/LICENSE
servers:
- url: https://blockstream.info/api
description: Bitcoin mainnet
- url: https://blockstream.info/testnet/api
description: Bitcoin testnet
- url: https://blockstream.info/signet/api
description: Bitcoin signet
- url: https://blockstream.info/liquid/api
description: Liquid mainnet
- url: https://blockstream.info/liquidtestnet/api
description: Liquid testnet
tags:
- name: Transactions
- name: Addresses
- name: Blocks
- name: Mempool
- name: Fee Estimates
- name: Mining
- name: Assets
paths:
/tx/{txid}:
get:
operationId: getTransaction
summary: Get transaction
description: Retrieve transaction information and details.
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Transaction object }
'404': { description: Transaction not found }
/tx/{txid}/status:
get:
operationId: getTransactionStatus
summary: Get transaction status
description: Check the confirmation status of a transaction.
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Transaction status object }
/tx/{txid}/hex:
get:
operationId: getTransactionHex
summary: Get raw transaction (hex)
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Hex-encoded transaction }
/tx/{txid}/raw:
get:
operationId: getTransactionRaw
summary: Get raw transaction (binary)
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Binary transaction data }
/tx/{txid}/merkleblock-proof:
get:
operationId: getTransactionMerkleblockProof
summary: Get merkle inclusion proof (bitcoind format)
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Merkle block proof }
/tx/{txid}/merkle-proof:
get:
operationId: getTransactionMerkleProof
summary: Get merkle inclusion proof (Electrum format)
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Merkle proof }
/tx/{txid}/outspend/{vout}:
get:
operationId: getTransactionOutspend
summary: Get spending status of an output
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
- { name: vout, in: path, required: true, schema: { type: integer } }
responses:
'200': { description: Outspend object }
/tx/{txid}/outspends:
get:
operationId: getTransactionOutspends
summary: Get spending status of all outputs
tags: [Transactions]
parameters:
- { name: txid, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of outspend objects }
/tx:
post:
operationId: broadcastTransaction
summary: Broadcast raw transaction
description: Broadcast a hex-encoded raw transaction to the network.
tags: [Transactions]
requestBody:
required: true
content:
text/plain:
schema: { type: string, description: Hex-encoded raw transaction }
responses:
'200': { description: Returns the txid of the broadcast transaction }
'400': { description: Invalid or rejected transaction }
/txs/package:
post:
operationId: broadcastTransactionPackage
summary: Broadcast a package of related transactions
tags: [Transactions]
requestBody:
required: true
content:
application/json:
schema: { type: array, items: { type: string } }
responses:
'200': { description: Package broadcast result }
'400': { description: Invalid or rejected package }
/address/{address}:
get:
operationId: getAddress
summary: Get address information
tags: [Addresses]
parameters:
- { name: address, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Address object with chain and mempool stats }
/scripthash/{hash}:
get:
operationId: getScripthash
summary: Get scripthash information
tags: [Addresses]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Scripthash object with chain and mempool stats }
/address/{address}/txs:
get:
operationId: getAddressTransactions
summary: Get address transaction history
tags: [Addresses]
parameters:
- { name: address, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of transaction objects }
/scripthash/{hash}/txs:
get:
operationId: getScripthashTransactions
summary: Get scripthash transaction history
tags: [Addresses]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of transaction objects }
/address/{address}/txs/chain/{last_seen_txid}:
get:
operationId: getAddressTransactionsChain
summary: Paginate confirmed address transactions
description: >-
Returns confirmed transactions, 25 per page. Provide the last_seen_txid of
the previous page to fetch the next page (cursor pagination).
tags: [Addresses]
parameters:
- { name: address, in: path, required: true, schema: { type: string } }
- { name: last_seen_txid, in: path, required: false, schema: { type: string } }
responses:
'200': { description: Array of up to 25 confirmed transaction objects }
/scripthash/{hash}/txs/chain/{last_seen_txid}:
get:
operationId: getScripthashTransactionsChain
summary: Paginate confirmed scripthash transactions
tags: [Addresses]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
- { name: last_seen_txid, in: path, required: false, schema: { type: string } }
responses:
'200': { description: Array of up to 25 confirmed transaction objects }
/address/{address}/txs/mempool:
get:
operationId: getAddressMempoolTransactions
summary: Get unconfirmed address transactions
tags: [Addresses]
parameters:
- { name: address, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of unconfirmed transaction objects }
/scripthash/{hash}/txs/mempool:
get:
operationId: getScripthashMempoolTransactions
summary: Get unconfirmed scripthash transactions
tags: [Addresses]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of unconfirmed transaction objects }
/address/{address}/utxo:
get:
operationId: getAddressUtxo
summary: List unspent outputs for an address
tags: [Addresses]
parameters:
- { name: address, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of UTXO objects }
/scripthash/{hash}/utxo:
get:
operationId: getScripthashUtxo
summary: List unspent outputs for a scripthash
tags: [Addresses]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of UTXO objects }
/address-prefix/{prefix}:
get:
operationId: searchAddressPrefix
summary: Search addresses by prefix
tags: [Addresses]
parameters:
- { name: prefix, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of matching addresses }
/block/{hash}:
get:
operationId: getBlock
summary: Get block information
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Block object }
'404': { description: Block not found }
/block/{hash}/header:
get:
operationId: getBlockHeader
summary: Get hex-encoded block header
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Hex-encoded block header }
/block/{hash}/status:
get:
operationId: getBlockStatus
summary: Get block confirmation status
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Block status object }
/block/{hash}/txs/{start_index}:
get:
operationId: getBlockTransactions
summary: List transactions in a block
description: Returns up to 25 transactions starting at start_index.
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
- { name: start_index, in: path, required: false, schema: { type: integer } }
responses:
'200': { description: Array of up to 25 transaction objects }
/block/{hash}/txids:
get:
operationId: getBlockTxids
summary: Get all transaction IDs in a block
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of txids }
/block/{hash}/txid/{index}:
get:
operationId: getBlockTxidAtIndex
summary: Get transaction ID at a specific index in a block
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
- { name: index, in: path, required: true, schema: { type: integer } }
responses:
'200': { description: A single txid }
/block/{hash}/raw:
get:
operationId: getBlockRaw
summary: Get block in raw binary format
tags: [Blocks]
parameters:
- { name: hash, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Binary block data }
/block-height/{height}:
get:
operationId: getBlockHashAtHeight
summary: Get block hash at a height
tags: [Blocks]
parameters:
- { name: height, in: path, required: true, schema: { type: integer } }
responses:
'200': { description: Block hash }
/blocks/{start_height}:
get:
operationId: getBlocks
summary: Get the 10 newest blocks
description: Returns the 10 newest blocks, or the 10 blocks preceding start_height.
tags: [Blocks]
parameters:
- { name: start_height, in: path, required: false, schema: { type: integer } }
responses:
'200': { description: Array of up to 10 block objects }
/blocks/tip/height:
get:
operationId: getBlocksTipHeight
summary: Get current chain tip height
tags: [Blocks]
responses:
'200': { description: The tip height as an integer }
/blocks/tip/hash:
get:
operationId: getBlocksTipHash
summary: Get current chain tip hash
tags: [Blocks]
responses:
'200': { description: The tip block hash }
/mempool:
get:
operationId: getMempool
summary: Get mempool statistics and fee histogram
tags: [Mempool]
responses:
'200': { description: Mempool statistics object }
/mempool/txids:
get:
operationId: getMempoolTxids
summary: Get all transaction IDs in the mempool
tags: [Mempool]
responses:
'200': { description: Array of txids }
/mempool/recent:
get:
operationId: getMempoolRecent
summary: Get the 10 most recent mempool transactions
tags: [Mempool]
responses:
'200': { description: Array of recent mempool transaction summaries }
/fee-estimates:
get:
operationId: getFeeEstimates
summary: Get estimated fees by confirmation target
description: >-
Returns a map of confirmation target (in blocks) to the estimated fee rate
in sat/vB.
tags: [Fee Estimates]
responses:
'200': { description: Map of confirmation target to fee rate }
/block-template:
get:
operationId: getBlockTemplate
summary: Retrieve a block template for mining
tags: [Mining]
responses:
'200': { description: Block template object }
/asset/{asset_id}:
get:
operationId: getAsset
summary: Get asset information (Liquid/Elements only)
tags: [Assets]
parameters:
- { name: asset_id, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Asset object }
/asset/{asset_id}/txs:
get:
operationId: getAssetTransactions
summary: Get transactions for an asset (Liquid/Elements only)
tags: [Assets]
parameters:
- { name: asset_id, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of transaction objects }
/asset/{asset_id}/txs/mempool:
get:
operationId: getAssetMempoolTransactions
summary: Get mempool transactions for an asset (Liquid/Elements only)
tags: [Assets]
parameters:
- { name: asset_id, in: path, required: true, schema: { type: string } }
responses:
'200': { description: Array of unconfirmed transaction objects }
/asset/{asset_id}/txs/chain/{last_seen}:
get:
operationId: getAssetTransactionsChain
summary: Paginate confirmed asset transactions (Liquid/Elements only)
tags: [Assets]
parameters:
- { name: asset_id, in: path, required: true, schema: { type: string } }
- { name: last_seen, in: path, required: false, schema: { type: string } }
responses:
'200': { description: Array of confirmed transaction objects }
/asset/{asset_id}/supply:
get:
operationId: getAssetSupply
summary: Get current total asset supply (Liquid/Elements only)
tags: [Assets]
parameters:
- { name: asset_id, in: path, required: true, schema: { type: string } }
responses:
'200': { description: The current asset supply }
/asset/{asset_id}/supply/decimal:
get:
operationId: getAssetSupplyDecimal
summary: Get asset supply with decimal formatting (Liquid/Elements only)
tags: [Assets]
parameters:
- { name: asset_id, in: path, required: true, schema: { type: string } }
responses:
'200': { description: The current asset supply, decimal-formatted }
/assets/registry:
get:
operationId: getAssetsRegistry
summary: Get the list of issued assets (Liquid/Elements only)
tags: [Assets]
responses:
'200': { description: Array of registered assets with filtering and sorting }