Default rate limit
The default rate limit is 200 requests per 60-second sliding window, but individual endpoints may enforce their own limits. Check theX-RateLimit-Limit response header to see the effective limit for any given endpoint.
The limit is scoped per teamspace, endpoint path, and HTTP method. For example, POST /v1/converse and GET /v1/agents maintain independent rate limit windows within the same teamspace.
Response headers
Every Datagrid API response includes rate limit headers so you can monitor your usage proactively:| Header | Description | Example |
|---|---|---|
X-RateLimit-Limit | Maximum requests allowed in the current window | 200 |
X-RateLimit-Remaining | Requests remaining in the current window | 195 |
X-RateLimit-Reset | Unix epoch second when the current window resets | 1741275120 |
Retry-After | Seconds until the window resets (present when X-RateLimit-Remaining is 0, including on 429 responses) | 30 |
429 Too Many Requests
When the rate limit is exceeded, the API returns a429 status code with the following body:
statusCode is deprecated and will be removed in a future version. Use status_code instead.Retry-After header indicating how many seconds to wait before retrying.
Best practices
SDK automatic retries
SDK automatic retries
The official Python and TypeScript/JavaScript SDKs automatically retry If you are using the SDK, you typically do not need to implement your own retry logic.
429 responses up to 2 times with exponential backoff. You can configure this via the maxRetries option:Python
TypeScript
Use exponential backoff
Use exponential backoff
If you are calling the API directly (without the SDK), implement retry logic yourself. When you receive a
429, wait for the number of seconds specified in the Retry-After header before retrying. If Retry-After is not available, use exponential backoff starting at 1 second, doubling with each retry up to a maximum of 60 seconds.Python
TypeScript
Monitor X-RateLimit-Remaining
Monitor X-RateLimit-Remaining
Check the
X-RateLimit-Remaining header on every response. If it drops below a threshold (e.g., 10% of the limit), slow down your request rate before hitting a 429.Distribute requests across endpoints
Distribute requests across endpoints
Since rate limits are scoped per endpoint path and HTTP method, you can make concurrent requests to different endpoints without them counting against the same window.