Pinax API

Data & APIs

Query Pinax API datasets, including Token API for EVM/SVM/TVM token data, prediction markets, and perp exchange data. Use when: integrating with Pinax API, choosing endpoints, building API requests, handling pagination, or discovering supported networks.

Install

openclaw skills install pinax-api

Pinax API

Quick reference for AI agents using Pinax API. The authoritative machine-readable contract is GET /openapi.

All responses are JSON: { "data": [...], ... } for data endpoints, or a top-level object for monitoring. Errors follow { "status": <code>, "code": "<slug>", "message": "<text>" }.

Authentication

Most endpoints require a Bearer token from The Graph Market:

Authorization: Bearer <your-token>

An X-Api-Key: <your-api-key> header is accepted as an alternative.

Unauthenticated endpoints (no header required, no usage charge):

  • GET /llms.txt
  • GET /.well-known/x402
  • GET /x402.json (alias)
  • GET /SKILL.md
  • GET /skills/SKILL.md (alias)
  • GET /SKILLS.md (alias)
  • GET /skills.md (alias)
  • GET /v1/health
  • GET /v1/version
  • GET /v1/networks
  • GET /v1/evm/dexes
  • GET /v1/svm/dexes
  • GET /v1/tvm/dexes
  • GET /v1/polymarket/markets
  • GET /v1/hyperliquid/dexes
  • GET /v1/hyperliquid/markets

Errors

Error responses share a common envelope:

{
  "status": 400,
  "code": "bad_query_input",
  "message": "Invalid network ID"
}

Common codes: bad_query_input (400), authentication_failed (401), route_not_found (404), bad_database_response (500), database_connection_failed (503).

Capabilities

Map a goal to the relevant dataset and endpoint family:

  • Token API: look up wallet balances and transfer history/v1/{evm,svm,tvm}/balances, /v1/{evm,svm,tvm}/transfers
  • Token API: track balance changes over time/v1/evm/balances/historical, /v1/evm/balances/historical/native
  • Token API: resolve token metadata/v1/{evm,svm,tvm}/tokens, /v1/{evm,svm,tvm}/tokens/native
  • Token API: find holders of a token/v1/{evm,svm}/holders, /v1/evm/holders/native, /v1/evm/nft/holders
  • Token API: trace DEX swaps and liquidity pools/v1/{evm,svm,tvm}/swaps, /v1/{evm,svm,tvm}/pools, /v1/{evm,svm,tvm}/dexes
  • Token API: get OHLC time-series/v1/{evm,svm,tvm}/pools/ohlc
  • Token API: list a wallet's NFT holdings and activity/v1/evm/nft/ownerships, /v1/evm/nft/transfers, /v1/evm/nft/sales, /v1/evm/nft/items, /v1/evm/nft/collections
  • Prediction Markets: discover markets, OI, and per-user PNL/v1/polymarket/markets, /v1/polymarket/markets/ohlc, /v1/polymarket/markets/oi, /v1/polymarket/markets/activity, /v1/polymarket/users, /v1/polymarket/users/positions
  • Perp Exchanges: discover markets, OHLC, OI, liquidations, and per-user PnL/v1/hyperliquid/markets, /v1/hyperliquid/markets/ohlc, /v1/hyperliquid/markets/oi, /v1/hyperliquid/markets/liquidations, /v1/hyperliquid/users, /v1/hyperliquid/users/positions, /v1/hyperliquid/vaults
  • Discover supported chains and protocols (free) — /v1/networks, /v1/{evm,svm,tvm}/dexes, /v1/hyperliquid/dexes

Common patterns

These conventions apply across the data endpoints unless overridden.

Pagination

ParameterTypeDefaultDescription
limitinteger10Items per page. Maximum is plan-restricted (free tier capped lower).
pageinteger1Page number. An empty data array signals end of results.

Batched filters

Any parameter marked "supports multiple" accepts either a repeated query param (?contract=0x..&contract=0x..) or a comma-separated list (?contract=0x..,0x..). This applies to most ID-shaped filters (address, contract, mint, token_id, pool, transaction_id, signature, etc.).

Time ranges

Event and historical endpoints accept either block or time windows:

  • start_time / end_time — ISO 8601 or Unix timestamp (seconds)
  • start_block / end_block — integer block number (slot for SVM)

Intervals

Historical and OHLC endpoints use an interval enum: 1h, 4h, 1d (default), 1w. A few endpoints accept additional values (e.g. /v1/polymarket/users supports 30d); the OpenAPI per-endpoint schema is authoritative.

Network discovery

Call GET /v1/networks first to enumerate supported network IDs (mainnet, base, bsc, solana, tron, …) and see how current each indexer is via indexed_to.

Worked example

Fetch WETH balances for a wallet on Ethereum:

1. GET /v1/networks                              → confirm "mainnet" is indexed
2. GET /v1/evm/tokens?network=mainnet
        &contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
                                                 → resolve WETH metadata
