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://token-api.service.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
dataarray, pluspaginationandstatisticssiblings. - 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
limitandpage. - 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?
0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee is 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
- Token API endpoint catalog — every operation with parameters and Try-it.
- Custom GPT integration
- Help & FAQ — Token API