API rate limits and errors
The REST API allows 600 requests per hour for each app, and it reports problems with standard HTTP status codes and a JSON error body. This article lists the limits and what each error means.
Rate limit
- 600 requests per hour for each app. All of an app's API keys share the same allowance.
- Every response includes
X-RateLimit-Limit: 600andX-RateLimit-Window: 3600s. - When you go over the limit, the response has status
429, the headerRetry-After: 60and this body:
```json
{
"error": {
"code": "rate_limit_exceeded",
"message": "API rate limit exceeded. Try again later."
}
}
```
Wait before retrying, and spread large jobs out. Listing 100 records per request is far cheaper than fetching records one at a time.
The MCP server has its own, separate allowance of 300 requests per hour. See Connect Claude or another AI tool to your app.
Error format
Errors look like this:
```json
{
"error": {
"message": "data table 'custmers' not found",
"code": "not_found"
}
}
```
Status codes
400bad_request: the request is not valid. Common causes are an id missing from an update or delete, a missing required value such as a webhook subscription without aurl, or a method the endpoint does not accept.401unauthorized: no key was sent, the key is wrong or inactive, or the key has expired.403forbidden: the key lacks a scope the request needs ("Missing required scope"), or your plan does not include the API.404not_found: the table slug or the record does not exist in this app.409conflict: the value would duplicate one that has to be unique.429rate_limit_exceeded: you are over the hourly limit.500internal_error: something went wrong on our side. Retry after a short wait, and contact support if it keeps happening.503: a service the request depends on is not available at the moment. Retry after a short wait.
Troubleshooting
"Missing authentication." The X-API-Key header is not being sent. Check for a typo in the header name and make sure your HTTP client is not dropping it on a redirect.
"Invalid API key." The key is wrong or has been revoked. Open Tools, choose Data & API and check the key's status on the API Keys tab.
"Missing required scope." The key works but lacks a permission. Scopes are set when a key is created, so create a new key with the scopes you need.
A plan message with 403. The API is included on the Business plan and above.
404 for a table you can see in the app. The URL uses the table's slug, which can differ from the name shown on screen. Call GET /api/v1/custom to list the slugs. Also check that the key was created in the same app as the table.
Other limits
- A list request returns at most 100 records. Use
limitandoffsetto page through more. - An app can have up to 50 outgoing webhook subscriptions.
Retry safely
Retry 429, 500 and 503 responses after a pause, and wait longer after each attempt. Do not retry 400, 401, 403 or 404. They will fail the same way until the request or the key is fixed.