3. GET /v1/evm/balances?network=mainnet
        &address=0x<wallet>
        &contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
                                                 → current balance
4. GET /v1/evm/balances/historical?network=mainnet
        &address=0x<wallet>
        &contract=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
        &interval=1d&start_time=2026-01-01       → time-series

Monitoring

EndpointRequiredOptionalNotes
GET /v1/health200 when all DBs are up, 503 otherwise
GET /v1/versionVersion, build date, commit
GET /v1/networksnetworkSupported chains + indexed_to per category; network filter is batched

EVM endpoints

Ethereum and compatible chains (Ethereum, Base, BSC, Polygon, Arbitrum, …).

Tokens (ERC-20)

EndpointRequiredOptional
GET /v1/evm/tokensnetwork, contract
GET /v1/evm/tokens/nativenetwork

Balances

EndpointRequiredOptional
GET /v1/evm/balancesnetwork, addresscontract, include_null_balances
GET /v1/evm/balances/nativenetwork, address
GET /v1/evm/balances/historicalnetwork, addresscontract, interval, start_time, end_time
GET /v1/evm/balances/historical/nativenetwork, addressinterval, start_time, end_time

Transfers

EndpointRequiredOptional
GET /v1/evm/transfersnetworktransaction_id, contract, from_address, to_address, start_time, end_time, start_block, end_block
GET /v1/evm/transfers/nativenetworktransaction_id, from_address, to_address, start_time, end_time, start_block, end_block

Holders

EndpointRequiredOptional
GET /v1/evm/holdersnetwork, contract
GET /v1/evm/holders/nativenetwork

DEX / swaps / pools

EndpointRequiredOptional
GET /v1/evm/swapsnetworktransaction_id, transaction_from, factory, pool, caller, user, sender, recipient, input_contract, output_contract, protocol, start_time, end_time, start_block, end_block
GET /v1/evm/dexesnetwork
GET /v1/evm/poolsnetworkfactory, pool, input_token, output_token, protocol
GET /v1/evm/pools/ohlcnetwork, poolinterval, start_time, end_time

Swap response includes several address fields:

  • transaction_from — onchain transaction initiator
  • caller — account or contract that invokes the swap
  • user — normalized user-oriented swap address; prefer this for new integrations
  • sender, recipient — legacy fields, slated for deprecation in a future major release

NFTs

EndpointRequiredOptional
GET /v1/evm/nft/collectionsnetwork, contract
GET /v1/evm/nft/itemsnetwork, contracttoken_id
GET /v1/evm/nft/holdersnetwork, contract
GET /v1/evm/nft/ownershipsnetwork, addresscontract, token_id, token_standard (ERC721 | ERC1155), include_null_balances
GET /v1/evm/nft/transfersnetworktype (BURN | MINT | TRANSFER), transaction_id, contract, token_id, address, from_address, to_address, start_time, end_time, start_block, end_block
GET /v1/evm/nft/salesnetworktransaction_id, contract, token_id, address, from_address, to_address, start_time, end_time, start_block, end_block

SVM endpoints

Solana Virtual Machine chains.

Tokens (SPL)

EndpointRequiredOptional
GET /v1/svm/tokensnetwork, mint
GET /v1/svm/tokens/nativenetwork

Balances

EndpointRequiredOptional
GET /v1/svm/balancesnetwork, ownertoken_account, mint, program_id, include_null_balances
GET /v1/svm/balances/nativenetwork, addressinclude_null_balances

Transfers

EndpointRequiredOptional
GET /v1/svm/transfersnetworksignature, source, destination, authority, mint, program_id, start_time, end_time, start_block, end_block
GET /v1/svm/transfers/nativenetworksignature, source, destination, start_time, end_time, start_block, end_block

Holders

EndpointRequiredOptional
GET /v1/svm/holdersnetwork, mint
GET /v1/svm/holders/nativenetwork

In /v1/svm/holders, the owner field is the wallet and token_account is the Associated Token Account (ATA).

DEX / swaps / pools

EndpointRequiredOptional
GET /v1/svm/swapsnetworksignature, amm, amm_pool, user, input_mint, output_mint, program_id, start_time, end_time, start_block, end_block
GET /v1/svm/dexesnetwork
GET /v1/svm/poolsnetworkamm, amm_pool, input_mint, output_mint, program_id
GET /v1/svm/pools/ohlcnetwork, amm_poolinterval, start_time, end_time

Account owner

EndpointRequiredOptional
GET /v1/svm/ownernetwork, account

TVM endpoints

TRON Virtual Machine chains. Balances and holders are not yet exposed.

Tokens (TRC-20)

EndpointRequiredOptional
GET /v1/tvm/tokensnetwork, contract
GET /v1/tvm/tokens/nativenetwork

Transfers

EndpointRequiredOptional
GET /v1/tvm/transfersnetworktransaction_id, contract, from_address, to_address, start_time, end_time, start_block, end_block
GET /v1/tvm/transfers/nativenetworktransaction_id, from_address, to_address, start_time, end_time, start_block, end_block

