Instagram DM Limits: What Meta Lets Social Media Automation Send
Instagram DM limits for social media automation, from Meta's docs: send caps, 750 private replies an hour, the ad window, and why 200 is not Meta's.
Instagram DM limits come with no published daily cap. Meta’s developer documentation lists none for automation and no hourly cap on ordinary sends, and Instagram publishes no daily message limit for manual DMs. The often-quoted 200 automated DMs an hour is a pacing figure some tools chose, and Meta’s rate-limit pages do not set it.
What Meta does publish are call ceilings. An account gets 750 private replies per hour to comments on posts and reels, plus 100 or 300 Send API calls a second for text and 10 for audio or video, depending on which Meta rate-limit page your API path follows. On top of those sit the messaging windows, which decide who your automation may message at all.
This page covers what software sending through Meta’s API is allowed to do. On how many manual messages trigger a block, Instagram’s help center says only that if you keep going after a warning, “you may not be able to send more direct messages for a period of time.” The 20-to-200-a-day figures elsewhere are estimates by account age, and I won’t add another.
Instagram DM Limits at a Glance (2026)
This table collects seven limits from Meta’s documentation on Instagram DM automation through its API, and none of them is a daily DM cap. The Send API takes two rows because two Meta pages give different rates.
| Limit | Meta’s number | Counted per | What it means for automation |
|---|---|---|---|
| Send API, per the Instagram Platform overview | 100 calls a second for text, links, reactions and stickers, 10 a second for audio or video | Instagram professional account | Rarely the bottleneck unless a backlog or a loop floods it |
| Send API, per the Messenger rate limits page (Instagram section) | 300 calls a second for text, 10 a second for audio or video | Instagram professional account | The same job on the Facebook Login route, so check which path your tool uses |
| Private replies to post and reel comments | 750 calls an hour | Instagram professional account | The one a viral post’s keyword comments can reach |
| Private replies to Live comments | 100 calls a second, only while the broadcast runs | Instagram professional account | Once the Live ends, those commenters can no longer get a private reply |
| Conversations API | 2 calls a second | Instagram professional account | Paces an agent that reads threads |
| High-volume inbox | More than 72,000 messages sent and received, with no time window stated | Instagram professional account | Inbox stops showing new messages and the account cannot send until the volume decreases |
| Single thread | No number published | One conversation | ”Too many messages” to one person can be rate limited |
| Message text | 1,000 bytes of UTF-8 (one Meta page also says under 1,000 characters) | One message | Emoji and accented letters use more than one byte each, so fewer than 1,000 characters can fit |
The verdict in plain English: in the three setups below, the per-second ceilings never bind. What stops automated DMs is eligibility, meaning who wrote first, plus the monthly allowance your tool bills on.
Free 7-day trial · Cancel anytime
The trial covers the web app. An agent reaching Blotato through the API or MCP needs a paid plan. Generating an API key ends the trial and starts the $29 Starter plan.
What Meta Changed on September 28, 2026
Meta’s Instagram Messaging changelog has an entry dated September 28, 2026, documenting that “the standard messaging window may extend up to 7 days for conversations that start from Click-to-Messenger or Click-to-Direct ads.”

The 7 days start “when the person sends their first message after clicking the ad,” and “conversations started through other entry points remain within a 24-hour window.” A comment on an organic reel keeps its old clock, and so do a story reply and any DM that did not come from an ad. Private replies keep their own rule too: one message per comment, within 7 days of the comment.
Where “200 DMs an Hour” Comes From
Search Google for Instagram DM limits and the AI Overview files “roughly 200 automated DMs per hour” under a heading called “Automated & API DM Limits.” It adds a “theoretical daily maximum” of 4,800 through approved automation, and cites CreatorFlow’s guide.
CreatorFlow’s page is clearer than the summary built from it. It says “Meta publishes no hourly DM cap,” calls 200 an hour “a tool-side pacing convention,” and reaches 4,800 by running 200 an hour for 24 hours. The AI Overview keeps the pacing label and CreatorFlow’s own “theoretical daily maximum” wording. It then files both under API limits, without the line saying Meta never set either.
Where 200 does appear in Meta’s rate-limit pages, it sits inside call budgets that scale with users. The Graph API’s platform rate limit is “Calls within one hour = 200 * Number of Users,” and the same page puts Instagram Platform requests under Business Use Case limits instead. The Messenger rate limits page budgets Facebook Page messaging at “Calls within 24 hours = 200 * Number of Engaged Users,” and its Instagram section carries no such formula.
The 4,800 in Instagram’s own formula is a coincidence. The Instagram Platform overview multiplies impressions by it and applies it to calls “excluding messaging.” Instagram’s messaging endpoints are counted per account, at the rates in the table above.

