{"openapi":"3.1.0","info":{"title":"ClearTrace API","description":"Public API for ClearTrace execution metrics and benchmarks.","version":"1.3.0"},"paths":{"/api/v1/protocols":{"get":{"tags":["Execution Benchmarks"],"summary":"Get Protocol Slippage Scores","description":"**Public API: Returns a ranked list of protocols by Slippage Score.**\n\nThe Slippage Score (0-100) is derived from each protocol's **median realized\nslippage** versus a 1-minute VWAP baseline (`100 - slippage_bps`, clipped),\nso a higher score means lower slippage.\n\nScores are available **per chain**. Pass `?chain=arbitrum` (or `base`,\n`optimism`, `ethereum`) for a single-chain ranking, or omit it for the\nblended cross-chain rollup (`chain=all`). Per-chain scores differ from the\nblend — a protocol's execution quality is not uniform across chains.\n\nThis is a **slippage-only** metric. MEV (sandwich) exposure and transaction\nrevert rates are tracked as **separate** metrics — they are NOT folded into\nthis score. Use `avg_slippage_bps` for the raw underlying figure.","operationId":"get_protocols_api_v1_protocols_get","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Chain scope: 'all' (blended cross-chain rollup, the default) or a single chain.","enum":["all","ethereum","base","arbitrum","optimism"],"default":"all","title":"Chain"},"description":"Chain scope: 'all' (blended cross-chain rollup, the default) or a single chain."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"The maximum number of top protocols to return.","default":20,"title":"Limit"},"description":"The maximum number of top protocols to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."}],"responses":{"200":{"description":"A ranked array of protocols and their slippage-based execution scores.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProtocolsResponse"}}}}}}},"/api/v1/transactions":{"get":{"tags":["Live Feed"],"summary":"Recent Transactions Sample","description":"**Public API: Returns a sample of recent on-chain DEX transactions.**\n\nEvery row is a real transaction: hashes, block timestamps, projects, token\npairs, and volumes come from Dune trace data; gas costs and success status\ncome from Alchemy transaction receipts. The sample covers the four supported\nchains and is refreshed on each data sync.","operationId":"get_recent_transactions_api_v1_transactions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"The maximum number of recent transactions to return.","default":10,"title":"Limit"},"description":"The maximum number of recent transactions to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."},{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Blockchain to query (ethereum, base, arbitrum, optimism)","default":"ethereum","title":"Chain"},"description":"Blockchain to query (ethereum, base, arbitrum, optimism)"},{"name":"dex_project","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by DEX project name.","title":"Dex Project"},"description":"Filter by DEX project name."},{"name":"aggregator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by aggregator name.","title":"Aggregator"},"description":"Filter by aggregator name."},{"name":"token_sold","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by token sold symbol.","title":"Token Sold"},"description":"Filter by token sold symbol."},{"name":"token_bought","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by token bought symbol.","title":"Token Bought"},"description":"Filter by token bought symbol."},{"name":"start_timestamp","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by start timestamp (Unix).","title":"Start Timestamp"},"description":"Filter by start timestamp (Unix)."},{"name":"end_timestamp","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by end timestamp (Unix).","title":"End Timestamp"},"description":"Filter by end timestamp (Unix)."},{"name":"succeeded","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by transaction success status.","title":"Succeeded"},"description":"Filter by transaction success status."}],"responses":{"200":{"description":"A sample of recent on-chain DEX transactions with real gas costs from transaction receipts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionsResponse"}}}}}}},"/api/v1/contract/{address}/profile":{"get":{"tags":["Contract Intelligence"],"summary":"Get Contract On-Chain Profile","description":"**Public API: Returns a full on-chain profile for any contract or wallet address.**\n\nPowered by Alchemy's enhanced APIs, this endpoint provides:\n- **Token Balances**: All ERC-20 tokens held by the address via `alchemy_getTokenBalances`\n- **Contract Metadata**: Bytecode size, ETH balance, account nonce\n- **Auto-Classification**: Heuristic-based classification (treasury, MEV bot, router, factory, etc.)\n\nNote on `nonce`: it is an activity count only for an EOA. A contract's nonce\nstarts at 1 and increments only on CREATE, so for a contract it reports\ncontracts deployed (`nonce - 1`), not transactions sent. That derived count\nis served directly as `contracts_deployed` (null for an EOA, where it cannot\nbe read off the nonce). The legacy `transaction_count` field carries the\nsame value as `nonce` and is deprecated.\n\nThis is useful for identifying unknown proxy contracts in DEX attribution data.","operationId":"get_contract_profile_api_v1_contract__address__profile_get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Blockchain network to query.","enum":["ethereum","base","arbitrum","optimism"],"default":"ethereum","title":"Chain"},"description":"Blockchain network to query."}],"responses":{"200":{"description":"A comprehensive on-chain profile including token balances, code size, ETH balance, and automated classification.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractProfileResponse"}}}}}}},"/api/v1/contract/{address}/attribution":{"get":{"tags":["Contract Intelligence"],"summary":"Get Address Attribution Breakdown","description":"**Public API: Returns the attribution breakdown for a single address.**\n\nPairs the cross-frontend attribution engine with the labeling pipeline: for\na given contract or wallet, this returns its per-chain volume split across\nthe four attribution vectors (proxy, calldata-suffix, fee-recipient,\naggregator), plus any human-readable label we've resolved.\n\nMost useful for the **unlabeled** proxies and hidden frontends the engine\nsurfaces as `Unknown Proxy/Frontend (0x…)` — known, named protocol\ncontracts are keyed by name rather than address and may not resolve here.","operationId":"get_address_attribution_api_v1_contract__address__attribution_get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}},{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Filter to a single blockchain (ethereum, base, arbitrum, optimism).","title":"Chain"},"description":"Filter to a single blockchain (ethereum, base, arbitrum, optimism)."}],"responses":{"200":{"description":"The cross-frontend attribution breakdown (4 vectors) for a single address, enriched with its auto-discovered label.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressAttributionResponse"}}}}}}},"/api/v1/tx/{tx_hash}":{"get":{"tags":["Contract Intelligence"],"summary":"Per-Transaction Attribution","description":"**Public API: Classifies a single transaction against the attribution engine.**\n\nGiven a transaction hash, this fetches the transaction and its receipt from\nAlchemy and applies the same four vectors used in our aggregate attribution\n(calldata-suffix, proxy-router, fee-recipient, aggregator) to tell you\n*which frontend/router originated the trade and how we know* — plus the\npools touched, fee recipients, and whether the tx was sandwiched.\n\nResults are cached permanently (mined transactions are immutable). Fee\namounts are exact raw token units. With `price=true`, an APPROXIMATE USD\ntrade size is added (best-effort spot price, dominant leg) — never treat it\nas a settlement figure.","operationId":"get_tx_attribution_api_v1_tx__tx_hash__get","parameters":[{"name":"tx_hash","in":"path","required":true,"schema":{"type":"string","title":"Tx Hash"}},{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Blockchain to query.","enum":["ethereum","base","arbitrum","optimism"],"default":"ethereum","title":"Chain"},"description":"Blockchain to query."},{"name":"deep","in":"query","required":false,"schema":{"type":"boolean","description":"Use internal call traces to refine the classification (catches aggregators that sit as intermediates, e.g. 0x via AllowanceHolder, and runs the calldata-suffix test per sub-call). Costs more Alchemy CU; trace support is strongest on Ethereum.","default":false,"title":"Deep"},"description":"Use internal call traces to refine the classification (catches aggregators that sit as intermediates, e.g. 0x via AllowanceHolder, and runs the calldata-suffix test per sub-call). Costs more Alchemy CU; trace support is strongest on Ethereum."},{"name":"price","in":"query","required":false,"schema":{"type":"boolean","description":"Add a best-effort, APPROXIMATE USD trade size (dominant priced leg via the free DefiLlama spot-price API). Adds latency; never a settlement figure.","default":false,"title":"Price"},"description":"Add a best-effort, APPROXIMATE USD trade size (dominant priced leg via the free DefiLlama spot-price API). Adds latency; never a settlement figure."}],"responses":{"200":{"description":"Live classification of a single transaction against the four attribution vectors.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TxAttributionResponse"}}}}}}},"/api/v1/gas":{"get":{"tags":["Network Status"],"summary":"Get Multi-Chain Gas Prices","description":"**Public API: Returns live gas prices across all supported chains.**\n\nPowered by Alchemy RPC. Useful for comparing execution costs across L1 and L2 networks.","operationId":"get_gas_prices_api_v1_gas_get","responses":{"200":{"description":"Live gas prices across Ethereum, Base, Arbitrum, and Optimism.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GasPricesResponse"}}}}}}},"/api/v1/labels":{"get":{"tags":["Contract Intelligence"],"summary":"Auto-Discovered Contract Labels","description":"**Public API: Returns contract labels discovered by the auto-labeling pipeline.**\n\nEach sync, the highest-volume unattributed contracts are profiled through\nlocal intelligence tables and Alchemy RPC (token metadata, bytecode size,\nactivity) to classify and, where possible, name them.","operationId":"get_contract_labels_api_v1_labels_get","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Filter by blockchain (ethereum, base, arbitrum, optimism).","title":"Chain"},"description":"Filter by blockchain (ethereum, base, arbitrum, optimism)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Maximum number of labels to return.","default":50,"title":"Limit"},"description":"Maximum number of labels to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."}],"responses":{"200":{"description":"Labels for high-volume contracts resolved by the Alchemy-powered auto-labeling pipeline.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractLabelsResponse"}}}}}}},"/api/v1/attribution":{"get":{"tags":["Core Data"],"summary":"Bulk Cross-Frontend Attribution","description":"**Public API: Bulk export of the Cross-Frontend Attribution Engine.**\n\nThis endpoint exposes our core dataset. It provides aggregated volumes for every contract we have analyzed, broken down by our 4 attribution vectors.","operationId":"get_attribution_api_v1_attribution_get","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Filter by blockchain (ethereum, base, arbitrum, optimism).","title":"Chain"},"description":"Filter by blockchain (ethereum, base, arbitrum, optimism)."},{"name":"project","in":"query","required":false,"schema":{"type":"string","description":"Filter by project or contract name (e.g., '1inch').","title":"Project"},"description":"Filter by project or contract name (e.g., '1inch')."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Maximum number of records to return.","default":100,"title":"Limit"},"description":"Maximum number of records to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."}],"responses":{"200":{"description":"Access the raw aggregated attribution data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributionResponse"}}}}}}},"/api/v1/mev/sandwiches":{"get":{"tags":["Execution Benchmarks"],"summary":"Detected Sandwich Attacks","description":"**Public API: Returns detected sandwich-attack (MEV) events.**\n\nEach row is a real sandwiched transaction (frontrun → victim → backrun)\nidentified in block ordering: the victim's `tx_hash`, wallet, trade size,\nand the DEX/token pair, plus trailing-7-day attack counts and total value\nsandwiched per chain. Useful for MEV-protection scoring and victim alerting.","operationId":"get_sandwiches_api_v1_mev_sandwiches_get","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Filter by blockchain (ethereum, base, arbitrum, optimism).","title":"Chain"},"description":"Filter by blockchain (ethereum, base, arbitrum, optimism)."},{"name":"project","in":"query","required":false,"schema":{"type":"string","description":"Filter by DEX project name (e.g., 'uniswap').","title":"Project"},"description":"Filter by DEX project name (e.g., 'uniswap')."},{"name":"min_victim_volume_usd","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"Only return events where the victim trade was at least this size (USD).","default":0,"title":"Min Victim Volume Usd"},"description":"Only return events where the victim trade was at least this size (USD)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Maximum number of events to return.","default":50,"title":"Limit"},"description":"Maximum number of events to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."}],"responses":{"200":{"description":"Sandwich-attack (MEV) events with victim wallet, trade size, and 7-day chain totals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandwichesResponse"}}}}}}},"/api/v1/revert-rates":{"get":{"tags":["Execution Benchmarks"],"summary":"Aggregator Revert Rates","description":"**Public API: Returns per-aggregator transaction revert rates.**\n\nThe revert rate is the share of an aggregator's routing transactions that\nfail on-chain — a distinct reliability metric, reported per chain (there is\nno cross-chain rollup). A high rate signals routes that frequently don't\nclear at the expected outcome.\n\nRates are computed after a **sender-level bot filter** (methodology v5,\neffective 2026-07-05) that excludes competing solver/keeper bots — senders\nwith zero successful txs in the window, senders reverting >=50% of 5+ txs,\nand senders with 100+ reverts at a >=10% personal rate — so the figure\nreflects what genuine users experience, not solver fill races. Data served\nbefore 2026-07-05 used the looser v4 filter and read higher for\nsolver-heavy routers. Known residual: the Odos/Ethereum cell remains\ninflated by address-rotating spam that no per-sender rule can separate.\n\nSince methodology v6 (2026-07-07) each row also carries a **user-only\nrevert rate** (`user_revert_rate_pct`, with `user_reverted_txs` /\n`user_txs`): the same computation restricted to senders whose personal\nrevert rate is under 10% — the measured genuine-user experience, and the\nnumber to read for residual cells like Odos/Ethereum.\n\n### Do not rank across execution models\n\nEach row carries an `execution_model` and a `revert_comparable` flag. A revert\nrate measures reliability only where **the failing transaction is the user's\nown** — that is, on a `router` venue, where the user signs and submits the swap.\n\nOn a `batch_auction` venue (CoW Protocol) the user signs an *order* and a solver\nsettles a batch; on an `intent` venue (1inch Fusion, which settles through the\nLimit Order Protocol) a resolver submits. An order that cannot be filled never\nbecomes a transaction at all. Their on-chain revert rate is therefore\nstructurally near zero no matter how reliably they fill — it reflects\nsolver/resolver settlement, not user experience.\n\nSorting every row by `revert_rate_pct` puts CoW and Fusion at the top of the\ntable, and that ordering says nothing about reliability. Filter to one execution\nmodel before comparing — `?revert_comparable=true` returns only the rows that may\nlegitimately be ranked against each other.","operationId":"get_revert_rates_api_v1_revert_rates_get","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","description":"Filter by blockchain (ethereum, base, arbitrum, optimism).","title":"Chain"},"description":"Filter by blockchain (ethereum, base, arbitrum, optimism)."},{"name":"project","in":"query","required":false,"schema":{"type":"string","description":"Filter by aggregator/project name.","title":"Project"},"description":"Filter by aggregator/project name."},{"name":"revert_comparable","in":"query","required":false,"schema":{"type":"boolean","description":"Set true to return only venues whose revert rate may legitimately be ranked against each other — the `router` venues, where the user submits the swap so a failure is a reverted user transaction. Excludes batch-auction (CoW) and intent (1inch Fusion) venues, whose orders never reach the chain when they fail and whose on-chain revert rate is therefore structurally ~0.","title":"Revert Comparable"},"description":"Set true to return only venues whose revert rate may legitimately be ranked against each other — the `router` venues, where the user submits the swap so a failure is a reverted user transaction. Excludes batch-auction (CoW) and intent (1inch Fusion) venues, whose orders never reach the chain when they fail and whose on-chain revert rate is therefore structurally ~0."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Maximum number of rows to return.","default":50,"title":"Limit"},"description":"Maximum number of rows to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."}],"responses":{"200":{"description":"Per-aggregator, per-chain transaction revert (failure) rates.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevertRatesResponse"}}}}}}},"/api/v1/flows":{"get":{"tags":["Core Data"],"summary":"Interface Routing Flows","description":"**Public API: Returns interface-to-interface routing flows.**\n\nEach edge is a `source → target` volume aggregate from the attribution\nengine — e.g. how much direct-retail volume flows into a given router or\nunknown proxy. Useful for mapping where trade origination concentrates.","operationId":"get_routing_flows_api_v1_flows_get","parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"Filter by source interface (substring match).","title":"Source"},"description":"Filter by source interface (substring match)."},{"name":"target","in":"query","required":false,"schema":{"type":"string","description":"Filter by target interface (substring match).","title":"Target"},"description":"Filter by target interface (substring match)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of edges to return.","default":100,"title":"Limit"},"description":"Maximum number of edges to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset.","default":0,"title":"Offset"},"description":"Pagination offset."}],"responses":{"200":{"description":"Source→target routing edges showing how volume moves between interfaces and routers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingFlowsResponse"}}}}}}},"/api/v1/keys":{"post":{"tags":["Execution Benchmarks"],"summary":"Get a free API key (higher rate limits)","description":"**Free, opt-in API key. Raises your rate limits; changes nothing else.**\n\nEvery `/api/v1` endpoint stays open without a key and returns the same data\neither way. There is no paid tier and no gated data behind this. The only thing a\nkey changes is your ceiling, which is multiplied by\n`rate_limit_multiplier` on every endpoint.\n\nWe ask for an email because usage is logged against a one-way hash of your IP and\nwe have no way to reach you otherwise. `use_case` is optional and is the field we\nactually read.\n\nThe key is self-contained, so it keeps working across our deploys and restarts.\nKeep it: we cannot show it to you again.","operationId":"create_api_key_api_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyRequest"}}},"required":true},"responses":{"200":{"description":"A key to send as X-API-Key, and what it grants.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyResponse"}}}}}}}},"components":{"schemas":{"AddressAttributionRecord":{"properties":{"chain":{"type":"string","title":"Chain","description":"The blockchain network.","example":"ethereum"},"resolved_contract_name":{"type":"string","title":"Resolved Contract Name","description":"The name the attribution engine assigned this address (often 'Unknown Proxy/Frontend (0x…)' for unlabeled contracts).","example":"Unknown Frontend (0x8f10b468b06c6fd214b65f87778827f7d113f996)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Human-readable label from the auto-labeling pipeline, if one exists for this address+chain.","example":"Banana Gun Router"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type","description":"Classification from the labeling pipeline: token, router_or_proxy, contract, eoa, or delegated_eoa (EIP-7702).","example":"router_or_proxy"},"label_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label Source","description":"Where the label came from (nansen, arkham, etherscan, alchemy-*).","example":"arkham"},"confidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confidence","description":"Label confidence: high, medium, or low.","example":"high"},"total_volume_usd":{"type":"number","title":"Total Volume Usd","description":"Total USD volume attributed to this address on this chain across all vectors.","example":10156290.0},"aggregator_partner_volume_usd":{"type":"number","title":"Aggregator Partner Volume Usd","description":"Volume explicitly tagged with an aggregator partner code.","example":0.0},"aggregator_volume_usd":{"type":"number","title":"Aggregator Volume Usd","description":"Standard aggregator volume.","example":0.0},"calldata_suffix_volume_usd":{"type":"number","title":"Calldata Suffix Volume Usd","description":"Volume attributed via calldata suffix fingerprinting.","example":0.0},"direct_volume_usd":{"type":"number","title":"Direct Volume Usd","description":"Volume routed directly to DEX pools.","example":0.0},"erc20_fee_volume_usd":{"type":"number","title":"Erc20 Fee Volume Usd","description":"Volume attributed via secondary fee transfers.","example":0.0},"proxy_volume_usd":{"type":"number","title":"Proxy Volume Usd","description":"Volume routed through an unverified proxy before hitting DEX pools.","example":0.0}},"type":"object","required":["chain","resolved_contract_name","total_volume_usd","aggregator_partner_volume_usd","aggregator_volume_usd","calldata_suffix_volume_usd","direct_volume_usd","erc20_fee_volume_usd","proxy_volume_usd"],"title":"AddressAttributionRecord"},"AddressAttributionResponse":{"properties":{"address":{"type":"string","title":"Address","description":"The queried address (lower-cased)."},"records":{"items":{"$ref":"#/components/schemas/AddressAttributionRecord"},"type":"array","title":"Records","description":"Per-chain attribution breakdown for this address, largest volume first."},"total_volume_usd":{"type":"number","title":"Total Volume Usd","description":"Total attributed volume for this address summed across all returned chains."},"chains_found":{"type":"integer","title":"Chains Found","description":"Number of chains on which this address has attributed volume."}},"type":"object","required":["address","records","total_volume_usd","chains_found"],"title":"AddressAttributionResponse"},"ApiKeyRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Where to reach you. Required.","example":"dev@example.com"},"name":{"type":"string","title":"Name","description":"Optional. Who you are.","example":"Alex Rivera"},"company":{"type":"string","title":"Company","description":"Optional. Where you work.","example":"Acme Research"},"use_case":{"type":"string","title":"Use Case","description":"Optional, and the most useful field: what you are building.","example":"Backtesting router selection for a treasury desk"}},"type":"object","required":["email"],"title":"ApiKeyRequest"},"ApiKeyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key","description":"Send as the X-API-Key header.","example":"ct_a1b2c3d4e5f60718_9f..."},"tier":{"type":"string","title":"Tier","description":"Which tier this key grants.","example":"keyed"},"rate_limit_multiplier":{"type":"integer","title":"Rate Limit Multiplier","description":"How much your per-endpoint ceiling is multiplied by.","example":10},"note":{"type":"string","title":"Note","description":"What the key does and does not change."}},"type":"object","required":["api_key","tier","rate_limit_multiplier","note"],"title":"ApiKeyResponse"},"AttributionRecord":{"properties":{"resolved_contract_name":{"type":"string","title":"Resolved Contract Name","description":"The identified project, contract name, or unknown entity.","example":"1inch: AggregationRouterV5"},"blockchain":{"type":"string","title":"Blockchain","description":"The blockchain network.","example":"ethereum"},"total_volume_usd":{"type":"number","title":"Total Volume Usd","description":"Total USD volume attributed to this contract across all vectors.","example":15000000.5},"aggregator_partner_volume_usd":{"type":"number","title":"Aggregator Partner Volume Usd","description":"Volume explicitly tagged with an aggregator partner code.","example":2000000.0},"aggregator_volume_usd":{"type":"number","title":"Aggregator Volume Usd","description":"Standard aggregator volume.","example":10000000.0},"calldata_suffix_volume_usd":{"type":"number","title":"Calldata Suffix Volume Usd","description":"Volume attributed via calldata suffix fingerprinting.","example":500000.0},"direct_volume_usd":{"type":"number","title":"Direct Volume Usd","description":"Volume routed directly to DEX pools.","example":1500000.0},"erc20_fee_volume_usd":{"type":"number","title":"Erc20 Fee Volume Usd","description":"Volume attributed via secondary fee transfers.","example":100000.0},"proxy_volume_usd":{"type":"number","title":"Proxy Volume Usd","description":"Volume routed through an unverified proxy before hitting DEX pools.","example":900000.0}},"type":"object","required":["resolved_contract_name","blockchain","total_volume_usd","aggregator_partner_volume_usd","aggregator_volume_usd","calldata_suffix_volume_usd","direct_volume_usd","erc20_fee_volume_usd","proxy_volume_usd"],"title":"AttributionRecord"},"AttributionResponse":{"properties":{"records":{"items":{"$ref":"#/components/schemas/AttributionRecord"},"type":"array","title":"Records","description":"Paginated list of attribution records."},"total":{"type":"integer","title":"Total","description":"Total number of matching records."},"limit":{"type":"integer","title":"Limit","description":"The maximum number of records returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["records","total","limit","offset"],"title":"AttributionResponse"},"ContractLabel":{"properties":{"address":{"type":"string","title":"Address","description":"The contract address.","example":"0xbdb3ba9ffe392549e1f8658dd2630c141fdf47b6"},"chain":{"type":"string","title":"Chain","description":"The blockchain the contract was profiled on.","example":"ethereum"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Resolved human-readable name, when one was found.","example":"Banana Gun Router"},"entity_type":{"type":"string","title":"Entity Type","description":"Classification: token, router_or_proxy, contract, eoa, or delegated_eoa (EIP-7702).","example":"router_or_proxy"},"source":{"type":"string","title":"Source","description":"Where the label came from: nansen, arkham, etherscan, alchemy-token-metadata, or alchemy-heuristic.","example":"alchemy-heuristic"},"confidence":{"type":"string","title":"Confidence","description":"Label confidence: high, medium, or low.","example":"medium"},"code_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Code Size","description":"Deployed bytecode size in bytes (0 for EOAs).","example":12048}},"type":"object","required":["address","chain","entity_type","source","confidence"],"title":"ContractLabel"},"ContractLabelsResponse":{"properties":{"labels":{"items":{"$ref":"#/components/schemas/ContractLabel"},"type":"array","title":"Labels","description":"Contract labels discovered by the auto-labeling pipeline."},"total":{"type":"integer","title":"Total","description":"Total number of matching labels."},"limit":{"type":"integer","title":"Limit","description":"The maximum number of labels returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["labels","total","limit","offset"],"title":"ContractLabelsResponse"},"ContractProfile":{"properties":{"address":{"type":"string","title":"Address","description":"The queried contract address."},"chain":{"type":"string","title":"Chain","description":"The blockchain network.","example":"ethereum"},"is_contract":{"type":"boolean","title":"Is Contract","description":"Whether the address is a smart contract.","example":true},"code_size_bytes":{"type":"integer","title":"Code Size Bytes","description":"Size of the deployed bytecode in bytes.","example":4096},"eth_balance":{"type":"number","title":"Eth Balance","description":"Native ETH balance.","example":1.25},"nonce":{"type":"integer","title":"Nonce","description":"The account nonce (eth_getTransactionCount). For an EOA this is the number of transactions sent. For a CONTRACT it is NOT an activity count: a contract's nonce starts at 1 and increments only on CREATE, so it counts contracts deployed (nonce - 1).","example":42},"contracts_deployed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contracts Deployed","description":"How many contracts this address has CREATEd, for a CONTRACT: it is `nonce - 1`, served directly so a consumer does not have to know that rule. NULL when `is_contract` is false — an EOA's nonce counts the transactions it sent, and some of those may have been deployments, so the CREATE count is genuinely unknown from the nonce alone. Null means unknown here, never zero.","example":1612},"transaction_count":{"type":"integer","title":"Transaction Count","description":"DEPRECATED, use `nonce` instead. Identical value, kept for backward compatibility. The name is misleading for contracts, where this counts contracts deployed rather than transactions sent.","deprecated":true},"token_balances":{"items":{"$ref":"#/components/schemas/TokenBalance"},"type":"array","title":"Token Balances","description":"All ERC-20 token balances held by this address."},"classification_hint":{"type":"string","title":"Classification Hint","description":"Automated classification based on on-chain signals.","example":"treasury"}},"type":"object","required":["address","chain","is_contract","code_size_bytes","eth_balance","nonce","transaction_count","token_balances","classification_hint"],"title":"ContractProfile"},"ContractProfileResponse":{"properties":{"profile":{"$ref":"#/components/schemas/ContractProfile","description":"Full on-chain profile of the contract address."}},"type":"object","required":["profile"],"title":"ContractProfileResponse"},"GasPrice":{"properties":{"chain":{"type":"string","title":"Chain","description":"The blockchain network.","example":"ethereum"},"gas_price_gwei":{"type":"number","title":"Gas Price Gwei","description":"Current gas price in Gwei.","example":12.5},"gas_price_wei":{"type":"integer","title":"Gas Price Wei","description":"Current gas price in Wei.","example":12500000000}},"type":"object","required":["chain","gas_price_gwei","gas_price_wei"],"title":"GasPrice"},"GasPricesResponse":{"properties":{"prices":{"items":{"$ref":"#/components/schemas/GasPrice"},"type":"array","title":"Prices","description":"Gas prices across all supported chains."}},"type":"object","required":["prices"],"title":"GasPricesResponse"},"OriginatingFrontend":{"properties":{"bucket":{"type":"string","title":"Bucket","description":"Taxonomy class: named_frontend, aggregator_api_direct, wallet_embedded, bots_mev, or unattributed.","example":"aggregator_api_direct"},"frontend_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frontend Name","description":"Resolved frontend/aggregator identity, when confident.","example":"1inch: AggregationRouterV6"},"method":{"type":"string","title":"Method","description":"How the frontend was attributed: calldata_suffix, fee_recipient, aggregator, router_heuristic, or none.","example":"aggregator"},"confidence":{"type":"string","title":"Confidence","description":"Attribution-method strength: high (suffix), medium (router/fee), low (inferred), or none.","example":"medium"},"attributed":{"type":"boolean","title":"Attributed","description":"True when the swap was confidently placed into a class (bucket != unattributed)."},"fingerprinted":{"type":"boolean","title":"Fingerprinted","description":"True when a calldata fingerprint proves a frontend tagged the swap but its identity could not be resolved.","default":false}},"type":"object","required":["bucket","method","confidence","attributed"],"title":"OriginatingFrontend"},"ProtocolScore":{"properties":{"name":{"type":"string","title":"Name","description":"The name of the protocol or aggregator.","example":"Uniswap Universal Router"},"category":{"type":"string","title":"Category","description":"The category of the protocol (e.g., Aggregator, DEX, Bridge).","example":"Aggregator"},"avg_slippage_bps":{"type":"number","title":"Avg Slippage Bps","description":"Median realized slippage vs a 1-minute VWAP baseline, in basis points (lower is better).","example":7.0},"slippage_score":{"type":"number","title":"Slippage Score","description":"Slippage Score from 0.0 to 100.0, derived as 100 - median slippage (bps), clipped to [0,100] — higher means lower slippage. This is a slippage-only metric; MEV exposure and revert rates are reported separately.","example":93.0},"total_trades_analyzed":{"type":"integer","title":"Total Trades Analyzed","description":"The number of trades analyzed to compute this score.","example":18988}},"type":"object","required":["name","category","avg_slippage_bps","slippage_score","total_trades_analyzed"],"title":"ProtocolScore"},"ProtocolsResponse":{"properties":{"protocols":{"items":{"$ref":"#/components/schemas/ProtocolScore"},"type":"array","title":"Protocols","description":"A ranked list of protocols sorted by Slippage Score (lowest slippage first)."},"total":{"type":"integer","title":"Total","description":"Total number of protocols available."},"chain":{"type":"string","title":"Chain","description":"The chain scope of these scores: 'all' is the blended cross-chain rollup; otherwise a single chain (ethereum, base, arbitrum, optimism).","default":"all"},"limit":{"type":"integer","title":"Limit","description":"The maximum number of protocols returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["protocols","total","limit","offset"],"title":"ProtocolsResponse"},"RevertRate":{"properties":{"project":{"type":"string","title":"Project","description":"The aggregator or DEX routing the transactions.","example":"kyberswap"},"chain":{"type":"string","title":"Chain","description":"The blockchain network.","example":"ethereum"},"revert_rate_pct":{"type":"number","title":"Revert Rate Pct","description":"Percentage of routing transactions that failed on-chain, after the sender-level bot filter (methodology v5, 2026-07-05).","example":2.78},"reverted_txs":{"type":"integer","title":"Reverted Txs","description":"Number of reverted (failed) routing transactions from non-bot senders.","example":4034},"total_routing_txs":{"type":"integer","title":"Total Routing Txs","description":"Total routing transactions analyzed (non-bot senders).","example":145109},"user_revert_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"User Revert Rate Pct","description":"Revert rate over ONLY senders classified as genuine users (<10% personal revert rate with at least one success; methodology v6, 2026-07-07) — the measured user experience, and the honest number for cells whose headline is a documented bot-spam residual. Null when the cell has no v6 data OR no qualifying genuine-user senders — disambiguate via user_txs (null = pre-v6, 0 = no qualifying senders).","example":0.83},"user_reverted_txs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Reverted Txs","description":"Reverted transactions from genuine-user senders (methodology v6). Null for pre-v6 data.","example":1102},"user_txs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Txs","description":"Total transactions from genuine-user senders (methodology v6). Null for pre-v6 data.","example":132812},"execution_model":{"type":"string","title":"Execution Model","description":"How the venue settles: `router` (the user signs and submits the swap), `batch_auction` (the user signs an order; a solver settles a batch), `intent` (the user signs an intent; a resolver submits), or `unclassified` (submitter not established, or the venue blends models).","default":"unclassified","example":"router"},"revert_comparable":{"type":"boolean","title":"Revert Comparable","description":"Whether this revert rate is comparable to another venue's. TRUE only for `router` venues, where the failing transaction is the user's own. On a batch auction (CoW) or intent venue (1inch Fusion), an order that cannot be filled never becomes a transaction at all — so the on-chain revert rate is structurally near zero and measures solver/resolver behaviour, NOT user reliability. Do not rank across execution models: sorting this endpoint's rows by revert_rate_pct puts CoW and Fusion on top for a reason that has nothing to do with reliability.","default":false,"example":true}},"type":"object","required":["project","chain","revert_rate_pct","reverted_txs","total_routing_txs"],"title":"RevertRate"},"RevertRatesResponse":{"properties":{"revert_rates":{"items":{"$ref":"#/components/schemas/RevertRate"},"type":"array","title":"Revert Rates","description":"Per-aggregator revert rates, highest first. Rows carry execution_model / revert_comparable — only compare rates within one execution model."},"total":{"type":"integer","title":"Total","description":"Total number of matching rows."},"limit":{"type":"integer","title":"Limit","description":"The maximum number of rows returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["revert_rates","total","limit","offset"],"title":"RevertRatesResponse"},"RoutingFlow":{"properties":{"source":{"type":"string","title":"Source","description":"The originating interface or wallet cohort.","example":"Direct Retail (EOA)"},"target":{"type":"string","title":"Target","description":"The interface/router the volume flowed into.","example":"Unknown Proxy"},"volume_usd":{"type":"number","title":"Volume Usd","description":"Total USD volume on this source→target edge.","example":9177082269.68}},"type":"object","required":["source","target","volume_usd"],"title":"RoutingFlow"},"RoutingFlowsResponse":{"properties":{"flows":{"items":{"$ref":"#/components/schemas/RoutingFlow"},"type":"array","title":"Flows","description":"Interface-to-interface routing edges, largest first."},"total":{"type":"integer","title":"Total","description":"Total number of matching edges."},"limit":{"type":"integer","title":"Limit","description":"The maximum number of edges returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["flows","total","limit","offset"],"title":"RoutingFlowsResponse"},"SandwichEvent":{"properties":{"tx_hash":{"type":"string","title":"Tx Hash","description":"The victim's on-chain transaction hash.","example":"0xEE24D08530006E146B9AFC88F015F768447D727685F060C5A801484E7B585982"},"block_time":{"type":"string","title":"Block Time","description":"Block timestamp of the victim transaction (UTC).","example":"2026-06-17 01:18:47.000 UTC"},"chain":{"type":"string","title":"Chain","description":"The blockchain the sandwich occurred on.","example":"ethereum"},"project":{"type":"string","title":"Project","description":"The DEX whose pool was sandwiched.","example":"uniswap"},"token_pair":{"type":"string","title":"Token Pair","description":"The token pair traded by the victim.","example":"ETH-USDC"},"victim_wallet":{"type":"string","title":"Victim Wallet","description":"The sandwiched wallet address.","example":"0xE3A633C47D3970755CEC6839141594937131EFFE"},"victim_volume_usd":{"type":"number","title":"Victim Volume Usd","description":"USD size of the victim's trade.","example":195.15},"chain_attacks_7d":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chain Attacks 7D","description":"Total sandwich attacks detected on this chain over the trailing 7 days.","example":11964},"chain_sandwiched_usd_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chain Sandwiched Usd 7D","description":"Total USD sandwiched on this chain over the trailing 7 days.","example":51652384.44}},"type":"object","required":["tx_hash","block_time","chain","project","token_pair","victim_wallet","victim_volume_usd"],"title":"SandwichEvent"},"SandwichesResponse":{"properties":{"sandwiches":{"items":{"$ref":"#/components/schemas/SandwichEvent"},"type":"array","title":"Sandwiches","description":"Detected sandwich-attack events, newest first."},"total_attacks_7d":{"type":"integer","title":"Total Attacks 7D","description":"Cross-chain total sandwich attacks over the trailing 7 days."},"total_sandwiched_usd_7d":{"type":"number","title":"Total Sandwiched Usd 7D","description":"Cross-chain total USD sandwiched over the trailing 7 days."},"total":{"type":"integer","title":"Total","description":"Total number of matching events."},"limit":{"type":"integer","title":"Limit","description":"The maximum number of events returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["sandwiches","total_attacks_7d","total_sandwiched_usd_7d","total","limit","offset"],"title":"SandwichesResponse"},"TokenBalance":{"properties":{"contract":{"type":"string","title":"Contract","description":"The ERC-20 token contract address.","example":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},"symbol":{"type":"string","title":"Symbol","description":"The token ticker symbol.","example":"USDC"},"name":{"type":"string","title":"Name","description":"The full token name.","example":"USD Coin"},"balance":{"type":"number","title":"Balance","description":"The human-readable token balance.","example":1542.5}},"type":"object","required":["contract","symbol","name","balance"],"title":"TokenBalance"},"Transaction":{"properties":{"tx_hash":{"type":"string","title":"Tx Hash","description":"The on-chain transaction hash.","example":"0xab1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcd"},"timestamp":{"type":"integer","title":"Timestamp","description":"The Unix timestamp of the block containing the transaction.","example":1686245000},"chain":{"type":"string","title":"Chain","description":"The blockchain the transaction executed on.","example":"ethereum"},"dex_project":{"type":"string","title":"Dex Project","description":"The DEX project whose pools the trade executed against.","example":"uniswap"},"aggregator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aggregator","description":"The aggregator that routed the trade, if any (null for direct trades).","example":"1inch"},"token_sold":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Sold","description":"Symbol of the token sold (largest leg).","example":"WETH"},"token_bought":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Bought","description":"Symbol of the token bought (largest leg).","example":"USDC"},"routing_legs":{"type":"integer","title":"Routing Legs","description":"Number of DEX pool legs executed within the transaction.","example":2},"volume_usd":{"type":"number","title":"Volume Usd","description":"Total trade volume across all legs in USD.","example":15420.5},"gas_used":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gas Used","description":"Gas units consumed (from the Alchemy transaction receipt).","example":185432},"gas_fee_eth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gas Fee Eth","description":"Total gas fee paid in ETH (gas_used x effective gas price).","example":0.0021},"gas_fee_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gas Fee Usd","description":"Total gas fee in USD at current ETH price.","example":5.12},"succeeded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Succeeded","description":"Whether the transaction succeeded on-chain (from the receipt status).","example":true}},"type":"object","required":["tx_hash","timestamp","chain","dex_project","routing_legs","volume_usd"],"title":"Transaction"},"TransactionsResponse":{"properties":{"transactions":{"items":{"$ref":"#/components/schemas/Transaction"},"type":"array","title":"Transactions","description":"A sample of recent on-chain DEX transactions, refreshed on each data sync."},"total":{"type":"integer","title":"Total","description":"Total number of matching transactions."},"limit":{"type":"integer","title":"Limit","description":"The maximum number of transactions returned."},"offset":{"type":"integer","title":"Offset","description":"The offset used for pagination."}},"type":"object","required":["transactions","total","limit","offset"],"title":"TransactionsResponse"},"TxAttributionResponse":{"properties":{"tx_hash":{"type":"string","title":"Tx Hash","description":"The queried transaction hash (lower-cased)."},"chain":{"type":"string","title":"Chain","description":"The blockchain the lookup ran against.","example":"ethereum"},"found":{"type":"boolean","title":"Found","description":"Whether the transaction was found and classified."},"status":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status","description":"On-chain receipt status (1 = success, 0 = reverted).","example":1},"primary_vector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Vector","description":"The dominant attribution vector: proxy, aggregator, fee_recipient, calldata_suffix, direct, or unclassified.","example":"aggregator"},"vectors":{"items":{"type":"string"},"type":"array","title":"Vectors","description":"All attribution vectors this transaction matches."},"originator":{"anyOf":[{"$ref":"#/components/schemas/TxOriginator"},{"type":"null"}],"description":"The contract that originated the trade (tx_to) and its resolved name."},"is_direct":{"type":"boolean","title":"Is Direct","description":"Whether the caller hit a DEX pool directly.","default":false},"is_proxy":{"type":"boolean","title":"Is Proxy","description":"Whether the trade routed through a proxy/router (hidden-frontend signal).","default":false},"is_aggregator":{"type":"boolean","title":"Is Aggregator","description":"Whether a known aggregator router was involved.","default":false},"aggregator_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aggregator Name","description":"Name of the matched aggregator, if any."},"has_calldata_suffix":{"type":"boolean","title":"Has Calldata Suffix","description":"Whether the calldata carries a non-ABI-aligned suffix fingerprint.","default":false},"fee_recipients":{"items":{"$ref":"#/components/schemas/TxFeeRecipient"},"type":"array","title":"Fee Recipients","description":"Addresses that skimmed a fee out of the swap."},"pools":{"items":{"type":"string"},"type":"array","title":"Pools","description":"Liquidity pools (Swap-event emitters) touched by the transaction."},"routing_legs":{"type":"integer","title":"Routing Legs","description":"Number of Swap events (pool legs) in the transaction.","default":0},"sandwiched":{"type":"boolean","title":"Sandwiched","description":"Whether this transaction appears as a victim in our detected sandwich set.","default":false},"trace_used":{"type":"boolean","title":"Trace Used","description":"Whether internal traces were used to refine the classification (deep mode).","default":false},"deep":{"type":"boolean","title":"Deep","description":"Whether deep (trace-based) classification was requested.","default":false},"estimated_volume_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Volume Usd","description":"Best-effort, APPROXIMATE USD trade size (dominant priced leg, DefiLlama spot price). Null when pricing was not requested or no leg could be priced. Never use as a settlement figure."},"volume_estimate_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Volume Estimate Basis","description":"How estimated_volume_usd was derived, when present."},"price":{"type":"boolean","title":"Price","description":"Whether best-effort USD sizing was requested.","default":false},"cached":{"type":"boolean","title":"Cached","description":"Whether this result was served from cache.","default":false},"originating_frontend":{"anyOf":[{"$ref":"#/components/schemas/OriginatingFrontend"},{"type":"null"}],"description":"The trade's originating frontend, mapped onto the ClearTrace taxonomy (the spine). Derived from the attribution vectors."},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note","description":"Diagnostic note (e.g. when Alchemy is unconfigured or the tx is unknown)."}},"type":"object","required":["tx_hash","chain","found"],"title":"TxAttributionResponse"},"TxFeeRecipient":{"properties":{"address":{"type":"string","title":"Address","description":"The fee-collecting address.","example":"0x37305b1cd40574e4c5ce33f8e8306be057fd7341"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Resolved label for the recipient, if known.","example":"Banana Gun: Fee Wallet"},"token_contract":{"type":"string","title":"Token Contract","description":"The ERC-20 contract the fee was paid in.","example":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},"raw_amount":{"type":"string","title":"Raw Amount","description":"Exact token amount transferred (raw integer, no decimals/USD applied).","example":"1250000"}},"type":"object","required":["address","token_contract","raw_amount"],"title":"TxFeeRecipient"},"TxOriginator":{"properties":{"address":{"type":"string","title":"Address","description":"The contract the transaction called (tx_to).","example":"0x111111125421ca6dc452d289314280a0f8842a65"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Resolved label for that contract, if known.","example":"1inch: AggregationRouterV6"}},"type":"object","required":["address"],"title":"TxOriginator"}}}}