Skip to main content
Every endpoint shares one limit: 3,000 requests per 60 seconds, counted per API key.

Headers

Every response carries your current standing, so you can pace yourself without guessing:
RateLimit-Reset is an absolute time, not a countdown. Subtract the current time to get the wait: waitSeconds = RateLimit-Reset - now. Sleeping for the raw value parks your integration for decades.

When you go over

You get a 429 with code: "RATE_LIMITED". Wait until RateLimit-Reset and retry.
A 429 is the one response that repeats message at the top level, kept for callers written against the older shape. Read error.code instead.

Staying under the limit

Most integrations that hit the limit are making one request per record. Two habits fix that:
  • Ask for more per page. pageSize defaults to 100. Raising it means fewer round-trips for the same data.
  • Resolve ids in one call. Instead of a GET /worker/{id} per row, join the table or send one POST /worker/query with every id you need. See querying.
For writes, the bulk endpoints do the same thing in reverse. One PATCH /deliverable/bulk updates every matching record, and one PUT /deliverable/bulk upserts a whole batch. See standard endpoints.