{"openapi":"3.1.0","info":{"title":"Sushilens API","version":"1.0.0","description":"REST API for Robinhood Chain (mainnet 4663, testnet 46630). GET endpoints can be tried without a key at /api/sandbox/v1/*, limited per IP."},"servers":[{"url":"https://www.sushilens.work/api","description":"Sushilens"}],"tags":[{"name":"blockchain","description":"Blocks, transactions, receipts, native balances and smart contract introspection."},{"name":"tokens","description":"ERC-20 metadata, balances, transfer history and holder lists."},{"name":"wallets","description":"Wallet overview, transaction history, token portfolio and NFT holdings."},{"name":"defi","description":"Uniswap V2-style pairs and V3-style pools: reserves, pricing and swap events."},{"name":"nfts","description":"ERC-721 / ERC-1155 collections, token ownership, token URIs and transfers."},{"name":"network","description":"Chain health, head block, gas pricing and fee market data."},{"name":"rpc","description":"Authenticated, metered, read-only JSON-RPC with automatic provider failover."}],"security":[{"apiKey":[]},{"bearer":[]}],"paths":{"/v1/network/status":{"get":{"operationId":"network.status","tags":["network"],"summary":"Network status","description":"Chain ID, head block, block age and the RPC provider currently serving requests.\n\nSource: Robinhood Chain RPC. Cache: 2s. Scope: network.","parameters":[{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"chainId":{"description":"Chain ID reported by the node.","type":"number"},"blockNumber":{"description":"Latest block number.","type":"string"},"blockTimestamp":{"description":"Unix timestamp of the latest block.","type":"number"},"secondsSinceLastBlock":{"description":"Head block age in seconds.","type":"number"},"healthy":{"description":"True when the head block is younger than 60 seconds.","type":"boolean"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/network/gas":{"get":{"operationId":"network.gas","tags":["network"],"summary":"Gas prices","description":"Current gas price, base fee and EIP-1559 fee estimates (all values in wei).\n\nSource: Robinhood Chain RPC. Cache: 3s. Scope: network.","parameters":[{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"gasPrice":{"description":"Legacy gas price (wei).","type":"string"},"baseFeePerGas":{"description":"Base fee of the latest block (wei).","type":["string","null"]},"maxFeePerGas":{"description":"Suggested EIP-1559 max fee (wei).","type":["string","null"]},"maxPriorityFeePerGas":{"description":"Suggested priority fee (wei).","type":["string","null"]},"gasPriceGwei":{"description":"Gas price formatted in gwei.","type":"string"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/blocks/latest":{"get":{"operationId":"blocks.latest","tags":["blockchain"],"summary":"Latest block","description":"The current head block with its transaction hashes.\n\nSource: Robinhood Chain RPC. Cache: 2s. Scope: blockchain.","parameters":[{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"number":{"description":"Block number.","type":"string"},"hash":{"description":"Block hash.","type":"string"},"timestamp":{"description":"Unix timestamp.","type":"number"},"transactions":{"description":"Transaction hashes in the block.","type":"array","items":{}},"gasUsed":{"description":"Total gas used.","type":"string"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/blocks/{block}":{"get":{"operationId":"blocks.get","tags":["blockchain"],"summary":"Block by number or hash","description":"Fetch a block by number, hash, or the tags latest / safe / finalized.\n\nSource: Robinhood Chain RPC. Cache: 10s. Scope: blockchain.","parameters":[{"name":"block","in":"path","required":true,"description":"Block number, 32-byte block hash, or a tag.","schema":{"type":"string","description":"Block number, 32-byte hash, or latest / safe / finalized / earliest."},"example":"finalized"},{"name":"transactions","in":"query","required":false,"description":"Return transaction hashes or full transaction objects.","schema":{"default":"hashes","type":"string","enum":["hashes","full"]}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"number":{"description":"Block number.","type":"string"},"hash":{"description":"Block hash.","type":"string"},"parentHash":{"description":"Parent block hash.","type":"string"},"timestamp":{"description":"Unix timestamp.","type":"number"},"transactions":{"description":"Hashes or full objects."}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/transactions/{hash}":{"get":{"operationId":"transactions.get","tags":["blockchain"],"summary":"Transaction + receipt","description":"Transaction, its receipt, execution status and confirmation count. Pending transactions return status \"pending\".\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: blockchain.","parameters":[{"name":"hash","in":"path","required":true,"description":"Transaction hash.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"},"example":"0x1721f9171b16c6219c05321b6bc7a7082c318fb25147a639bfc2ce6ec9121ecc"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"status":{"description":"Execution status.","type":"string","enum":["pending","success","reverted"]},"confirmations":{"description":"Blocks mined on top (0 when pending).","type":"number"},"transaction":{"description":"The transaction object.","type":"object"},"receipt":{"description":"The receipt, including logs and gasUsed.","type":["object","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addresses/{address}/balance":{"get":{"operationId":"addresses.balance","tags":["blockchain"],"summary":"Native balance","description":"ETH balance of any address, optionally at a historical block.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: blockchain.","parameters":[{"name":"address","in":"path","required":true,"description":"Account address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0xeF63781a022e0C219cb6521c8222150DeD82981d"},{"name":"block","in":"query","required":false,"description":"Historical block number (archive nodes only).","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"address":{"description":"Checksummed address.","type":"string"},"balance":{"description":"Balance in wei.","type":"string"},"formatted":{"description":"Balance in ETH.","type":"string"},"blockNumber":{"description":"Block the balance was read at.","type":"string"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/contracts/{address}":{"get":{"operationId":"contracts.get","tags":["blockchain"],"summary":"Smart contract info","description":"Bytecode size and hash, EIP-1967 proxy slots, and ERC-165 interface detection.\n\nSource: Robinhood Chain RPC. Cache: 60s. Scope: blockchain.","parameters":[{"name":"address","in":"path","required":true,"description":"Contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"isContract":{"description":"Whether code is deployed at the address.","type":"boolean"},"bytecodeSize":{"description":"Deployed bytecode size in bytes.","type":"number"},"codeHash":{"description":"keccak256 of the deployed bytecode.","type":["string","null"]},"proxy":{"description":"EIP-1967 implementation, admin and beacon addresses when set.","type":"object"},"interfaces":{"description":"ERC-165 support for ERC-165, ERC-721, ERC-1155.","type":"object"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tokens/{address}":{"get":{"operationId":"tokens.get","tags":["tokens"],"summary":"Token metadata","description":"ERC-20 name, symbol, decimals and total supply read directly from the contract.\n\nSource: Robinhood Chain RPC. Cache: 300s. Scope: tokens.","parameters":[{"name":"address","in":"path","required":true,"description":"ERC-20 contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"address":{"description":"Checksummed token address.","type":"string"},"name":{"description":"Token name.","type":["string","null"]},"symbol":{"description":"Token symbol.","type":["string","null"]},"decimals":{"description":"Token decimals.","type":["number","null"]},"totalSupply":{"description":"Raw total supply.","type":["string","null"]},"totalSupplyFormatted":{"description":"Total supply adjusted for decimals.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tokens/{address}/balances/{owner}":{"get":{"operationId":"tokens.balance","tags":["tokens"],"summary":"Token balance","description":"ERC-20 balance of one owner.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: tokens.","parameters":[{"name":"address","in":"path","required":true,"description":"ERC-20 contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{"name":"owner","in":"path","required":true,"description":"Holder address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0xeF63781a022e0C219cb6521c8222150DeD82981d"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"token":{"description":"Token address.","type":"string"},"owner":{"description":"Owner address.","type":"string"},"balance":{"description":"Raw balance.","type":"string"},"formatted":{"description":"Balance adjusted for decimals.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tokens/balances":{"post":{"operationId":"tokens.balancesBatch","tags":["tokens"],"summary":"Batch token balances","description":"Balances of up to 50 ERC-20 tokens for one owner in a single request.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: tokens.","parameters":[{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["owner","tokens"],"properties":{"owner":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Holder address."},"tokens":{"type":"array","maxItems":50,"minItems":1,"items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"description":"Array of ERC-20 contract addresses (max 50)."}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"owner":{"description":"Owner address.","type":"string"},"balances":{"description":"One entry per requested token.","type":"array","items":{}}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tokens/{address}/transfers":{"get":{"operationId":"tokens.transfers","tags":["tokens"],"summary":"Token transfers","description":"ERC-20 Transfer events read from chain logs for a bounded block range.\n\nSource: Robinhood Chain RPC. Cache: 10s. Scope: tokens.","parameters":[{"name":"address","in":"path","required":true,"description":"ERC-20 contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{"name":"fromBlock","in":"query","required":false,"description":"First block to scan. When omitted the widest range the RPC provider accepts is used, and the response reports what was scanned (fromBlock, toBlock, rangeNarrowed).","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"toBlock","in":"query","required":false,"description":"Last block to scan. Defaults to the head block.","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"limit","in":"query","required":false,"description":"Maximum events returned (newest first).","schema":{"default":100,"type":"integer","minimum":1,"maximum":500}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"fromBlock":{"description":"Scanned range start.","type":"string"},"toBlock":{"description":"Scanned range end.","type":"string"},"rangeNarrowed":{"description":"True when the provider's limits forced a narrower default range.","type":"boolean"},"transfers":{"description":"Newest first.","type":"array","items":{}}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tokens/{address}/holders":{"get":{"operationId":"tokens.holders","tags":["tokens"],"summary":"Token holders","description":"Holder list with balances, served from the Robinhood Chain explorer index.\n\nSource: explorer index. Cache: 60s. Scope: tokens.","parameters":[{"name":"address","in":"path","required":true,"description":"ERC-20 contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{"name":"cursor","in":"query","required":false,"description":"Opaque pagination cursor from a previous response.","schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"holders":{"description":"Holders sorted by balance.","type":"array","items":{}},"nextCursor":{"description":"Pass as cursor to fetch the next page.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/wallets/{address}":{"get":{"operationId":"wallets.get","tags":["wallets"],"summary":"Wallet overview","description":"ETH balance, nonce (transaction count) and whether the address is a contract.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: wallets.","parameters":[{"name":"address","in":"path","required":true,"description":"Wallet address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0xeF63781a022e0C219cb6521c8222150DeD82981d"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"address":{"description":"Checksummed address.","type":"string"},"balance":{"description":"ETH balance in wei.","type":"string"},"formatted":{"description":"ETH balance.","type":"string"},"nonce":{"description":"Number of transactions sent.","type":"number"},"isContract":{"description":"True for smart accounts / contracts.","type":"boolean"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/wallets/{address}/transactions":{"get":{"operationId":"wallets.transactions","tags":["wallets"],"summary":"Transaction history","description":"Paginated transaction history from the explorer index.\n\nSource: explorer index. Cache: 15s. Scope: wallets.","parameters":[{"name":"address","in":"path","required":true,"description":"Wallet address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0xeF63781a022e0C219cb6521c8222150DeD82981d"},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor.","schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"transactions":{"description":"Newest first.","type":"array","items":{}},"nextCursor":{"description":"Next page cursor.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/wallets/{address}/portfolio":{"get":{"operationId":"wallets.portfolio","tags":["wallets"],"summary":"Token portfolio","description":"ETH balance plus every ERC-20 balance indexed for the wallet. No prices are invented: only on-chain quantities.\n\nSource: explorer index. Cache: 30s. Scope: wallets.","parameters":[{"name":"address","in":"path","required":true,"description":"Wallet address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0xeF63781a022e0C219cb6521c8222150DeD82981d"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"native":{"description":"ETH balance read from RPC.","type":"object"},"tokens":{"description":"Indexed ERC-20 balances.","type":"array","items":{}}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/wallets/{address}/nfts":{"get":{"operationId":"wallets.nfts","tags":["wallets"],"summary":"NFT holdings","description":"NFTs (ERC-721 / ERC-1155) held by the wallet, from the explorer index.\n\nSource: explorer index. Cache: 30s. Scope: wallets.","parameters":[{"name":"address","in":"path","required":true,"description":"Wallet address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0xeF63781a022e0C219cb6521c8222150DeD82981d"},{"name":"cursor","in":"query","required":false,"description":"Pagination cursor.","schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"items":{"description":"Held tokens.","type":"array","items":{}},"nextCursor":{"description":"Next page cursor.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/nfts/{contract}":{"get":{"operationId":"nfts.collection","tags":["nfts"],"summary":"NFT collection","description":"Standard detection (ERC-721 / ERC-1155 via ERC-165), name, symbol and total supply when exposed.\n\nSource: Robinhood Chain RPC. Cache: 300s. Scope: nfts.","parameters":[{"name":"contract","in":"path","required":true,"description":"Collection contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"standard":{"description":"Detected standard.","type":"string","enum":["ERC721","ERC1155","unknown"]},"name":{"description":"Collection name.","type":["string","null"]},"symbol":{"description":"Collection symbol.","type":["string","null"]},"totalSupply":{"description":"Total supply when ERC721Enumerable.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/nfts/{contract}/{tokenId}":{"get":{"operationId":"nfts.token","tags":["nfts"],"summary":"NFT token","description":"Owner and token URI of an ERC-721 token, or the URI of an ERC-1155 token. Optionally checks an ERC-1155 holder balance.\n\nSource: Robinhood Chain RPC. Cache: 30s. Scope: nfts.","parameters":[{"name":"contract","in":"path","required":true,"description":"Collection contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3"},{"name":"tokenId","in":"path","required":true,"description":"Token ID.","schema":{"type":"string","pattern":"^\\d{1,78}$"},"example":"1545057"},{"name":"holder","in":"query","required":false,"description":"ERC-1155 only: return this holder's balance.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"standard":{"description":"Detected standard.","type":"string"},"owner":{"description":"ERC-721 owner.","type":["string","null"]},"tokenURI":{"description":"Metadata URI as stored on-chain (not fetched).","type":["string","null"]},"holderBalance":{"description":"ERC-1155 balance of holder.","type":["string","null"]}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/nfts/{contract}/transfers":{"get":{"operationId":"nfts.transfers","tags":["nfts"],"summary":"NFT transfers","description":"ERC-721 Transfer events from chain logs for a bounded block range.\n\nSource: Robinhood Chain RPC. Cache: 10s. Scope: nfts.","parameters":[{"name":"contract","in":"path","required":true,"description":"ERC-721 contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x73991a25C818Bf1f1128dEAaB1492D45638DE0D3"},{"name":"fromBlock","in":"query","required":false,"description":"First block to scan. When omitted the widest range the RPC provider accepts is used, and the response reports what was scanned (fromBlock, toBlock, rangeNarrowed).","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"toBlock","in":"query","required":false,"description":"Last block to scan. Defaults to the head block.","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"limit","in":"query","required":false,"description":"Maximum events returned (newest first).","schema":{"default":100,"type":"integer","minimum":1,"maximum":500}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"transfers":{"description":"Newest first.","type":"array","items":{}}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/defi/v2/pools/{pool}":{"get":{"operationId":"defi.v2pair","tags":["defi"],"summary":"V2 pair (liquidity pool)","description":"Uniswap V2-compatible pair: tokens, reserves, LP supply and spot prices.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: defi.","parameters":[{"name":"pool","in":"path","required":true,"description":"Pair contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x8803c117ccae7B5146297876c2A25DF135141C4d"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"token0":{"description":"Pool tokens.","type":"object"},"token1":{"description":"Pool tokens.","type":"object"},"reserve0":{"description":"Raw reserves.","type":"string"},"reserve1":{"description":"Raw reserves.","type":"string"},"price0In1":{"description":"Price of token0 denominated in token1.","type":"string"},"price1In0":{"description":"Price of token1 denominated in token0.","type":"string"},"lpTotalSupply":{"description":"LP token supply.","type":"string"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/defi/v3/pools/{pool}":{"get":{"operationId":"defi.v3pool","tags":["defi"],"summary":"V3 pool (concentrated liquidity)","description":"Uniswap V3-compatible pool: tokens, fee tier, tick, sqrtPriceX96, active liquidity and spot price.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: defi.","parameters":[{"name":"pool","in":"path","required":true,"description":"Pool contract address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x69BfaF19C9f377BB306a89aEd9F6B07e2c1a8d9a"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"token0":{"description":"Pool tokens.","type":"object"},"token1":{"description":"Pool tokens.","type":"object"},"fee":{"description":"Fee tier in hundredths of a bip.","type":"number"},"tick":{"description":"Current tick.","type":"number"},"sqrtPriceX96":{"description":"Current sqrt price.","type":"string"},"liquidity":{"description":"In-range liquidity.","type":"string"},"price0In1":{"description":"Spot price of token0 in token1.","type":"string"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/defi/{version}/pools/{pool}/swaps":{"get":{"operationId":"defi.swaps","tags":["defi"],"summary":"Swap events","description":"Swap events of a V2 pair or V3 pool from chain logs for a bounded block range.\n\nSource: Robinhood Chain RPC. Cache: 10s. Scope: defi.","parameters":[{"name":"version","in":"path","required":true,"description":"Pool protocol version.","schema":{"type":"string","enum":["v2","v3"]},"example":"v2"},{"name":"pool","in":"path","required":true,"description":"Pair / pool address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x8803c117ccae7B5146297876c2A25DF135141C4d"},{"name":"fromBlock","in":"query","required":false,"description":"First block to scan. When omitted the widest range the RPC provider accepts is used, and the response reports what was scanned (fromBlock, toBlock, rangeNarrowed).","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"toBlock","in":"query","required":false,"description":"Last block to scan. Defaults to the head block.","schema":{"type":"string","pattern":"^\\d{1,78}$"}},{"name":"limit","in":"query","required":false,"description":"Maximum events returned (newest first).","schema":{"default":100,"type":"integer","minimum":1,"maximum":500}},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"swaps":{"description":"Signed amounts: positive = into pool.","type":"array","items":{}}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/defi/price":{"get":{"operationId":"defi.price","tags":["defi"],"summary":"Token price from a pool","description":"On-chain spot price of a token derived from a specific V2 pair or V3 pool you choose. No off-chain price feeds.\n\nSource: Robinhood Chain RPC. Cache: 5s. Scope: defi.","parameters":[{"name":"pool","in":"query","required":true,"description":"Pair / pool address.","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x8803c117ccae7B5146297876c2A25DF135141C4d"},{"name":"version","in":"query","required":true,"description":"Pool version.","schema":{"type":"string","enum":["v2","v3"]},"example":"v2"},{"name":"base","in":"query","required":true,"description":"Token to price (must be one of the pool tokens).","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"example":"0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73"},{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"base":{"description":"Priced token.","type":"object"},"quote":{"description":"Denomination token.","type":"object"},"price":{"description":"Units of quote per 1 base.","type":"string"},"blockNumber":{"description":"Block the price was read at.","type":"string"}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rpc":{"post":{"operationId":"rpc.call","tags":["rpc"],"summary":"JSON-RPC (read-only)","description":"Standard JSON-RPC 2.0 request body. Read-only methods only: eth_blockNumber, eth_chainId, eth_call, eth_estimateGas, eth_gasPrice, eth_getBalance, eth_getBlockByNumber, eth_getBlockByHash, eth_getCode, eth_getLogs, eth_getStorageAt, eth_getTransactionByHash, eth_getTransactionCount, eth_getTransactionReceipt, eth_feeHistory, eth_maxPriorityFeePerGas, net_version.\n\nSource: Robinhood Chain RPC. Cache: none. Scope: rpc.","parameters":[{"name":"network","in":"query","required":false,"description":"Robinhood Chain network to query.","schema":{"default":"mainnet","type":"string","enum":["mainnet","testnet"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string","minLength":1,"maxLength":512,"description":"JSON-RPC method name."},"params":{"description":"JSON-RPC params array."}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["success","data","meta"],"properties":{"success":{"const":true},"data":{"type":"object","properties":{"result":{"description":"Raw JSON-RPC result from the node."}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"Meta":{"type":"object","required":["chain","network","chainId","timestamp","requestId"],"properties":{"chain":{"const":"robinhood"},"network":{"type":"string","enum":["mainnet","testnet"]},"chainId":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"},"requestId":{"type":"string"},"endpoint":{"type":"string"},"cached":{"type":"boolean"},"source":{"type":"string","enum":["rpc","indexer"]}}},"Error":{"type":"object","required":["success","error"],"properties":{"success":{"const":false},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","invalid_params","missing_api_key","invalid_api_key","key_revoked","key_expired","insufficient_scope","origin_not_allowed","forbidden","not_found","method_not_allowed","rate_limited","quota_exceeded","ip_blocked","internal_error","rpc_unavailable","indexer_unavailable","service_unavailable"]},"message":{"type":"string"},"details":{}}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}}