The Metabase API implements rate limiting to ensure fair usage and maintain system stability. Understanding these limits helps you build reliable integrations.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/metabase/metabase/llms.txt
Use this file to discover all available pages before exploring further.
Rate limit overview
Rate limits vary based on the type of endpoint and your Metabase instance configuration. Generally:- Query endpoints (
/api/dataset,/api/card/*/query) have stricter limits due to database resource usage - Metadata endpoints (listing resources) have more generous limits
- Write operations (creating/updating resources) have moderate limits
Rate limits are configurable by instance administrators. Contact your Metabase admin for specific limits on your instance.
Rate limit headers
API responses include headers that indicate your current rate limit status:Maximum number of requests allowed in the time window
Number of requests remaining in the current window
Unix timestamp when the rate limit window resets
Example response headers
Rate limit errors
When you exceed the rate limit, the API returns a429 Too Many Requests status code.
Error response
Seconds to wait before retrying the request
Best practices
Implement exponential backoff
When you receive a rate limit error, implement exponential backoff to retry requests:Monitor rate limit headers
Check rate limit headers proactively to avoid hitting limits:Batch requests efficiently
Instead of making multiple individual requests, batch operations when possible:- Inefficient
- Efficient
Cache responses
Cache API responses that don’t change frequently:Use webhooks instead of polling
For monitoring changes, use webhooks instead of repeatedly polling endpoints:Optimize query endpoints
Query execution endpoints consume more resources:Endpoint-specific limits
Query execution
Query endpoints have stricter limits:POST /api/dataset/- Execute ad-hoc queriesPOST /api/card/{id}/query- Execute saved question queriesPOST /api/dashboard/{id}/dashcard/{id}/card/{id}/query- Execute dashboard card queries
Consider using query result caching or downloading results periodically rather than executing the same query repeatedly.
Public endpoints
Public sharing endpoints have separate rate limits to prevent abuse:GET /api/public/card/{uuid}/queryGET /api/public/dashboard/{uuid}
Metadata endpoints
Metadata browsing typically has more generous limits:GET /api/database/GET /api/collection/GET /api/card/
Monitoring and troubleshooting
Track your API usage
Implement logging to monitor your API usage patterns:Identify rate limit bottlenecks
If you’re consistently hitting rate limits:- Review which endpoints you’re calling most frequently
- Identify opportunities for caching
- Batch requests where possible
- Optimize query complexity
- Consider upgrading your instance resources
Contact your administrator
For higher rate limits:- Discuss your use case with your Metabase administrator
- Request rate limit adjustments for specific endpoints
- Consider upgrading to a plan with higher limits (for Cloud customers)
Metabase Cloud plans may have different rate limits than self-hosted instances. Check your plan details or contact support for specific information.