
/v4/tokens/{id}
Get a token by its canonical id, or by the {chainId}-{address} shorthand. The shorthand reads an unknown token from chain and stores it; a canonical id the database does not hold is a 404.
Path parameters
idstringToken ID (path-only). Two accepted forms: (1) canonical numeric hash Bun.hash(${chainId}${checksumAddress(address)}).toString() (e.g. 3460729690457214808), or (2) the {chainId}-{address} shorthand (e.g. 1-0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) which the server resolves to the canonical id. The shorthand is path-only — the ?id= query filter only accepts the canonical numeric form (comma-separated list supported). NOT a campaign or opportunity ID. See ID types.
Query parameters
returnUnderlyingbooleanResolve the token's underlying and return it under underlying, null when the token is not a wrapper.
Responses
200Response for status 200
object
idstringnamestring | nullchainIdintegeraddressstringdecimalsnumbersymbolstringiconstringverifiedbooleanisNativebooleanisTestbooleantypeenumTOKENPRETGEPOINTpricenumber | nullCurrent price of the token in USDupdatedAtnumber | nullUnix timestamp of last price updatepriceSourcestring | nullSource of the price informationdisplaySymbolstringCustom display symbol overrideunderlyingTokenIdstringIf this token is a wrapper, the ID of the underlying tokenpriceAlertDismissedAtnumberpriceAlertCountnumberunderlyingobject | null
idstringUnique identifier for the tokennamestring | nullFull name of the tokenchainIdintegerChain IdaddressstringdecimalsnumberNumber of decimals for the tokensymbolstringSymbol of the tokeniconstringURL to the token icon imageverifiedbooleanWhether the token is verifiedisNativebooleanWhether this is a native blockchain tokenisTestbooleanWhether this is a test tokentypeenumType of the token (TOKEN, PRETGE, POINT)TOKENPRETGEPOINTpricenumber | nullCurrent price of the token in USDupdatedAtnumber | nullUnix timestamp of last price updatepriceSourcestring | nullSource of the price informationdisplaySymbolstringCustom display symbol overrideunderlyingTokenIdstringIf this token is a wrapper, the ID of the underlying tokenpriceAlertDismissedAtnumberpriceAlertCountnumber{
"id": "string",
"name": "string",
"chainId": 0,
"address": "string",
"decimals": 0,
"symbol": "string",
"icon": "string",
"verified": false,
"isNative": false,
"isTest": false,
"type": "TOKEN",
"price": 0,
"updatedAt": 0,
"priceSource": "string",
"displaySymbol": "string",
"underlyingTokenId": "string",
"priceAlertDismissedAt": 0,
"priceAlertCount": 0,
"underlying": {
"id": "string",
"name": "string",
"chainId": 0,
"address": "string",
"decimals": 0,
"symbol": "string",
"icon": "string",
"verified": false,
"isNative": false,
"isTest": false,
"type": "TOKEN",
"price": 0,
"updatedAt": 0,
"priceSource": "string",
"displaySymbol": "string",
"underlyingTokenId": "string",
"priceAlertDismissedAt": 0,
"priceAlertCount": 0
}
}https://api.merkl.xyz/v4/tokens/curl -X GET "https://api.merkl.xyz/v4/tokens/{id}"