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.
/v1/tokensHow 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
| Parameter | Type | Description |
|---|---|---|
| query | string | Required. Free text to search by name/symbol (e.g. "usdc"), or an EVM contract address (0x…) to resolve that exact token. |
| chains | string | Comma-separated chain slugs to search. Defaults to all supported chains. A popular token resolves to one result per chain it lives on. |
| limit | number | Max 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:
| Field | Type | Description |
|---|---|---|
| chain | string | Chain slug the token lives on. |
| asset | string | Ticker symbol (e.g. USDC). |
| name | string | Human-readable token name. |
| contractAddress | string | null | Token contract address; null for a chain’s native asset. |
| decimals | number | Token decimals (read on-chain for accuracy). |
| type | string | "native" or "erc20". |
| icon | string | null | Logo URL when known. |
| priceUsd | string | null | Spot USD price when known. |
| isVerified | boolean | True 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
| Header | Description |
|---|---|
| X-Request-ID | Unique id for the request — include it in support tickets. |
| X-Credits-Charged | Credits this request consumed. |
| X-Credits-Remaining | Your organization credit balance after the request. |
| X-RateLimit-Limit | Requests allowed per window for this key + endpoint (set by your plan). |
| X-RateLimit-Remaining | Requests left in the current window. |
| X-RateLimit-Reset | Unix seconds when the window resets. |