{"openapi":"3.1.0","info":{"title":"dRPC over Airnode","version":"1.0.0","description":"dRPC is a decentralised RPC network over 100+ chains. This Airnode wraps both halves worth attesting: the standard Ethereum JSON-RPC reads of chain state on any EVM chain dRPC serves, one operation per method, and the indexed Data API for wallets, tokens, NFTs and DeFi.\n\nEvery response carries an EIP-191 signature from the Airnode that served it, so the data can be attributed back to its source rather than trusted on reputation."},"servers":[{"url":"https://airnode-drpc.fly.dev"}],"paths":{"/":{"get":{"operationId":"getDocumentation","summary":"This document.","description":"Describes the operations this Airnode serves and how to verify what it returns. Free.","responses":{"200":{"description":"An OpenAPI document describing this Airnode.","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"operationId":"performRequest","summary":"Perform an operation and attest to the response.","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"title":"eth_chainId","description":"The chain's EIP-155 chain ID.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_chainId","description":"The ID is in hex.","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_blockNumber","description":"The number of the latest block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_blockNumber","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_gasPrice","description":"A gas price for a transaction to be included soon.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_gasPrice","description":"The price is in wei.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_maxPriorityFeePerGas","description":"A priority fee per gas for an EIP-1559 transaction to be included soon.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_maxPriorityFeePerGas","description":"The fee is in wei.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_blobBaseFee","description":"The current base fee per blob gas.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_blobBaseFee","description":"The fee is in wei, and null on a chain without blobs, such as polygon.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_feeHistory","description":"Base fees, gas used ratios and priority fee percentiles over a run of blocks.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_feeHistory","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[blockCount, newestBlock, rewardPercentiles]. blockCount is a hex count, newestBlock is a hex block number, or latest, safe, finalized, pending or earliest, and rewardPercentiles is optional.","minItems":2,"maxItems":3,"examples":[["0x4","latest",[25,75]]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getBlockByNumber","description":"One block by number, with its transaction hashes or whole transactions.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getBlockByNumber","description":"Null for a block the chain has not reached.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[block, full], both required. block is a hex block number, or latest, safe, finalized, pending or earliest; full true returns whole transactions instead of hashes.","minItems":2,"maxItems":2,"examples":[["latest",false]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getBlockByHash","description":"One block by hash, with its transaction hashes or whole transactions.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getBlockByHash","description":"Null when the chain has no such block.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[blockHash, full], both required. full true returns whole transactions instead of hashes.","minItems":2,"maxItems":2,"examples":[["0x0b16520f942814e2175d27f62e04a2c6ae89cf34c30078d850735dc7e73e649c",false]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getBlockReceipts","description":"Every transaction receipt in one block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getBlockReceipts","description":"A block the chain has not reached is refused.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"array","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[block], where block is a block hash or a hex block number, or latest, safe, finalized, pending or earliest.","minItems":1,"maxItems":1,"examples":[["0x18fcdc0"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getBlockTransactionCountByNumber","description":"How many transactions one block holds, by number.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getBlockTransactionCountByNumber","description":"A block the chain has not reached is refused.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[block], where block is a hex block number, or latest, safe, finalized, pending or earliest.","minItems":1,"maxItems":1,"examples":[["0x18fcdc0"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getBlockTransactionCountByHash","description":"How many transactions one block holds, by hash.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getBlockTransactionCountByHash","description":"Null when the chain has no such block.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[blockHash].","minItems":1,"maxItems":1,"examples":[["0x0b16520f942814e2175d27f62e04a2c6ae89cf34c30078d850735dc7e73e649c"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getTransactionByHash","description":"One transaction by hash.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getTransactionByHash","description":"Null when the chain has no such transaction.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[transactionHash].","minItems":1,"maxItems":1,"examples":[["0x5b722ea50ccb7853986805bb847916124dc4292e7d34ed8b7518e122d670dbac"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getTransactionByBlockNumberAndIndex","description":"One transaction by its block number and position in the block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getTransactionByBlockNumberAndIndex","description":"Null past the block's last transaction, and a block the chain has not reached is refused.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[block, index]. block is a hex block number, or latest, safe, finalized, pending or earliest; index is the hex position, from 0x0.","minItems":2,"maxItems":2,"examples":[["0x18fcdc0","0x0"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getTransactionByBlockHashAndIndex","description":"One transaction by its block hash and position in the block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getTransactionByBlockHashAndIndex","description":"Null when there is no such block or no transaction at that position.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[blockHash, index]. index is the hex position, from 0x0.","minItems":2,"maxItems":2,"examples":[["0x0b16520f942814e2175d27f62e04a2c6ae89cf34c30078d850735dc7e73e649c","0x0"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getTransactionReceipt","description":"One transaction's receipt: whether it succeeded, the gas it used and the logs it emitted.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getTransactionReceipt","description":"Null when no block holds the transaction.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object | null","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[transactionHash].","minItems":1,"maxItems":1,"examples":[["0xfa8d7d0c7f873beaebb3504257f754ade08e8e6b7bb25fa96406048bf102e862"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getBalance","description":"An account's native token balance at a block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getBalance","description":"The balance is in wei.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[address, block]. block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest.","minItems":1,"maxItems":2,"examples":[["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getTransactionCount","description":"An account's nonce at a block, which for an externally owned account is how many transactions it has sent.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getTransactionCount","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[address, block]. block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest.","minItems":1,"maxItems":2,"examples":[["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getCode","description":"The bytecode deployed at an address, at a block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getCode","description":"0x for an account with none.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[address, block]. block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest.","minItems":1,"maxItems":2,"examples":[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getStorageAt","description":"One 32-byte storage slot of a contract, at a block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getStorageAt","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[address, slot, block]. slot is a hex position; block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest.","minItems":2,"maxItems":3,"examples":[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","0x0","latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getProof","description":"An account and some of its storage slots at a block, with Merkle proofs against the block's state root.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getProof","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[address, storageKeys, block]. storageKeys is an array of slots, each written out as 32 bytes of hex since some nodes refuse 0x0, and empty for the account alone; block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest.","minItems":2,"maxItems":3,"examples":[["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",["0x0000000000000000000000000000000000000000000000000000000000000000"],"latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_call","description":"Execute a call against the state at a block, without a transaction, and return its output.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_call","description":"A revert comes back under error, with the revert data in error.data.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[call, block, stateOverrides, blockOverrides]. call is an object of to, data and optionally from, value and gas; block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest; stateOverrides maps an address to state used in place of the chain's, such as its balance or code; blockOverrides replaces fields of the block, such as its number.","minItems":1,"maxItems":4,"examples":[[{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045"},"latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_estimateGas","description":"How much gas a transaction would use.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_estimateGas","description":"A transaction that would revert comes back under error.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"string","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[transaction, block, stateOverrides, blockOverrides]. transaction is an object of from, to, data, value and the rest of a transaction's fields; block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest; stateOverrides maps an address to state used in place of the chain's, such as its balance or code; blockOverrides replaces fields of the block, such as its number.","minItems":1,"maxItems":4,"examples":[[{"from":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045"},"latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_createAccessList","description":"The addresses and storage slots a transaction would touch, and the gas it would use with that access list.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_createAccessList","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"object","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[transaction, block, stateOverrides]. transaction is an object of from, to, data, value and the rest of a transaction's fields; block is a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest; stateOverrides maps an address to state used in place of the chain's, such as its balance or code.","minItems":1,"maxItems":3,"examples":[[{"from":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045"},"latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_simulateV1","description":"Simulate a sequence of calls over one or more blocks built on a given block, and return each simulated block with its calls' results.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_simulateV1","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"array","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[payload, block]. payload is an object whose blockStateCalls is an array of blocks to simulate, each with its calls and optionally stateOverrides and blockOverrides; block is the one to build on, a hex block number, or latest, safe, finalized, pending or earliest, and defaults to latest.","minItems":1,"maxItems":2,"examples":[[{"blockStateCalls":[{"calls":[{"from":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","data":"0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045"}]}]},"latest"]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"eth_getLogs","description":"The event logs matching a filter, over a block range or in one block.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"eth_getLogs","description":"Too many matches come back under error, and an answer past 50 MB fails.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"jsonrpc":"string","id":"null","result":"array","error":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["network","params"],"properties":{"network":{"description":"The EVM chain, as a dRPC network slug. Not an EIP-155 number: 1 and 0x1 are refused. supportedChains maps a number to its id, which is usually but not always the slug: HyperEVM's id is hyperevm and its slug hyperliquid. https://drpc.org/chainlist lists every slug.","type":"string","examples":["ethereum","base","arbitrum","polygon"]},"params":{"type":"array","description":"[filter]. filter takes fromBlock and toBlock, each a hex block number or tag and defaulting to latest, or a blockHash instead of both; address, one or an array; and topics, an array matched by position where null matches anything and an array matches any of its members. Narrow a wide range by address or topics, since nodes cap the answer: 20,000 logs on Ethereum, 160 MB on Base.","minItems":1,"maxItems":1,"examples":[[{"fromBlock":"0x18fcdc0","toBlock":"0x18fcdc0","address":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}]]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"supportedChains","description":"Every chain the Data API indexes, with its id and numeric chain ID.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"supportedChains","description":"Discovery for the Data API: an entry's id is what chain, chain_ids and walletBalances use. A guide to the network the JSON-RPC operations take rather than its index, since the chains dRPC indexes and those it serves RPC for overlap without either containing the other.","x-airnode-returns":{"next_page_token":"string | null","data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["limit"],"properties":{"limit":{"description":"How many chains to return. Required: dRPC rejects the call without it. 1000 returns every chain in one page.","type":"integer"},"page_token":{"description":"The next_page_token of a previous response, to continue from where it stopped. Omit it for the first page.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"chainInfo","description":"One chain by id, with its numeric chain ID.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"chainInfo","description":"The single-chain form of supportedChains, for confirming a chain id and reading its EIP-155 number without paging the whole list. Returns null for id_numeric on a chain that has none, such as Tron.","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain_id"],"properties":{"chain_id":{"description":"The chain id to look up.","type":"string","examples":["ethereum"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"walletBalances","description":"What one wallet holds across every chain dRPC indexes, priced in US dollars, including deposited and borrowed positions. It cannot be narrowed, so use chainWalletBalances for one chain.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"walletBalances","description":"Holdings are spam filtered. Prices move, so the attestation is provenance rather than something reproducible. dRPC accepts chain_ids here and ignores it.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["address"],"properties":{"address":{"description":"The wallet to value, as a hex address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"chainWalletBalances","description":"What one wallet holds on one named EVM chain, priced in US dollars.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"chainWalletBalances","description":"walletBalances scoped to one chain, which is cheaper and the only way to narrow it. solana and tron are indexed separately as nonEvmWalletBalances.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain","address"],"properties":{"chain":{"description":"The chain to value the wallet on. It has to be one dRPC both routes and indexes for EVM portfolios. Use nonEvmWalletBalances for solana and tron.","type":"string"},"address":{"description":"The wallet to value, as a hex address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"nonEvmWalletBalances","description":"What one wallet holds on a non-EVM chain, priced in US dollars.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"nonEvmWalletBalances","description":"The non-EVM counterpart to chainWalletBalances, in the same shape. Only solana, bitcoin and tron.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain","address"],"properties":{"chain":{"description":"The non-EVM chain to value the wallet on. Only solana, bitcoin and tron are indexed this way.","type":"string"},"address":{"description":"The wallet to ask about, as an address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"netWorthHistory","description":"How one wallet's token net worth moved over time, across every indexed chain.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"netWorthHistory","description":"Timestamped dollar values rather than one figure, so it answers what the wallet was worth then. dRPC's valuation history, not chain state.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["address"],"properties":{"address":{"description":"The wallet to ask about, as an address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"chainNetWorthHistory","description":"How one wallet's token net worth moved over time on one chain.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"chainNetWorthHistory","description":"netWorthHistory scoped to one chain, which genuinely narrows the series.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain","address"],"properties":{"chain":{"description":"The chain to ask about, as a dRPC chain id from supportedChains.","type":"string"},"address":{"description":"The wallet to ask about, as an address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"transactionHistory","description":"One wallet's transaction history across chains, each transaction decoded into what it did.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"transactionHistory","description":"Newest first. History grows at the front, so a page bounded by a page_token is reproducible where a first page is not.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"next_page_token":"string | null","data":"array"}},"parameters":{"type":"object","additionalProperties":false,"required":["address"],"properties":{"address":{"description":"The wallet whose history to return, as a hex address.","type":"string"},"chain_ids":{"description":"Restrict to these chains, as a comma-separated list of the ids supportedChains returns. Every chain by default.","type":"string"},"limit":{"description":"How many transactions to return.","type":"integer","default":100},"page_token":{"description":"The next_page_token of a previous response, to continue from where it stopped.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"supportedTokens","description":"Every token the Data API prices and indexes.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"supportedTokens","description":"The token catalogue: an entry's id is what tokenInfo takes. Paged. dRPC documents a per-chain form of this, which is not offered because the chain segment is accepted and ignored.","x-airnode-returns":{"next_page_token":"string | null","data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["limit"],"properties":{"limit":{"description":"How many to return, and dRPC pages the rest behind a token. Required: dRPC has no default for it and answers 422 without it, so it is required here too rather than left optional for a caller to discover the hard way.","type":"integer"},"page_token":{"description":"The next_page_token of a previous response. Omit it for the first page.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"tokenInfo","description":"One token: its symbol, name and per-chain contract addresses.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"tokenInfo","description":"Each contract address carries its decimals, which is what makes a balance readable. Metadata, not market data.","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["token_id"],"properties":{"token_id":{"description":"The token id to look up, or a contract address. supportedTokens lists the ids.","type":"string","examples":["eth"]}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"priceSymbols","description":"Every ticker symbol historicalPrices will price.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"priceSymbols","description":"A flat list. Takes no parameters: dRPC accepts a limit here and ignores it.","x-airnode-returns":{"data":"array"}},"parameters":{"type":"object","additionalProperties":false,"required":[],"properties":{}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"historicalPrices","description":"What a token was worth at a given moment, for one or more symbols and times.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"historicalPrices","description":"The one reproducible Data API operation: a past price at a past timestamp does not move. Symbols come from priceSymbols, timestamps are Unix milliseconds.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["symbols","timestamps"],"properties":{"symbols":{"type":"array","description":"Ticker symbols to price, as priceSymbols lists them.","examples":[["BTC"]]},"timestamps":{"type":"array","description":"The moments to price them at, as Unix milliseconds."}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"walletNfts","description":"Every NFT one wallet holds, across every indexed chain.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"walletNfts","description":"Each NFT carries the chain, contract and token id nftMetadata takes. dRPC accepts with_meta_data and refresh_cache here and ignores both.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"next_page_token":"string | null","data":"array"}},"parameters":{"type":"object","additionalProperties":false,"required":["address","limit"],"properties":{"address":{"description":"The wallet to ask about, as an address.","type":"string"},"limit":{"description":"How many to return, and dRPC pages the rest behind a token. Required: dRPC has no default for it and answers 422 without it, so it is required here too rather than left optional for a caller to discover the hard way.","type":"integer"},"page_token":{"description":"The next_page_token of a previous response. Omit it for the first page.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"nonEvmWalletNfts","description":"Every NFT one wallet holds on a non-EVM chain.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"nonEvmWalletNfts","description":"The per-chain NFT path, which dRPC indexes for solana only. Use walletNfts for EVM holdings.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"array"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain","address"],"properties":{"chain":{"description":"The non-EVM chain to list NFTs on. Only solana is indexed this way.","type":"string"},"address":{"description":"The wallet to ask about, as an address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"nftCollections","description":"The NFT collections one wallet holds on one chain.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"nftCollections","description":"Collections rather than individual tokens. Returns everything at once: dRPC accepts limit and page_token here and ignores both.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"array"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain","address"],"properties":{"chain":{"description":"The chain to ask about, as a dRPC chain id from supportedChains.","type":"string"},"address":{"description":"The wallet to ask about, as an address.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"nftMetadata","description":"One NFT: its metadata, media and collection, by the contract and token id walletNfts returns.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"nftMetadata","description":"Metadata is whatever the collection publishes and its owner can change it, so the attestation is provenance for what dRPC served.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["chain","contract","nft_id"],"properties":{"chain":{"description":"The chain to ask about, as a dRPC chain id from supportedChains.","type":"string"},"contract":{"description":"The collection's contract address.","type":"string"},"nft_id":{"description":"The token id within that contract.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"ledgerGrow","description":"Current yield on a DeFi protocol's deposit products.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"ledgerGrow","description":"Given as APY, per network and token. Rates move. Only aave_v3 and lido.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"network":"string","deposit_token":"string","interest":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["protocol"],"properties":{"protocol":{"description":"The protocol to read. Only aave_v3 and lido are covered.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"ledgerStakes","description":"What given addresses have staked in a DeFi protocol, and what it earns.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"ledgerStakes","description":"Each stake carries its currency and interest. Only aave_v3 and lido.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"id":"object","stake":"object"}},"parameters":{"type":"object","additionalProperties":false,"required":["protocol","stake_addresses"],"properties":{"protocol":{"description":"The protocol to read. Only aave_v3 and lido are covered.","type":"string"},"stake_addresses":{"description":"The addresses whose stakes to return, comma-separated. Required: dRPC rejects the call without it.","type":"string"}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}},{"title":"aprHistory","description":"How a DeFi pool's APR moved over time.","type":"object","required":["operation","parameters"],"additionalProperties":false,"properties":{"operation":{"const":"aprHistory","description":"Rate history per pool, asked for in batches. Each entry needs a chain and protocol; a pool_id narrows it, and one that matches nothing returns an empty list rather than an error.","x-airnode-price":"0.01 USD per call","x-airnode-returns":{"data":"array"}},"parameters":{"type":"object","additionalProperties":false,"required":["requests"],"properties":{"requests":{"type":"array","description":"One entry per pool to read, each an object with chain and protocol required, and pool_id and asset optional. Only aave_v3 and lido are covered. A pool_id that matches nothing returns an empty list rather than an error."}}},"responseProjection":{"type":"object","additionalProperties":{"type":"string","pattern":"^/"},"maxProperties":20,"description":"Optional. Maps a name of your choosing to an RFC 6901 JSON Pointer into the upstream response, such as {\"price\": \"/ethereum/usd\"}. data is then the text of a JSON object of those names in Unicode code point order, each value as the upstream wrote it, instead of the whole body, and the projection is part of the signed request identity. No two names take the same pointer, and no pointer is inside another's value. A pointer the response does not have is a 400."}}}]}}}},"responses":{"200":{"description":"The upstream response and the attestation over it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Attestation"}}}},"400":{"description":"The operation exists but the parameters or the projection are missing, unknown or malformed, a path parameter is empty, . or .. or has such a part between slashes, or the projection names too many fields, an empty or repeated pointer, or a path the response does not have. Also a PAYMENT-SIGNATURE header that does not decode to a payment payload."},"402":{"description":"The operation is paid and no valid payment was supplied. The PAYMENT-REQUIRED header carries the x402 payment requirements to retry against."},"404":{"description":"No such operation."},"502":{"description":"The upstream API could not be reached or refused the request."}}}}},"components":{"schemas":{"Attestation":{"type":"object","required":["airnode","requestHash","timestamp","data","signature"],"properties":{"airnode":{"type":"string","description":"The address whose signature attests to this response."},"requestHash":{"type":"string","description":"Identifies the request this response answers."},"timestamp":{"type":"string","description":"Unix seconds at which the response was signed."},"data":{"type":"string","description":"The upstream response body exactly as received, less a leading byte order mark. With a projection, the text of a JSON object keyed by the names it asked for in Unicode code point order, each value as the upstream wrote it."},"signature":{"type":"string","description":"The attestation itself."}}}}},"x-airnode":{"address":"0x511AcE8648D2f64260d50D036F8f8ce622d92137","version":"0.2.0","attestation":{"scheme":"eip191-secp256k1","digest":"keccak256(abi.encodePacked(bytes32 requestHash, uint256 timestamp, bytes dataBytes))","dataBytes":"UTF-8 of data","requestHash":"keccak256(utf8(JSON.stringify([operation, parameterEntriesSortedByName]))), where an object value is itself entries sorted by name, at any depth, and an array keeps its order. Names are compared by Unicode code point. A request that carries a projection appends its entries, sorted the same way, as a third element","verify":"Recover the signer of the signature over the digest and check it equals the address above."},"passthrough":{"url":"https://airnode-drpc.fly.dev/api","routes":{"eth_chainId":{"method":"POST","path":"/ogrpc","body":{"method":"eth_chainId"},"parameters":{"network":"query"}},"eth_blockNumber":{"method":"POST","path":"/ogrpc","body":{"method":"eth_blockNumber"},"parameters":{"network":"query"}},"eth_gasPrice":{"method":"POST","path":"/ogrpc","body":{"method":"eth_gasPrice"},"parameters":{"network":"query"}},"eth_maxPriorityFeePerGas":{"method":"POST","path":"/ogrpc","body":{"method":"eth_maxPriorityFeePerGas"},"parameters":{"network":"query"}},"eth_blobBaseFee":{"method":"POST","path":"/ogrpc","body":{"method":"eth_blobBaseFee"},"parameters":{"network":"query"}},"eth_feeHistory":{"method":"POST","path":"/ogrpc","body":{"method":"eth_feeHistory"},"parameters":{"network":"query","params":"body"}},"eth_getBlockByNumber":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getBlockByNumber"},"parameters":{"network":"query","params":"body"}},"eth_getBlockByHash":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getBlockByHash"},"parameters":{"network":"query","params":"body"}},"eth_getBlockReceipts":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getBlockReceipts"},"parameters":{"network":"query","params":"body"}},"eth_getBlockTransactionCountByNumber":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getBlockTransactionCountByNumber"},"parameters":{"network":"query","params":"body"}},"eth_getBlockTransactionCountByHash":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getBlockTransactionCountByHash"},"parameters":{"network":"query","params":"body"}},"eth_getTransactionByHash":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getTransactionByHash"},"parameters":{"network":"query","params":"body"}},"eth_getTransactionByBlockNumberAndIndex":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getTransactionByBlockNumberAndIndex"},"parameters":{"network":"query","params":"body"}},"eth_getTransactionByBlockHashAndIndex":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getTransactionByBlockHashAndIndex"},"parameters":{"network":"query","params":"body"}},"eth_getTransactionReceipt":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getTransactionReceipt"},"parameters":{"network":"query","params":"body"}},"eth_getBalance":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getBalance"},"parameters":{"network":"query","params":"body"}},"eth_getTransactionCount":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getTransactionCount"},"parameters":{"network":"query","params":"body"}},"eth_getCode":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getCode"},"parameters":{"network":"query","params":"body"}},"eth_getStorageAt":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getStorageAt"},"parameters":{"network":"query","params":"body"}},"eth_getProof":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getProof"},"parameters":{"network":"query","params":"body"}},"eth_call":{"method":"POST","path":"/ogrpc","body":{"method":"eth_call"},"parameters":{"network":"query","params":"body"}},"eth_estimateGas":{"method":"POST","path":"/ogrpc","body":{"method":"eth_estimateGas"},"parameters":{"network":"query","params":"body"}},"eth_createAccessList":{"method":"POST","path":"/ogrpc","body":{"method":"eth_createAccessList"},"parameters":{"network":"query","params":"body"}},"eth_simulateV1":{"method":"POST","path":"/ogrpc","body":{"method":"eth_simulateV1"},"parameters":{"network":"query","params":"body"}},"eth_getLogs":{"method":"POST","path":"/ogrpc","body":{"method":"eth_getLogs"},"parameters":{"network":"query","params":"body"}},"supportedChains":{"method":"GET","path":"/lambda/v1/chains","parameters":{"limit":"query","page_token":"query"}},"chainInfo":{"method":"GET","path":"/lambda/v1/chains/{chain_id}","parameters":{"chain_id":"path"}},"walletBalances":{"method":"GET","path":"/lambda/v2/wallets/{address}/balances","parameters":{"address":"path"}},"chainWalletBalances":{"method":"GET","path":"/{chain}/lambda/v2/wallets/{address}/balances","parameters":{"chain":"path","address":"path"}},"nonEvmWalletBalances":{"method":"GET","path":"/{chain}/lambda/v1/wallets/{address}/balances","parameters":{"chain":"path","address":"path"}},"netWorthHistory":{"method":"GET","path":"/lambda/v1/wallets/{address}/tokens-net-worth","parameters":{"address":"path"}},"chainNetWorthHistory":{"method":"GET","path":"/{chain}/lambda/v1/wallets/{address}/tokens-net-worth","parameters":{"chain":"path","address":"path"}},"transactionHistory":{"method":"GET","path":"/lambda/v1/transactions/{address}/history","parameters":{"address":"path","chain_ids":"query","limit":"query","page_token":"query"}},"supportedTokens":{"method":"GET","path":"/lambda/v1/tokens","parameters":{"limit":"query","page_token":"query"}},"tokenInfo":{"method":"GET","path":"/lambda/v1/tokens/{token_id}","parameters":{"token_id":"path"}},"priceSymbols":{"method":"GET","path":"/lambda/v1/tokens/prices/supported","parameters":{}},"historicalPrices":{"method":"POST","path":"/lambda/v1/tokens/prices/search","parameters":{"symbols":"body","timestamps":"body"}},"walletNfts":{"method":"GET","path":"/lambda/v1/wallets/{address}/nfts","parameters":{"address":"path","limit":"query","page_token":"query"}},"nonEvmWalletNfts":{"method":"GET","path":"/{chain}/lambda/v1/wallets/{address}/nfts","parameters":{"chain":"path","address":"path"}},"nftCollections":{"method":"GET","path":"/{chain}/lambda/v1/wallets/{address}/nft-collections","parameters":{"chain":"path","address":"path"}},"nftMetadata":{"method":"GET","path":"/{chain}/lambda/v1/contract-address/{contract}/nfts/{nft_id}","parameters":{"chain":"path","contract":"path","nft_id":"path"}},"ledgerGrow":{"method":"GET","path":"/lambda/v1/{protocol}/data/ledger/grow","parameters":{"protocol":"path"}},"ledgerStakes":{"method":"GET","path":"/lambda/v1/{protocol}/data/ledger/stakes","parameters":{"protocol":"path","stake_addresses":"query"}},"aprHistory":{"method":"POST","path":"/lambda/v1/protocols/apr/history","parameters":{"requests":"body"}}},"parameters":{"x-airnode-sign":"false skips the signature: no attestation headers, and the body streamed through with no size cap.","x-airnode-project":"alias:pointer, once per field to keep and at most 20 times, each pointer an RFC 6901 JSON Pointer into the upstream response that starts with /, is not repeated and is not inside another's value. The body becomes an object of those aliases in Unicode code point order, the signature covers it, and a pointer the response does not have is a 400."},"flow":"Send the request the provider documents, method, path, query and body as they are, to url followed by the route's path. The body comes back as the upstream sent it, with the upstream's status, and on success the attestation is in the X-Airnode-Address, X-Airnode-Request-Hash, X-Airnode-Timestamp and X-Airnode-Signature headers, with the operation served in X-Airnode-Operation. Every query parameter starting with x-airnode- is this Airnode's own, listed under parameters, and never reaches the upstream.","requestHash":"keccak256(utf8(JSON.stringify([\"passthrough\", method, path, queryEntries, headerEntries, body]))), where method is upper case, path is what was sent after url as a URL parser resolves it, the query entries are what was sent with the Airnode's own parameters removed, in the order sent, headerEntries are the headers that the routes declare as parameters and the request sent, each name in lower case and sorted by Unicode code point, with the values of a header sent more than once joined with \", \" in the order sent and the result trimmed of spaces and tabs, and body is the request body as sent, or an empty string. A request that carries a projection appends its entries, sorted by name in Unicode code point order, as a seventh element","dataBytes":"UTF-8 of the response body exactly as received, less a leading byte order mark, or of the projected object"},"payment":{"x402Version":2,"scheme":"exact","accepts":[{"network":"eip155:84532","asset":"0xbeA34973e5f67F18F656A2C6070C64326C791808","symbol":"aUSD","decimals":6}],"payTo":"0x1505FD562AC2Fb4307B85BC6c672FfeafB4d57A7","facilitator":"https://facilitator.xpay.sh","prices":{"eth_blockNumber":"0.01","eth_gasPrice":"0.01","eth_maxPriorityFeePerGas":"0.01","eth_blobBaseFee":"0.01","eth_feeHistory":"0.01","eth_getBlockByNumber":"0.01","eth_getBlockByHash":"0.01","eth_getBlockReceipts":"0.01","eth_getBlockTransactionCountByNumber":"0.01","eth_getBlockTransactionCountByHash":"0.01","eth_getTransactionByHash":"0.01","eth_getTransactionByBlockNumberAndIndex":"0.01","eth_getTransactionByBlockHashAndIndex":"0.01","eth_getTransactionReceipt":"0.01","eth_getBalance":"0.01","eth_getTransactionCount":"0.01","eth_getCode":"0.01","eth_getStorageAt":"0.01","eth_getProof":"0.01","eth_call":"0.01","eth_estimateGas":"0.01","eth_createAccessList":"0.01","eth_simulateV1":"0.01","eth_getLogs":"0.01","walletBalances":"0.01","chainWalletBalances":"0.01","nonEvmWalletBalances":"0.01","netWorthHistory":"0.01","chainNetWorthHistory":"0.01","transactionHistory":"0.01","historicalPrices":"0.01","walletNfts":"0.01","nonEvmWalletNfts":"0.01","nftCollections":"0.01","nftMetadata":"0.01","ledgerGrow":"0.01","ledgerStakes":"0.01","aprHistory":"0.01"},"flow":"An unpaid call to a priced operation returns 402 with the x402 payment requirements, base64-encoded, in the PAYMENT-REQUIRED header. Sign an EIP-3009 authorization matching one entry and retry the call with the payment payload, base64-encoded, in the PAYMENT-SIGNATURE header. The settlement receipt comes back in the PAYMENT-RESPONSE header."}}}