Rate limits
Rate limits apply per API key — RPM and concurrency — not to your total token volume.
Per-key limits
| Limit | Value |
|---|---|
| Requests per minute | 100 rpm |
| Concurrency | 5 concurrent requests |
| Tokens per minute | 2M tpm (language models) |
Embedding and speech models have their own request limits. See Models.
Web search
The web search tool (/v1/search) has its own limits, separate from your chat token budget:
| Limit | Value |
|---|---|
| Requests per minute | 60 rpm |
| Searches per day | 3,000 / day |
| Concurrency | 10 concurrent requests |
Exceed any of these and the endpoint returns 429 with a Retry-After header. Repeated identical queries within ~15 minutes are served from cache and don’t hit an upstream provider, but still count against your rate and daily quota. See the API Reference for the full request and response shape.
Monthly volume
Efficient open models are unlimited on every plan — the largest frontier-class models count against a monthly quota that scales with your plan:
| Plan | Monthly quota |
|---|---|
| Starter | 2.5B tokens |
| Growth | 7.5B tokens |
| Scale | 20B tokens |
| Enterprise | Custom |
If you exceed your quota, we contact you before charging for the overage. See Pricing for the full breakdown.
Handling 429
When you exceed a limit, the API returns 429 Too Many Requests. Back off and retry. Most OpenAI SDKs already do this for you with exponential backoff — the Retry-After header tells you how long to wait.
# the OpenAI SDK retries 429s automatically — tune the count if needed
client = OpenAI(
base_url="https://api.helmcode.com/v1",
api_key="sk-your-key-here",
max_retries=5,
)
Need higher limits?
High-demand workloads can get higher RPM and pooled concurrency on request. Dedicated and Enterprise plans also run on hardware reserved for you, with guaranteed throughput. Talk to us.