## GET /openapi/v1/dex/tokens/info

One DEX token in full: its price, liquidity, market cap and figures by window, holder count,
links, risk level and the asset we match it to.

### Query parameters

| Parameter | Type | Default | Notes |
|:--|:--|:--|:--|
| `chain_slug` | string | required | See [naming a token](#dex-tokens-what-the-endpoints-share) |
| `address` | string | required | |

### Response

```json
{
  "code": 0,
  "message": "success",
  "message_key": "SUCCESS",
  "result": {
    "data_time": "2026-10-21T08:04:59Z",
    "stale": false,
    "id": "1",
    "chain_slug": "base",
    "address": "0x07b3d902783c3c12b077508c3b5c00113d1291d0",
    "symbol": "XDP",
    "name": "Doppler",
    "logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/40953.png",
    "lists": ["trending"],
    "asset_id": 38512,
    "price": "0.0204910145",
    "liquidity": "4238562.5",
    "market_cap": "204910145.22",
    "fdv": "204910145.22",
    "percent_change": { "5m": "0.05", "1h": "-0.28", "4h": "1.12", "24h": "2.31" },
    "holders_count": 18234,
    "windows": {
      "5m": { "volume": "512340.1", "txns": 1203, "traders": 310 },
      "1h": { "volume": "8123456.7", "txns": 20311, "traders": 1502 },
      "4h": { "volume": "40123456.2", "txns": 101233, "traders": 2890 },
      "24h": { "volume": "290842301.37", "txns": 778836, "traders": 4562 }
    },
    "links": { "website": "https://doppler.lol", "x": "https://x.com/doppler", "telegram": "" },
    "last_trade_time": "2026-10-21T08:04:00Z",
    "inactive": false,
    "risk_level": "safe"
  }
}
```

The token is looked up in Trending, then New, then Gainers, then the shorter-window lists; the
first list holding it supplies its figures and `data_time`. A token no list holds any more is
served from the last copy we kept of it: `lists` is `[]`, `stale` is `false` however old it is,
and `data_time` is when it was last listed.

| Field | Type | Notes |
|:--|:--|:--|
| `data_time` | string | When the list that supplied the token was built, or when a token no list holds was last listed |
| `stale` | boolean | That list is more than two hours old |
| `id`, `chain_slug`, `address`, `symbol`, `name`, `logo` | string | As on `/dex/tokens` |
| `lists` | array | Every list holding the token now, in the order `trending`, `new`, `gainers` |
| `asset_id` | number or `null` | The id of the asset we match the token to, the `id` of `/assets` and `/quotes`; `null` when there is none |
| `price`, `liquidity`, `market_cap`, `fdv` | string or `null` | USD, as on `/dex/tokens` |
| `percent_change`, `windows`, `last_trade_time`, `inactive`, `risk_level` | | As on `/dex/tokens`. The 24-hour volume is `windows["24h"].volume` |
| `holders_count` | number or `null` | Holders of the token |
| `links` | object | `website`, `x`, `telegram`: each a URL, or `""` when there is none |

### Examples

```bash
curl -H "X-Api-Key: <your-api-key>" \
  "https://open-api.coinworldcap.com/openapi/v1/dex/tokens/info?chain_slug=base&address=0x07b3d902783c3c12b077508c3b5c00113d1291d0"
```

| HTTP status | `code` | When |
|:--|:--|:--|
| 400 | 40000 | `chain_slug` or `address` missing |
| 404 | 40400 | No list holds the token and we kept no copy of it, or the chain does not exist — check `chain_slug`'s case. Almost always permanent: a failed read of the kept copy (other than a timeout) also answers `404` |
| 503 | 50300 | No Trending list younger than three hours; or reading the copy of a token no list holds timed out (retryable) |

The other errors are in [Errors](#errors).
