# Rate limits and plans

Limits apply per app, across all its keys and all keyed endpoints. They are counted in 10-second windows.

| Plan | Requests per second | Per 10-second window | Daily requests | Apps per account | Keys per app | Gasless submits per day | Sponsored gas per day | Price per month |
|---|---|---|---|---|---|---|---|---|
| Free | 5 | 50 | no daily cap | 1 | 2 | 50 | 2 USD | Free |
| Builder | 20 | 200 | no daily cap | 3 | 5 | 1,000 | 25 USD | 49 USD / month, 490 USD / year |
| Scale | 50 | 500 | no daily cap | 10 | 10 | 10,000 | 250 USD | 299 USD / month, 2,990 USD / year |
| Custom | 100 | 1000 | no daily cap | 20 | 20 | 50,000 | 1000 USD | 1,500 USD / month, 15,000 USD / year |

- New apps start on the Free plan: 5 requests per second (50 per 10-second window). The limit is counted per 10-second window, not per second: up to 50 requests can arrive at once, after which the rest of that window answers `429 RATE_LIMITED`.
- Paid plans raise the limits step by step. Plans are bought per app in the dashboard; see Pricing. A plan change reaches the API within about a minute; at the end of a paid period the app is on Free at once.
- The dashboard shows the plan and its limits on each app page.

## When the limit is reached

- The answer is `429 RATE_LIMITED` with `Retry-After: 10`.
- Every keyed response carries `RateLimit-Policy`, for example `"burst";q=50;w=10` (50 requests per 10 seconds).
- No plan has a daily request cap today. When an app has one, responses add `qg-quota-remaining` and `qg-quota-reset`, and a request over the cap gets `429 QUOTA_EXCEEDED` with `Retry-After` set to the seconds until 00:00 UTC.

The SDK retries a `GET` answered with `429` after `Retry-After`, up to two times by default.

## Keyless endpoints

`GET /swap/chains`, `/gasless/chains`, `/sources`, `/tokens` and `/status` need no key and are cached at the edge: 60 seconds, and 15 seconds for `/status`.

## Gasless limits

| Limit | Value |
|---|---|
| Gasless submits per app per day | per plan (table above) |
| Sponsored gas per app per day | per plan (table above) |
| Pending trades per taker per chain | 1 |
| Gasless trades per taker per hour | 30 |
| Minimum trade | 10 USD |

## Request size

| Limit | Value | Error |
|---|---|---|
| URL length | 8,192 characters | `414 URI_TOO_LONG` |
| POST body | 256 KB | `413 PAYLOAD_TOO_LARGE` |
| `Idempotency-Key` | 1 to 64 visible ASCII characters | `400 INPUT_INVALID` |
