Quickstart
The API serves indexed Uniswap v4 liquidity-position and pool data for Ethereum and Avalanche. Responses are JSON over HTTPS. There is no SDK to install.
1. Get a key
Create an account, verify your email, then issue a key from API keys. The Free plan needs no payment details.
The secret is shown once. It is stored hashed, so nobody — including us — can read it back; if you lose it, revoke it and issue another.
2. Call an endpoint
Every metered request carries your key in the KC-APIKey header. Not a bearer token, and not a query parameter — a key in a URL ends up in browser history, proxy logs and Referer headers.
curl -s https://api.tickwise.xyz/v1/positions?limit=5 \
-H "KC-APIKey: $TICKWISE_API_KEY"3. Read the limit headers
Every metered response tells you exactly where you stand. Read these rather than guessing:
X-RateLimit-Limit: 300 # requests per minute, per key
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 47 # seconds until the burst window rolls
X-Quota-Limit: 5000000 # units per month, per account
X-Quota-Remaining: 4999998
X-Quota-Reset: 1738368000 # seconds until 00:00 UTC on the 1stWhat you can ask for
| Endpoint | Units | What it returns |
|---|---|---|
| GET /v1/positions | 2 | A ranked, filterable page of positions. Filter by owner, poolId, positionId, status, range, minimum value; sort by APR, PnL, ROI, age or value. |
| GET /v1/positions/:chainId/:protocol/:positionId | 1 | One position in full. |
| GET /v1/positions/:chainId/:protocol/:positionId/charts | 10 | Time series for one position. ?range=30d|60d|90d|180d|all. |
| GET /v1/pools | 2 | Ranked pools with TVL, volume, fee APR, open-position and holder counts. |
| GET /v1/pools/:chainId/:protocol/:poolId | 1 | One pool in full. |
| GET /v1/pools/:chainId/:protocol/:poolId/charts | 10 | Time series for one pool. |
| GET /v1/chains, /v1/protocols | 0 | Metadata. Free and unmetered, but still needs a valid key. |
Two things that catch people out
Omitting chainId means every chain, not Ethereum. The list endpoints scatter-gather across all enabled chains and merge the results. Pass ?chainId=1 or ?chainId=43114 when you want one.
A request that we refuse does not spend units. Any 4xx is refunded automatically, so a malformed filter costs you nothing. A 429 is not refunded, because it never consumed anything in the first place.
Next
Authentication — server keys, browser keys and origin binding. Units and limits — what each call costs and when the quota resets. Errors — every status code we return and what to do about it.