{
  "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
}