ACAAS rate limits requests per API key, in fixed windows. When you exhaust your quota for a window, further requests returnDocumentation Index
Fetch the complete documentation index at: https://acaas.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
429 Too Many Requests
until the window resets.
This page covers how to read your current status, what the status ladder
means, and how to back off gracefully.
How limits work
- Per key. Each API key has its own quota. Sharing a key between processes shares its quota.
- Per window. The window is a rolling fixed interval. The exact size depends on your plan; the demo key uses a one-minute window with 100 requests.
- Per request, not per character. A 1-character request and a 10,000- character request both consume one slot.
/v1/healthis free. It does not require auth and does not count against your quota./v1/rate-limitsis free. Calling it does not consume a request from the window it reports on.
Read your current status
CallGET /v1/rate-limits to inspect your
quota at any time without spending a request.
Response
requests_remaining— slots left in the current window.limit— total slots per window for this key.resets_in_seconds— seconds until the window resets andrequests_remainingreturns tolimit.status— categorical health (ok,approaching_limit,at_limit).
The status ladder
Thestatus field is a coarse signal designed for quick branching. Use it
when you do not want to make a numeric decision in the client.
| Status | Meaning | Suggested action |
|---|---|---|
ok | Plenty of headroom (typically > 25% remaining). | Carry on as normal. |
approaching_limit | Below ~25% remaining. The next burst may exhaust quota. | Slow request rate; defer non-urgent calls. |
at_limit | Quota exhausted. Further requests will return 429. | Stop sending; wait resets_in_seconds. |
approaching_limit as the moment to apply backpressure — not after
you have already received a 429.
Handling 429 responses
When a request returns429 Too Many Requests, the body is a simple
detail string.
/v1/rate-limits to find out how long until
the window resets, sleep that duration, then retry.
Proactive pacing
For high-volume workloads, do not wait for429. Check the status before
each batch and pace accordingly.
resets_in_seconds by requests_remaining — is
a simple way to spread the tail of the window evenly without overshooting.
Best practices
- Cache your status. When you have just made a request, you know your
status changed by exactly one slot. Avoid hammering
/v1/rate-limitsbefore every call. - Prefer one shared client. Creating a fresh HTTP session per call adds latency without changing your quota math. Reuse connections.
- Surface limits in your UI. If end users drive request volume, show
them when they are approaching quota —
approaching_limitis a good trigger for an “easy there, friend” toast. - Log
resets_in_secondson429. It is the single most useful field for diagnosing rate-limit issues after the fact.
Next steps
Errors reference
Every status code, what it means, and how to recover.
Cookbook
A complete Python walkthrough using these patterns end-to-end.