Rate Limits & Concurrency
To ensure reliable performance, predictable capacity and equitable access to GPU compute across all accounts, the Mindrift API enforces rate limits on every endpoint.
Rate limits are enforced at the account level, not per individual API key. Creating multiple API keys divides your account’s quota rather than multiplying it.
Tier System
Your account is assigned an API Tier (Tier 1 through Tier 5). Each tier defines your throughput capacity across three distinct request categories, as well as the maximum number of asynchronous generation tasks that can run concurrently.
New accounts start on Tier 1 by default. As your production usage scales, your account can advance to higher tiers with increased throughput.
Generation RPM
Applies to endpoints that initiate or retry GPU workloads, such as POST /v1/text-to-image/subscribe/:model and POST /v1/tasks/:task_id/retry. Because image generation is computationally intensive, these endpoints have dedicated limits tailored to prevent cluster saturation.
In-Flight Concurrency
Restricts the number of generation tasks belonging to your account that can exist simultaneously in pending (queued) or processing states. Once a task reaches completed or failed, its concurrency slot is freed immediately for your next job.
Polling RPM
Applies to status checks via GET /v1/tasks/:task_id. Polling quotas are intentionally sized generously (6x to 10x the generation quota) so client applications can query task progression without exhausting their general API capacity.
General RPM
General RPM (general):
Applies to metadata, model lookups, account status (GET /v1/me), and non-generation queries.
Rate Limit vs. Monthly Budget
It is important to distinguish between rate limits and monthly budgets:
- Rate Limits restrict request frequency and simultaneous workloads (RPM and concurrency) within rolling 60-second windows to protect infrastructure stability. They apply to your entire account.
- Monthly Spend Budgets are financial spending caps configured on individual API keys in the developer dashboard. When a key reaches its monthly budget limit, it returns an HTTP
429 Too Many Requestswith codeMONTHLY_BUDGET_EXCEEDEDuntil the budget resets on the 1st of the next month at 00:00 Europe/Paris time.
HTTP Rate Limit Headers
Every response returned by the Mindrift API includes headers that reflect your account’s rate limit status for the requested endpoint category:
You can inspect these headers in your application to proactively monitor your consumption and avoid hitting limits.
Handling Rate Limit Errors (HTTP 429)
If your application exceeds an RPM quota or attempts to queue more concurrent tasks than your tier allows, the API immediately returns an HTTP 429 Too Many Requests response.
Request Rate Exceeded (RATE_LIMIT_EXCEEDED)
Returned when your application sends more requests in a 60-second window than allowed by your tier for that category:
Concurrency Limit Reached (CONCURRENCY_LIMIT_REACHED)
Returned when you attempt to dispatch a new generation task while your active queue (pending + processing) is already at maximum capacity for your tier:
Best Practices for High-Volume Integrations
Respect the Retry-After Header
When you receive an HTTP 429 status code, do not immediately resubmit the request. Parse the Retry-After HTTP header from the response and pause execution for that exact duration before attempting a retry.
Implement Exponential Backoff with Jitter
For automated background workers, implement exponential backoff with random jitter. This prevents a “thundering herd” problem where multiple worker threads or servers simultaneously retry requests at the exact same second the rate limit window resets.
Tune Your Polling Intervals
Generating an image takes a few seconds depending on the chosen model and complexity. Rapidly polling GET /v1/tasks/:task_id multiple times per second is unnecessary and quickly consumes your polling allowance. We recommend polling every 1.5 to 2.5 seconds.
Manage Queues on Your Backend
If your application serves consumer-facing traffic where users can trigger image generations concurrently, buffer incoming user requests in your own backend queue (such as Redis, BullMQ, SQS, or Celery). Dispatch tasks to Mindrift only when your active concurrency count is below your tier allowance.
Checking Your Tier & Requesting Upgrades
You can check your account’s assigned tier programmatically at any time by calling the /v1/me endpoint:
If your project is scaling or your production workload requires higher throughput or custom concurrency thresholds, please contact our support team at support@mindrift.art to discuss tier upgrades and dedicated infrastructure.
