Limits
Check plan storage, request rates, upload sizes, session counts, and batch limits before sending data.
Storage belongs to the account and is shared by its projects. Plan sizes use 1 GB = 1,073,741,824 bytes.
Plans
| Plan | Price | Included storage | Storage cap | Overage |
|---|---|---|---|---|
| Free | $0/month | 2 GB (2,147,483,648 bytes) | 2 GB | None |
| Starter | $5/month | 50 GB (53,687,091,200 bytes) | 50 GB | None |
| Developer | $11/month | 200 GB (214,748,364,800 bytes) | 200 GB | None |
| Pro | $28/month | 500 GB (536,870,912,000 bytes) | None | $0.05 per GB-month above 500 GB |
Free, Starter, and Developer uploads stop at their included storage amount. Pro has no storage cap; usage above 500 GB is billed as overage.
Files in the trash count toward storage until they are purged after 30 days or deleted permanently.
Request rate
| Requests to | Counted per | Limit |
|---|---|---|
/v1 with an Authorization header | API key | 600 per 60 seconds |
POST /v1/files without a key | IP address | 20 per 60 seconds |
POST /v1/auth/device | IP address | 10 per 60 seconds |
Over a limit, the response is 429 rate_limited with retryable: true and a Retry-After header in seconds. Wait for it and send the same request again. Every 429 and 503 response carries Retry-After.
Without a key
Uploads without an API key, over HTTP or the keyless MCP, are counted per IP address:
| Limit | Value |
|---|---|
| Uploads | 20 per 60 seconds |
| File size | 104,857,600 bytes (100 MiB) |
| Unexpired files | 524,288,000 bytes (500 MiB) |
| File lifetime | 24 hours, then deleted |
Over the upload rate, the response is 429 rate_limited. Over the size or file limits, it is 413 file_too_large or storage_limit_exceeded. An API key removes these limits; your plan's limits apply instead.
Upload limits
| Operation | Limit |
|---|---|
One-shot POST /v1/files | 104,857,600 bytes (100 MiB) per request |
One PUT to upload_url | 5,000,000,000 bytes (5 GB) |
| Upload session file size | 5,000,000,000,000 bytes (5 TB) |
| Parts per file | 10,000 |
| Active upload sessions | 64 per account |
| Batch entries | 25 files per request |
| Batch request and summed file bytes | 104,857,600 bytes (100 MiB) |
Use /v1/uploads for a file over 100 MiB. It sends up to 5 GB in one PUT, and larger files in parts. Every part is the session's part_size, except the last, which holds the bytes that remain. A session lasts 24 hours, or less when the file's expiry comes first.
Uploads without a key
POST /v1/files also works with no API key and no account, for trying AgentFS or sharing a file quickly. See Upload without a key.
| Limit | Value |
|---|---|
| File size | 104,857,600 bytes (100 MB) per file |
| Uploads | 20 per 60 seconds per IP address |
| Files kept at once | 500 MB of unexpired files per IP address |
| Link lifetime | 24 hours, then the file is deleted |
| Visibility | Always unlisted |
A key is needed for everything else: larger files, resumable uploads, choosing a path or project, setting visibility or expiry, and listing, renaming, sharing, or deleting files. An upload over the 500 MB allowance returns 413 storage_limit_exceeded until older files expire.
AgentFS