API Rate Limiting
To ensure a stable and reliable platform, the GrowPanel API applies rate limiting. When a client sends too many requests in a short period, the API responds with HTTP 429 (Too Many Requests).
Current limits
The API enforces the following per-account request limits:
| Method | Limit |
|---|---|
| GET | 300 requests per minute |
| GET (reports endpoints) | 30 requests per minute |
| POST | 100 requests per minute |
| PUT | 100 requests per minute |
| DELETE | 50 requests per minute |
These values may be adjusted over time as we optimize the platform.
Rate limit response
When you exceed the limit, the API returns:
HTTP/1.1 429 Too Many Requests
{
"message": "Rate limit exceeded"
}Best practices
Implement backoff
When you receive a 429 response, wait before retrying:
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status !== 429) return response;
const waitTime = Math.pow(2, i) * 1000; // Exponential backoff
await new Promise(resolve => setTimeout(resolve, waitTime));
}
throw new Error('Rate limit exceeded after retries');
}Batch requests
Where possible, use batch endpoints to reduce the number of API calls:
- Use date ranges to fetch multiple days of data in one request
- Use array parameters to filter for multiple items at once
Cache responses
Cache API responses locally when the data doesn't change frequently:
- Summary metrics (cache for minutes)
- Customer lists (cache for hours)
- Historical reports (cache indefinitely)
Need higher limits?
If you need higher rate limits for your use case, contact support at [email protected] with:
- Your account email
- Description of your integration
- Expected request volume
Related pages
- Error codes - Understanding API errors
- Authentication - API key setup
- API Reference - Endpoint documentation