Rate Limits

Request-rate limiting and concurrent task admission rules for the public API.


Request-rate limiting

The public API applies per-IP request-rate limits enforced at the edge via Google Cloud Armor. The current buckets are:

BucketLimitApplies to
General300 requests/minMost API requests
Upload300 requests/minPOST /media/upload
Account creation15 requests/hourPOST /auth/temporary

When the rate limit is exceeded, the API returns a 429 Too Many Requests response.

Concurrent task admission

Some heavy routes do not use request-per-minute limiting. Instead, they are admitted through a separate per-account concurrency and queue policy. This is what controls blueprint runs and direct generation/editing workloads.

PlanConcurrent limitQueue limit
Free225
Basic5150
Wonda25100
Pro15500
Absolute502000

When the queue limit is exceeded, the API rejects the request with a concurrency error that includes the active and queued counts. When the queue still has space, the request may be accepted and started later rather than running immediately.

What this means in practice

  • Simple request bursts are governed by the request-rate buckets.
  • Long-running generation, editing, and blueprint run workloads are governed by the concurrency policy instead.
  • The two systems are separate. A route can be exempt from request-rate limiting and still be subject to concurrency limits.