Current Rate Limiting Status
As of version 0.15.0, Infrahub does not enforce hard rate limits on API requests. However, this may change in future versions. It is recommended to implement rate limiting best practices in your integrations now to ensure forward compatibility.Future Rate Limiting
While not currently enforced, future versions of Infrahub may implement:Per-User Limits
- Requests per minute: 1000 requests/minute per user account
- Concurrent connections: 50 simultaneous connections per user
- WebSocket subscriptions: 100 active subscriptions per user
Per-API-Key Limits
- Requests per minute: 5000 requests/minute per API key
- Concurrent connections: 200 simultaneous connections per API key
- WebSocket subscriptions: 500 active subscriptions per API key
Anonymous Access Limits
If anonymous access is enabled (SETTINGS.main.allow_anonymous_access = true):
- Requests per minute: 100 requests/minute per IP address
- Concurrent connections: 10 simultaneous connections per IP
- No WebSocket subscriptions
GraphQL Query Complexity
Infrahub monitors GraphQL query complexity through metrics:Depth Limits
- Maximum query depth: Currently unlimited, but tracked via
graphql_query_depthmetric - Recommended depth: Keep queries under 10 levels deep for optimal performance
Height Limits
- Maximum query height: Currently unlimited, but tracked via
graphql_query_heightmetric - Recommended height: Limit to 100 fields per query for optimal performance
/home/daytona/workspace/source/backend/infrahub/graphql/app.py:281 for complexity metric tracking.
Response Size Limits
GraphQL Responses
- Maximum response size: Currently unlimited
- Metric tracking: Response sizes are tracked via
graphql_response_sizemetric - Recommendation: Use pagination to keep responses under 1MB
File Operations
- Maximum file size: Depends on repository configuration
- Recommendation: Stream large files rather than loading them entirely into memory
Best Practices
1. Implement Exponential Backoff
When encountering errors, use exponential backoff:2. Use Pagination
Always paginate large result sets:3. Optimize Query Complexity
Request only the fields you need:4. Cache Responses
Implement client-side caching:5. Batch Operations
Group related operations together:6. Use WebSocket Subscriptions Wisely
Limit the number of active subscriptions:7. Monitor Your Usage
Track your API usage patterns:8. Handle Authentication Errors
Refresh tokens proactively before they expire:Monitoring Rate Limits
Prometheus Metrics
Infrahub exposes metrics that help you monitor API usage:graphql_duration- Query execution time (can indicate throttling)graphql_query_errors- Error count (may spike if limits are hit)graphql_response_size- Response size distribution