Skip to navigation

Credits & Rate Limits

View as Markdown

Credits

Sarvam offers ₹100 worth of free credits for every verified user on signup. These credits can be used across any of our APIs, explore, prototype, and build without upfront cost.

Credits are universal and never expire. Once exhausted, add more credits or upgrade your plan from the Sarvam Dashboard.

For commercial production rights when you ship generated audio (Bulbul v3, Content Studio exports, cloned voices), see Commercial Licensing.


How Rate Limits Work

Rate limits restrict the number of API requests your account can make within a given time window. Key points:

  • Per-account enforcement: limits apply to your account as a whole, not individual API keys. All keys share the same rate limit pool.
  • Continuous replenishment: capacity refills steadily over the window period rather than resetting all at once (token bucket model).
  • Per-API granularity: each API has its own independent rate limits. WebSocket, Document AI, and LLM APIs have different limits from standard REST APIs. Check your specific API below.

Per-API Rate Limits by Plan

Rate limits vary significantly by API type and plan. Review the limits for each API below before building your integration.

Speech to Text

Real-time REST

Pay as you goProGrowth
Rate Limit60 req/min100 req/min4,000 req/min

WebSocket Streaming

Pay as you goProGrowth
Rate Limit20 concurrent100 concurrent100 concurrent

Batch

Pay as you goProGrowth
Rate Limit20 req/min100 req/min500 req/min

For batch endpoints, avoid tight polling loops. Poll no faster than your plan’s rate limit allows, for example every 3 seconds on Pay as you go’s 20 req/min.

The SDK’s wait_until_complete() uses safe defaults out of the box:

  • Batch STT / Speech-to-Text-Translate: 5-second poll interval. See Polling Defaults.
  • Document Digitization (legacy document_intelligence): 2-second poll interval.

Document AI has no wait_until_complete() helper. You poll get_status() yourself, so pick your own interval (the examples use 5 seconds).

If you poll manually instead of using the SDK helper, match or exceed these intervals.


Text to Speech

Limits are the same for Bulbul v3 and Bulbul v4 Flash.

Real-time REST and HTTP Streaming

Pay as you goProGrowth
Rate Limit60 req/min200 req/min1,000 req/min

WebSocket Streaming

Pay as you goProGrowth
Rate Limit60 concurrent200 concurrent1,000 concurrent

Instant Voice Cloning

Pay as you goProGrowth
Sustained60 req/min200 req/min1,000 req/min
Burst100 req300 req1,200 req

The sustained figure is the steady-state rate; short spikes are allowed up to the burst figure before requests are rejected with a 429. Limits are subject to change.


Translation & Text Services

Text translation (POST /translate)

Pay as you goProGrowth
Rate Limit60 req/min200 req/min1,000 req/min

Transliteration and Language Identification share the same limits.

Document Translation

Job lifecycle endpoints (POST /translate/document/jobs, start, live-status, export, export/status):

Pay as you goProGrowth
Rate Limit200 req/min500 req/min1,000 req/min

Document Translation is asynchronous. Poll live-status every 10–15 seconds (see the overview) rather than tight loops that burn your per-minute quota.


Chat Completion (LLM)

Default models

Pay as you goProGrowth
Rate Limit50 req/min200 req/min1,000 req/min

Applies to: gemma4, glm5.3, deepseekv4.1-flash

Sarvam-105B model

This large model has lower limits due to its compute requirements.

Pay as you goProGrowth
Rate Limit60 req/min200 req/min300 req/min

Applies to: sarvam-105b, sarvam-105b-conversations


Dubbing

Pay as you goProGrowth
Rate Limit5 req/min50 req/min300 req/min

Document AI

Document AI limits scale with your plan.

Digitise

Rate limits assume 20 pages per request.

Pay as you goProGrowth
Rate Limit200 req/min300 req/min400 req/min

Extract

Rate limits assume 30 pages per request.

Pay as you goProGrowth
Rate Limit30 req/min50 req/min60 req/min

Exceeding Your Limits

REST rate limits (429 / 503)

When your account exceeds a rate limit, the API returns a 429 Too Many Requests response:

{
"error": {
"message": "Rate limit exceeded",
"code": "rate_limit_exceeded_error"
}
}

A 503 Service Unavailable can also occur under high backend load. Retry it the same way you would a 429, using a fixed exponential backoff. See Retry with exponential backoff for a reference implementation.

WebSocket connection limits

The limiter reacts to how fast new connections are opened, not how many are held open at once:

  • Connections opened in a fast burst can be rejected well below the concurrent ceilings listed above.
  • The same number of connections opened gradually (for example, 300ms apart) and held open simultaneously can succeed past those ceilings.

A rejected connection is closed, not queued. The close code is 1003, with this reason text:

Rate limit exceeded. Visit the API Dashboard to review and manage your subscription.

This differs from the 4xxx range described elsewhere on this site for application-specific closures.

The burst threshold is not a fixed number and can vary between runs at the same burst size. Space out new connections rather than relying on a specific count.


Plan Overview

Pay as you goProGrowthBusinessEnterprise
Monthly feeNone₹9,999₹49,999₹1,99,999Custom
SupportCommunityEmailEmailPriorityDedicated
Best ForPrototyping & testingStartups & POCsProduction workloadsSustained high-volume productionScale deployments

Business includes everything in Growth, plus ₹1,99,999 worth of credits included and the best public API rates.

Rate limits are measured per account, not per API key. All keys under an account share the same limit pool. Your current limits are visible on the Dashboard → Rate Limits page.


Upgrading Your Limits

1

Check your current limits

Visit the Dashboard → Rate Limits to see your exact per-API limits.

2

Upgrade your plan

Purchase a higher plan directly from the dashboard. Your rate limits increase immediately after upgrade, no downtime.

3

Need custom limits?

For limits beyond the Growth plan, contact our team for an Enterprise arrangement.


Managing Your Credits

If your credits are exhausted, API requests will return errors. You can add credits at any time, adding credits does not change your plan or rate limits.

  1. Add Credits: Top up from the Billing page at any time. Credits never expire.
  2. Upgrade Your Plan: Higher plans include bonus credits and increased rate limits.
  3. Enterprise: For volume discounts and custom billing arrangements, email support@sarvam.ai.