{"openapi":"3.1.0","info":{"title":"Satoshi API","description":"Bitcoin fee intelligence API. Know when to send and save money on every transaction. MCP-native, self-hostable, open source.","termsOfService":"https://bitcoinsapi.com/terms","contact":{"name":"Satoshi API Support","url":"https://bitcoinsapi.com/","email":"api@bitcoinsapi.com"},"license":{"name":"Apache-2.0","url":"https://www.apache.org/licenses/LICENSE-2.0"},"version":"0.1.0"},"servers":[{"url":"https://bitcoinsapi.com","description":"Production"},{"url":"http://localhost:9332","description":"Local development"}],"paths":{"/api/v1/health":{"get":{"tags":["Status"],"summary":"Health","description":"Ping the node. No auth required.","operationId":"health_api_v1_health_get","responses":{"200":{"description":"Node is reachable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_HealthData_"},"example":{"data":{"status":"ok","chain":"main","blocks":939462},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/status":{"get":{"tags":["Status"],"summary":"Status","description":"Full node status with sync progress, peers, disk usage.","operationId":"status_api_v1_status_get","responses":{"200":{"description":"Full node status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"chain":"main","blocks":939462,"headers":939462,"best_block_hash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72688a093","difficulty":113757508674661.0,"verification_progress":0.9999987,"size_on_disk":654321098765,"pruned":false,"peers":125},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/x402-info":{"get":{"tags":["Status"],"summary":"X402 Info","description":"Public x402 contract info for paid endpoints and the V2 header flow.","operationId":"x402_info_api_v1_x402_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/x402-demo":{"get":{"tags":["Status"],"summary":"X402 Demo","description":"x402 sandbox endpoint for the V2 PAYMENT-REQUIRED and PAYMENT-SIGNATURE flow.\n\n- First request returns HTTP 402 with a base64-encoded PAYMENT-REQUIRED header\n- Retry with PAYMENT-SIGNATURE to simulate a signed payment payload\n- Successful responses include PAYMENT-RESPONSE settlement metadata","operationId":"x402_demo_api_v1_x402_demo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/blocks/latest":{"get":{"tags":["Blocks"],"summary":"Latest Block","description":"Analyze the most recent block.","operationId":"latest_block_api_v1_blocks_latest_get","responses":{"200":{"description":"Latest block analysis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_BlockAnalysisData_"},"example":{"data":{"hash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a4670","height":881234,"tx_count":3421,"size":1543287,"weight":3993148,"median_fee_rate":12.5,"total_fee":0.28431562,"top_fee_txids":[]},"meta":{"height":881234,"chain":"main"}}}}}}}},"/api/v1/blocks/tip/height":{"get":{"tags":["Blocks"],"summary":"Tip Height","description":"Current chain tip height.","operationId":"tip_height_api_v1_blocks_tip_height_get","responses":{"200":{"description":"Current chain tip height","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_int_"},"example":{"data":881234,"meta":{"node_height":881234,"chain":"main"}}}}}}}},"/api/v1/blocks/tip/hash":{"get":{"tags":["Blocks"],"summary":"Tip Hash","description":"Current chain tip block hash.","operationId":"tip_hash_api_v1_blocks_tip_hash_get","responses":{"200":{"description":"Current chain tip block hash","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_str_"},"example":{"data":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a4670","meta":{"node_height":881234,"chain":"main"}}}}}}}},"/api/v1/blocks/{height_or_hash}":{"get":{"tags":["Blocks"],"summary":"Get Block","description":"Analyze a block by height or hash.","operationId":"get_block_api_v1_blocks__height_or_hash__get","parameters":[{"name":"height_or_hash","in":"path","required":true,"schema":{"type":"string","description":"Block height (integer) or block hash (hex)","title":"Height Or Hash"},"description":"Block height (integer) or block hash (hex)"}],"responses":{"200":{"description":"Block analysis by height or hash","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_BlockAnalysisData_"},"example":{"data":{"hash":"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f","height":0,"tx_count":1,"size":285,"weight":816,"median_fee_rate":0,"total_fee":0,"top_fee_txids":[]},"meta":{"height":881234,"chain":"main"}}}}},"422":{"description":"Invalid block hash format","content":{"application/json":{"example":{"error":{"status":422,"title":"Error","detail":"Invalid block hash: must be 64 hex characters","request_id":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"}}}}}}}},"/api/v1/blocks/{height}/stats":{"get":{"tags":["Blocks"],"summary":"Block Stats","description":"Raw block statistics from getblockstats RPC.","operationId":"block_stats_api_v1_blocks__height__stats_get","parameters":[{"name":"height","in":"path","required":true,"schema":{"type":"integer","minimum":0,"description":"Block height","title":"Height"},"description":"Block height"}],"responses":{"200":{"description":"Raw block statistics from getblockstats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"avgfee":8312,"avgfeerate":14,"avgtxsize":534,"blockhash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a4670","height":881234,"ins":9432,"maxfee":1250000,"maxfeerate":621,"medianfee":3520,"mediantime":1741187234,"minfee":192,"minfeerate":1,"outs":8921,"subsidy":312500000,"totalfee":28431562,"txs":3421},"meta":{"height":881234,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/blocks/{block_hash}/header":{"get":{"tags":["Blocks"],"summary":"Block Header","description":"Block header as a hex string.","operationId":"block_header_api_v1_blocks__block_hash__header_get","parameters":[{"name":"block_hash","in":"path","required":true,"schema":{"type":"string","description":"Block hash (64 hex characters)","title":"Block Hash"},"description":"Block hash (64 hex characters)"}],"responses":{"200":{"description":"Block header as hex string","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_str_"},"example":{"data":"0100000000000000000000000000000000000000000000000000000000000000...","meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Invalid block hash format"}}}},"/api/v1/blocks/{block_hash}/txids":{"get":{"tags":["Blocks"],"summary":"Block Txids","description":"List all transaction IDs in a block.","operationId":"block_txids_api_v1_blocks__block_hash__txids_get","parameters":[{"name":"block_hash","in":"path","required":true,"schema":{"type":"string","description":"Block hash (64 hex characters)","title":"Block Hash"},"description":"Block hash (64 hex characters)"}],"responses":{"200":{"description":"Transaction IDs in a block","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_str__"},"example":{"data":["4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b","a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"],"meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Invalid block hash format"}}}},"/api/v1/blocks/{block_hash}/txs":{"get":{"tags":["Blocks"],"summary":"Block Txs","description":"Full transactions in a block, paginated. Default 25 per page, max 100.","operationId":"block_txs_api_v1_blocks__block_hash__txs_get","parameters":[{"name":"block_hash","in":"path","required":true,"schema":{"type":"string","description":"Block hash (64 hex characters)","title":"Block Hash"},"description":"Block hash (64 hex characters)"},{"name":"start","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Start index for pagination","default":0,"title":"Start"},"description":"Start index for pagination"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of transactions to return","default":25,"title":"Limit"},"description":"Number of transactions to return"}],"responses":{"200":{"description":"Full transactions in a block (paginated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":[{"txid":"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b","size":204,"vsize":177,"vin":[],"vout":[{"value":50.0,"n":0}]}],"meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Invalid block hash format"}}}},"/api/v1/blocks/{block_hash}/raw":{"get":{"tags":["Blocks"],"summary":"Block Raw","description":"Raw serialized block as hex string (verbosity 0).","operationId":"block_raw_api_v1_blocks__block_hash__raw_get","parameters":[{"name":"block_hash","in":"path","required":true,"schema":{"type":"string","description":"Block hash (64 hex characters)","title":"Block Hash"},"description":"Block hash (64 hex characters)"}],"responses":{"200":{"description":"Raw block as hex string","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_str_"},"example":{"data":"0100000000000000000000000000000000000000000000000...","meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Invalid block hash format"}}}},"/api/v1/tx/{txid}":{"get":{"tags":["Transactions"],"summary":"Get Transaction","description":"Full transaction analysis: inputs, outputs, fees, SegWit/Taproot flags, inscription detection.","operationId":"get_transaction_api_v1_tx__txid__get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"}],"responses":{"200":{"description":"Full transaction analysis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_TransactionAnalysisData_"},"example":{"data":{"txid":"a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d","size":259,"vsize":177,"weight":706,"fee_sat":14000,"fee_rate_sat_vb":79.1,"is_segwit":true,"is_taproot":false,"has_inscription":false,"input_count":1,"output_count":2},"meta":{"height":883000,"chain":"main"}}}}},"422":{"description":"Invalid txid format"}}}},"/api/v1/tx/{txid}/raw":{"get":{"tags":["Transactions"],"summary":"Get Raw Transaction","description":"Raw decoded transaction from getrawtransaction.","operationId":"get_raw_transaction_api_v1_tx__txid__raw_get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"}],"responses":{"200":{"description":"Raw decoded transaction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"txid":"a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d","hash":"b759d39a8596b70b3a46700b83e1edb247e17ba58df305421864fe7a9ac142ea","version":2,"size":259,"vsize":177,"weight":706,"locktime":0,"vin":[{"txid":"f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16","vout":0}],"vout":[{"value":0.5,"n":0,"scriptPubKey":{"type":"witness_v0_keyhash"}}],"blockhash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a68cd","confirmations":50000,"blocktime":1700000000},"meta":{"height":883000,"chain":"main"}}}}},"422":{"description":"Invalid txid format"}}}},"/api/v1/tx/{txid}/status":{"get":{"tags":["Transactions"],"summary":"Get Tx Status","description":"Check confirmation status of a transaction.","operationId":"get_tx_status_api_v1_tx__txid__status_get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"}],"responses":{"200":{"description":"Transaction confirmation status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"confirmed":true,"block_height":881234,"block_hash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a4670","confirmations":5000},"meta":{"node_height":886234,"chain":"main"}}}}},"422":{"description":"Invalid txid format"}}}},"/api/v1/tx/{txid}/hex":{"get":{"tags":["Transactions"],"summary":"Get Tx Hex","description":"Raw transaction as a hex string (not decoded).","operationId":"get_tx_hex_api_v1_tx__txid__hex_get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"}],"responses":{"200":{"description":"Raw transaction hex string","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_str_"},"example":{"data":"0200000001abcdef...","meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Invalid txid format"}}}},"/api/v1/tx/{txid}/outspends":{"get":{"tags":["Transactions"],"summary":"Get Tx Outspends","description":"Check spending status of each output in a transaction.","operationId":"get_tx_outspends_api_v1_tx__txid__outspends_get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"}],"responses":{"200":{"description":"Spending status of each transaction output","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_dict__"},"example":{"data":[{"vout":0,"spent":true},{"vout":1,"spent":false,"value":0.5,"scriptPubKey_type":"witness_v0_keyhash"}],"meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Invalid txid format"}}}},"/api/v1/tx/{txid}/merkle-proof":{"get":{"tags":["Transactions"],"summary":"Get Merkle Proof","description":"Merkle proof for a confirmed transaction (gettxoutproof).","operationId":"get_merkle_proof_api_v1_tx__txid__merkle_proof_get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"}],"responses":{"200":{"description":"Merkle proof for a confirmed transaction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"proof_hex":"0100000001...","block_hash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a4670"},"meta":{"node_height":881234,"chain":"main"}}}}},"404":{"description":"Transaction unconfirmed or not found"},"422":{"description":"Invalid txid format"}}}},"/api/v1/utxo/{txid}/{vout}":{"get":{"tags":["Transactions"],"summary":"Get Utxo","description":"Check if a UTXO is unspent (gettxout).","operationId":"get_utxo_api_v1_utxo__txid___vout__get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"},{"name":"vout","in":"path","required":true,"schema":{"type":"integer","minimum":0,"description":"Output index","title":"Vout"},"description":"Output index"}],"responses":{"200":{"description":"UTXO lookup result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"bestblock":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a68cd","confirmations":120000,"value":0.01234567,"scriptPubKey":{"asm":"OP_0 a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","hex":"0014a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","type":"witness_v0_keyhash"},"coinbase":false},"meta":{"height":883000,"chain":"main"}}}}},"422":{"description":"Invalid txid format"}}}},"/api/v1/decode":{"post":{"tags":["Transactions"],"summary":"Decode Transaction","description":"Decode a raw transaction hex string without broadcasting.","operationId":"decode_transaction_api_v1_decode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecodeRequest"}}},"required":true},"responses":{"200":{"description":"Decoded raw transaction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"txid":"a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d","version":2,"size":225,"vsize":166,"weight":661,"locktime":0,"vin":[{"txid":"f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16","vout":0}],"vout":[{"value":0.5,"n":0}]},"meta":{"height":883000,"chain":"main"}}}}},"422":{"description":"Invalid hex"}}}},"/api/v1/broadcast":{"post":{"tags":["Transactions"],"summary":"Broadcast Transaction","description":"Broadcast a signed raw transaction to the network.","operationId":"broadcast_transaction_api_v1_broadcast_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BroadcastRequest"}}},"required":true},"responses":{"200":{"description":"Transaction broadcast successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_BroadcastData_"},"example":{"data":{"txid":"a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d"},"meta":{"height":883000,"chain":"main"}}}}},"422":{"description":"Invalid hex"}}}},"/api/v1/fees":{"get":{"tags":["Fees"],"summary":"Fees","description":"Fee estimates for standard confirmation targets (1, 3, 6, 25, 144 blocks).","operationId":"fees_api_v1_fees_get","responses":{"200":{"description":"Fee estimates for standard targets","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_FeeEstimateData__"},"example":{"data":[{"conf_target":1,"fee_rate_btc_kvb":0.00025,"fee_rate_sat_vb":25.0},{"conf_target":6,"fee_rate_btc_kvb":0.00012,"fee_rate_sat_vb":12.0},{"conf_target":144,"fee_rate_btc_kvb":5e-05,"fee_rate_sat_vb":5.0}],"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/fees/recommended":{"get":{"tags":["Fees"],"summary":"Fees Recommended","description":"Human-readable fee recommendation.","operationId":"fees_recommended_api_v1_fees_recommended_get","responses":{"200":{"description":"Human-readable fee recommendation with all estimates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_FeeRecommendationData_"},"example":{"data":{"recommendation":"Fees are moderate. For next-block confirmation use 25 sat/vB. If you can wait 1 hour, 12 sat/vB should suffice.","estimates":{"1":25.0,"3":18.0,"6":12.0,"25":8.0,"144":5.0}},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/fees/mempool-blocks":{"get":{"tags":["Fees"],"summary":"Fees Mempool Blocks","description":"Project the next N blocks from the current mempool, sorted by fee rate descending.","operationId":"fees_mempool_blocks_api_v1_fees_mempool_blocks_get","responses":{"200":{"description":"Projected next blocks from mempool, grouped by fee rate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_dict__"},"example":{"data":[{"block_index":0,"min_fee_rate":15.0,"max_fee_rate":250.0,"median_fee_rate":25.0,"tx_count":2800,"total_weight":3990000,"total_fees_sat":8500000}],"meta":{"node_height":881234,"chain":"main"}}}}}}}},"/api/v1/fees/landscape":{"get":{"tags":["Fees"],"summary":"Fees Landscape","description":"Should I send now or wait? Fee landscape with trend analysis and actionable recommendation.","operationId":"fees_landscape_api_v1_fees_landscape_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"}}}}}}},"/api/v1/fees/estimate-tx":{"get":{"tags":["Fees"],"summary":"Fees Estimate Tx","description":"Estimate transaction size and fee cost without building a transaction.","operationId":"fees_estimate_tx_api_v1_fees_estimate_tx_get","parameters":[{"name":"inputs","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of inputs","default":1,"title":"Inputs"},"description":"Number of inputs"},{"name":"outputs","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Number of outputs","default":2,"title":"Outputs"},"description":"Number of outputs"},{"name":"input_type","in":"query","required":false,"schema":{"type":"string","description":"Input script type (p2pkh, p2wpkh, p2sh, p2wsh, p2tr)","default":"p2wpkh","title":"Input Type"},"description":"Input script type (p2pkh, p2wpkh, p2sh, p2wsh, p2tr)"},{"name":"output_type","in":"query","required":false,"schema":{"type":"string","description":"Output script type (p2pkh, p2wpkh, p2sh, p2wsh, p2tr)","default":"p2wpkh","title":"Output Type"},"description":"Output script type (p2pkh, p2wpkh, p2sh, p2wsh, p2tr)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/history":{"get":{"tags":["Fees"],"summary":"Fees History","description":"Historical fee rates and mempool size. Returns time-series data with summary stats.","operationId":"fees_history_api_v1_fees_history_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"description":"Hours of history to return","default":24,"title":"Hours"},"description":"Hours of history to return"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","description":"Interval (e.g. 5m, 10m, 30m, 1h)","default":"10m","title":"Interval"},"description":"Interval (e.g. 5m, 10m, 30m, 1h)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/plan":{"get":{"tags":["Fees"],"summary":"Fees Plan","description":"Transaction cost planner — estimate costs across urgency tiers with wait recommendation.\n\nCall with no params for a standard SegWit transaction, or use a profile preset.\nAdd currency=usd to include USD equivalents (requires BTC price from CoinGecko).\nReturns cost at 4 urgency tiers, delay savings %, trend analysis, and historical comparison.","operationId":"fees_plan_api_v1_fees_plan_get","parameters":[{"name":"profile","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Preset profile: simple_send, exchange_withdrawal, batch_payout, consolidation","title":"Profile"},"description":"Preset profile: simple_send, exchange_withdrawal, batch_payout, consolidation"},{"name":"inputs","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"description":"Number of inputs (overrides profile)","title":"Inputs"},"description":"Number of inputs (overrides profile)"},{"name":"outputs","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"description":"Number of outputs (overrides profile)","title":"Outputs"},"description":"Number of outputs (overrides profile)"},{"name":"address_type","in":"query","required":false,"schema":{"type":"string","description":"Address type: segwit, taproot, legacy","default":"segwit","title":"Address Type"},"description":"Address type: segwit, taproot, legacy"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","description":"Include USD values: sats (default), usd (adds USD fields)","default":"sats","title":"Currency"},"description":"Include USD values: sats (default), usd (adds USD fields)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/savings":{"get":{"tags":["Fees"],"summary":"Fees Savings","description":"Fee savings simulation — how much you'd save with optimal timing.\n\nCompares average fee cost vs. optimal timing over the requested period.\nAdd currency=usd to include USD equivalents. Returns savings per transaction,\nmonthly projection, and fee range stats.","operationId":"fees_savings_api_v1_fees_savings_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":720,"minimum":1,"description":"Hours of history to analyze (default: 168 = 7 days)","default":168,"title":"Hours"},"description":"Hours of history to analyze (default: 168 = 7 days)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","description":"Include USD values: sats (default), usd (adds USD fields)","default":"sats","title":"Currency"},"description":"Include USD values: sats (default), usd (adds USD fields)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/{target}":{"get":{"tags":["Fees"],"summary":"Fee For Target","description":"Fee estimate for a specific confirmation target.","operationId":"fee_for_target_api_v1_fees__target__get","parameters":[{"name":"target","in":"path","required":true,"schema":{"type":"integer","maximum":1008,"minimum":1,"description":"Confirmation target in blocks","title":"Target"},"description":"Confirmation target in blocks"}],"responses":{"200":{"description":"Fee estimate for a specific confirmation target","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_FeeEstimateData_"},"example":{"data":{"conf_target":6,"fee_rate_btc_kvb":0.00012,"fee_rate_sat_vb":12.0,"errors":[]},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mempool":{"get":{"tags":["Mempool"],"summary":"Mempool Analysis","description":"Full mempool analysis: fee buckets, congestion level, next-block minimum fee.","operationId":"mempool_analysis_api_v1_mempool_get","responses":{"200":{"description":"Full mempool analysis with fee buckets and congestion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_MempoolAnalysisData_"},"example":{"data":{"size":14832,"bytes":7482910,"congestion":"medium","next_block_min_fee":8.2,"fee_buckets":[{"range":"1-5 sat/vB","count":3201,"total_vsize":1540000},{"range":"5-10 sat/vB","count":4512,"total_vsize":2180000},{"range":"10-25 sat/vB","count":3890,"total_vsize":1920000},{"range":"25-50 sat/vB","count":2105,"total_vsize":1100000},{"range":"50+ sat/vB","count":1124,"total_vsize":742910}]},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/mempool/info":{"get":{"tags":["Mempool"],"summary":"Mempool Info","description":"Raw mempool info from getmempoolinfo RPC. Cached for 10 seconds.","operationId":"mempool_info_api_v1_mempool_info_get","responses":{"200":{"description":"Raw mempool info from Bitcoin Core","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"loaded":true,"size":14832,"bytes":7482910,"usage":52830720,"total_fee":1.28453,"maxmempool":300000000,"mempoolminfee":1e-05,"minrelaytxfee":1e-05,"incrementalrelayfee":1e-05,"unbroadcastcount":0,"fullrbf":true},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/mempool/tx/{txid}":{"get":{"tags":["Mempool"],"summary":"Mempool Entry","description":"Get mempool entry for a specific transaction.","operationId":"mempool_entry_api_v1_mempool_tx__txid__get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID currently in the mempool","title":"Txid"},"description":"Transaction ID currently in the mempool"}],"responses":{"200":{"description":"Mempool entry for a specific transaction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"fees":{"base":1.41e-05,"modified":1.41e-05,"ancestor":1.41e-05,"descendant":1.41e-05},"vsize":141,"weight":561,"time":1741176000,"height":939460,"descendantcount":1,"descendantsize":141,"ancestorcount":1,"ancestorsize":141,"depends":[],"spentby":[],"bip125-replaceable":true,"unbroadcast":false},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mempool/txids":{"get":{"tags":["Mempool"],"summary":"Mempool Txids","description":"List transaction IDs in the mempool. Returns first `limit` txids (default 100).\n\nSet `limit=0` to return all (warning: can be 10K-50K+ items).","operationId":"mempool_txids_api_v1_mempool_txids_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Max txids to return (default 100, max 5000). Use 0 for all.","default":100,"title":"Limit"},"description":"Max txids to return (default 100, max 5000). Use 0 for all."}],"responses":{"200":{"description":"Transaction IDs in the mempool (default limit=100, use limit=0 for all)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_str__"},"example":{"data":["a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16"],"meta":{"node_height":939462,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mempool/recent":{"get":{"tags":["Mempool"],"summary":"Mempool Recent","description":"Most recent transactions entering the mempool, sorted by entry time (newest first).\n\nQuery parameter `count` controls how many to return (default 10, max 100).","operationId":"mempool_recent_api_v1_mempool_recent_get","parameters":[{"name":"count","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Count"}}],"responses":{"200":{"description":"Most recent transactions entering the mempool","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_dict__"},"example":{"data":[{"txid":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","vsize":141,"fee_rate":12.5,"time":1741176000}],"meta":{"node_height":939462,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mining":{"get":{"tags":["Mining"],"summary":"Mining Summary","description":"Mining summary: hashrate, difficulty, next retarget estimate.","operationId":"mining_summary_api_v1_mining_get","responses":{"200":{"description":"Mining summary with hashrate, difficulty, and retarget info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_MiningData_"},"example":{"data":{"blocks":939462,"difficulty":113757508517790.0,"networkhashps":8.12e+20,"chain":"main","next_retarget_height":940032,"blocks_until_retarget":570},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/mining/nextblock":{"get":{"tags":["Mining"],"summary":"Next Block","description":"Analyze the current block template — what the next block would look like if mined now.","operationId":"next_block_api_v1_mining_nextblock_get","responses":{"200":{"description":"Block template analysis — what the next block would look like","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_NextBlockData_"},"example":{"data":{"tx_count":3842,"total_fees_btc":0.18432,"total_weight":3992820,"min_fee_rate":5.01,"max_fee_rate":312.5,"median_fee_rate":14.2,"top_5":[{"txid":"a1b2c3d4e5f6...0001","fee_rate":312.5,"fee_sats":48000},{"txid":"b2c3d4e5f6a1...0002","fee_rate":285.0,"fee_sats":42750},{"txid":"c3d4e5f6a1b2...0003","fee_rate":248.3,"fee_sats":37245},{"txid":"d4e5f6a1b2c3...0004","fee_rate":210.0,"fee_sats":31500},{"txid":"e5f6a1b2c3d4...0005","fee_rate":195.7,"fee_sats":29355}]},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/mining/hashrate/history":{"get":{"tags":["Mining"],"summary":"Hashrate History","description":"Hashrate history derived from difficulty over recent blocks.","operationId":"hashrate_history_api_v1_mining_hashrate_history_get","parameters":[{"name":"blocks","in":"query","required":false,"schema":{"type":"integer","maximum":2016,"minimum":1,"description":"Number of blocks to analyze","default":144,"title":"Blocks"},"description":"Number of blocks to analyze"}],"responses":{"200":{"description":"Hashrate derived from block difficulty","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_"},"example":{"data":[{"height":879998,"timestamp":1709654200,"hashrate_eh_s":786.32,"difficulty":110000000000000.0},{"height":879999,"timestamp":1709654400,"hashrate_eh_s":786.32,"difficulty":110000000000000.0}],"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mining/revenue":{"get":{"tags":["Mining"],"summary":"Mining Revenue","description":"Mining revenue breakdown: subsidy vs fees over recent blocks.","operationId":"mining_revenue_api_v1_mining_revenue_get","parameters":[{"name":"blocks","in":"query","required":false,"schema":{"type":"integer","maximum":2016,"minimum":1,"description":"Number of blocks to analyze","default":144,"title":"Blocks"},"description":"Number of blocks to analyze"}],"responses":{"200":{"description":"Mining revenue breakdown","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"blocks_analyzed":144,"total_subsidy_btc":450.0,"total_fees_btc":3.6,"total_revenue_btc":453.6,"avg_revenue_per_block_btc":3.15,"fee_percentage":0.79},"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mining/pools":{"get":{"tags":["Mining"],"summary":"Mining Pools","description":"Identify mining pools from coinbase tags over recent blocks.","operationId":"mining_pools_api_v1_mining_pools_get","parameters":[{"name":"blocks","in":"query","required":false,"schema":{"type":"integer","maximum":2016,"minimum":1,"description":"Number of blocks to analyze","default":144,"title":"Blocks"},"description":"Number of blocks to analyze"}],"responses":{"200":{"description":"Pool identification from coinbase tags","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"blocks_analyzed":144,"pools":[{"name":"foundry","blocks_found":42,"percentage":29.17},{"name":"antpool","blocks_found":28,"percentage":19.44},{"name":"f2pool","blocks_found":18,"percentage":12.5}],"unknown_count":12,"unknown_percentage":8.33},"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mining/difficulty/history":{"get":{"tags":["Mining"],"summary":"Difficulty History","description":"Difficulty adjustment history at epoch boundaries.","operationId":"difficulty_history_api_v1_mining_difficulty_history_get","parameters":[{"name":"epochs","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Number of difficulty epochs","default":10,"title":"Epochs"},"description":"Number of difficulty epochs"}],"responses":{"200":{"description":"Difficulty at epoch boundaries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_"},"example":{"data":[{"epoch":434,"height":875232,"difficulty":95672678345126.0,"timestamp":1708000000},{"epoch":435,"height":877248,"difficulty":110000000000000.0,"timestamp":1709200000,"change_pct":14.96}],"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/mining/revenue/history":{"get":{"tags":["Mining"],"summary":"Revenue History","description":"Per-block mining revenue history (subsidy + fees).","operationId":"revenue_history_api_v1_mining_revenue_history_get","parameters":[{"name":"blocks","in":"query","required":false,"schema":{"type":"integer","maximum":2016,"minimum":1,"description":"Number of blocks","default":144,"title":"Blocks"},"description":"Number of blocks"}],"responses":{"200":{"description":"Per-block mining revenue","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_"},"example":{"data":[{"height":879999,"subsidy_btc":3.125,"fees_btc":0.025,"total_btc":3.15,"tx_count":3500},{"height":880000,"subsidy_btc":3.125,"fees_btc":0.031,"total_btc":3.156,"tx_count":3200}],"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/network":{"get":{"tags":["Network"],"summary":"Network","description":"Network info: version, subversion, connections, relay fee.","operationId":"network_api_v1_network_get","responses":{"200":{"description":"Network info","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_NetworkData_"},"example":{"data":{"version":280100,"subversion":"/Satoshi:28.1.0/","protocol_version":70016,"connections":125,"connections_in":87,"connections_out":38,"relay_fee":1e-05,"incremental_fee":1e-05,"networks":[{"name":"ipv4","reachable":true},{"name":"ipv6","reachable":true},{"name":"onion","reachable":true},{"name":"i2p","reachable":false},{"name":"cjdns","reachable":false}]},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/network/forks":{"get":{"tags":["Network"],"summary":"Chain Forks","description":"Chain tips from getchaintips — shows active chain and any forks/orphans.","operationId":"chain_forks_api_v1_network_forks_get","responses":{"200":{"description":"Chain tips showing active chain and any forks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_list_dict__"},"example":{"data":[{"height":939462,"hash":"00000000000000000002a7c4c1e48d76c5a37902165a270156b7a8d72f9a68cd","branchlen":0,"status":"active"},{"height":939460,"hash":"000000000000000000034f1a23b8e1fa9e5f5bc91cfe1b2c8c5a2b3d4e5f6a7b","branchlen":1,"status":"valid-fork"}],"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/network/difficulty":{"get":{"tags":["Network"],"summary":"Difficulty Adjustment","description":"Current difficulty epoch progress, estimated adjustment, and retarget timing.","operationId":"difficulty_adjustment_api_v1_network_difficulty_get","responses":{"200":{"description":"Current difficulty adjustment progress and estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"difficulty":119126831040958.3,"current_epoch_start_height":881280,"blocks_in_epoch":1954,"blocks_remaining":62,"progress_percent":96.9,"estimated_retarget_date":"2026-03-08T14:00:00+00:00","previous_retarget_percent":3.2},"meta":{"node_height":883234,"chain":"main"}}}}}}}},"/api/v1/network/validate-address/{address}":{"get":{"tags":["Network","Network"],"summary":"Validate Address","description":"Validate a Bitcoin address and return its properties.","operationId":"validate_address_api_v1_network_validate_address__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Bitcoin address to validate","title":"Address"},"description":"Bitcoin address to validate"}],"responses":{"200":{"description":"Address validation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"isvalid":true,"address":"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4","scriptPubKey":"0014751e76e8199196d454941c45d1b3a323f1433bd6","isscript":false,"iswitness":true,"witness_version":0},"meta":{"node_height":881234,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stream/blocks":{"get":{"tags":["Streams"],"summary":"Stream Blocks","description":"SSE stream of new block events. Connect with `curl -N`.","operationId":"stream_blocks_api_v1_stream_blocks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/stream/fees":{"get":{"tags":["Streams"],"summary":"Stream Fees","description":"SSE stream of fee rate updates every 30 seconds. Connect with `curl -N`.","operationId":"stream_fees_api_v1_stream_fees_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/stream/whale-txs":{"get":{"tags":["Streams"],"summary":"Stream Whale Txs","description":"SSE stream of whale transactions (large value txs entering the mempool).","operationId":"stream_whale_txs_api_v1_stream_whale_txs_get","parameters":[{"name":"min_btc","in":"query","required":false,"schema":{"type":"number","maximum":10000,"minimum":0.1,"description":"Minimum BTC value to alert on","default":10.0,"title":"Min Btc"},"description":"Minimum BTC value to alert on"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/register":{"post":{"tags":["Keys"],"summary":"Register","operationId":"register_api_v1_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/unsubscribe":{"post":{"tags":["Keys"],"summary":"Unsubscribe Emails","description":"Opt out of usage alert emails.","operationId":"unsubscribe_emails_api_v1_unsubscribe_post","parameters":[{"name":"X-API-Key","in":"header","required":true,"schema":{"type":"string","title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/health/deep":{"get":{"tags":["Status"],"summary":"Health Deep","description":"Deep health check: RPC, DB, cache, sync, usage buffer. Requires API key (free+).","operationId":"health_deep_api_v1_health_deep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/guide":{"get":{"tags":["Guide"],"summary":"Guide","description":"Interactive API guide. Teaches you the entire API from your terminal.","operationId":"guide_api_v1_guide_get","parameters":[{"name":"use_case","in":"query","required":false,"schema":{"$ref":"#/components/schemas/UseCaseFilter","description":"Filter by use case category","default":"all"},"description":"Filter by use case category"},{"name":"lang","in":"query","required":false,"schema":{"$ref":"#/components/schemas/LangFilter","description":"Code example language","default":"curl"},"description":"Code example language"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/rpc":{"post":{"tags":["RPC Proxy"],"summary":"Rpc Proxy","description":"Proxy JSON-RPC calls to the Bitcoin node.\n\nAccepts standard JSON-RPC 2.0 requests. Only whitelisted read-only\nmethods are allowed. Used by bitcoin-mcp for zero-config hosted mode.","operationId":"rpc_proxy_api_v1_rpc_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/analytics/public":{"get":{"tags":["Analytics"],"summary":"Analytics Public","description":"Public stats for social proof on the landing page. No auth required.","operationId":"analytics_public_api_v1_analytics_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/analytics/founder":{"get":{"tags":["Analytics"],"summary":"Analytics Founder","description":"Curated founder view: real product usage vs scanner noise.","operationId":"analytics_founder_api_v1_analytics_founder_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/overview":{"get":{"tags":["Analytics"],"summary":"Analytics Overview","operationId":"analytics_overview_api_v1_analytics_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/analytics/requests":{"get":{"tags":["Analytics"],"summary":"Analytics Requests","operationId":"analytics_requests_api_v1_analytics_requests_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"^(1m|5m|15m|1h|6h|1d)$","default":"1h","title":"Interval"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/endpoints":{"get":{"tags":["Analytics"],"summary":"Analytics Endpoints","operationId":"analytics_endpoints_api_v1_analytics_endpoints_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/errors":{"get":{"tags":["Analytics"],"summary":"Analytics Errors","operationId":"analytics_errors_api_v1_analytics_errors_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/user-agents":{"get":{"tags":["Analytics"],"summary":"Analytics User Agents","operationId":"analytics_user_agents_api_v1_analytics_user_agents_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/latency":{"get":{"tags":["Analytics"],"summary":"Analytics Latency","operationId":"analytics_latency_api_v1_analytics_latency_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/keys":{"get":{"tags":["Analytics"],"summary":"Analytics Keys","description":"Per-key usage: hits, avg latency, error rate, last seen.","operationId":"analytics_keys_api_v1_analytics_keys_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/growth":{"get":{"tags":["Analytics"],"summary":"Analytics Growth","description":"Day-over-day and week-over-week request & key growth.","operationId":"analytics_growth_api_v1_analytics_growth_get","parameters":[{"name":"client_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by client type (e.g. bitcoin-mcp, ai-agent, sdk, browser, unknown)","title":"Client Type"},"description":"Filter by client type (e.g. bitcoin-mcp, ai-agent, sdk, browser, unknown)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/slow-endpoints":{"get":{"tags":["Analytics"],"summary":"Analytics Slow Endpoints","description":"Top N endpoints by p95 latency.","operationId":"analytics_slow_endpoints_api_v1_analytics_slow_endpoints_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"24h","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/client-types":{"get":{"tags":["Analytics"],"summary":"Analytics Client Types","description":"Breakdown of requests by client_type over a configurable period.","operationId":"analytics_client_types_api_v1_analytics_client_types_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/mcp-funnel":{"get":{"tags":["Analytics"],"summary":"Analytics Mcp Funnel","description":"MCP-specific metrics: total requests, unique keys, top endpoints.","operationId":"analytics_mcp_funnel_api_v1_analytics_mcp_funnel_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"7d","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/retention":{"get":{"tags":["Analytics"],"summary":"Analytics Retention","description":"Active keys in 24h/7d/30d vs total registered.","operationId":"analytics_retention_api_v1_analytics_retention_get","parameters":[{"name":"client_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by client type (e.g. bitcoin-mcp, ai-agent, sdk, browser, unknown)","title":"Client Type"},"description":"Filter by client type (e.g. bitcoin-mcp, ai-agent, sdk, browser, unknown)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/referrers":{"get":{"tags":["Analytics"],"summary":"Analytics Referrers","description":"Top traffic referrers by request count.","operationId":"analytics_referrers_api_v1_analytics_referrers_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"7d","title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/funnel":{"get":{"tags":["Analytics"],"summary":"Analytics Funnel","description":"Registration-to-usage conversion funnel.","operationId":"analytics_funnel_api_v1_analytics_funnel_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(1h|6h|24h|7d|30d)$","default":"7d","title":"Period"}},{"name":"client_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by client type (e.g. bitcoin-mcp, ai-agent, sdk, browser, unknown)","title":"Client Type"},"description":"Filter by client type (e.g. bitcoin-mcp, ai-agent, sdk, browser, unknown)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/users":{"get":{"tags":["Analytics"],"summary":"Analytics Users","description":"List all registered API key users (paginated, max 500 per page).","operationId":"analytics_users_api_v1_analytics_users_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/x402-stats":{"get":{"tags":["x402"],"summary":"x402 payment analytics","description":"Aggregated statistics for x402 stablecoin micropayments.","operationId":"x402_stats_api_v1_x402_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/metrics":{"get":{"tags":["Monitoring"],"summary":"Prometheus metrics","description":"Returns Prometheus text exposition format metrics for scraping. Requires X-Admin-Key header.","operationId":"prometheus_metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{}}}}}},"/api/v1/billing/checkout":{"post":{"tags":["Billing"],"summary":"Create Stripe checkout session","description":"Creates a Stripe Checkout session for Pro tier subscription. Returns the checkout URL.","operationId":"create_checkout_api_v1_billing_checkout_post","responses":{"200":{"description":"Checkout URL","content":{"application/json":{"schema":{}}}},"401":{"description":"API key required"},"503":{"description":"Billing not configured"}}}},"/api/v1/billing/status":{"get":{"tags":["Billing"],"summary":"Subscription status","description":"Returns current subscription status for the authenticated API key.","operationId":"subscription_status_api_v1_billing_status_get","responses":{"200":{"description":"Subscription info","content":{"application/json":{"schema":{}}}},"401":{"description":"API key required"},"503":{"description":"Billing not configured"}}}},"/api/v1/billing/cancel":{"post":{"tags":["Billing"],"summary":"Cancel subscription","description":"Cancels the Pro subscription at the end of the current billing period.","operationId":"cancel_subscription_api_v1_billing_cancel_post","responses":{"200":{"description":"Cancellation confirmed","content":{"application/json":{"schema":{}}}},"401":{"description":"API key required"},"404":{"description":"No active subscription"},"503":{"description":"Billing not configured"}}}},"/api/v1/prices":{"get":{"tags":["Prices"],"summary":"Get Prices","description":"Current BTC price in USD, EUR, GBP, JPY, CAD, AUD with 24h change. Cached for 60s. Data provided by CoinGecko.","operationId":"get_prices_api_v1_prices_get","responses":{"200":{"description":"Current BTC price in multiple currencies","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"USD":92150.0,"EUR":84500.0,"GBP":72300.0,"JPY":13850000.0,"CAD":126500.0,"AUD":141200.0,"change_24h_pct":2.35},"meta":{"source":"coingecko"}}}}}}}},"/api/v1/market-data":{"get":{"tags":["Prices"],"summary":"Get Market Data Endpoint","description":"Pre-computed BTC market snapshot: price, mempool info, and fee estimates.\n\nDesigned for trading bots and 15-minute window strategies. A background thread\nrefreshes this data every 5 seconds, so this endpoint returns instantly (<1ms)\nwith no RPC calls or external API hits on the request path.\n\nFor even lower latency, subscribe to the `market_data` WebSocket channel\nat /api/v1/ws — data is pushed every 5 seconds with zero HTTP overhead.\n\nFalls back to live assembly if the background ticker hasn't started yet.","operationId":"get_market_data_endpoint_api_v1_market_data_get","responses":{"200":{"description":"Combined BTC market data: price, mempool, and fee estimates in a single call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"price":{"USD":92150.0,"change_24h_pct":2.35},"mempool":{"size":14832,"bytes":7482910,"total_fee":1.28},"fees":{"estimates":{"1":25.0,"3":18.0,"6":12.0,"25":8.0,"144":5.0}}},"meta":{"node_height":939462,"chain":"main"}}}}}}}},"/api/v1/address/{address}":{"get":{"tags":["Address"],"summary":"Address Summary","description":"Address balance and UTXO summary via UTXO set scan.\n\nReturns confirmed balance only (unspent outputs currently in the UTXO set).\nDoes not include mempool/unconfirmed transactions.","operationId":"address_summary_api_v1_address__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Bitcoin address (any format: legacy, segwit, taproot)","title":"Address"},"description":"Bitcoin address (any format: legacy, segwit, taproot)"}],"responses":{"200":{"description":"Address balance and UTXO summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"address":"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4","type":"witness_v0_keyhash","balance_btc":0.01234567,"balance_sats":1234567,"utxo_count":3,"is_witness":true,"witness_version":0},"meta":{"node_height":939673,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/address/{address}/utxos":{"get":{"tags":["Address"],"summary":"Address Utxos","description":"List unspent transaction outputs (UTXOs) for an address.\n\nReturns confirmed UTXOs from the UTXO set scan.\nResults are sorted by value (largest first). Use limit to control response size.","operationId":"address_utxos_api_v1_address__address__utxos_get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Bitcoin address (any format: legacy, segwit, taproot)","title":"Address"},"description":"Bitcoin address (any format: legacy, segwit, taproot)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max UTXOs to return","default":50,"title":"Limit"},"description":"Max UTXOs to return"}],"responses":{"200":{"description":"List of UTXOs for an address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"address":"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4","utxo_count":2,"balance_btc":0.01234567,"balance_sats":1234567,"utxos":[{"txid":"a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d","vout":0,"value_btc":0.01,"value_sats":1000000,"height":800000,"coinbase":false},{"txid":"f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16","vout":1,"value_btc":0.00234567,"value_sats":234567,"height":810000,"coinbase":false}]},"meta":{"node_height":939673,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tools/exchange-compare":{"get":{"tags":["Tools"],"summary":"Compare Exchanges","description":"Compare how much BTC you receive across exchanges after all fees.\n\nShows trading fees, spread costs, and withdrawal fees for each exchange,\nthen ranks by net sats received in your wallet.","operationId":"compare_exchanges_api_v1_tools_exchange_compare_get","parameters":[{"name":"amount_usd","in":"query","required":false,"schema":{"type":"number","maximum":1000000,"minimum":1,"description":"USD amount to convert to BTC","default":100,"title":"Amount Usd"},"description":"USD amount to convert to BTC"}],"responses":{"200":{"description":"Exchange fee comparison for a given USD amount","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"amount_usd":100,"btc_price_usd":92000,"exchanges":[{"exchange":"Strike","amount_usd":100,"trading_fee_usd":0.0,"spread_cost_usd":0.99,"withdrawal_fee_sats":0,"withdrawal_fee_usd":0.0,"total_fee_usd":0.99,"total_fee_pct":0.99,"gross_sats":107620,"net_sats":107620,"net_btc":0.0010762,"notes":"No trading fee; revenue from spread (~0.99%). Lightning withdrawals free.","last_updated":"2026-03-06"}],"best_value":"Strike"},"meta":{"source":"satoshi-api"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/supply":{"get":{"tags":["Supply"],"summary":"Supply Summary","description":"Bitcoin supply breakdown: circulating supply, inflation rate, halving countdown.\n\nPure math from block height — uses the deterministic halving schedule.","operationId":"supply_summary_api_v1_supply_get","responses":{"200":{"description":"Bitcoin supply breakdown with halving and inflation data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"circulating_supply_btc":19828125.0,"total_possible_btc":21000000,"percent_mined":94.4196,"current_block_subsidy_btc":3.125,"halvings_completed":4,"next_halving_height":1050000,"blocks_until_halving":110538,"annual_inflation_rate_pct":0.8281},"meta":{"timestamp":"2026-03-05T12:00:00+00:00","node_height":939462,"chain":"main"}}}}}}}},"/api/v1/stats/utxo-set":{"get":{"tags":["Statistics"],"summary":"Utxo Set","description":"UTXO set summary from gettxoutsetinfo. Note: this RPC call can be slow.","operationId":"utxo_set_api_v1_stats_utxo_set_get","responses":{"200":{"description":"UTXO set summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"height":880000,"txouts":180000000,"total_amount_btc":19687500.0,"hash":"abc123...","disk_size_bytes":12000000000,"bogosize":13500000000},"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}}}}},"/api/v1/stats/segwit-adoption":{"get":{"tags":["Statistics"],"summary":"Segwit Adoption","description":"Output type distribution (SegWit, Taproot, legacy) across recent blocks.","operationId":"segwit_adoption_api_v1_stats_segwit_adoption_get","parameters":[{"name":"blocks","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Number of blocks to analyze","default":100,"title":"Blocks"},"description":"Number of blocks to analyze"}],"responses":{"200":{"description":"Output type distribution","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"blocks_analyzed":100,"total_outputs":45000,"type_distribution":{"P2WPKH":22000,"P2TR":12000,"P2SH":6000,"P2PKH":3000,"OP_RETURN":2000},"segwit_percentage":75.56,"taproot_percentage":26.67},"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats/op-returns":{"get":{"tags":["Statistics"],"summary":"Op Return Stats","description":"OP_RETURN usage statistics across recent blocks.","operationId":"op_return_stats_api_v1_stats_op_returns_get","parameters":[{"name":"blocks","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Number of blocks to analyze","default":100,"title":"Blocks"},"description":"Number of blocks to analyze"}],"responses":{"200":{"description":"OP_RETURN usage statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_dict_"},"example":{"data":{"blocks_analyzed":100,"total_op_returns":2500,"total_bytes":75000,"avg_per_block":25.0,"avg_size_bytes":30.0,"samples":[{"txid":"abc123...","hex":"6a0b68656c6c6f","size_bytes":7}]},"meta":{"timestamp":"2026-03-07T12:00:00+00:00","node_height":880000,"chain":"main"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/alerts/fees":{"get":{"tags":["Alerts"],"summary":"List Fee Alerts","description":"List all fee alerts for the authenticated API key.","operationId":"list_fee_alerts_api_v1_alerts_fees_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["Alerts"],"summary":"Create Fee Alert","description":"Register a webhook to be called when fees cross a threshold.\n\nThe webhook URL will receive a POST with JSON body containing\ncurrent fee data when the condition is met.","operationId":"create_fee_alert_api_v1_alerts_fees_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeeAlertRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/alerts/fees/{alert_id}":{"delete":{"tags":["Alerts"],"summary":"Delete Fee Alert","description":"Deactivate a fee alert.","operationId":"delete_fee_alert_api_v1_alerts_fees__alert_id__delete","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"integer","description":"Alert ID to deactivate","title":"Alert Id"},"description":"Alert ID to deactivate"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/alerts/tx/watch/{txid}":{"post":{"tags":["Alerts"],"summary":"Create Tx Watch","description":"Register a webhook to fire when a transaction reaches N confirmations.","operationId":"create_tx_watch_api_v1_alerts_tx_watch__txid__post","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID to watch","title":"Txid"},"description":"Transaction ID to watch"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TxWatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/alerts/tx":{"get":{"tags":["Alerts"],"summary":"List Tx Watches","description":"List all transaction watches for the authenticated API key.","operationId":"list_tx_watches_api_v1_alerts_tx_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/alerts/tx/{watch_id}":{"delete":{"tags":["Alerts"],"summary":"Delete Tx Watch","description":"Deactivate a transaction watch.","operationId":"delete_tx_watch_api_v1_alerts_tx__watch_id__delete","parameters":[{"name":"watch_id","in":"path","required":true,"schema":{"type":"integer","description":"Watch ID to deactivate","title":"Watch Id"},"description":"Watch ID to deactivate"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/explain/transaction/{txid}":{"get":{"tags":["AI"],"summary":"Explain Transaction","description":"Plain English explanation of a Bitcoin transaction.","operationId":"explain_transaction_api_v1_ai_explain_transaction__txid__get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","description":"Transaction ID (hex)","title":"Txid"},"description":"Transaction ID (hex)"},{"name":"endpoint_name","in":"query","required":false,"schema":{"type":"string","default":"this endpoint","title":"Endpoint Name"}}],"responses":{"200":{"description":"Plain English transaction explanation","content":{"application/json":{"schema":{},"example":{"data":{"txid":"a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d","explanation":"This transaction consolidated 5 UTXOs into 1 output, paying 2,400 sats in fees (8 sat/vB). The fee was reasonable — current median is 12 sat/vB.","provider":"azure_openai"},"meta":{"timestamp":"2026-03-15T12:00:00+00:00"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/explain/block/{hash_or_height}":{"get":{"tags":["AI"],"summary":"Explain Block","description":"Plain English summary of a Bitcoin block.","operationId":"explain_block_api_v1_ai_explain_block__hash_or_height__get","parameters":[{"name":"hash_or_height","in":"path","required":true,"schema":{"type":"string","description":"Block hash or height","title":"Hash Or Height"},"description":"Block hash or height"},{"name":"endpoint_name","in":"query","required":false,"schema":{"type":"string","default":"this endpoint","title":"Endpoint Name"}}],"responses":{"200":{"description":"Plain English block summary","content":{"application/json":{"schema":{},"example":{"data":{"block_hash":"00000000000000000002a7c...","height":883000,"explanation":"Block 883,000 was mined by Foundry USA. It contained 3,241 transactions...","provider":"azure_openai"},"meta":{"timestamp":"2026-03-15T12:00:00+00:00"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/fees/advice":{"get":{"tags":["AI"],"summary":"Fee Advice","description":"Natural language fee advice powered by AI with live fee data context.","operationId":"fee_advice_api_v1_ai_fees_advice_get","parameters":[{"name":"urgency","in":"query","required":false,"schema":{"type":"string","description":"Transaction urgency","enum":["low","medium","high"],"default":"medium","title":"Urgency"},"description":"Transaction urgency"},{"name":"amount_btc","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Transaction amount in BTC (optional context)","title":"Amount Btc"},"description":"Transaction amount in BTC (optional context)"},{"name":"context","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Transaction context: DCA, consolidation, payment, etc.","title":"Context"},"description":"Transaction context: DCA, consolidation, payment, etc."},{"name":"endpoint_name","in":"query","required":false,"schema":{"type":"string","default":"this endpoint","title":"Endpoint Name"}}],"responses":{"200":{"description":"Natural language fee advice based on current conditions","content":{"application/json":{"schema":{},"example":{"data":{"advice":"Send now at 12 sat/vB — fees are 40% below the 7-day average.","urgency":"medium","context":"DCA","provider":"azure_openai"},"meta":{"timestamp":"2026-03-15T12:00:00+00:00"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ai/chat":{"get":{"tags":["AI"],"summary":"Chat","description":"Stateless Bitcoin Q&A with live blockchain data as context. Rate limited to 10/min.","operationId":"chat_api_v1_ai_chat_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":500,"description":"Your Bitcoin question","title":"Q"},"description":"Your Bitcoin question"},{"name":"endpoint_name","in":"query","required":false,"schema":{"type":"string","default":"this endpoint","title":"Endpoint Name"}}],"responses":{"200":{"description":"Stateless Bitcoin Q&A with live data context","content":{"application/json":{"schema":{},"example":{"data":{"question":"What's happening with fees right now?","answer":"Current next-block fee is 8 sat/vB, which is low...","provider":"azure_openai"},"meta":{"timestamp":"2026-03-15T12:00:00+00:00"}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/observatory/scoreboard":{"get":{"tags":["Fee Observatory"],"summary":"Observatory Scoreboard","description":"Per-source accuracy ranking with overpayment stats.\n\nCompares fee estimates from multiple sources against actual block inclusion\nto rank which estimators are most accurate and which overpay the most.","operationId":"observatory_scoreboard_api_v1_fees_observatory_scoreboard_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"number","maximum":720,"minimum":1,"description":"Lookback window in hours (default 7 days)","default":168,"title":"Hours"},"description":"Lookback window in hours (default 7 days)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/observatory/block-stats":{"get":{"tags":["Fee Observatory"],"summary":"Observatory Block Stats","description":"Per-block fee statistics (percentiles, min/max/median feerate).\n\nReturns computed fee stats for recent blocks, useful for understanding\nfee market dynamics at the block level.","operationId":"observatory_block_stats_api_v1_fees_observatory_block_stats_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":144,"minimum":1,"description":"Number of recent blocks","default":50,"title":"Limit"},"description":"Number of recent blocks"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fees/observatory/estimates":{"get":{"tags":["Fee Observatory"],"summary":"Observatory Estimates","description":"Multi-source fee estimate time series.\n\nReturns raw fee estimates from all tracked sources over the specified\ntime window. Use the `source` parameter to filter to a single estimator.","operationId":"observatory_estimates_api_v1_fees_observatory_estimates_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"number","maximum":168,"minimum":1,"description":"Lookback window in hours","default":24,"title":"Hours"},"description":"Lookback window in hours"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source (e.g. 'core', 'mempool')","title":"Source"},"description":"Filter by source (e.g. 'core', 'mempool')"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"description":"Max rows","default":5000,"title":"Limit"},"description":"Max rows"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/history/events":{"get":{"tags":["History Explorer"],"summary":"List Events","operationId":"list_events_api_v1_history_events_get","parameters":[{"name":"era","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by era ID","title":"Era"},"description":"Filter by era ID"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by category","title":"Category"},"description":"Filter by category"},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by tag","title":"Tag"},"description":"Filter by tag"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/history/events/{event_id}":{"get":{"tags":["History Explorer"],"summary":"Get Event","operationId":"get_event_api_v1_history_events__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/history/eras":{"get":{"tags":["History Explorer"],"summary":"List Eras","operationId":"list_eras_api_v1_history_eras_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/history/eras/{era_id}":{"get":{"tags":["History Explorer"],"summary":"Get Era","operationId":"get_era_api_v1_history_eras__era_id__get","parameters":[{"name":"era_id","in":"path","required":true,"schema":{"type":"string","title":"Era Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/history/concepts":{"get":{"tags":["History Explorer"],"summary":"List Concepts","operationId":"list_concepts_api_v1_history_concepts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/history/concepts/{concept_id}":{"get":{"tags":["History Explorer"],"summary":"Get Concept","operationId":"get_concept_api_v1_history_concepts__concept_id__get","parameters":[{"name":"concept_id","in":"path","required":true,"schema":{"type":"string","title":"Concept Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/history/search":{"get":{"tags":["History Explorer"],"summary":"Search History","operationId":"search_history_api_v1_history_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query","title":"Q"},"description":"Search query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indexed/address/{address}/balance":{"get":{"tags":["Indexed Address"],"summary":"Get indexed address balance","description":"Balance and statistics for an address from the blockchain index.","operationId":"address_balance_api_v1_indexed_address__address__balance_get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_IndexedAddressBalance_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indexed/address/{address}/txs":{"get":{"tags":["Indexed Address"],"summary":"Get indexed address transaction history","description":"Paginated transaction history for an address from the blockchain index.","operationId":"address_txs_api_v1_indexed_address__address__txs_get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Results per page","default":25,"title":"Limit"},"description":"Results per page"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_IndexedAddressHistory_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indexed/tx/{txid}":{"get":{"tags":["Indexed Transaction"],"summary":"Get indexed transaction","description":"Enriched transaction detail from the blockchain index.","operationId":"indexed_tx_api_v1_indexed_tx__txid__get","parameters":[{"name":"txid","in":"path","required":true,"schema":{"type":"string","title":"Txid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_IndexedTransactionDetail_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/indexed/status":{"get":{"tags":["Indexer"],"summary":"Get indexer sync status","description":"Current indexer sync progress, speed, and ETA.","operationId":"indexer_status_api_v1_indexed_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiResponse_IndexerStatus_"}}}}}}}},"components":{"schemas":{"ApiResponse_BlockAnalysisData_":{"properties":{"data":{"$ref":"#/components/schemas/BlockAnalysisData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[BlockAnalysisData]"},"ApiResponse_BroadcastData_":{"properties":{"data":{"$ref":"#/components/schemas/BroadcastData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[BroadcastData]"},"ApiResponse_FeeEstimateData_":{"properties":{"data":{"$ref":"#/components/schemas/FeeEstimateData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[FeeEstimateData]"},"ApiResponse_FeeRecommendationData_":{"properties":{"data":{"$ref":"#/components/schemas/FeeRecommendationData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[FeeRecommendationData]"},"ApiResponse_HealthData_":{"properties":{"data":{"$ref":"#/components/schemas/HealthData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[HealthData]"},"ApiResponse_IndexedAddressBalance_":{"properties":{"data":{"$ref":"#/components/schemas/IndexedAddressBalance"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[IndexedAddressBalance]"},"ApiResponse_IndexedAddressHistory_":{"properties":{"data":{"$ref":"#/components/schemas/IndexedAddressHistory"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[IndexedAddressHistory]"},"ApiResponse_IndexedTransactionDetail_":{"properties":{"data":{"$ref":"#/components/schemas/IndexedTransactionDetail"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[IndexedTransactionDetail]"},"ApiResponse_IndexerStatus_":{"properties":{"data":{"$ref":"#/components/schemas/IndexerStatus"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[IndexerStatus]"},"ApiResponse_MempoolAnalysisData_":{"properties":{"data":{"$ref":"#/components/schemas/MempoolAnalysisData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[MempoolAnalysisData]"},"ApiResponse_MiningData_":{"properties":{"data":{"$ref":"#/components/schemas/MiningData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[MiningData]"},"ApiResponse_NetworkData_":{"properties":{"data":{"$ref":"#/components/schemas/NetworkData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[NetworkData]"},"ApiResponse_NextBlockData_":{"properties":{"data":{"$ref":"#/components/schemas/NextBlockData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[NextBlockData]"},"ApiResponse_TransactionAnalysisData_":{"properties":{"data":{"$ref":"#/components/schemas/TransactionAnalysisData"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[TransactionAnalysisData]"},"ApiResponse_dict_":{"properties":{"data":{"additionalProperties":true,"type":"object","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[dict]"},"ApiResponse_int_":{"properties":{"data":{"type":"integer","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[int]"},"ApiResponse_list_":{"properties":{"data":{"items":{},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[list]"},"ApiResponse_list_FeeEstimateData__":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FeeEstimateData"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[list[FeeEstimateData]]"},"ApiResponse_list_dict__":{"properties":{"data":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[list[dict]]"},"ApiResponse_list_str__":{"properties":{"data":{"items":{"type":"string"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[list[str]]"},"ApiResponse_str_":{"properties":{"data":{"type":"string","title":"Data"},"meta":{"$ref":"#/components/schemas/Meta"}},"type":"object","required":["data","meta"],"title":"ApiResponse[str]"},"BlockAnalysisData":{"properties":{"hash":{"type":"string","title":"Hash"},"height":{"type":"integer","title":"Height"},"tx_count":{"type":"integer","title":"Tx Count"},"size":{"type":"integer","title":"Size"},"weight":{"type":"integer","title":"Weight"},"median_fee_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Fee Rate"},"total_fee":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Fee"},"top_fee_txids":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Fee Txids","default":[]}},"type":"object","required":["hash","height","tx_count","size","weight"],"title":"BlockAnalysisData"},"BroadcastData":{"properties":{"txid":{"type":"string","title":"Txid"}},"type":"object","required":["txid"],"title":"BroadcastData"},"BroadcastRequest":{"properties":{"hex":{"type":"string","maxLength":2000000,"title":"Hex"}},"type":"object","required":["hex"],"title":"BroadcastRequest"},"DecodeRequest":{"properties":{"hex":{"type":"string","maxLength":2000000,"title":"Hex"}},"type":"object","required":["hex"],"title":"DecodeRequest"},"FeeAlertRequest":{"properties":{"webhook_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webhook Url","description":"URL to POST when condition is met"},"threshold_sat_vb":{"type":"number","exclusiveMinimum":0.0,"title":"Threshold Sat Vb","description":"Fee rate threshold in sat/vB"},"condition":{"type":"string","enum":["below","above"],"title":"Condition","description":"Trigger when fees go below or above threshold","default":"below"}},"type":"object","required":["webhook_url","threshold_sat_vb"],"title":"FeeAlertRequest"},"FeeEstimateData":{"properties":{"conf_target":{"type":"integer","title":"Conf Target"},"fee_rate_btc_kvb":{"type":"number","title":"Fee Rate Btc Kvb"},"fee_rate_sat_vb":{"type":"number","title":"Fee Rate Sat Vb"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors","default":[]}},"type":"object","required":["conf_target","fee_rate_btc_kvb","fee_rate_sat_vb"],"title":"FeeEstimateData"},"FeeRecommendationData":{"properties":{"recommendation":{"type":"string","title":"Recommendation"},"estimates":{"additionalProperties":{"type":"number"},"type":"object","title":"Estimates"}},"type":"object","required":["recommendation","estimates"],"title":"FeeRecommendationData"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthData":{"properties":{"status":{"type":"string","title":"Status"},"chain":{"type":"string","title":"Chain"},"blocks":{"type":"integer","title":"Blocks"}},"type":"object","required":["status","chain","blocks"],"title":"HealthData"},"IndexedAddressBalance":{"properties":{"address":{"type":"string","title":"Address"},"total_received":{"type":"integer","title":"Total Received"},"total_sent":{"type":"integer","title":"Total Sent"},"balance":{"type":"integer","title":"Balance"},"tx_count":{"type":"integer","title":"Tx Count"},"first_seen_height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"First Seen Height"},"last_seen_height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Seen Height"}},"type":"object","required":["address","total_received","total_sent","balance","tx_count"],"title":"IndexedAddressBalance","description":"Balance and statistics for an indexed address."},"IndexedAddressHistory":{"properties":{"address":{"type":"string","title":"Address"},"transactions":{"items":{"$ref":"#/components/schemas/IndexedTransactionSummary"},"type":"array","title":"Transactions"},"total":{"type":"integer","title":"Total"},"offset":{"type":"integer","title":"Offset"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["address","transactions","total","offset","limit"],"title":"IndexedAddressHistory","description":"Paginated transaction history for an address."},"IndexedTransactionDetail":{"properties":{"txid":{"type":"string","title":"Txid"},"block_height":{"type":"integer","title":"Block Height"},"block_hash":{"type":"string","title":"Block Hash"},"tx_index":{"type":"integer","title":"Tx Index"},"version":{"type":"integer","title":"Version"},"size":{"type":"integer","title":"Size"},"vsize":{"type":"integer","title":"Vsize"},"weight":{"type":"integer","title":"Weight"},"locktime":{"type":"integer","title":"Locktime"},"fee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fee"},"is_coinbase":{"type":"boolean","title":"Is Coinbase"},"input_count":{"type":"integer","title":"Input Count"},"output_count":{"type":"integer","title":"Output Count"},"inputs":{"items":{"$ref":"#/components/schemas/IndexedTxInput"},"type":"array","title":"Inputs"},"outputs":{"items":{"$ref":"#/components/schemas/IndexedTxOutput"},"type":"array","title":"Outputs"}},"type":"object","required":["txid","block_height","block_hash","tx_index","version","size","vsize","weight","locktime","is_coinbase","input_count","output_count","inputs","outputs"],"title":"IndexedTransactionDetail","description":"Enriched transaction from the index."},"IndexedTransactionSummary":{"properties":{"txid":{"type":"string","title":"Txid"},"block_height":{"type":"integer","title":"Block Height"},"tx_index":{"type":"integer","title":"Tx Index"},"value_change":{"type":"integer","title":"Value Change"},"fee":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fee"},"timestamp":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timestamp"}},"type":"object","required":["txid","block_height","tx_index","value_change"],"title":"IndexedTransactionSummary","description":"Summary of a transaction in address history."},"IndexedTxInput":{"properties":{"prev_txid":{"type":"string","title":"Prev Txid"},"prev_vout":{"type":"integer","title":"Prev Vout"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"}},"type":"object","required":["prev_txid","prev_vout"],"title":"IndexedTxInput","description":"Transaction input from the index."},"IndexedTxOutput":{"properties":{"vout":{"type":"integer","title":"Vout"},"value":{"type":"integer","title":"Value"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"script_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Script Type"},"spent":{"type":"boolean","title":"Spent","default":false}},"type":"object","required":["vout","value"],"title":"IndexedTxOutput","description":"Transaction output from the index."},"IndexerStatus":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"syncing":{"type":"boolean","title":"Syncing"},"indexed_height":{"type":"integer","title":"Indexed Height"},"node_height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Node Height"},"progress_pct":{"type":"number","title":"Progress Pct"},"blocks_per_sec":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Blocks Per Sec"},"estimated_completion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Estimated Completion"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"last_block_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Block At"}},"type":"object","required":["enabled","syncing","indexed_height","progress_pct"],"title":"IndexerStatus","description":"Current indexer sync status."},"LangFilter":{"type":"string","enum":["curl","python","javascript","all"],"title":"LangFilter"},"MempoolAnalysisData":{"properties":{"size":{"type":"integer","title":"Size"},"bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bytes"},"congestion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Congestion"},"next_block_min_fee":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Next Block Min Fee"},"fee_buckets":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Fee Buckets","default":[]}},"type":"object","required":["size"],"title":"MempoolAnalysisData"},"Meta":{"properties":{"timestamp":{"type":"string","title":"Timestamp"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"node_height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Node Height"},"chain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain"},"syncing":{"type":"boolean","title":"Syncing","default":false},"cached":{"type":"boolean","title":"Cached","default":false},"cache_age_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cache Age Seconds"},"max_blocks":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Blocks"}},"type":"object","required":["timestamp"],"title":"Meta"},"MiningData":{"properties":{"blocks":{"type":"integer","title":"Blocks"},"difficulty":{"type":"number","title":"Difficulty"},"networkhashps":{"type":"number","title":"Networkhashps"},"chain":{"type":"string","title":"Chain"},"next_retarget_height":{"type":"integer","title":"Next Retarget Height"},"blocks_until_retarget":{"type":"integer","title":"Blocks Until Retarget"}},"type":"object","required":["blocks","difficulty","networkhashps","chain","next_retarget_height","blocks_until_retarget"],"title":"MiningData"},"NetworkData":{"properties":{"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"},"subversion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subversion"},"protocol_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Protocol Version"},"connections":{"type":"integer","title":"Connections"},"connections_in":{"type":"integer","title":"Connections In"},"connections_out":{"type":"integer","title":"Connections Out"},"relay_fee":{"type":"number","title":"Relay Fee"},"incremental_fee":{"type":"number","title":"Incremental Fee"},"networks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Networks"}},"type":"object","required":["connections","connections_in","connections_out","relay_fee","incremental_fee","networks"],"title":"NetworkData"},"NextBlockData":{"properties":{"height":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Height"},"tx_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Tx Count"},"total_fees_btc":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Fees Btc"},"total_weight":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Weight"},"min_fee_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Fee Rate"},"max_fee_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Fee Rate"},"median_fee_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Fee Rate"},"top_5":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top 5","default":[]}},"type":"object","title":"NextBlockData"},"RegisterRequest":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"},"label":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Label"},"agreed_to_terms":{"type":"boolean","title":"Agreed To Terms","default":false},"utm_source":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Source"},"utm_medium":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Medium"},"utm_campaign":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Campaign"},"utm_term":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Term"},"utm_content":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Utm Content"},"first_landing_path":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"First Landing Path"},"first_referrer":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"First Referrer"},"first_utm_source":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Utm Source"},"first_utm_medium":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Utm Medium"},"first_utm_campaign":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Utm Campaign"},"first_utm_term":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Utm Term"},"first_utm_content":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Utm Content"}},"type":"object","required":["email"],"title":"RegisterRequest"},"TransactionAnalysisData":{"properties":{"txid":{"type":"string","title":"Txid"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size"},"vsize":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vsize"},"weight":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Weight"},"fee_sats":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fee Sats"},"fee_rate_sat_vb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fee Rate Sat Vb"},"is_segwit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Segwit"},"is_taproot":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Taproot"},"has_inscription":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Inscription"},"input_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Input Count"},"output_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Count"}},"type":"object","required":["txid"],"title":"TransactionAnalysisData"},"TxWatchRequest":{"properties":{"webhook_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webhook Url","description":"URL to POST when confirmations reached"},"target_confirmations":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Target Confirmations","description":"Number of confirmations to wait for","default":1}},"type":"object","required":["webhook_url"],"title":"TxWatchRequest"},"UseCaseFilter":{"type":"string","enum":["fees","blocks","transactions","mempool","mining","network","streams","prices","address","tools","status","authentication","supply","statistics","billing","websocket","admin","history","all"],"title":"UseCaseFilter"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}