Rate limits
Where a limit is actually implemented, where none exists, and how to behave well regardless.
Universe implementation Verified 2026-08-31
Describes what a Bitcoin Universe service actually does today. It is not a statement about the protocol in general.
- Page ID
-
develop/rate-limits - Normative authority
- Universe implementation documentation
- Networks
- mainnet
- Documentation version
- 2026.08
- Audience
- developer, integrator
- Owner
- bitcoin-universe-docs
- Sources
-
- Universe Atomicals NFT, Realm, and Subrealm index
at
1d9109c68d95private repository - Universe ARC-20 index and Marketplace v1 authority
at
670030e50071private repository
- Universe Atomicals NFT, Realm, and Subrealm index
at
- Known limitations
-
- This page documents limits only where they are implemented. Where a service has no limit, it says so rather than inventing a policy.
本頁內容尚未翻譯。
What exists today
Section titled “What exists today”| Surface | Rate limit |
|---|---|
| NFT and Realm read routes | No request rate limit is implemented on the service itself |
| ARC-20 feed | Bounded generation build work per request, which paces cold bootstrap |
| Marketplace routes | Replay protection and idempotency, which are not rate limits |
Where no limit is implemented, the constraint is the deployment in front of the service, not the service. Do not read the absence of a limit as permission to hammer it.
The bounded work that does exist
Section titled “The bounded work that does exist”The ARC-20 feed copies at most a configured number of rows per cursor-free request while building an immutable generation, and returns a retryable unavailable response until the generation is ready. That bounds writer time and prevents repeated requests from duplicating complete histories.
A client must handle that retryable response as normal, with backoff.
Behave well anyway
Section titled “Behave well anyway”- Cache read results together with their generation identifier.
- Re-read on a generation change, not on a timer.
- Use cursors and honour the page sizes the cursor carries.
- Back off exponentially with jitter on 429, 500, and 503.
- Bound concurrency per host rather than fanning out without limit.
- Never poll a readiness endpoint faster than you would act on a change.
- Prefer one request that returns what you need over many that each return part of it.
If a 429 appears
Section titled “If a 429 appears”A limit exists in front of the service. Back off, honour any retry hint, and reduce concurrency. Do not retry immediately with the same rate.