Documentation Index
Fetch the complete documentation index at: https://mayatech.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Default tiers
Each team gets the following bursting capacity. The bucket refills at the sustained rate.| Endpoint class | Capacity (burst) | Refill (sustained) |
|---|---|---|
POST /v1/images, POST /v1/videos | 120 | 60 / minute |
GET (lists, single fetches, balance, team, usage) | 1200 | 600 / minute |
POST /v1/files (coming in v1.1) | 60 | 30 / minute |
POST /v1/webhook_endpoints (coming in v1.1) | 10 | 10 / minute |
Headers on every response
X-RateLimit-Limitis the bucket capacity for this endpoint class.X-RateLimit-Remainingis the tokens left after this request.X-RateLimit-Resetis the epoch second at which the bucket would be back to full, assuming no further requests.
When you hit the limit
Retry-After seconds and retry. Don’t hammer — the bucket only refills at the sustained rate.
Implementation notes
- Limits are per-team, keyed off the API key’s
team_id. Multiple keys on the same team share the bucket. - Buckets are computed atomically in Redis with a Lua script — no race window between read and write.
- Each endpoint class has its own bucket, so heavy POST traffic doesn’t starve your reads.
POST /v1/images/:id/cancelis bucketed underimages_postregardless of whether the canceled generation isimg_*orvid_*(single shared bucket on the cancel route — a pure-video team’s cancel storm would still draw fromimages_post). Runaway cancels can’t drain the GET read bucket.