Rate Limits

To keep performance stable for everyone, API requests are rate-limited.

How To Work Smoothly

Spread requests over time instead of sending large bursts.
Use small retry delays with backoff when a request is throttled.
Prefer batch-style processing patterns for high-volume workloads.
Design your client as idempotent so retries are safe.

Current Enforcement

Rate limiting is currently enforced per user and per tool at job-creation time. Default limit is 30 requests per minute for each tool, per user.

Scope: per-user + per-tool
Default: 30 requests/minute
Throttle message: "Too many job submissions. Please wait and try again."
Current API behavior: HTTP 500 with `errors.job[0]` carrying that throttle message
Suggested action: wait briefly and retry

Recommended Retry Pattern

Use bounded retries with incremental backoff to recover from temporary throttling.

Pseudo-flow
1) Send request
2) If throttled, wait 1-2s and retry
3) If throttled again, wait 3-5s and retry
4) Stop after a small max retry count (for example 3)
5) Surface a clear message to users if still limited