Skip to main content
Paid plans are served on a different host from the free tier. If you have just subscribed to Pro and your existing code is failing, this is why, and there are only two things to change.
1

Change the base URL

https://api.dexpaprika.com becomes https://api-pro.dexpaprika.com
2

Send your API key on every request

Authorization: api_your_personal_api_key, with the key as the entire header value. Copy it from console.dexpaprika.com.
Nothing else moves. Paths, query parameters, response shapes and your key itself are identical to the free API, so a find and replace on the hostname plus a header is the whole migration.
Both halves are required together, and a half-finished switch does not fail cleanly. Sending your key without changing the base URL can return 200 on the paths you call most and 403 on the rest, because the free host caches responses by URL. Sending it to the right host without the header gets you a block page from the edge rather than our JSON. Both are in what each error means below.

Before and after

Send the key as the entire Authorization header value, nothing before it and nothing after it. If your HTTP client only offers a token field that prepends a scheme word for you, do not use it; set a raw header instead.

If you use our SDKs or the streaming API

Every official SDK takes the base URL and the key as configuration, so you do not have to touch call sites. Set the Pro host and your key once where the client is constructed. The SDK pages show the option name for each language.
Streaming has the same split. streaming.dexpaprika.com serves the free tier and streaming-pro.dexpaprika.com serves paid plans, with the same Authorization header. Moving your REST calls does not move your streams: an event source left pointing at the free host stays on free-tier terms, which limit a keyless caller to the showcase assets. Details on the streaming introduction.
Anything configured with a DexPaprika base URL needs the same change, including MCP server configs and agent tool definitions. See AI integration.

What each error means

The two hosts fail in different ways, and telling them apart tells you which half of the change is missing.

One check that tells you which host you are on

GET /usage is never served from cache, so it always reflects the host and plan you are really talking to. Run it against the free host with your key:
On a paid plan this answers 403 with "error": "wrong_host" and names the host to use. On a free plan it answers 200 with your plan and remaining credits. The same call against https://api-pro.dexpaprika.com/usage is the mirror: 200 with your paid plan when you are in the right place.
If you are paying and a call to the free host still returns 200 with data, the cache answered before the host check did. /usage is the reliable probe, because it is the one path that is never cached. Do not confuse it with GET /health, which every host answers without a key: that one reports whether the service is up and tells you nothing about your key, your plan or your host.

Retune your client

1

Raise your rate limiter

Pro’s per-minute ceiling is far above the free tier’s, so a throttle tuned for free-tier traffic now leaves most of your allowance unused. Keep the throttle and the 429 backoff, and raise the threshold to the figure for your plan on the rate limits page.
2

Drop the polling you added to work around the delay

The free tier serves data with a delay; Pro is real time. Anything you built to re-poll for fresher numbers is now spending credits for nothing.
3

Watch your credits

Track spend in the console, or call GET /usage from your own code. One request costs one credit, batch endpoints cost one credit per item, and every streaming update delivered costs one credit.
4

Check both environments

Each account has exactly one API key, so staging and production share a quota. A test loop spends the same allowance your production traffic depends on.

Checklist

  • Every api.dexpaprika.com in your codebase, config and environment files is now api-pro.dexpaprika.com
  • The Authorization header is set on every request, not only the first one
  • The key comes from an environment variable or a secret store, never from source
  • Streaming clients point at streaming-pro.dexpaprika.com
  • Your rate limiter is set to your plan’s ceiling
  • You have handled 402 separately from 429, because retrying a 402 never succeeds

Where to go next

Pro API introduction

What the Pro API includes, endpoint by endpoint

Rate limits and credits

Current ceilings and allowances for every plan

Error handling

Every status code the API returns and how to handle it

Console

Your key, your usage and your billing
Still stuck after the switch? Email support@coinpaprika.com or ask in Discord. Plans and prices are on the pricing page.