Skip to main content
Kyma uses two limit types and enforces them per user:
  • Text and code endpoints (chat, completions) are rate-based — RPM, TPM, and a per-model RPM.
  • Media endpoints (image, video, audio, realtime) are concurrency-based — only actively running jobs count against your limit. Queued jobs do not consume a slot.
Why concurrency for media: jobs run 5–600 seconds. Per-minute metering would either be far too coarse (silent burst capacity) or far too strict (single long render burns your whole quota). Concurrency caps + balance pre-checks track real load.

Tier ladder

Your tier is determined by lifetime_purchased — the total Stripe-purchased face value of credits across your account’s history. Signup bonuses, referral credits, and promotional grants don’t count. Tier is recomputed after every successful purchase. There is no waiting period — top up $5 and your Tier 1 limits apply immediately.

Image limits

Video limits

Tier 0 blocks video generation entirely. Deposit any amount ($5+) to unlock it.

Tier 4 combined media pool

Tier 4 image and video share a combined pool of 38 concurrent jobs with a queue depth cap of 114. So one Tier 4 account can run all 38 slots as image, all 38 as video, or any mix in between. Lower tiers keep separate per-modality caps.

Audio limits — per-capability sub-pools

Each audio capability has its own concurrency pool, isolated per tenant. Saturating transcription (speech-to-text) does not block text-to-speech or audio understanding, and vice versa. Each capability runs on independently-sized infrastructure, so one heavy workload can’t starve another.

Which models use which sub-pool

Per-tier concurrent slots

Each row is a per-user, per-capability cap. The Total audio column is the aggregate (max across sub-pools) returned by /v1/auth/limits. If a capability’s pool is full, requests return 429 with a Retry-After header — wait for an in-flight job to finish or upgrade your tier for a larger cap. Speech caps are the tightest and grow with tier; the transcribe alias (default STT) carries the highest transcription throughput, with transcribe-quality reserved for conversational or code-switching audio that needs the extra accuracy.

Realtime audio limits

See Realtime Audio for the full lifecycle.

Queue + backpressure

Image and video endpoints have an in-process FIFO queue ahead of the concurrency gate. The queue depth cap is 3× the concurrent cap per modality (e.g. Tier 2 image: 20 concurrent + 60 queue = 80 in-flight per user). Audio and realtime do not queue — at-capacity requests return 429 immediately. When you exceed limits:
  • Active capacity full but queue has room → request queues. The HTTP connection stays open until your request is picked up; no client action needed.
  • Queue full too429 with error.code: queue_full and Retry-After: <seconds> based on the typical job duration for that modality.
  • Audio or realtime concurrency full429 with error.code: concurrent_limit_exceeded and Retry-After: <seconds> based on the active sub-pool’s expected drain time.
  • Text RPM / TPM exceeded429 with error.code: rate_limit_exceeded and Retry-After: <seconds> until the rolling window slides.

429 response shape

Retry-After is also set as an HTTP header (in seconds, integer). Clients should prefer the header for parsing; the body field is a convenience for environments where headers are awkward.

Error codes

Response headers

On 200 responses for rate-limited endpoints (text path):
  • X-Kyma-RateLimit-Tier — your current tier number (0–4)
  • X-Kyma-RateLimit-RPM-Remaining — requests remaining in the current minute window
On 429 responses (any path):
  • Retry-After — integer seconds. Always present.
  • X-Kyma-RateLimit-Code — same value as error.code for easy machine parsing.

How limits are computed

Your tier is the maximum of:
  1. Deposit ladder: lifetime_purchased (Stripe purchases only) crossed against the minimum-deposit thresholds in the tier table.
  2. Manual override: a tier_override flag set per-account by Kyma ops for partners and heavy users.
Tier results are cached for 5 minutes. After a top-up, expect new limits to apply within 5 minutes worst case.

Need higher limits?

Two paths: 1. Natural tier upgrade. Deposit more credits to cross the next threshold. Tiers apply immediately — no application needed. 2. Heavy users on a tight ramp. If you’re shipping a product on Kyma and expect to scale beyond Tier 3 limits before you’d naturally cross the $1000 deposit threshold, email hello@kymaapi.com with:
  • Product name and URL
  • Expected monthly usage (rough is fine)
  • Primary capabilities (audio / text / image / video mix)
Real examples already on this path: watch-cli, echoly, OpenClaw. Tier 4 limits without the $1000 deposit are available case-by-case. Internal SLA: 1 business day response. Note: this is distinct from the future Kyma Partner Program (revshare for app creators who integrate Kyma) — that’s a separate offering with its own page when it launches.

See also