Skip to main content
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

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

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:
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:
There is no documented Retry-After header. Back off with jitter and retry after a short delay.
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

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.