Search for Instagram DM limits and you will find one article saying 5,000 messages an hour, another saying 200, and a third saying 750. They cannot all be right, and none of them tells you where the number came from.
So here is every published limit, quoted from Meta's own documentation, with the page it came from and the date we read it. Where a widely repeated number does not appear in Meta's docs at all, we say so.
All figures below were read from Meta's documentation on 2 August 2026. Meta changes these without announcement, so treat the date as part of the number.
How many Instagram DMs can you send per hour?
There is no single "DMs per hour" figure, which is why the articles disagree. Meta publishes four separate limits depending on what you are doing, and the one that binds you depends on which endpoint your tool is calling.
| Operation | Meta's stated limit | Per |
|---|---|---|
| Private reply to a comment on a post or reel | 750 calls per hour | Instagram professional account |
| Private reply to a comment on a Live | 100 calls per second | Instagram professional account |
| Send API, text, links, reactions, stickers | 100 calls per second | Instagram professional account |
| Send API, audio or video | 10 calls per second | Instagram professional account |
| Conversations API (reading threads) | 2 calls per second | Instagram professional account |
| Platform calls, everything non-messaging | 4800 × impressions per 24 hours | Instagram professional account |
Source: Graph API rate limiting, Instagram sections.
For comment-to-DM automation, 750 per hour is the number that matters, because a comment-to-DM is a private reply. The per-second Send API figures apply to the conversation after the person has replied to you.
The numbers Meta does not publish
Two figures circulate widely and appear nowhere in Meta's documentation:
- "5,000 DMs per hour." Not in the rate limiting page, not in the messaging page. There is no endpoint with this limit.
- "200 DMs per hour." Also absent. It may be a tool's own internal throttle being reported as a platform limit, which is a meaningful difference: one is Meta's rule, the other is a vendor's choice.
If a tool quotes you a limit, ask which of the six rows above it refers to. A vendor throttle is not a platform limit, and being told the wrong one changes how you plan a launch.
The limit that catches people out
The last row is the strange one. Your non-messaging platform budget is 4800 multiplied by your impressions in the last 24 hours, where impressions means the number of times your content entered someone's screen.
That is not a fixed allowance. It scales with your reach. A quiet week shrinks your API budget, which means the day after a post underperforms is also the day your automation has the least headroom. Messaging endpoints have their own limits and are not drawn from this pool, but reading your media and insights is.
What is the Instagram messaging window?
24 hours. Meta states it plainly:
Your app has 24 hours to respond to any message sent from an Instagram user to your app user.
Source: Instagram messaging API.
The clock restarts every time the person messages you again. Once it expires, an automated reply is no longer permitted, and that is the end of the conversation unless they write to you first.
The 7-day extension, and why you probably do not have it
There is a human agent tag that extends the window to seven days for a reply typed by a person rather than sent by an automation. Meta's documentation describes it without mentioning approval:
If your app user uses a human agent to respond to messages and therefore may need more time to respond, your app can tag the response to allow your app to send the message outside the 24 hour messaging window.
In practice, using it returns a 403 with a message saying the capability must be reviewed and approved by Facebook first. We know because we tried it on a live account. It is not on by default.
So when a tool advertises a seven-day reply window, the accurate version is "seven days once Meta approves the app, twenty-four hours until then". Worth asking which one you are on.
How many private replies can you send per comment?
One. Ever.
A private reply is the only way a business may open an Instagram conversation, and Meta permits exactly one per comment, within 7 days of that comment being left. On a Live, the window is only the duration of the broadcast.
This is the constraint the whole comment-to-DM industry is built on, and it has two consequences people discover late:
- You cannot follow up in the DM until the person replies. Your one private reply has to carry everything, which is why good automations put a question or buttons in that first message rather than just a link.
- You cannot re-run a campaign on the same comment. If someone commented last month and you fix your automation today, that comment is spent.
Once they reply, the ordinary 24-hour window opens and you can converse normally.
What are the message content limits?
| Limit | Value |
|---|---|
| Message text | 1000 bytes, UTF-8 |
| Images per message | 10 |
| Image file size | 8 MB |
| Audio, video, file size | 25 MB |
| Image formats | png, jpeg |
| Video formats | mp4, ogg, avi, mov, webm |
| Audio formats | aac, m4a, wav, mp4 |
| Documents | pdf only |
Source: Instagram messaging API.
Note bytes, not characters. A 1000-byte cap is 1000 characters of plain English, but an emoji costs four bytes and Devanagari or Telugu roughly three per character. A message that looks short in Hindi can fail where the same message in English passes. If your DMs are in an Indian language, budget for roughly a third of the character count you would expect.
Interface limits that are not rate limits
Two more, both easy to miss:
Quick replies: 13 maximum. They also vanish the moment the person starts typing, so they are a prompt rather than a menu.
Ice breakers: 4 maximum. They appear only on mobile, and only on a thread with no messages in it. Once anyone exchanges a single message with you, that person never sees them again.
Generic template buttons: 3 per card, 20 characters per label. This is the only way to send a real tappable link button rather than a pasted URL.
Three behaviours the documentation does not mention
Everything above is published. These are not, and we found each one by hitting it in production.
An ice breaker payload containing a colon is silently discarded. Set an ice breaker whose payload is flow:abc123 and Meta returns {"result":"success"}, then stores the prompt without its payload. Read the profile back and the payload key is simply absent. The tap then arrives with nothing to route on, and your automation appears to be broken when it never received the instruction. Use an underscore. We verified this by setting four ice breakers with different payload formats and reading back which survived.
Ice breaker taps arrive as a postback, not a message. There is no message object on the webhook event, so any handler that checks for one and returns early will drop every tap. The title is in postback.title and the routing value in postback.payload.
Instagram gives you two account IDs and the webhook uses the one you probably did not store. The API returns id (app-scoped, what you call the API with) and user_id (the professional account ID). Webhooks identify the account by the second one. Store only the first and every inbound message will arrive for an account you cannot find.
There is no delivery receipt on Instagram
Worth stating because it changes how you judge a tool. WhatsApp reports sent, delivered and read through webhooks. Instagram messaging has no delivery webhook. A 200 from the Send API means Meta accepted the request, and that is the strongest signal that exists.
There is a messaging_seen webhook for read receipts, but nothing between accepted and read. Any tool showing you an Instagram "delivered" tick is inferring it.
What Instagram messaging costs
Nothing. Instagram has no per-conversation or per-message pricing, unlike WhatsApp, where Meta charges per 24-hour conversation window. The whole channel is free to send on, which is a large part of why the tooling around it is cheap.
The trade is that Instagram is reactive. You cannot broadcast, and the customer always messages first. Detail on which of those restrictions are real and which are marketing is in what Instagram automation genuinely cannot do.
How to check any of this yourself
Meta's rate limiting page is public and fetchable. Two habits worth having:
Check the date. Every number on this page carries the date we read it. Meta changes limits without announcement, and an undated limits article is worthless within months. If an article does not say when it was checked, treat its numbers as folklore.
Check which endpoint. "Instagram allows X per hour" is meaningless without saying whether X is a private reply, a Send API call or a platform read. Most of the contradictions online are three different rows of the same table being quoted as one number.
Questions people ask
How many DMs can you send on Instagram per hour with automation?
There is no single figure. Meta publishes 750 private replies per hour per account for comments on posts and reels, 100 Send API calls per second for text messages, 10 per second for audio or video, and 2 per second on the Conversations API. For comment-to-DM automation the binding limit is 750 per hour.
Is the Instagram limit 5,000 DMs per hour?
No figure of 5,000 per hour appears anywhere in Meta's documentation. Neither does 200 per hour. Both circulate widely without a source. If a tool quotes you a limit, ask which endpoint it applies to, because a vendor's own throttle is not a platform limit.
What is the Instagram messaging window?
24 hours. Meta's documentation states that your app has 24 hours to respond to any message an Instagram user sends. The clock restarts each time the person messages again, and once it expires you cannot send an automated reply until they write to you first.
Can you send more than one private reply to the same comment?
No. Meta permits exactly one private reply per comment, ever, and it must be sent within 7 days of the comment. On a Live video the window is only the duration of the broadcast. After the person replies, the ordinary 24-hour window opens.
What is the Instagram DM character limit for automation?
1000 bytes of UTF-8, not 1000 characters. Plain English is roughly one byte per character, but an emoji costs four and most Indian language characters cost about three, so a message in Hindi or Telugu reaches the cap at roughly a third of the character count.
Does Instagram charge per message like WhatsApp?
No. Instagram messaging has no per-message or per-conversation pricing. WhatsApp bills per 24-hour conversation window; Instagram does not bill at all. The trade-off is that Instagram is reactive, so a business cannot start a conversation.
Does Instagram tell you if a DM was delivered?
No. There is no delivery webhook on Instagram messaging. A 200 response from the Send API means Meta accepted the request, which is the strongest available signal. There is a read receipt webhook, but nothing between accepted and read, so any "delivered" status you see in a tool is inferred rather than reported.
Stop losing leads to the follow-up gap
Kredoo captures leads from Meta and Google Ads, then follows up on WhatsApp automatically. Live in 5 minutes.
Get Started