> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dexpaprika.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Network IDs, addresses, and case sensitivity

> How to canonicalize network IDs, token addresses, pool addresses, and DEX identifiers when calling the DexPaprika API. Mixed-case inputs return 404 on REST; the MCP layer normalizes.

## Why this matters

When you build code that interpolates user input into API paths, the smallest case mismatch returns a 404 with no helpful explanation. The fix is one line, but you have to know about it.

This page documents which identifiers are case-sensitive, what the canonical form looks like, and what happens at the wire level if you get it wrong.

***

## Network IDs

**Canonical form:** lowercase, underscore-separated.

Examples: `ethereum`, `solana`, `base`, `arbitrum`, `bsc`, `polygon`, `optimism`.

**What the REST API does with non-canonical input:**

```bash theme={null}
curl -o /dev/null -w "%{http_code}\n" "https://api.dexpaprika.com/networks/ETH/pools?limit=1"
# 404

curl -o /dev/null -w "%{http_code}\n" "https://api.dexpaprika.com/networks/ethereum/pools?limit=1"
# 200
```

`ETH` returns 404. `Ethereum`, `eth`, `Solana` all return 404. Network IDs are strict lowercase canonical at the REST layer.

**What the MCP layer does with non-canonical input:**

The DexPaprika MCP normalizes common synonyms (`eth` → `ethereum`, `sol` → `solana`, `arb` → `arbitrum`, etc.) before calling the REST API. If you are calling the API through the MCP, mixed case and common abbreviations work. If you are calling REST directly, you need to canonicalize yourself.

**Recommended pattern:** always call `GET /networks` once at startup and cache the `id` values. Treat any user-supplied network name as untrusted and map it through your cached list before constructing the URL.

```bash theme={null}
curl -s "https://api.dexpaprika.com/networks" | jq '.[].id'
```

Returns the authoritative list of canonical IDs.

***

## Token and pool addresses

**EVM chains** (Ethereum, BSC, Base, Arbitrum, Polygon, Optimism, Avalanche, and similar): lowercase hex, `0x` prefix, 40 hex characters.

```
0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48   ← canonical (lowercase)
0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48   ← EIP-55 checksum, not what the API returns
```

The API normalizes checksum addresses internally, so both spellings work for input. The response always uses lowercase.

If your code does string comparison between an address from the API and an address from another source (e.g., a wallet, a block explorer, a contract event), lowercase both sides before comparing.

**Solana**: base58-encoded, case-sensitive. There is no concept of "lowercase Solana address." Pass it through exactly as you received it.

```
So11111111111111111111111111111111111111112   ← wrapped SOL, canonical case
```

**Sui, Aptos**: 0x-prefixed hex, similar to EVM. Lowercase canonical.

**TON**: friendly format (base64url) is case-sensitive. Raw format is hex. Use whichever the explorer shows.

***

## DEX identifiers

**Canonical form:** lowercase, underscore-separated.

```
uniswap_v3
raydium
pancakeswap_v3
curve_finance
balancer_v2
```

DEX IDs are returned by `GET /networks/{network}/dexes` and used as path segments in `GET /networks/{network}/dexes/{dex}/pools`. Same case rules as network IDs: strict lowercase at REST, normalized by the MCP layer.

**One catch:** some commit messages and changelog entries refer to DEXes by their on-chain name (e.g., "CronosV3"), but the public API slug is different (e.g., `vvs_v3` on Cronos). Always use the slug returned by the API, never the marketing name.

```bash theme={null}
# Get the authoritative slug list for any chain:
curl -s "https://api.dexpaprika.com/networks/cronos/dexes" | jq '.dexes[].dex_id'
```

***

## Quick reference

```
Network ID:        lowercase, snake_case      ethereum, solana, base
EVM address:       lowercase hex, 0x-prefix   0xa0b8...eb48
Solana address:    base58, case-sensitive     So111...1112
DEX ID:            lowercase, snake_case      uniswap_v3
Pool address:      same rules as token        (per chain)
```

If you get a 404 and the path looks right at a glance, the first thing to check is case on the network ID and DEX ID. The second thing to check is whether you accidentally URL-encoded part of the path.

For other 404 causes, see [Error handling](/knowledge-base/error-handling).
