Tulip applies rate limits to assets to provide a consistent and reliable experience for users.
Tulip will be rolling out rate limiting within the next 3 months. Rate limits ensure high levels of performance and availability on the Tulip platform.
Table rate limits
For Essentials, Professional, and Enterprise plans, the following rate limits apply per table within a workspace.
| API category | Rate limit value | Endpoints |
|---|---|---|
| Record write | 10 seconds per table | POST /api/v3/tables/:tableId/records (createRecord) PUT /api/v3/tables/:tableId/records/:recordId (updateRecord) PATCH /api/v3/tables/:tableId/records/:recordId/increment (incrementRecord) |
| Record delete | 10 seconds per table | DELETE /api/v3/tables/:tableId/records (deleteRecords) DELETE /api/v3/tables/:tableId/records/:recordId (deleteRecord) |
| Record read (individual) | 50 seconds per table | GET /api/v3/tables/:tableId/records/:recordId (getRecord) |
| Record read (multi) | 50 seconds per table | GET /api/v3/tables/:tableId/runAggregation (runAggregation) GET /api/v3/tables/:tableId/records (listRecords) POST /api/v3/tables/:tableId/exportDataset (exportDataset) GET /api/v3/tables/:tableId/count (countRecords) |
NOTE
Some account plans will have custom configurations.
What do I do if I exceed the rate limit?
- Review the 429 error. The table and token will help you identify why a given token is encountering rate limits.
- Batch requests if possible. For example, suppose you have an app that needs to fetch data for a set of table records. Instead of sending individual requests for each record, you’d want to send a single query or batch operation that includes all the record IDs (or filtering criteria) you need—then process the results locally in the app.
- Cache results. Rather than sending frequent requests, cache the data from an earlier request. Then, either refresh the data when requested (such as when a user explicitly wants to refresh data in an app) or on a periodic basis that fits the rate limits.
- Make sure your app is correctly handling rate-limited requests. Make sure your app retries user requests after the Retry-After value in the 429 error.
Did you find what you were looking for?
You can also head to community.tulip.co to post your question or see if others have solved a similar topic!
