Skip to content

Quotas and limits

SREDSimplify protects the platform with two different mechanisms:

  • short-lived request rate limits
  • longer-lived product usage quotas

Rate limits vs quotas

Rate limits protect bursty behavior on specific endpoints. Quotas protect plan-level consumption such as AI runs, storage, and project counts.

Both can surface as 429, but they mean different things:

  • request-rate limit: usually short-lived, may include Retry-After
  • quota exhaustion: plan or period budget exhausted, usually requires waiting for reset or changing plan/usage

Current user quota snapshot

Current user quota is available at:

  • GET /api/v1/quotas/me

Returned fields include:

FieldMeaning
tierCurrent membership tier
storageUsedBytes / storageLimitBytesStorage usage vs cap
projectsUsed / projectsLimitProject count vs cap
filesPerProjectLimitMaximum files per project
aiRunsMonthlyUsed / aiRunsMonthlyLimitMonthly AI-run usage vs cap
fileSizeLimitBytesMaximum allowed size for a single file
periodKeyCurrent usage period key, formatted like YYYY-MM

Current tracked quota metrics

The quota subsystem tracks these metric families:

  • PROJECT_COUNT
  • FILES_PER_PROJECT
  • STORAGE_BYTES
  • AI_RUNS_MONTHLY
  • FILE_SIZE_BYTES

Membership tiers

Current tiers are:

  • FREE
  • STARTER
  • PROFESSIONAL
  • ENTERPRISE

Tier-specific limits are managed by the backend quota policy configuration and surfaced through the snapshot endpoint.

AI runs and reservation behavior

AI runs use reservation semantics rather than optimistic post-hoc counting:

  1. reserve quota before calling the Python worker
  2. confirm the reservation on success
  3. cancel the reservation if the run fails

This prevents failed runs from silently consuming paid usage.