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/v2
GET

One token by address

https://www.litvmswap.com/api/token/v2?address=[token_address]

Query parameters

ParameterRequirementDescription
addressOptionalA token address (any letter case). Returns that one token as { token }, or 404 when it is not listed.
chainIdOptionalDefaults to 4441 (LitVM). Any other chain returns an empty list.

Token fields

FieldDescription
addressChecksummed contract address. Native zkLTC is 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE.
symbol, name, decimalsRead from the token contract on LitVM. Always use decimals when you convert amounts.
logoURIFull URL of the token logo. Present for every token.
extensions.isNativetrue for native zkLTC.
extensions.isWrappedNativetrue for wzkLTC.
extensions.verifiedReviewed and listed by the LitVMSwap team.
extensions.popularShown as a quick pick in the LitVMSwap token selector.
extensions.readOnChaintrue 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.displayNameOnly when the LitVMSwap interface shows a different label than the contract.
extensions.oracleSymbolThe 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

StatusWhen
400The address or chainId is not valid.
404The address is valid but the token is not listed on LitVMSwap.
405A 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;
}