Skip to main content
Each API key can make 120 requests a minute. Up to 30 of those can be writes: the calls that need a full key, such as creating an automation or setting one live. The minute is a sliding window, so there’s no reset on the hour to wait for. Limits are per key, so two integrations with their own keys never slow each other down.

Headers

Once a key is accepted, every response tells you where it stands: The headers count every request together. Writes have their own, smaller allowance inside that, so keep your own count of writes if you make many in a burst.

When you go past the limit

You get 429 with the code rate_limited and a Retry-After header: the number of seconds to wait. The message says which limit you reached, all requests or writes. Wait that long, then send the request again. A refused write doesn’t count against the overall allowance.

Staying well inside it

  • Read once, use many times. A post’s id doesn’t change. Keep the ids you need instead of listing media before every call.
  • Poll a refresh gently. Every few seconds is plenty for Get a refresh.
  • Spread scheduled reports. A nightly job across many automations can pace itself by RateLimit-Remaining rather than firing everything at once.

Your API limit and Instagram’s pace are different things

The limit on this page is about calls to inDM. How fast DMs reach people is separate: each Instagram account sends at a steady pace rather than all at once, because Instagram restricts an account that sends in bursts, and that costs far more than a short wait. When a post takes off, messages queue and drain, and none are dropped. Get account health reports an account’s current speed, what’s waiting, and about how long it takes to clear.