Images Agents Pricing Docs Blog View as Markdown (Agent) Get started
Human Agent

Rate limits & quotas

Last updated: October 2026

There are two kinds of limits. Rate limits cap how fast you can call the API and reset on their own. Plan quotas cap how much you can store and upload per month. This page lists both.

Rate limits

EndpointLimitCounted per
Authenticated image API: POST /v1/images, POST /v1/images/batch, GET/DELETE /v1/images/*, POST /v1/images/:id/sign-url, /v1/collections*60 requests per minute per key, and 300 per minute across all of a project's keysAPI key, then project
POST /v1/images/generate (also counts toward the 60 per minute above)60 generations per hourAccount
Keyless POST /v1/images (no API key)20 per hour, and a short burst guard of 10 per minuteIP address
POST /v1/playground/upload10 per hour, and 10 per minuteIP address
/v1/auth/* (register, login, sign-in codes, reset)5 per minuteIP address
GET /v1/export10 per hourIP address
GET /v1/export-jobs/* (status and download)120 per minuteIP address
POST /v1/claim20 per hourIP address

Serving images from img.pixelvault.dev is not part of the API rate limit. It is governed by your plan's bandwidth quota instead.

When you hit a limit

The API answers 429 Too Many Requests with a Retry-After header (seconds) and this body:

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit of 60 requests per 1 minute(s) exceeded."
  }
}

Wait for Retry-After seconds and retry; do not retry in a tight loop. Most limited routes also send an X-RateLimit-Limit header with the limit that applied. The per-key limit (60 per minute) does not report a remaining count.

Batching helps: POST /v1/images/batch uploads many images in one request, which counts once against the 60 per minute limit.

Plan quotas

FreeStarterPro
Storage200 MB5 GB25 GB
Uploads per month50025,00050,000
Bandwidth per month1 GB25 GB50 GB
AI image credits per month103001,500

Maximum size per image is 5 MB. Prices and the full feature comparison are on the pricing page; see Billing for what happens when you change plan.

When you hit a plan quota

A plan quota is not a rate limit, so it does not answer 429. Waiting never helps: storage does not free itself and uploads reset only next month. The API answers 402 Payment Required instead, with a message that links to the upgrade page:

Error codeMeaningWhat to do
storage_limit_reachedTotal storage is at your plan's capDelete images or upgrade
upload_limit_reachedMonthly upload count is used upWait for resets_at or upgrade
private_limit_reachedFree plan's 100 private images are usedDelete some or upgrade

Do not retry a 402. In a batch upload the same codes appear per item. Check GET /v1/usage before a bulk upload to see what is left.

Uploads that expire

Keyless uploads are temporary (30 days). Playground uploads are removed within 24 hours. Keyed uploads with expires_in are removed by an hourly cleanup, so removal can lag the TTL by up to about two hours. See Upload image.