Throttling, Queuing and Rate Limiting

To consider for a smooth localization workflow

API Limits

POEditor uses a combination of techniques in order to mitigate abusive users or faulty API scripts. We also differentiate between Free and paid accounts, to ensure equitable access to resources.

All requests are put in a queue (individual per user) and are resolved asynchronously in the order they reached the POEditor API servers. If the queue builds up, we start dropping requests after reaching 200 for paid accounts and after 150 for free ones. Expect to receive a 429 - "Too many requests" error when this happens. Our advice is to send requests one by one, even with a slight delay between them.

There are also rate limits. Both paid and free accounts can send a maximum of 200 requests per minute and 3600 per hour. When these limits are reached, you will also receive 429 - "Too many requests" errors. Note that we count received requests, not resolved ones, so if you keep hitting the server after reaching the limits, no new request will be processed until the amount of requests you sent during the last minute/hour drops below the limit.

There is a rate limit for upload requests as well, since these are the most heavy requests we have to process. The rate is 1 upload request per 10 seconds for paid accounts and 20 for free accounts respectively.

The processed requests can be viewed in your API Log page: API Log

TL/DR:

Paid accounts:

  • max 200 concurrent requests
  • max 200 requests per minute
  • max 3600 requests per hour
  • max 1 upload request per 10 seconds

Free accounts:

  • max 150 concurrent requests
  • max 200 requests per minute
  • max 3600 requests per hour
  • max 1 upload request per 20 seconds

Webhooks Limits

We allow a maximum of 50 webhooks per minute. The "export" webhook can't be triggered from your integrated code hosting service, because it can end up in a beautiful loop. You get a "Request limit reached. (50 in 1 minute)" error after that threshold.

The processed requests can be viewed in your Webhooks Log page: Webhooks Log