Skip to content

Usage and limits

What counts toward storage, delivery, and API usage, what happens at 50, 80, and 100 percent, and the limits on each plan.

On this page

SteadyLink meters a few resources separately, and each limit stops only the work that uses it. Running out of delivery does not stop uploads; running out of storage does not stop delivery. This page is for workspace owners and admins who want to predict usage, understand a limit error, and choose what happens when a limit is reached.

What is metered#

ResourceUnitResets
StorageBytes kept across every retained revisionNever; it is a running total
DeliveryBytes in successful file responsesEvery usage period
Management API operationsOne per request made with an API keyEvery usage period
Conversion creditsWeighted credits per conversion jobEvery usage period

The usage period follows your subscription's billing period on monthly paid plans. On the free plan and on annual plans it is the calendar month (UTC).

Conversions have their own credit model; see File conversions.

Storage#

Storage counts:

  • The current revision of every file.
  • Every older revision you have kept. Revisions are not removed automatically yet, so history grows until you delete it. See Revisions.
  • Space reserved for uploads in progress. Each open upload session holds its declared size until it finishes, fails, expires, or is cancelled.

Deleting a revision releases its bytes immediately. Deleting a file or a bucket releases everything in it.

Delivery#

Delivery counts successful (2xx) responses from stable and pinned links. Each response counts as its actual size or 64 KB, whichever is larger, so a 3 KB icon counts as 64 KB and a 2 MB photo counts as 2 MB. The minimum keeps very small, very frequent requests from being free to serve.

These do not count toward delivery:

  • HEAD requests.
  • Failed and refused responses: 403, 404, 423, and other errors.
  • Previews in the dashboard.

Analytics always show the real number of bytes sent, without the 64 KB minimum, so analytics totals and metered delivery can differ for workspaces with many small files.

Management API operations#

Every request authenticated with a workspace API key counts as one operation, whatever it does. Requests made by signed-in people in the dashboard do not count, and neither do file downloads from delivery links or byte uploads sent to presigned URLs.

API keys are also rate-limited per minute (see the table below). Going over a rate limit returns 429 for a short time and does not use your monthly allowance. See Errors.

Thresholds#

SteadyLink tracks each resource against your plan's allowance for the period:

  • 50%: a notification lets the workspace know. Nothing is restricted.
  • 80%: a second notification, so an owner can upgrade or plan ahead.
  • 100%: the workspace's limit rule applies (below).

Each threshold notifies once per resource per period.

What happens at 100%#

The owner chooses one rule for the workspace:

RuleWhat happens to work that would go over the limit
Stop (hard_stop)Refused until the period resets or the plan changes.
Throttle (throttle)Refused with the code usage_throttled and a Retry-After header, so clients back off and try again later.
Require an upgrade (require_upgrade)Refused with an upgrade suggestion until the plan changes.
Continue with paid usage (billed_overage)Allowed and billed as overage, up to the owner's monthly spending cap. Past the cap, the cap rule (stop or throttle) applies.

New workspaces on Free and Personal start with Require an upgrade; Pro and Business start with Stop. Only the owner can change the rule.

Paid overage is available on paid plans billed monthly; it is not available on Free or on annual billing. It requires the owner's explicit consent and a monthly spending cap, and it applies to storage, delivery, and conversions. Management API operations never go into overage; at 100% they stop, throttle, or require an upgrade.

Errors at the limit#

Refused work returns a structured error your code can branch on:

429 Too Many RequestsResponse
{
  "detail": {
    "code": "usage_limit_exceeded",
    "resource": "delivery_bytes",
    "usage": 53687091200,
    "reserved": 0,
    "requested": 65536,
    "limit": 53687091200,
    "resetAt": "2026-11-01T00:00:00Z",
    "behavior": "require_upgrade",
    "upgrade": { "recommendedPlan": "personal", "url": "/dashboard/settings?section=plans" }
  }
}
  • Delivery and API limits return 429 with Retry-After: 3600.
  • Storage limits return 413. A new upload that would not fit is refused with usage_limit_exceeded or storage_quota_exceeded. Existing files keep being delivered.
  • Branch on code and resource, not on message text.

Plan limits#

Paid limits apply while the subscription is active. If a paid subscription lapses, the workspace falls back to Free limits.

FreePersonalProBusiness
Storage10 GB15 GB100 GB500 GB
Delivery per period50 GB100 GB1 TB3 TB
Members11520
Largest file100 MB250 MB500 MB2 GB
Management API operations per period50,000250,0002,000,00025,000,000
API requests per minute (read / write)120 / 30300 / 751,200 / 3006,000 / 1,500
Active API keys121050
Revision history window30 days90 daysLong-termLong-term
Single sign-onNoNoNoYes

Enterprise limits are set by contract. Plan prices and the full feature comparison are on the pricing page.

The revision history window is the published policy for each plan; automatic expiry is not active yet, so revisions are kept until deleted on every plan.

Where to see usage#

Owners and admins can open Settings > Billing in the dashboard to see each metered resource for the current period and the plan's feature limits. Over the API, GET /api/usage/summary returns the same figures, and GET /api/analytics/storage breaks storage down by bucket and file.

Next steps#