A pacing figure is a speed each tool picks for itself. If a vendor quotes you one, ask whether it is their throttle or Meta’s ceiling.
The Limit You Hit First Is Who You May Message
An automated DM through Meta’s API can only answer someone who acted first: they messaged you, or they commented on your content. The API offers no cold outreach path, so the volume you can send is the number of people who acted inside a window.

Each trigger has its own clock. After a comment’s one private reply, Meta’s private replies documentation adds that follow-up messages “can only be sent if the recipient responds, and must be sent within 24 hours of the response.” An ordinary DM that did not come from an ad opens the standard 24-hour window. I walk through how those two clocks shape an inbox build in my Instagram messaging API breakdown.
An Instagram account that “sends and receives more than 72,000 messages” stops displaying new messages and “cannot send new messages until the volume decreases,” and a banner in the conversation says a message may be delayed or was not delivered. Meta does not say over what period those messages are counted.

Your app also “may be rate limited if too many messages are sent to a single thread,” which is the rule a looping automation trips. And Meta’s Developer Policies add the limit nobody can calculate: messaging experiences “that receive excessive negative feedback, may be feature limited, paused, rate-limited or removed from Platform.” A DM people report as spam costs you more than any rate limit.
Three Accounts, Three Different Ceilings
The same rules bind differently depending on what triggers the DMs. Swap your own numbers into these three.
The reel that takes off
A creator posts a reel with “comment GUIDE for the link,” and 3,000 people comment the keyword in the first hour.
- Meta: 3,000 replies ÷ 750 per hour = 4 hours of private-reply allowance if no other replies use it, well inside the 7-day window
- Blotato Starter: at the default 1,000 contacts with none used this month, the run for new person 1,001 fails with error 20101
- Blotato Creator: the default 6,000 covers all 3,000, but its docs do not say whether replies past 750 an hour wait for the next hour, so filter the runs for
failedandexpiredafter a spike - Binds first: contacts on Starter if all 3,000 are new. On Creator, Meta’s 750 an hour, if the automation tries to reply faster than that
The ad that drives DMs
A Click-to-Direct ad brings 2,000 new conversations over a weekend, and the business wants to send each person a second message on Monday.
- Meta window: may run up to 7 days from each person’s first message after the ad click, so a Monday follow-up can still qualify
- Meta send rate: 2,000 messages ÷ 100 calls a second = 20 seconds of capacity
- Blotato: 2,000 contacts, double Starter’s default 1,000. Its messaging docs list the 24-hour, private-reply and message-tag windows but not the ad window, so confirm it works before you schedule the follow-up
- Binds first: contacts on Starter. On Creator, whether your tool can send inside the ad window
The agent clearing the inbox
Each morning, an agent answers the 450 DMs that arrived overnight through Blotato’s REST send endpoint.
- Blotato endpoint: 450 requests ÷ 30 a minute = 15 minutes to submit, with delivery confirmed per message afterward
- Meta window: everyone wrote within 24 hours when the run starts, so check each last-message time before sending
- Blotato contacts, if all 450 are new each morning: 1,000 ÷ 450 = 2 full mornings on Starter, 6,000 ÷ 450 = 13 on Creator
- Binds first: contacts, after 2 mornings on Starter or 13 on Creator if everyone is new. A skipped morning also lets the older overnight messages age past the 24-hour window
The Honest Pitch: Blotato Adds a Monthly Limit of Its Own
Blotato is my company, and I’d be a bad founder if I hid this part. Using it raises none of the numbers in that table. Its DM automation covers Instagram and Facebook only, replies only to people who wrote first, and adds a ceiling of its own.
That ceiling is monthly active contacts across the plan, by default 1,000 on Starter, 6,000 on Creator and 15,000 on Agency. Some accounts carry a custom limit, so contactsLimit from the usage call below, a number or “unlimited”, is the one that counts for yours. A contact is anyone you reach in a month by DM or by replying to their comment.
Each person counts once per connected account, so the same person on two of your accounts counts twice, and messaging someone already counted through the same account adds nothing. Past the limit, an automation’s send to someone new fails with error code 20101 and that run ends as failed. A REST send gets a 422 carrying the same code.
Two more Blotato numbers belong in your plan. Its REST send endpoint, POST /v2/messages, answers 429 above 30 requests a minute. The Instagram cap of 50 posts a day applies to publishing, which I cover alongside the posting caps for every platform.
One API. Every social platform. The key that runs your Instagram and Facebook DM automations also publishes to 9 platforms and reads analytics. Generate it under Settings > API, and one request tells your agent how close the month is to the cap:
curl https://backend.blotato.com/v2/users/me/usage \
-H "blotato-api-key: YOUR_API_KEY"
It returns accounts, contacts and contactsLimit, so an agent can check headroom before it switches on a big automation. Blotato’s plan and request limits page lists the plan caps behind those numbers.
Blotato also runs an MCP server at https://mcp.blotato.com/mcp. Claude Code, Claude Desktop or any MCP-compatible agent connects with OAuth or a blotato-api-key header, then calls blotato_list_accounts for the account IDs the other tools need. Sixteen of its tools handle Instagram and Facebook comments, conversations and DM automations:
- Conversations:
blotato_list_conversations,blotato_get_conversation,blotato_list_messages,blotato_get_message,blotato_send_message - Automations:
blotato_create_automation,blotato_list_automations,blotato_update_automation,blotato_update_automation_trigger,blotato_delete_automation - Results:
blotato_list_automation_runs,blotato_list_automation_logs,blotato_get_automation_analytics - Comments:
blotato_list_comments,blotato_get_comment,blotato_post_comment
None of them returns the contact count, so an agent watching the cap uses the usage call above. When a run fails, blotato_list_automation_runs returns its error code, which is where a 20101 shows up. My comparison of DM automation routes weighs building on Meta yourself against a hosted layer. Starter is $29 a month, Creator $97 and Agency $499, and the plans page shows what each includes.
The Three Numbers I Would Watch
I built Blotato, so weigh this with that bias in mind. Plan around three numbers: how many people are still eligible for the message you want to send, your plan’s remaining contacts, and your runs marked failed or expired. The first lives in your comments and inbox, the second in the usage call, and the third in blotato_list_automation_runs.
Instagram DM Limits FAQs
How many DMs can I send on Instagram per day?
Neither Meta’s developer docs nor Instagram’s help center gives a daily DM number, for manual messages or for the API. Through the API, the per-account ceilings are 100 or 300 Send API calls a second for text depending on the API path, plus 750 private replies an hour to post and reel comments. Every automated DM also has to answer someone who messaged or commented first.
Is 200 DMs an hour Instagram’s official limit?
No, 200 an hour is a pacing figure some automation tools choose for themselves, and Meta’s rate-limit pages give no such cap for Instagram messaging. Meta’s Instagram numbers are per second for sending and 750 an hour for private replies to post and reel comments.
Does the new 7-day window apply to comment-to-DM automations?
No, the window of up to 7 days that Meta documented on September 28, 2026 covers only conversations that start from Click-to-Messenger or Click-to-Direct ads. Comment-to-DM keeps its own rule, one private reply within 7 days of the comment, and ordinary DM conversations that did not start from an ad keep the standard 24-hour window.
How do I get rid of the Instagram message limit?
If Instagram blocked you from DMing by hand, the block lasts “for a period of time,” so stop sending until it lifts. For automation, find which limit you hit: the person’s window, Meta’s rate limits, Meta’s high-volume threshold, which clears as volume drops, or your tool’s monthly allowance. On Blotato, that allowance renews each month or grows with an upgrade, and neither reopens a closed Meta window.
Does Blotato limit how many Instagram DMs an automation sends?
Yes, by month: by default Blotato’s plans cover 1,000 active contacts on Starter, 6,000 on Creator and 15,000 on Agency, and each person counts once per connected account. Past the limit, a send to a new person fails with error code 20101 and that run ends as failed.