{"openapi":"3.1.0","info":{"title":"Obol API","version":"0.1.0","description":"Blockchain data sold per request with USDC settlement on Base.","x-guidance":"Call paid GET operations with the documented query parameters. Valid unpaid requests return an x402 v2 payment challenge for canonical USDC on Base; retry with payment to receive the bounded JSON result. The address-label route returns exact misses free and challenges only known hits."},"servers":[{"url":"https://obol.danieldutoit.net"}],"paths":{"/health":{"get":{"summary":"Service health","operationId":"getHealth","responses":{"200":{"description":"Service is available","content":{"application/json":{"schema":{"type":"object","required":["status","service","network"],"properties":{"status":{"type":"string","const":"ok"},"service":{"type":"string","const":"obol"},"network":{"type":"string","const":"eip155:8453"}}}}}}}}},"/v1/base/address-snapshot":{"get":{"summary":"Base address balance snapshot","description":"Returns ETH and canonical Base USDC balances at one observed block after x402 payment of 0.001 USDC.","operationId":"getBaseAddressSnapshot","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","example":"0x1111111111111111111111111111111111111111"}}],"responses":{"200":{"description":"Two-provider verified snapshot","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid EVM address"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Provider error or disagreement"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/base/network-status":{"get":{"summary":"Base network status","description":"After x402 payment of 0.001 USDC, returns one Base block and timestamp reconciled against two pre-probed distinct-operator endpoints. This route has no parameters.","operationId":"getBaseNetworkStatus","parameters":[],"responses":{"200":{"description":"Two-provider reconciled Base network status","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["network","chain","observed_block","observed_block_hash","observed_at","provider_consistency"],"properties":{"network":{"type":"string","const":"eip155:8453"},"chain":{"type":"object","additionalProperties":false,"required":["id","name"],"properties":{"id":{"type":"integer","const":8453},"name":{"type":"string","const":"Base"}}},"observed_block":{"type":"integer","minimum":0,"maximum":9007199254740991},"observed_block_hash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","minLength":66,"maxLength":66},"observed_at":{"type":"string","format":"date-time"},"provider_consistency":{"type":"object","additionalProperties":false,"required":["agreement","provider_count","providers"],"properties":{"agreement":{"type":"boolean","const":true},"provider_count":{"type":"integer","const":2},"providers":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"string","minLength":1,"maxLength":128}}}}}}}}},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Provider error or disagreement"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/evm/address-snapshot":{"get":{"summary":"Multi-chain EVM native-balance snapshot","description":"After x402 payment of 0.001 USDC, returns the native balance at one common block, reconciled against two pre-probed distinct-operator endpoints. chain_id defaults to 8453.","operationId":"getEvmAddressSnapshot","parameters":[{"name":"chain_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":8453,"example":10}},{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","example":"0x1111111111111111111111111111111111111111"}}],"responses":{"200":{"description":"Two-provider verified native-balance snapshot","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid address, invalid chain ID, or unsupported chain"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Provider error or disagreement"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/sanctions/address-screening":{"get":{"summary":"Exact-address sanctions screening","description":"Checks an exact blockchain address against public-source EU, OFAC, and UK wallet observations after x402 payment of 0.005 USDC. Informational only; not legal advice.","operationId":"getSanctionsAddressScreening","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9:_-]+$","example":"0x1111111111111111111111111111111111111111"}}],"responses":{"200":{"description":"Bounded exact-match result with source, coverage, and freshness metadata","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid address identifier"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005000"}}}},"/v1/markets/kraken/candles":{"get":{"summary":"Latest Kraken OHLCV candles","description":"Returns up to 100 newest historical Kraken candles for an exact period/base/quote tuple after x402 payment of 0.001 USDC. Informational only; not investment advice.","operationId":"getKrakenCandles","parameters":[{"name":"period","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":10080,"example":60}},{"name":"base","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9]{2,12}$","example":"BTC"}},{"name":"quote","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9]{2,12}$","example":"USD"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10}}],"responses":{"200":{"description":"Bounded newest-first OHLCV candle observations","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid period, asset, or limit"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/markets/kraken/orderbook-top":{"get":{"summary":"Exact Kraken top-of-book snapshot","description":"Returns the Kraken top-of-book best bid, best ask, and spread percentage for one exact historical Kraken timestamp/base/quote key after x402 payment of 0.001 USDC. Informational only; not investment advice.","operationId":"getKrakenOrderbookTop","parameters":[{"name":"timestamp","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:[1-9][0-9]{0,10}|1[0-9]{11}|2[0-4][0-9]{10}|25[0-2][0-9]{9}|253[0-3][0-9]{8}|25340[01][0-9]{6}|253402[0-2][0-9]{5}|253402300[0-6][0-9]{2}|2534023007[0-8][0-9]|25340230079[0-9])$","maxLength":12,"example":"1786579500","examples":["1786579500","253402300799"]}},{"name":"base","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"BTC"}},{"name":"quote","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"USD"}}],"responses":{"200":{"description":"Bounded exact top-of-book snapshot or exact miss","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid timestamp, base, or quote"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable or invalid"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/markets/orderbook-top":{"get":{"summary":"Exact multi-exchange top-of-book snapshot","description":"Returns one normalized best bid, best ask, and spread percentage snapshot for an exact exchange/timestamp/base/quote key, or an exact miss, after x402 payment of 0.001 USDC. Supported exchanges are BINANCEUS, COINBASE, CRYPTOCOM, GEMINI, KRAKEN, and OKX. Informational only; not investment advice.","operationId":"getMultiExchangeOrderbookTop","parameters":[{"name":"exchange","in":"query","required":true,"schema":{"type":"string","enum":["BINANCEUS","COINBASE","CRYPTOCOM","GEMINI","KRAKEN","OKX"],"example":"COINBASE"}},{"name":"timestamp","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:[1-9][0-9]{0,10}|1[0-9]{11}|2[0-4][0-9]{10}|25[0-2][0-9]{9}|253[0-3][0-9]{8}|25340[01][0-9]{6}|253402[0-2][0-9]{5}|253402300[0-6][0-9]{2}|2534023007[0-8][0-9]|25340230079[0-9])$","maxLength":12,"example":"1788962867","examples":["1788962867","253402300799"]}},{"name":"base","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"BTC"}},{"name":"quote","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"USD"}}],"responses":{"200":{"description":"One bounded normalized exact top-of-book snapshot or exact miss","content":{"application/json":{"schema":{"type":"object","properties":{"exchange":{"type":"string","enum":["BINANCEUS","COINBASE","CRYPTOCOM","GEMINI","KRAKEN","OKX"]},"timestamp":{"type":"string","pattern":"^(?:[1-9][0-9]{0,10}|1[0-9]{11}|2[0-4][0-9]{10}|25[0-2][0-9]{9}|253[0-3][0-9]{8}|25340[01][0-9]{6}|253402[0-2][0-9]{5}|253402300[0-6][0-9]{2}|2534023007[0-8][0-9]|25340230079[0-9])$","maxLength":12,"examples":["1786579500","253402300799"]},"base":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$"},"quote":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$"},"found":{"type":"boolean"},"snapshot":{"anyOf":[{"type":"object","properties":{"observed_at":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$","format":"date-time"},"best_bid":{"type":"object","properties":{"price":{"type":"number","exclusiveMinimum":0,"maximum":9007199254740991},"volume":{"type":"number","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["price","volume"],"additionalProperties":false},"best_ask":{"type":"object","properties":{"price":{"type":"number","exclusiveMinimum":0,"maximum":9007199254740991},"volume":{"type":"number","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["price","volume"],"additionalProperties":false},"spread_percent":{"type":"number","minimum":0,"maximum":9007199254740991}},"required":["observed_at","best_bid","best_ask","spread_percent"],"additionalProperties":false},{"type":"null"}]},"coverage":{"type":"object","properties":{"match_type":{"type":"string","const":"exact_exchange_timestamp_base_and_quote"},"maximum_results":{"type":"integer","const":1}},"required":["match_type","maximum_results"],"additionalProperties":false},"disclaimer":{"type":"string","minLength":1,"maxLength":128}},"required":["exchange","timestamp","base","quote","coverage","disclaimer","found","snapshot"],"additionalProperties":false,"allOf":[{"if":{"properties":{"found":{"const":true}}},"then":{"properties":{"snapshot":{"type":"object"}}},"else":{"properties":{"snapshot":{"type":"null"}}}}]}}}},"400":{"description":"Invalid exchange, timestamp, base, quote, or additional query field"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable or invalid"}},"x-query-schema":{"type":"object","additionalProperties":false,"required":["exchange","timestamp","base","quote"],"properties":{"exchange":{"type":"string","enum":["BINANCEUS","COINBASE","CRYPTOCOM","GEMINI","KRAKEN","OKX"],"example":"COINBASE"},"timestamp":{"type":"string","pattern":"^(?:[1-9][0-9]{0,10}|1[0-9]{11}|2[0-4][0-9]{10}|25[0-2][0-9]{9}|253[0-3][0-9]{8}|25340[01][0-9]{6}|253402[0-2][0-9]{5}|253402300[0-6][0-9]{2}|2534023007[0-8][0-9]|25340230079[0-9])$","maxLength":12,"example":"1788962867","examples":["1788962867","253402300799"]},"base":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"BTC"},"quote":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"USD"}}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/markets/candles":{"get":{"summary":"Multi-exchange historical OHLCV candles","description":"Returns up to 100 newest historical candles for an exact exchange/period/base/quote tuple after x402 payment of 0.001 USDC. Informational only; not investment advice.","operationId":"getMultiExchangeCandles","parameters":[{"name":"exchange","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,22}[A-Z0-9])?$","example":"KRAKEN"}},{"name":"period","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":604800,"example":60}},{"name":"base","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"BTC"}},{"name":"quote","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z0-9](?:[A-Z0-9-]{0,14}[A-Z0-9])?$","example":"USD"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":10,"example":10}}],"responses":{"200":{"description":"Bounded newest-first OHLCV candle observations","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid exchange, period, asset, or limit"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}},"/v1/bitcoin/address-cluster":{"get":{"summary":"Exact Bitcoin address cluster lookup","description":"Returns one heuristic public-chain cluster assignment for an exact Bitcoin address after x402 payment of 0.003 USDC. A cluster is not proof of common ownership or identity.","operationId":"getBitcoinAddressCluster","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":14,"maxLength":90,"example":"1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp"}}],"responses":{"200":{"description":"Bounded exact-address cluster result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid Bitcoin address"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/bitcoin-cash/address-cluster":{"get":{"summary":"Exact Bitcoin Cash address cluster lookup","description":"Returns one heuristic public-chain cluster assignment for an exact Bitcoin Cash address after x402 payment of 0.003 USDC. A cluster is not proof of common ownership or identity.","operationId":"getBitcoinCashAddressCluster","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":26,"maxLength":125,"example":"1BpEi6DfDAUFd7GtittLSdBeYJvcoaVggu"}}],"responses":{"200":{"description":"Bounded exact-address cluster result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid Bitcoin Cash address"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/dogecoin/address-cluster":{"get":{"summary":"Exact Dogecoin address cluster lookup","description":"Returns one heuristic public-chain cluster assignment for an exact Dogecoin address after x402 payment of 0.003 USDC. A cluster is not proof of common ownership or identity.","operationId":"getDogecoinAddressCluster","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":26,"maxLength":35,"example":"D5EQRCnPMXmRvUoZwC7gu7fYspean3PQ9a"}}],"responses":{"200":{"description":"Bounded exact-address cluster result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid Dogecoin address"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/litecoin/address-cluster":{"get":{"summary":"Exact Litecoin Base58Check address cluster lookup","description":"Returns one heuristic public-chain cluster assignment for an exact Litecoin Base58Check address after x402 payment of 0.003 USDC. A cluster is not proof of common ownership or identity.","operationId":"getLitecoinAddressCluster","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":26,"maxLength":35,"example":"La11a9B6w6dykTnst5MZAy78DfiAmUVL8G"}}],"responses":{"200":{"description":"Bounded exact-address cluster result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid Litecoin address"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/cardano/transaction":{"get":{"summary":"Exact Cardano transaction lookup","description":"Returns one bounded Cardano mainnet transaction and its block fields for an exact transaction hash after x402 payment of 0.003 USDC.","operationId":"getCardanoTransaction","parameters":[{"name":"hash","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$","minLength":64,"maxLength":64,"example":"a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0"}}],"responses":{"200":{"description":"Bounded exact-hash transaction result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid Cardano transaction hash"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/cardano/stake-rewards":{"get":{"summary":"Exact Cardano stake rewards lookup","description":"Returns up to 100 Cardano mainnet stake rewards for one exact stake address and reward type over an earned-epoch range of at most 1,000 epochs after x402 payment of 0.003 USDC.","operationId":"getCardanoStakeRewards","parameters":[{"name":"stake_address","in":"query","required":true,"schema":{"type":"string","pattern":"^stake1[02-9ac-hj-np-z]{53}$","minLength":59,"maxLength":59,"example":"stake1uyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqg6jacpu","description":"Cardano mainnet stake-address syntax prefilter only; Bech32 checksum, network, credential type, and decoded length are enforced by runtime validation before payment because JSON Schema cannot express them."}},{"name":"reward_type","in":"query","required":true,"schema":{"type":"string","enum":["member","leader","refund"],"example":"member"}},{"name":"earned_epoch_min","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8}|1[0-9]{9}|20[0-9]{8}|21[0-3][0-9]{7}|214[0-6][0-9]{6}|2147[0-3][0-9]{5}|21474[0-7][0-9]{4}|214748[0-2][0-9]{3}|2147483[0-5][0-9]{2}|21474836[0-3][0-9]|214748364[0-7])$","maxLength":10,"example":"1000","description":"Canonical nonnegative integer string no greater than 2147483647."}},{"name":"earned_epoch_max","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8}|1[0-9]{9}|20[0-9]{8}|21[0-3][0-9]{7}|214[0-6][0-9]{6}|2147[0-3][0-9]{5}|21474[0-7][0-9]{4}|214748[0-2][0-9]{3}|2147483[0-5][0-9]{2}|21474836[0-3][0-9]|214748364[0-7])$","maxLength":10,"example":"2000","description":"Canonical nonnegative integer string no greater than 2147483647. Must be at least earned_epoch_min and at most 1,000 epochs above it; this cross-field constraint is enforced by runtime validation."}}],"responses":{"200":{"description":"Bounded newest-first stake reward rows","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["rewards"],"properties":{"rewards":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["type","amount_lovelace","spendable_epoch","pool_id","earned_epoch"],"properties":{"type":{"type":"string","enum":["member","leader","refund"]},"amount_lovelace":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,17}|[1-8][0-9]{18}|9[01][0-9]{17}|92[01][0-9]{16}|922[0-2][0-9]{15}|9223[0-2][0-9]{14}|92233[0-6][0-9]{13}|922337[01][0-9]{12}|92233720[0-2][0-9]{10}|922337203[0-5][0-9]{9}|9223372036[0-7][0-9]{8}|92233720368[0-4][0-9]{7}|922337203685[0-3][0-9]{6}|9223372036854[0-6][0-9]{5}|92233720368547[0-6][0-9]{4}|922337203685477[0-4][0-9]{3}|9223372036854775[0-7][0-9]{2}|922337203685477580[0-7])$","maxLength":19},"spendable_epoch":{"type":"integer","minimum":0,"maximum":2147483647},"pool_id":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,17}|[1-8][0-9]{18}|9[01][0-9]{17}|92[01][0-9]{16}|922[0-2][0-9]{15}|9223[0-2][0-9]{14}|92233[0-6][0-9]{13}|922337[01][0-9]{12}|92233720[0-2][0-9]{10}|922337203[0-5][0-9]{9}|9223372036[0-7][0-9]{8}|92233720368[0-4][0-9]{7}|922337203685[0-3][0-9]{6}|9223372036854[0-6][0-9]{5}|92233720368547[0-6][0-9]{4}|922337203685477[0-4][0-9]{3}|9223372036854775[0-7][0-9]{2}|922337203685477580[0-7])$","maxLength":19},"earned_epoch":{"type":"integer","minimum":0,"maximum":2147483647}}}}}}}}},"400":{"description":"Invalid Cardano stake rewards request"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-query-schema":{"type":"object","additionalProperties":false,"description":"earned_epoch_max must be at least earned_epoch_min and no more than 1,000 epochs above it; this cross-field constraint is enforced by runtime validation because JSON Schema cannot express it here.","required":["stake_address","reward_type","earned_epoch_min","earned_epoch_max"],"properties":{"stake_address":{"type":"string","pattern":"^stake1[02-9ac-hj-np-z]{53}$","minLength":59,"maxLength":59,"example":"stake1uyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqgpqyqszqg6jacpu","description":"Cardano mainnet stake-address syntax prefilter only; Bech32 checksum, network, credential type, and decoded length are enforced by runtime validation before payment because JSON Schema cannot express them."},"reward_type":{"type":"string","enum":["member","leader","refund"],"example":"member"},"earned_epoch_min":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8}|1[0-9]{9}|20[0-9]{8}|21[0-3][0-9]{7}|214[0-6][0-9]{6}|2147[0-3][0-9]{5}|21474[0-7][0-9]{4}|214748[0-2][0-9]{3}|2147483[0-5][0-9]{2}|21474836[0-3][0-9]|214748364[0-7])$","maxLength":10,"example":"1000","description":"Canonical nonnegative integer string no greater than 2147483647."},"earned_epoch_max":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8}|1[0-9]{9}|20[0-9]{8}|21[0-3][0-9]{7}|214[0-6][0-9]{6}|2147[0-3][0-9]{5}|21474[0-7][0-9]{4}|214748[0-2][0-9]{3}|2147483[0-5][0-9]{2}|21474836[0-3][0-9]|214748364[0-7])$","maxLength":10,"example":"2000","description":"Canonical nonnegative integer string no greater than 2147483647. Must be at least earned_epoch_min and at most 1,000 epochs above it; this cross-field constraint is enforced by runtime validation."}}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/solana/transaction":{"get":{"summary":"Exact Solana transaction lookup by signature and slot","description":"Returns one bounded public Solana mainnet transaction for an exact canonical base58 signature and slot after x402 payment of 0.003 USDC.","operationId":"getSolanaTransaction","parameters":[{"name":"signature","in":"query","required":true,"schema":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]+$","minLength":64,"maxLength":88,"example":"1111111111111111111111111111111111111111111111111111111111111111"}},{"name":"slot","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"42"}}],"responses":{"200":{"description":"Bounded exact-signature-and-slot transaction result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid Solana signature or slot"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/xrp/transaction":{"get":{"summary":"Exact XRP transaction lookup by hash, ledger, and transaction index","description":"Returns one bounded public XRP mainnet transaction for an exact hash, ledger number, and transaction index after x402 payment of 0.003 USDC.","operationId":"getXrpTransaction","parameters":[{"name":"transaction_hash","in":"query","required":true,"schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$","minLength":64,"maxLength":64,"example":"a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0"}},{"name":"block_number","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})$","maxLength":9,"example":"103400001"}},{"name":"tx_index","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})$","maxLength":9,"example":"7"}}],"responses":{"200":{"description":"Bounded exact XRP transaction result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid XRP transaction key"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/ethereum/complex-flow":{"get":{"summary":"Exact Ethereum complex-flow edge","description":"Returns up to 100 newest public Ethereum aggregate flow observations for an exact from-address, to-address, asset, and block range of at most 100,000 blocks after x402 payment of 0.003 USDC.","operationId":"getEthereumComplexFlow","parameters":[{"name":"from_address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","minLength":42,"maxLength":42,"example":"0x0000000000000000000000000000000000000000"}},{"name":"to_address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","minLength":42,"maxLength":42,"example":"0x0000000000000000000000000000000000000000"}},{"name":"asset","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","minLength":42,"maxLength":42,"example":"0x0030b738bc1de21c93ca066340f74a952881e0a4"}},{"name":"block_number_min","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"17783798"}},{"name":"block_number_max","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"17883798","description":"Must be at least block_number_min and no more than 100,000 blocks above it."}}],"responses":{"200":{"description":"Bounded newest-first aggregate flow observations","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["flows"],"properties":{"flows":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["block_number","block_time","count","amount","price","value","level"],"properties":{"block_number":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"block_time":{"type":"string","format":"date-time"},"count":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"},"amount":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"},"price":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"},"value":{"type":["string","null"],"pattern":"^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?$"},"level":{"type":["string","null"],"maxLength":64}}}}}}}}},"400":{"description":"Invalid address or block range"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable or invalid"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/arbitrum/token-transfers":{"get":{"summary":"Arbitrum token transfers by asset and block range","description":"Returns up to 100 newest public Arbitrum token transfers for an exact asset and block range of at most 100,000 blocks after x402 payment of 0.003 USDC.","operationId":"getArbitrumTokenTransfers","parameters":[{"name":"asset","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","minLength":42,"maxLength":42,"example":"0x0030b738bc1de21c93ca066340f74a952881e0a4"}},{"name":"block_number_min","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"17783798"}},{"name":"block_number_max","in":"query","required":true,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"17883798","description":"Must be at least block_number_min and no more than 100,000 blocks above it."}}],"responses":{"200":{"description":"Bounded newest-first token transfers","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["transfers"],"properties":{"transfers":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["hash","tx_type","to_address","from_address","block_number","block_time","tx_index","tok_index","log_index","value"],"properties":{"hash":{"type":"string","pattern":"^0x[0-9a-f]{64}$"},"tx_type":{"type":"string","minLength":1,"maxLength":5},"to_address":{"type":"string","pattern":"^0x[0-9a-f]{40}$"},"from_address":{"type":"string","pattern":"^0x[0-9a-f]{40}$"},"block_number":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"block_time":{"type":["string","null"],"format":"date-time"},"tx_index":{"type":"integer","minimum":0,"maximum":2147483647},"tok_index":{"type":"integer","minimum":0,"maximum":2147483647},"log_index":{"type":"integer","minimum":0,"maximum":2147483647},"value":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,77})$"}}}}}}}}},"400":{"description":"Invalid asset or block range"},"402":{"description":"x402 payment required","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"500":{"description":"Data source unavailable or invalid"}},"x-query-schema":{"type":"object","additionalProperties":false,"required":["asset","block_number_min","block_number_max"],"properties":{"asset":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","minLength":42,"maxLength":42,"example":"0x0030b738bc1de21c93ca066340f74a952881e0a4"},"block_number_min":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"17783798"},"block_number_max":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19,"example":"17883798","description":"Must be at least block_number_min and no more than 100,000 blocks above it."}}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003000"}}}},"/v1/address-labels":{"get":{"summary":"Hit-conditional exact-address labels","description":"Checks Ethereum, Bitcoin, or Tron public-source labels before payment. Exact misses are free; known hits require 0.001 USDC through x402.","operationId":"getAddressLabels","parameters":[{"name":"chain","in":"query","required":true,"schema":{"type":"string","enum":["ethereum","bitcoin","tron"],"example":"ethereum"}},{"name":"address","in":"query","required":true,"schema":{"type":"string","minLength":14,"maxLength":90,"example":"0x00087a3b7b923dd2e1077c53bfa7d6aab3470848"}}],"responses":{"200":{"description":"Free bounded miss or paid bounded label hit","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid chain or address"},"402":{"description":"x402 payment required for a known hit","headers":{"PAYMENT-REQUIRED":{"required":true,"schema":{"type":"string"}}}},"429":{"description":"Preflight rate limit exceeded"},"503":{"description":"Label lookup capacity unavailable"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001000"}}}}}}