WorkloomDevelopers
v1Get an API key
Docs/Rate limits

Rate limits

Limits are per key, so one busy integration cannot slow down another. Every response tells you where you stand.

WhatLimit
Requests300 a minute per key. The count starts again at the start of each minute.
Page sizeUp to 100 records a page.

Watch the limit

Send requests faster than the limit allows. The count starts again at the start of each minute; here the minute is sped up to 10 seconds.

0 of 300 used
X-RateLimit-Limit300
X-RateLimit-Remaining300
Next minute in10 s
Nothing sent yet.

Headers on every response

HeaderMeaning
X-RateLimit-LimitRequests allowed in a minute.
X-RateLimit-RemainingRequests left this minute.
Retry-AfterOnly on a 429: seconds to wait before retrying (60).

Handling a 429

Wait Retry-After seconds, then retry the same request. For a POST, send the same Idempotency-Key so it cannot run twice.

Retry with backoff
async function call(url, init, tries = 5) {
  for (let i = 0; i < tries; i++) {
    const res = await fetch(url, init);
    if (res.status !== 429 && res.status < 500) return res;
    const wait = Number(res.headers.get("Retry-After")) || 2 ** i;
    await new Promise((r) => setTimeout(r, wait * 1000));
  }
  throw new Error("Gave up after " + tries + " tries");
}
import time, requests

def call(method, url, tries=5, **kw):
    for i in range(tries):
        res = requests.request(method, url, **kw)
        if res.status_code != 429 and res.status_code < 500:
            return res
        wait = float(res.headers.get("Retry-After", 2 ** i))
        time.sleep(wait)
    raise RuntimeError(f"Gave up after {tries} tries")
Was this page useful?