For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Classic API tables. The endpoint tables on this page cover Classic API endpoints (api.amigo.ai). Platform API endpoints enforce rate limits too - their per-endpoint limits are documented in the Platform API OpenAPI spec and the API reference documentation. See the Platform API guide for that surface.

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.

Header
API
Description

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-After header 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

  1. Respect Retry-After headers. Always use the server-provided delay rather than a fixed wait time.

  2. Use exponential backoff. If the Retry-After header is absent, double the delay on each consecutive 429 (capped at 60 seconds).

  3. Monitor X-RateLimit-Remaining on 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.

  4. Batch where possible. Some endpoints (such as tool invocation) accept multiple items in a single request, reducing the number of calls.

  5. Spread requests over time. Avoid bursting all requests at the start of a rate-limit window.

  6. Use the SDKs. The official Python and TypeScript SDKs handle 429 retries automatically with proper backoff.

  7. 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?