Skip to main content

Errors

Every failure is { "ok": false, "error": "…", "code": "…", "retryable": … } with a matching HTTP status. error is a short reason for people. code is a fixed word for your script. Branch on code; the message may change. A 429 from the per-minute limiter and the paused 503 also carry retryAfterSeconds, the same figure as the Retry-After header. Other 429s (hourly budgets, creator-authority cooldowns) say how long in the message.

Your own Helius key

Three calls read Solana on demand rather than from our own records: GET /transactions/{signature}, GET /redirects/{mint} and POST /pumpfun/fees. They run on your Helius key, not ours, so send it as a header:
A free key from helius.dev is enough. Without the header the call is a 401 with code helius_key_required; a value that isn’t shaped like a Helius key is a 400; a key Helius refuses is a 401 with code helius_key_rejected. Every other call needs no key. Your key is used for that request only and is never stored or logged.

Rate limits

Limits are per address (IPv6: per /64 block) and per endpoint, in one-minute windows. Reading data well says how to stay under them without trying. Every answer from the API itself says what the limit is (the 503 while paused and the 410 on old v1 addresses carry no limit headers):
Responses that aren’t cached (writes, prepare and submit, every refusal) also say where you stand:
Cached reads leave those two out on purpose: an edge cache would otherwise hand one caller’s remaining allowance to the next. Cached reads are served from the edge for the window in the cache column below, so a repeat call inside it returns the same figures and does not count against your limit. Writes are never cached. Hourly budgets sit on top of the per-minute limits, and their 429 says so in the message. Launch builds: 8 an hour per wallet, 20 an hour per address, 240 an hour site-wide, on purps.lol and on pump.fun each; a new fee level on purps.lol needs its own on-chain setup and is allowed 2 an hour per address and 6 an hour site-wide. Fetching a logo by imageUrl: 20 an hour per address, 200 an hour site-wide; when that runs out the build asks for image as a data URL instead, which is never budgeted. Pons: 10 launch builds and 20 registrations an hour per wallet. Creator authority: 60 actions, 30 strategy changes, 10 requests and 20 handovers an hour per address, plus a per-coin count of position actions a day and a cooldown after each change; the limit and the running cooldowns are on GET /coins/{mint}/authority.

Need more?

If the limits get in your way, message Will on X at @will8bit with what you’re building and the address you call from. We raise the limit on that address, usually the same day. No key, no form.