Skip to main content

How the limit works

Every installation of your app (your app on one store) has its own bucket of 40 requests. Each API call adds one request to the bucket, and the bucket leaks 2 requests a second.
  • You can make up to 40 calls in a burst.
  • After that you can keep going at 2 calls a second (120 a minute).
  • A call that would overflow the bucket is refused with 429 Too Many Requests.
The bucket belongs to the installation, not to your app as a whole. Calls on one store never use up your budget on another store, and another app on the same store has its own bucket.
This limit applies to calls made with an app_ token. A few actions have their own daily or hourly caps on top of it: sending a notification (5 a day) and sending email (10 requests an hour). A call has to fit both.

Read the call limit header

Every response to your app, a 429 included, carries:
The first number is how full your bucket is after this call, the second is its size. When the first number gets close to the second, slow down.

When you get a 429

Retry-After is the number of whole seconds until there is room for one more call. Wait that long, then retry. A refused call did nothing: it is safe to send again, and it never triggers a webhook.

Staying under the limit

  • Use webhooks instead of polling. Let Salesive tell you when something changed, then fetch just that record. See Webhooks.
  • Pace bulk work. If you need to page through a large list, aim for about 2 calls a second per store instead of firing everything at once.
  • Retry with the header, not a fixed sleep. Read Retry-After and wait at least that long.