Docs
    Guide

    Token API

    Balances, transfers, prices, swaps, holders, NFTs, and DEX data across EVM, SVM, and TVM chains — what to expect, how to authenticate, and how the response shape works.

    What you can build

    • Multi-chain wallet dashboards (ERC-20 + native + NFT)
    • Token price/liquidity tickers backed by on-chain DEX data
    • Accounting tools that need transfer history with USD values at time of execution
    • Trading research — OHLCV per pool, holder concentration, swap activity
    • AI agents and Custom GPTs that need read-only onchain data

    Chains supported

    • EVM: Ethereum, BSC, Polygon, Optimism, Base, Unichain, Avalanche, Arbitrum One
    • SVM: Solana
    • TVM: Tron
    • NFTs: ERC-721 and ERC-1155 across the EVM chains

    New chains are added based on demand. Open a request via support@pinax.network.

    Authentication

    Every request needs a Bearer JWT in the Authorization header. Issue a JWT from your project key at /keys. JWTs issued by The Graph Market are also accepted.

    curl 'https://api.pinax.network/v1/evm/balances/evm/0xabc...' \
      -H 'Authorization: Bearer <YOUR_JWT>' \
      -H 'Accept: application/json'

    Response shape

    • All endpoints wrap their payload in a top-level data array, plus pagination and statistics siblings.
    • Large numerics (balances, supplies, prices) come back as strings — parse with a big-number library to avoid JSON float precision loss.
    • Default page size is 10; tune with limit and page.
    • Transfers default to the last 30 days, max 180 days via age.
    • Data is indexed up to the latest finalized block per chain (no reorg risk).

    Frequently asked

    Why is the native token represented as 0xeeee…eeee?
    0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeis the sentinel we use for a chain's native token (ETH, BNB, MATIC, etc.). The native token has no ERC-20 contract, but using a sentinel means balances and transfers can be queried with the same shape as any ERC-20.
    What is 0x0000…0000 in a Uniswap V4 pool?
    Uniswap V4's native placeholder. When a pool involves the native token, V4 uses the zero address rather than a wrapped ERC-20.
    Caller vs sender vs recipient vs transaction_from?
    • transaction_from — EOA that signed the tx (gas payer).
    • caller — address that invoked the swap router (often an aggregator). Not present on TVM swaps.
    • sender — immediate Uniswap caller (the router itself in most aggregator flows).
    • recipient — address receiving the output tokens.
    How fresh is the data?
    Up to the latest finalized block on each chain. If you need sub-second latency, use Firehose or Substreams instead.
    Got a 429 — what now?
    Back off exponentially and reduce concurrency. Check current spend on /usage. If you hit limits routinely, mail support with your project UUID and traffic shape.
    Is there an SDK?
    The API ships an OpenAPI spec, so any generator works (openapi-fetch, orval, openapi-typescript). No first-party SDK is maintained.
    Can I plug this into Claude / Cursor / a Custom GPT?
    Yes — see the MCP FAQ for Claude Desktop, Cursor, and Cline. For OpenAI, see the Custom GPT guide.

    Related