DEX / swaps / pools

EndpointRequiredOptional
GET /v1/tvm/swapsnetworktransaction_id, factory, pool, caller, user, sender, recipient, input_contract, output_contract, protocol, start_time, end_time, start_block, end_block
GET /v1/tvm/dexesnetwork
GET /v1/tvm/poolsnetworkfactory, pool, input_token, output_token, protocol
GET /v1/tvm/pools/ohlcnetwork, poolinterval, start_time, end_time

TVM swap address fields follow the same user / sender / recipient convention as EVM (prefer user).


Polymarket

Prediction-market data for the Polygon-based Polymarket CTF exchange. Outcome token prices are quoted in USDC per share (0–1).

Markets

EndpointRequiredOptionalNotes
GET /v1/polymarket/marketscondition_id, market_slug, token_id, event_slug, closed, sort_by (volume | end_date | start_date)Unauthenticated. Discover token_id / condition_id here before calling other endpoints.
GET /v1/polymarket/markets/ohlctoken_idinterval, start_time, end_timeOHLC for a single outcome token
GET /v1/polymarket/markets/oicondition_id or market_slug (mutually exclusive), interval, start_time, end_timeOpen-interest time-series
GET /v1/polymarket/markets/activityone of user, token_id, condition_idevent_type (trade | split | merge | redeem), start_time, end_timeDefaults to last 24h when no time range is given
GET /v1/polymarket/markets/positionstoken_idclosed, sort_byLeaderboard of users holding this outcome

Users

EndpointRequiredOptionalNotes
GET /v1/polymarket/usersuser, interval (1h | 1d | 1w | 30d), sort_by (default total_volume)Per-user volume and PNL; omit interval for all-time
GET /v1/polymarket/users/positionsusertoken_id, condition_id, market_slug, closed, sort_byA single user's positions with PNL breakdown

Platform

EndpointRequiredOptional
GET /v1/polymarket/platforminterval, start_time, end_time

Aggregate volume, open interest, and fees across all Polymarket markets.


Hyperliquid

Trading data for the Hyperliquid L1 — core perps, @N-indexed spot pairs, and builder-deployed DEXes (xyz, cash, …). The coin parameter is the canonical identifier across all /v1/hyperliquid/* endpoints: unprefixed for core perps (BTC), @N for spot (@107), and <dex>:<symbol> for builder DEXes (xyz:SILVER). Discover the live DEX set via GET /v1/hyperliquid/dexes.

Markets

EndpointRequiredOptionalNotes
GET /v1/hyperliquid/dexesUnauthenticated. All supported DEX ids.
GET /v1/hyperliquid/marketscoin, dex, base_token, quote_tokenUnauthenticated. Latest snapshot per market: last price, 24h change, volume by side, OI, funding rate. base_token / quote_token are spot-discovery filters.
GET /v1/hyperliquid/markets/ohlccoindex, interval, start_time, end_timeOHLCV per coin (and optional dex).
GET /v1/hyperliquid/markets/oicoindex, interval, start_time, end_timeOpen-interest time-series. Default interval=1h.
GET /v1/hyperliquid/markets/activitycoin, dex, user, start_time, end_timeTrade-fill stream.
GET /v1/hyperliquid/markets/liquidationscoin, dex, liquidated_user, sort_by (notional | time), start_time, end_timePer-fill liquidation feed.
GET /v1/hyperliquid/markets/liquidations/ohlccoindex, interval, start_time, end_timeOHLCV of liquidation notional.

Users

EndpointRequiredOptionalNotes
GET /v1/hyperliquid/usersuser, coin, dex, interval (1h | 1d | 1w | 30d), sort_by (total_volume | transactions | total_fees | realized_pnl | total_funding | liquidation_fills)Dual mode: profile when user is set, leaderboard otherwise. Omit interval for all-time. Refreshed hourly.
GET /v1/hyperliquid/users/positionsusercoin, dexOpen perp positions per user.
GET /v1/hyperliquid/users/activityuserevent_types (batched: bridge_deposit, bridge_withdraw_pending, bridge_withdraw_finalized, deposit, withdraw, vault_deposit, vault_withdraw, liquidation, funding), start_time, end_timeBalance-changing events. Defaults to last 30 days. For trade fills, use /v1/hyperliquid/markets/activity.

Vaults

EndpointRequiredOptionalNotes
GET /v1/hyperliquid/vaultsvault, sort_by (lifetime_deposits | lifetime_withdrawals | lifetime_distributions | depositor_count | last_activity_at)Lifetime flow stats. Vaults predating the indexer cutover have null leader / created_at.
GET /v1/hyperliquid/vaults/depositorsvaultsort_by (deposits | withdrawals | distributions_received | last_activity_at)Per-depositor stake in a vault.

Platform

EndpointRequiredOptional
GET /v1/hyperliquid/platforminterval, start_time, end_time

Cross-coin, cross-DEX time-series of volume, fees, trade counts, and a liquidation slice.