{ "opencollection": "1.0.0", "info": { "name": "Hermod DEX Token API", "version": "sha-80d3407" }, "items": [ { "info": { "name": "Token", "type": "folder" }, "items": [ { "info": { "name": "Token DEX Trade History", "type": "http" }, "http": { "method": "GET", "url": "/gateway/v1/token/dex-trades", "params": [ { "name": "address", "value": "", "type": "query", "description": "Token CONTRACT ADDRESS — 0x-prefixed hex (EVM chains only; Tron also accepts base58 `T...`). This is NOT a ticker symbol (e.g. do NOT pass `USDC` or `BTC`). To resolve a ticker symbol to a contract address, call GET /v1/search/token?q={symbol}&chain={chain} and use the `address` whose `chain` is supported by this endpoint. This endpoint has no `symbol` parameter." }, { "name": "chain", "value": "", "type": "query", "description": "Chain. Can be `ethereum`, `base`, `bsc`, `arbitrum`, or `tron`." }, { "name": "limit", "value": "", "type": "query", "description": "Results per page" }, { "name": "offset", "value": "", "type": "query", "description": "Pagination offset" }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated enrichments to attach to each trade. Currently valid: `labels` — adds a `taker_label` field with entity information for the taker address." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Returns recent DEX swap events for a token contract address.\n\n**Covered DEXes:** `uniswap`, `sushiswap`, `curve`, `balancer`, `pancakeswap` (and other major DEXes per chain).\n\n**Included fields:** trading pair, amounts, USD value, taker address.\n\n**Data refresh:** ~24 hours · **Chains:** Ethereum, Base, BSC, Arbitrum, Tron" }, { "info": { "name": "Token Holders", "type": "http" }, "http": { "method": "GET", "url": "/gateway/v1/token/holders", "params": [ { "name": "address", "value": "", "type": "query", "description": "Token CONTRACT ADDRESS — 0x-prefixed hex for EVM chains, base58 for Solana. This is NOT a ticker symbol (e.g. do NOT pass `USDC` or `BTC`). To resolve a ticker symbol to a contract address, call GET /v1/search/token?q={symbol}&chain={chain} and use the `address` whose `chain` is supported by this endpoint. This endpoint has no `symbol` parameter." }, { "name": "chain", "value": "", "type": "query", "description": "Chain. Can be `ethereum`, `polygon`, `bsc`, `solana`, `avalanche`, `arbitrum`, `optimism`, or `base`." }, { "name": "limit", "value": "", "type": "query", "description": "Results per page" }, { "name": "offset", "value": "", "type": "query", "description": "Pagination offset" }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated enrichments to attach to each holder. Currently valid: `labels` — adds a full `label` record alongside the flat `entity_name` / `entity_type` fields." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Returns top token holders for a contract address.\n\n**Included fields:** wallet address, balance, and percentage.\n\n**Lookup:** by `address` and `chain`. Supports EVM chains and Solana." }, { "info": { "name": "Token Unlock Schedule", "type": "http" }, "http": { "method": "GET", "url": "/gateway/v1/token/tokenomics", "params": [ { "name": "id", "value": "", "type": "query", "description": "Surf project UUID. PREFERRED — always use this when available from a previous response. Takes priority over symbol." }, { "name": "symbol", "value": "", "type": "query", "description": "Token symbol like `ARB`, `OP`, or `APT`" }, { "name": "from", "value": "", "type": "query", "description": "Start of time range. Accepts Unix seconds (`1704067200`) or date string (`2024-01-01`)" }, { "name": "to", "value": "", "type": "query", "description": "End of time range. Accepts Unix seconds (`1735689600`) or date string (`2025-01-01`)" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Returns token unlock time-series with cumulative amounts, allocation breakdowns, total supply denominator, and unlocked-supply percentage.\n\n**Lookup:** by project UUID (`id`) or token `symbol`. Filter by date range with `from`/`to` — defaults to the current calendar month when omitted.\n\n**Important:** `unlock_amount` is a legacy alias for `cumulative_unlocked_amount`; it is already cumulative at each timestamp and must not be summed across rows. Use `unlocked_percentage_of_total_supply` for the " }, { "info": { "name": "Top Transfer Counterparties", "type": "http" }, "http": { "method": "GET", "url": "/gateway/v1/token/transfer-counterparties", "params": [ { "name": "address", "value": "", "type": "query", "description": "Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 `T...` or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint." }, { "name": "chain", "value": "", "type": "query", "description": "Chain the token contract is deployed on." }, { "name": "direction", "value": "", "type": "query", "description": "Ranking direction: `to` = top receivers, `from` = top senders." }, { "name": "metric", "value": "", "type": "query", "description": "Ranking key: `count` = transfer frequency, `amount` = decimal-adjusted token sum, `amount_usd` = USD value sum (USD lags ~3 days; unreliable for recent windows)." }, { "name": "time_range", "value": "", "type": "query", "description": "Look-back window (hard 90d cap)." }, { "name": "limit", "value": "", "type": "query", "description": "Results per page." }, { "name": "offset", "value": "", "type": "query", "description": "Pagination offset." }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated enrichments. `labels` attaches an entity label per counterparty." }, { "name": "exclude_labels", "value": "", "type": "query", "description": "Comma-separated entity categories to drop (best-effort): `cex`, `router`, `amm`, `bridge`. Results may be fewer than `limit` when top counterparties are infrastructure." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Ranked top counterparties (receivers or senders) of a token over a window — answers \"who are the top receivers/senders?\".\n\n**Lookup:** `address` (token contract) + `chain` + `direction` (`to` = top receivers, `from` = top senders). Rank by `metric` (`count`, `amount`, `amount_usd`).\n\n**Related:** raw rows → `/v1/token/transfers`; aggregate summary → `/v1/token/transfer-stats`.\n\n**Chains:** Ethereum, Base, BSC, Arbitrum, Tron · **Refresh:** ~24h" }, { "info": { "name": "Token Transfer Activity Summary", "type": "http" }, "http": { "method": "GET", "url": "/gateway/v1/token/transfer-stats", "params": [ { "name": "address", "value": "", "type": "query", "description": "Token CONTRACT ADDRESS (0x-hex for EVM; Tron accepts base58 `T...` or 0x-hex). Not a ticker — resolve a symbol via GET /v1/search/token?q={symbol}&chain={chain} and use a returned address whose chain is supported by this endpoint." }, { "name": "chain", "value": "", "type": "query", "description": "Chain the token contract is deployed on." }, { "name": "time_range", "value": "", "type": "query", "description": "Look-back window (hard 90d cap)." }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated extras. `series` adds a daily trend breakdown (volume only)." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Aggregate transfer-activity summary for a token over a window — total transfers, unique senders/receivers, total amount, first/last activity, and an optional daily series (`include=series`).\n\n**Lookup:** `address` (token contract) + `chain`.\n\n**Related:** per-counterparty ranking → `/v1/token/transfer-counterparties`; raw rows → `/v1/token/transfers`.\n\n**Chains:** Ethereum, Base, BSC, Arbitrum, Tron · **Refresh:** ~24h · USD value lags ~3 days (see `enriched_ratio`)." }, { "info": { "name": "Token Transfer History", "type": "http" }, "http": { "method": "GET", "url": "/gateway/v1/token/transfers", "params": [ { "name": "address", "value": "", "type": "query", "description": "Token CONTRACT ADDRESS — 0x-prefixed hex for EVM chains, base58 for Solana. This is NOT a ticker symbol (e.g. do NOT pass `USDC` or `BTC`). To resolve a ticker symbol to a contract address, call GET /v1/search/token?q={symbol}&chain={chain} and use the `address` whose `chain` is supported by this endpoint. This endpoint has no `symbol` parameter." }, { "name": "chain", "value": "", "type": "query", "description": "Chain. Can be `ethereum`, `base`, `solana`, `tron`, `bsc`, or `arbitrum`." }, { "name": "from", "value": "", "type": "query", "description": "Start of date range. Accepts Unix seconds or YYYY-MM-DD. Defaults to 30 days ago." }, { "name": "to", "value": "", "type": "query", "description": "End of date range. Accepts Unix seconds or YYYY-MM-DD. Defaults to today." }, { "name": "limit", "value": "", "type": "query", "description": "Results per page" }, { "name": "offset", "value": "", "type": "query", "description": "Pagination offset" }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated enrichments to attach to each transfer. Currently valid: `labels` — adds `from_label` and `to_label` fields." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Returns recent transfer events **for a specific token** (ERC-20/TRC-20 contract).\n\nPass the **token contract address** in `address` — returns every on-chain transfer of that token regardless of sender/receiver.\n\n**Included fields:** sender, receiver, raw amount, block timestamp.\n\nUse this to analyze a token's on-chain activity (e.g. large movements, distribution patterns).\n\n**Lookup:** `address` (token contract) + `chain`. Sort by `asc` or `desc`.\n\n**Data refresh:** ~24 hours · **Chains:** Ether" } ] } ], "bundled": true }