Rate Limits
Per-endpoint Classic API rate limits, response headers, and retry guidance.
Every Concurrence API endpoint enforces a rate limit, tracked per authenticated identity per endpoint. When you exceed the limit, the API returns HTTP 429 Too Many Requests with a Retry-After header indicating how many seconds to wait before retrying.
Overview
The two API surfaces expose different rate-limit headers. Classic API responses expose only Retry-After, and only on 429 responses. Platform API responses include the X-RateLimit-* headers on every response.
Retry-After
Classic and Platform
Seconds to wait before retrying (present on 429 responses)
X-RateLimit-Limit
Platform only
Maximum requests allowed in the current window
X-RateLimit-Remaining
Platform only
Requests remaining in the current window
X-RateLimit-Reset
Platform only
UTC epoch seconds when the window resets
Find the Current Endpoint Limit
Use the OpenAPI embed on the endpoint's reference page as the source of truth. Its 429 response documents the current numeric limit for that operation when the contract publishes one. This avoids a second method/path matrix that can drift when limits or routes change.
If an embedded operation does not publish a numeric limit, handle 429 and Retry-After without assuming a fixed budget. Platform limits can also depend on the authenticated credential and deployment.
Handling Rate Limits
When your application receives a 429 response, use the Retry-After header to determine how long to wait. Combine this with exponential backoff for resilience.
Manual Implementation
SDK Automatic Retry Behavior
Both the Python SDK (amigo-sdk) and TypeScript SDK (@amigo-ai/sdk) handle 429 responses automatically:
The SDKs read the
Retry-Afterheader and wait the specified duration before retrying.Retries use exponential backoff for consecutive 429 responses.
Network errors and 5xx server errors are also retried automatically.
Best Practices
Respect
Retry-Afterheaders. Always use the server-provided delay rather than a fixed wait time.Use exponential backoff. If the
Retry-Afterheader is absent, double the delay on each consecutive 429 (capped at 60 seconds).Monitor
X-RateLimit-Remainingon the Platform API. Proactively slow down requests as you approach the limit rather than waiting for a 429. Classic API responses do not expose a remaining-request header, so rely on backoff there.Batch where possible. Some endpoints (such as tool invocation) accept multiple items in a single request, reducing the number of calls.
Spread requests over time. Avoid bursting all requests at the start of a rate-limit window.
Use the SDKs. The official Python and TypeScript SDKs handle 429 retries automatically with proper backoff.
Design for the tightest limit. Conversation creation and interaction are limited to 5 and 10 requests/min respectively. Architect your application to stay comfortably within these bounds.
Last updated
Was this helpful?

