To prevent the SiteFlow API (pro-api.oneflowcloud.com) from being overwhelmed with requests and to allow it to run as efficiently as possible, we are introducing a limit of 3000 requests per minute per user. This is to give you the best service possible and allow the system to process your requests in a timely manner.

If you reach this limit, further petitions will fail with HTTP 429 status code until the counter is reset into the next minute.  The limit applied as well as the remaining petitions for that minute can be checked on the response headers:  

Retry Strategy

If you are below 3000 petitions per minute this should have no impact on your daily work, but in case you deal with a spike and go beyond the limit, consider some strategies that may be useful:  

  • It is safe to retry get HTTP methods (GET, HEAD, OPTIONS) and idempotent HTTP methods (PUT, DELETE). 

  • Consider retrying a POST and PATCH if is safe to do it on a case-by-case basis. 

  • On each retry, the wait time between requests needs to be exponential, it cannot be a fixed interval. This is to help the API to recover and mitigate the potential bottleneck. 

 

An example of this logic is implemented on the axios-retry package

export function exponentialDelay(retryNumber = 0) {  const delay = Math.pow(2, retryNumber) * 100;  const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay  return delay + randomSum;} 



or in the AWS SDK

 calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {     if (!retryDelayOptions) retryDelayOptions = {};     var customBackoff = retryDelayOptions.customBackoff || null;     if (typeof customBackoff === 'function') {       return customBackoff(retryCount, err);    }     var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;    var delay = Math.random() * (Math.pow(2, retryCount) * base);     return delay;  }, 

The length of these retries will need to be sufficient to retry during a few minutes. As our requests are measured per minute, we need to be able to have a chance at the next span of time (next minute). 

 

Back to Top