Token search

Find tokens by name or symbol, or resolve a contract address — independent of whether a wallet holds them. Built for swap and send UIs that need a token picker.

GET/v1/tokens

How it works

Name / symbol search — pass text like ?query=usdc. Results are ranked by market cap and returned per requested chain, each with a contract address, decimals, logo, and live price.

Address resolution — pass an EVM contract address like ?query=0x833…2913. Returns that exact token's metadata. Tokens too new to be indexed are still resolved straight from on-chain metadata and flagged isVerified: false.

Query parameters

ParameterTypeDescription
querystringRequired. Free text to search by name/symbol (e.g. "usdc"), or an EVM contract address (0x…) to resolve that exact token.
chainsstringComma-separated chain slugs to search. Defaults to all supported chains. A popular token resolves to one result per chain it lives on.
limitnumberMax results to return (1–50). Default 20.

Example requests

# Search by name/symbol
curl "https://chainkit.ai/v1/tokens?query=usdc&chains=ethereum,base" \
  -H "Authorization: Bearer ck_live_xxxxxxxx"

# Resolve a contract address
curl "https://chainkit.ai/v1/tokens?query=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chains=base" \
  -H "Authorization: Bearer ck_live_xxxxxxxx"

Example response

{
  "query": "usdc",
  "chains": ["ethereum", "base"],
  "tokens": [
    {
      "chain": "ethereum",
      "asset": "USDC",
      "name": "USDC",
      "contractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "decimals": 6,
      "type": "erc20",
      "icon": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png",
      "priceUsd": "0.9998",
      "isVerified": true
    },
    {
      "chain": "base",
      "asset": "USDC",
      "name": "USDC",
      "contractAddress": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "decimals": 6,
      "type": "erc20",
      "icon": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png",
      "priceUsd": "0.9998",
      "isVerified": true
    }
  ]
}

Response schema

Top level: query, chains, and tokens[]. Each tokens[] item:

FieldTypeDescription
chainstringChain slug the token lives on.
assetstringTicker symbol (e.g. USDC).
namestringHuman-readable token name.
contractAddressstring | nullToken contract address; null for a chain’s native asset.
decimalsnumberToken decimals (read on-chain for accuracy).
typestring"native" or "erc20".
iconstring | nullLogo URL when known.
priceUsdstring | nullSpot USD price when known.
isVerifiedbooleanTrue when listed on a trusted source. Unverified tokens come from on-chain metadata only (too new/unlisted) — warn users before they transact.

Verified vs. unverified

Tokens found via a trusted source return isVerified: true with a logo and price. A contract address that isn't listed yet still resolves — symbol, name, and decimals are read directly on-chain — but comes back isVerified: false with no logo or price. Surface that flag so users can tell a real token from a look-alike. To fetch the holder's balance of such a token in real time, see the Balances endpoint's contracts parameter.

Response headers

HeaderDescription
X-Request-IDUnique id for the request — include it in support tickets.
X-Credits-ChargedCredits this request consumed.
X-Credits-RemainingYour organization credit balance after the request.
X-RateLimit-LimitRequests allowed per window for this key + endpoint (set by your plan).
X-RateLimit-RemainingRequests left in the current window.
X-RateLimit-ResetUnix seconds when the window resets.