Rate limiting

We enforce rate limits to guarantee that no customers are adversely affected by the usage of any given customer. Buggy integration code can result in too many requests being sent in a short period of time, leading to excessively high bills or increased queue times.

We have three Assembly limits in place:

  1. Customers can create up to 250 Assemblies per minute.
  2. Customers can have 250 Assemblies running at the same time.
  3. Customer Assemblies can run for a maximum of 8 hours before the process is terminated.

In our experience, this satisfies even top-tier usage, but enterprise accounts are free to contact us if they require higher limits.

The limits are in place mostly to shield customers from other customers' "infinite loop"-type of programming bugs.

Customers that hit a rate limit will receive a RATE_LIMIT_REACHED error and a HTTP status code 413. The JSON payload for this error contains an info.retryIn property that indicates the number of seconds remaining until another Assembly can be created. If you use one of our official SDKs, proper back-offs and retries based on this are already included.

The following is an example of what the JSON payload may look like:

{
  "error": "RATE_LIMIT_REACHED",
  "message": "Request limit reached",
  "info": {
    "retryIn": 41
  }
}

High frequency rate limit

In addition to the above rate limiting, there also exists another rate limiting mechanism in order to deter too rapid requests. This rate limit will trigger in any of these cases:

  • If there are too many simultaneously open TCP connections from one client
  • If too many TCP connections are opened in the last 10 seconds from one client
  • If too many HTTP error codes have occurred in the last 10 seconds from one client
  • If too many HTTP requests have been sent in the last 10 seconds from one client

In these cases the client will receive a 429 HTTP status code, and the response will contain the following JSON payload:

{
  "error": "429 Too Many Requests",
  "message": "HAProxy thinks you have sent too many requests in a given amount of time. "
}