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

# Reading data well

> How often to poll, what the cache does for you, and which read to use for which job.

Every read has a cache window, listed in the [rate limits table](/guides/errors-and-limits#rate-limits). That window is the whole story of how to poll.

## Poll on the window, not faster

A read is cached at the edge for its window: 5 seconds for a coin, 10 for the coin list, 30 for markets, 60 for pairs and the index. Inside the window every call returns the same answer, so polling faster than it buys you nothing. Polling on the window gives you every change there is.

Repeats inside the window are served by the edge and don't count against your limit. Only the call that reaches us counts.

## Browser or server

**From your users' browsers.** Cross-origin requests are allowed from any site, so call the API straight from the page. Each visitor has their own limit and the edge absorbs the repeats, so this scales with your traffic. You don't need a proxy.

**From your server.** Everything you send shares one address and one limit. Cache on your side and poll on the window. If a legitimate job needs more than the limit, [ask](/guides/errors-and-limits#rate-limits) and we raise it for that address.

## Which read for which job

| You want | Call |
| - | - |
| Every coin's identity in one go | `GET /index` |
| A page of coins with market data, sorted or filtered | `GET /coins` (50 a page) |
| One coin's live figures, positions and payouts | `GET /coins/{mint}` |
| What changed on a coin, and when | `GET /coins/{mint}/changes` with `before` to page back |
| New launches | `GET /launches` |
| Whether a transaction you sent has landed | `GET /transactions/{signature}` on [your own Helius key](/guides/errors-and-limits#your-own-helius-key), or your own node |

Don't walk `/coins/{mint}` for every coin to build a list. `/coins` returns the same headline figures fifty at a time, and `/index` returns every mint in one call.

## Read the 400

A `400` names the parameter that's wrong and lists the values that work. Read it rather than guessing again: sorts are `mcap`, `earnings`, `burned`, `fees`, `buyback`, `active`, `holders`, `reserve`, `paid` and `newest`; the coin list caps `limit` at 50; `/launches` has no `sort`.
