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:

MethodLimit
GET300 requests per minute
GET (reports endpoints)30 requests per minute
POST100 requests per minute
PUT100 requests per minute
DELETE50 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