Skip to main content
The Plugchoice API enforces rate limits to ensure fair usage and platform stability.

Default limits

ScopeLimit
Global API500 requests per minute per authenticated user
Location invitations5 requests per minute
Chargee meter5 requests per minute
Unauthenticated requests are rate limited by IP address.

Rate limit headers

Rate-limited responses include the following headers:
HeaderDescription
X-RateLimit-LimitMaximum number of requests allowed in the window
X-RateLimit-RemainingNumber of requests remaining in the current window
Retry-AfterSeconds to wait before retrying (only on 429 responses)

Handling rate limits

When you exceed the rate limit, the API returns a 429 Too Many Requests response:
{
  "message": "Too Many Attempts."
}
Back off and retry after the number of seconds indicated by the Retry-After header:
const response = await fetch(url, { headers });

if (response.status === 429) {
  const retryAfter = parseInt(response.headers.get('Retry-After') || '60', 10);
  await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
  // Retry the request
}

Best practices

  • Cache responses when possible to reduce the number of requests.
  • Use pagination rather than fetching large datasets repeatedly.
  • Implement exponential backoff when receiving 429 responses.
  • Batch operations where the API supports it (e.g., card imports).