TOKEN LIST API V2
Listed tokens, with logos
Every token listed on LitVMSwap, each with a logo URL that loads on any site. Symbol, name and decimals are read from the token contracts on LitVM. The response follows the Token List standard (tokenlists.org), so wallets and dApps that read token lists can use it as it is.
Endpoints
Both are GET, need no key, and have CORS open, so you can call them straight from a browser.
GET
All listed tokens
https://www.litvmswap.com/api/token/v2GET
One token by address
https://www.litvmswap.com/api/token/v2?address=[token_address]Query parameters
| Parameter | Requirement | Description |
|---|---|---|
address | Optional | A token address (any letter case). Returns that one token as { token }, or 404 when it is not listed. |
chainId | Optional | Defaults to 4441 (LitVM). Any other chain returns an empty list. |
Token fields
| Field | Description |
|---|---|
address | Checksummed contract address. Native zkLTC is 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE. |
symbol, name, decimals | Read from the token contract on LitVM. Always use decimals when you convert amounts. |
logoURI | Full URL of the token logo. Present for every token. |
extensions.isNative | true for native zkLTC. |
extensions.isWrappedNative | true for wzkLTC. |
extensions.verified | Reviewed and listed by the LitVMSwap team. |
extensions.popular | Shown as a quick pick in the LitVMSwap token selector. |
extensions.readOnChain | true when symbol, name and decimals came from the contract. If the chain read fails, the API falls back to the listed values and this is false. |
extensions.displaySymbol, extensions.displayName | Only when the LitVMSwap interface shows a different label than the contract. |
extensions.oracleSymbol | The price feed LitVMSwap uses for the token, when there is one. |
Caching: answers are cached for up to 5 minutes. A newly listed token shows up once the site has been updated.
Responses
GET /api/token/v2 (shortened to two tokens)
{
"name": "LitVMSwap",
"timestamp": "2026-10-20T06:41:10.640Z",
"version": { "major": 2, "minor": 0, "patch": 0 },
"logoURI": "https://www.litvmswap.com/tlogo.png",
"keywords": ["litvmswap", "litvm"],
"tokens": [
{
"chainId": 4441,
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"symbol": "zkLTC",
"name": "zkLTC",
"decimals": 18,
"logoURI": "https://s2.coinmarketcap.com/static/img/coins/64x64/2.png",
"extensions": { "isNative": true, "isWrappedNative": false, "verified": true, "popular": true, "oracleSymbol": "LTC/USD" }
},
{
"chainId": 4441,
"address": "0x044E874f23F9a7e5Dad696554A116C4Bb62fEcB7",
"symbol": "GMI",
"name": "GonnaMakeIt",
"decimals": 18,
"logoURI": "https://www.litvmswap.com/tokens/gonnamakeit.png",
"extensions": { "isNative": false, "isWrappedNative": false, "verified": true, "popular": false, "readOnChain": true }
}
]
}One token by address (GMI)
{
"token": {
"chainId": 4441,
"address": "0x044E874f23F9a7e5Dad696554A116C4Bb62fEcB7",
"symbol": "GMI",
"name": "GonnaMakeIt",
"decimals": 18,
"logoURI": "https://www.litvmswap.com/tokens/gonnamakeit.png",
"extensions": { "isNative": false, "isWrappedNative": false, "verified": true, "popular": false, "readOnChain": true }
}
}Errors
| Status | When |
|---|---|
400 | The address or chainId is not valid. |
404 | The address is valid but the token is not listed on LitVMSwap. |
405 | A method other than GET. |
Integration example
JavaScript (fetch)
// Every listed token, with its logo
const res = await fetch('https://www.litvmswap.com/api/token/v2');
const { tokens } = await res.json();
tokens.forEach((t) => {
console.log(t.symbol, t.address, t.decimals, t.logoURI);
});
// One token by address (404 when it is not listed)
const one = await fetch('https://www.litvmswap.com/api/token/v2?address=0x044E874f23F9a7e5Dad696554A116C4Bb62fEcB7');
if (one.ok) {
const { token } = await one.json();
document.querySelector('#token-logo').src = token.logoURI;
}