Skip to main content
Public routes share one budget per user. That covers chat completions, audio transcriptions, embeddings, the model catalog, and GET /v1/completions/{completion_id}. A catalog listing and an inference call draw from the same counter. When the bucket is full, the Gateway returns 429 Too Many Requests. WebSocket sessions have their own limits per plan, in WebSocket sessions.

Limits by Tier

Sign up at app.vlm.run for a free API key to get higher rate limits.
Those windows apply together.
  • Anonymous: a request has to fit 10/min, 30/hr, and 100/day. The first window to fill returns 429.
  • Per client IP: anonymous requests are capped per client IP, so callers behind one NAT or proxy share a bucket.
  • Per user: an API key is capped per user account.
  • Quota headers: anonymous responses carry X-RateLimit-Limit and X-RateLimit-Remaining.
  • User-Agent: an anonymous request with no User-Agent header returns 429.
Authentication describes how the Gateway resolves tiers from the Authorization header.

Rate limit exceptions

A request over its limit returns 429 Too Many Requests with Retry-After, the seconds to wait. Waiting that long avoids an immediate second 429. The body names the limited tier:

WebSocket sessions

Realtime sessions on WS /v1/ws and WS /v1/ws/systemone are limited per organization plan, not per request. A session does not spend the per-minute budget above. Anonymous callers cannot open a session: the upgrade returns 401.

Sessions per plan

  • Per organization: every API key of an organization shares its plan’s sessions. A key of an organization without a paid plan has the Free limits.
  • Sessions at once: one more is refused with rate_limit_error and close 1013. Close a session to open another.
  • Sessions per day: one more is refused with rate_limit_error, retry_after, and close 1008. Only a session that opens counts against the day.

Per-session bounds

Session capacity

The Gateway caps the sessions open across every caller and model, and some models cap their own sessions. These caps follow the capacity we run, so they change, and we do not publish them. Reconnect after retry_after seconds when the error has one, else back off. What to do after every close code is in Close codes.

Tips

  • Back off and retry after Retry-After seconds on a 429.
  • Prefer URL document inputs over large base64 payloads.
  • Read a long PDF in page ranges to keep each request small.
The hosted Gateway keeps counters in shared storage, so every replica draws from the same budget.
Contact support@vlm.run for a higher limit.