<!-- Markdown twin of https://pixelvault.dev/docs/limits/ -->

Getting Started

[Quickstart](/docs/#quickstart) [Authentication](/docs/#authentication)

API Reference

[Overview](/docs/#api-reference) [Register](/docs/#register) [Upload image](/docs/#upload) [List images](/docs/#list) [Get image](/docs/#get) [Delete image](/docs/#delete) [Batch upload](/docs/#batch) [Private images](/docs/#private) [Collections](/docs/#collections) [Usage & quota](/docs/#usage) [API keys](/docs/#keys) [Upgrade & billing](/docs/#billing-api) [Sign in by email code](/docs/#device-login) [Export all images](/docs/#export) [Transforms](/docs/#transforms) [Rate limits & quotas](/docs/limits/)

Tools

[CLI](/docs/#cli) [SDKs (JS & Python)](/docs/#sdks) [Claude Code skill](/docs/#claude-code)

Integration

[Paste & host](/docs/#paste) [Images in email](/docs/#email) [MCP server](/docs/#mcp) [Upload from Claude](/docs/claude/) [ChatGPT Custom GPT](/docs/#chatgpt-actions) [Agent discovery](/docs/#agent-discovery)

Account

[Billing & subscriptions](/docs/billing/)

# 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

Endpoint

Limit

Counted 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 keys

API key, then project

Keyless `POST /v1/images` (no API key)

20 per hour, and a short burst guard of 10 per minute

IP address

`POST /v1/playground/upload`

10 per hour, and 10 per minute

IP address

`/v1/auth/*` (register, login, sign-in codes, reset)

5 per minute

IP address

`GET /v1/export`

10 per hour

IP address

`GET /v1/export-jobs/*` (status and download)

120 per minute

IP address

`POST /v1/claim`

20 per hour

IP 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`](/docs/#batch) uploads many images in one request, which counts once against the 60 per minute limit.

## Plan quotas

Free

Starter

Pro

Storage

200 MB

5 GB

25 GB

Uploads per month

500

25,000

50,000

Bandwidth per month

1 GB

25 GB

50 GB

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

## 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](/docs/#upload).
