> ## Documentation Index
> Fetch the complete documentation index at: https://docs.everabyte.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Limits and quotas

> Upload limits, trial quotas, rate limits, and plan-dependent caps you must design for.

Limits come from several layers. Some are fixed platform limits, some depend on the plan, and some depend on whether the account is on trial.

## Request and upload limits

| Limit | Value | Scope |
| - | - | - |
| Maximum request body | 200 GB | Whole multipart request |
| Maximum file parts per request | 10 | Per upload request |
| Maximum file size | Plan-dependent | Per file |
| Trial maximum file size | 100 MB | Per file, trial accounts |
| Folder tree depth | 8 | Per bucket |
| Bucket count | Plan-dependent; 1 on trial | Per company |
| API key count | 1 active on trial; plan-dependent otherwise | Per company |
| Trial keys per bucket | 1 active | Per bucket |

The 200 GB request limit is a server-wide ceiling, not a promise that every plan accepts a 200 GB file. The effective per-file maximum is the lower of the plan cap and the request ceiling.

When a file exceeds the plan cap, the request fails before the file is stored. For trial accounts the error is a structured upload-limit error; for paid accounts the message reports the maximum allowed size.

## API usage quotas

| Account state | API quota |
| - | - |
| Trial | 1,000 requests per 7-day window |
| Paid | No trial request quota; per-key rate limits still apply |
| Lapsed subscription | API access refused with `402 SUBSCRIPTION_REQUIRED` |

The trial clock starts automatically on the first successful API-key request for a brand-new account. A lapsed subscriber does not get a fresh trial every week.

Trial exhaustion returns:

```json theme={null}
{
  "status": 403,
  "message": "Trial API limit reached (1000 requests). Upgrade to a paid plan for unlimited API access.",
  "data": null,
  "code": "TRIAL_API_LIMIT_REACHED"
}
```

The message is illustrative. Branch on `TRIAL_API_LIMIT_REACHED`.

## Rate limits

The per-key limiter defaults to **600 requests per minute**, measured over a 60-second window. It is configurable per deployment through `API_KEY_RATE_LIMIT_PER_MIN`.

When exceeded:

```json theme={null}
{
  "status": 429,
  "message": "API key rate limit exceeded. Retry shortly.",
  "data": null,
  "code": "API_KEY_RATE_LIMITED"
}
```

There is no documented `Retry-After` header. Back off with jitter and retry after a short delay.

> [!NOTE]
>
> The limiter fails open if its Redis backing store is unavailable. A temporary Redis outage does not convert into API-wide 429s, but it also means the limit is not enforced during that window.

## Storage capacity

Storage capacity for a bucket and its files comes from the company's plan. `GET /buckets/size/{bucketId}` reports the stored size of one bucket; the plan's capacity ceiling is visible in the dashboard. Uploads check remaining capacity before and during the stream. Exceeding it fails the upload; it does not silently truncate the file.

## Version limits

The number of retained versions is plan-dependent. `GET /files/{fileId}/versions` returns `maxVersions` when the backend can resolve it. When the limit is reached, older versions are retired according to the platform's version policy; do not assume unlimited history.

## Retry guidance

| Situation | Retry? | Guidance |
| - | - | - |
| `429 API_KEY_RATE_LIMITED` | Yes | Exponential backoff with jitter |
| `5xx` | Sometimes | Retry idempotent reads; be careful with writes |
| `402 SUBSCRIPTION_REQUIRED` | No | Fix billing |
| `403 TRIAL_API_LIMIT_REACHED` | No | Upgrade or wait for the quota window |
| `403 API_BUCKET_SCOPE_DENIED` | No | Fix key scope |
| `400` validation | No | Fix the request |
| `410` restore window elapsed | No | The item is no longer restorable |

## Checking limits programmatically

There is no public endpoint that returns plan limits as a single object. Read the practical signals:

* `GET /buckets/size/{bucketId}` for stored size per bucket,
* the dashboard for plan capacity,
* upload errors for the effective per-file cap,
* `maxVersions` in the version list,
* response `code` values for quota exhaustion.

If you need limits exposed as a machine-readable contract, contact support and describe the integration.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.