Every Instagram Messaging API limit, in one table
Last verified against Meta for Developers - Graph API rate limiting
Instagram messaging is available through two Graph API routes - the original Messenger Platform route, where a Facebook Page linked to the Instagram professional account does the talking, and the Instagram API with Instagram Login, which since July 2024 needs no Page at all. The ceilings below apply to both unless a row says otherwise; where the routes genuinely differ (media formats, permission names, account prerequisites), the row names its route. Every value is quoted from Meta's documentation and carries the source link - nothing here is inferred or folklore.
The limits fall into three tiers of pain. The policy tier is absolute: the 24-hour messaging window, the 7-day human-agent extension, and the one-per-comment private reply cannot be engineered around, only designed for - crossing them produces error 10/2534022 and its relatives, and persistent violation ends in an account-level block. The throughput tier - 100 Send API calls per second per account for text but only 10 for audio and video, 2 conversation reads per second, 750 private replies per hour on posts - throttles you with 613/2534040 and (#4) when bursts exceed it. The content tier caps what a single message may hold: 1,000 characters of text, 8 MB images, 25 MB video, 13 quick replies, 10 carousel cards, 4 ice breakers.
Two prerequisites gate everything and fail silently rather than loudly: the account must be a professional account, and the Allow access to messages toggle must be on in the Instagram app. If your integration returns errors, the code-by-code companion is the Instagram error reference; if it returns nothing at all, start with the troubleshooting guide. For building on these constraints rather than against them, see the Instagram chatbot overview.
Jump to: Messaging window & the human agent extension · Rate limits & throughput · Message content & structured messages · Media attachments · Private replies (comment to DM) · Story replies & mentions · Inbox behavior & conversation moderation · Account, permission & app requirements
Messaging window & the human agent extension
The window is Instagram messaging's defining constraint: apps may only message a person within 24 hours of that person's last message, and the send that misses it fails with error 10/2534022, documented as "This message is sent outside of allowed window." Instagram is deliberately stricter than its siblings - the Messenger message tags that reopen conversations elsewhere are documented as not available here, and there is no WhatsApp-style template mechanism. The single extension is the human_agent tag: 7 days, humans only, granted through App Review. Everything else is re-entry design - ice breakers, story interactions, and comment-triggered private replies that prompt a fresh inbound message.
| What | Limit |
|---|---|
| Standard messaging window | 24 hours from the person's last message |
| human_agent tag window | 7 days from the person's message |
| Human Agent feature approval | App Review required (plus Business Verification) |
| Messenger message tags on Instagram | Not available (HUMAN_AGENT only) |
| Re-engagement templates | None documented |
Rate limits & throughput
Instagram messaging calls are counted per Instagram professional account and per API, so ceilings travel with the account - a viral account cannot be scaled around by adding servers. Text sending is generous at 100 calls per second, but media sending is a tenth of that, and conversation reads are a tight 2 per second, which is why bots that re-read threads on every webhook event throttle at trivial scale. Exceeding a messaging ceiling returns 613/2534040; exhausting app-wide or Page budgets surfaces as (#4), (#17) or (#32). Watch the X-App-Usage and X-Business-Use-Case-Usage response headers, including estimated_time_to_regain_access, before the errors arrive.
| What | Limit |
|---|---|
| Send API - text, links, reactions, stickers | 100 calls/second per Instagram professional account |
| Send API - audio or video content | 10 calls/second per Instagram professional account |
| Conversations API (thread reads) | 2 calls/second per Instagram professional account |
| Private Replies API - live comments | 100 calls/second per Instagram professional account |
| Private Replies API - posts and reels | 750 calls/hour per Instagram professional account |
| Instagram Platform calls (non-messaging) | Calls within 24 hours = 4800 x Number of Impressions |
Message content & structured messages
Instagram supports a narrower message surface than Messenger, with hard caps on each structured type. Payloads that exceed them are rejected as parameter errors - typically code 100 or the Instagram-specific 100/2534015 ("Invalid message data") - so cross-platform senders should validate against these numbers, not Messenger's, ideally in a schema check that runs before the API call. Quick replies, ice breakers and the persistent menu are documented as unavailable on desktop, which matters when reproducing customer reports: a missing menu on the web client is expected behavior, not a bug in your integration.
| What | Limit |
|---|---|
| Text message length | Under 1,000 characters (UTF-8, 1,000 bytes or less) |
| Attachments per message | Up to 10 |
| Quick replies per message | 13 maximum |
| Quick reply title length | 20 characters before truncation |
| Generic template elements (carousel cards) | 10 maximum |
| Generic template title / subtitle | 80 characters each |
| Generic template buttons per element | 3 maximum (postback and web_url only) |
| Ice breakers (FAQ questions) | 4 maximum |
| Persistent menu | Mobile only (Instagram app v226+); 5 items recommended |
Media attachments
Media ceilings are small by phone-camera standards - 8 MB for images, 25 MB for everything else - and the two API routes document slightly different format lists, so normalize assets before sending rather than forwarding originals. Oversized files fail with 100/2018109, unreachable URLs with 100/2018008, and slow or corrupt video with 100/2018294, whose 75-second fetch budget is documented explicitly. Remember that Meta fetches URL-sent media from its own servers, not from the recipient's device: files must be publicly reachable, served with a valid TLS certificate, and fast enough to download well inside the timeout.
| What | Limit |
|---|---|
| Image attachments | 8 MB max - png, jpeg (gif also listed on the Messenger Platform route) |
| Audio attachments | 25 MB max - aac, m4a, wav, mp4 |
| Video attachments | 25 MB max - mp4, ogg, avi, mov, webm |
| File attachments (Instagram Login route) | 25 MB max - pdf |
| Video URL fetch time | 75 seconds |
| Inbound media webhooks | Gifs, stickers and disappearing media not delivered |
Private replies (comment to DM)
Private replies convert a public comment into a direct message, and they are Instagram's most valuable re-entry tool precisely because their window is independent of the DM window. The rules are strict and per-comment: one reply, within 7 days for posts, ads and reels, live-broadcast-only for live comments. Violations return error 100/2534025 ("The comment is invalid for a private reply"), and campaign-scale automation additionally runs into the 750-per-hour ceiling listed under rate limits. Build these automations as real-time consumers of the comments webhook, not batch sweeps over old comments.
| What | Limit |
|---|---|
| Reply window - posts, ads, reels comments | 7 days from when the comment was created |
| Reply window - Instagram Live comments | During the live broadcast only |
| Private replies per comment | 1 |
| Required permissions | instagram_manage_comments + pages_messaging (Advanced Access) |
Story replies & mentions
Story interactions arrive as normal messages webhook events - a reply to your story carries a reference to the story, and a mention of your account in someone else's story arrives with a story_mention attachment - and both count as inbound messages that open the standard 24-hour window. The constraints are about visibility and lifetime rather than volume: mention webhooks only flow from public accounts (or private accounts that follow you), and the media URL dies with the story. Fetch what you need immediately; a dead CDN URL is not an API error like 100/2018008, it is documented expiry.
| What | Limit |
|---|---|
| Story mention webhook visibility | Public accounts only (private accounts only if they follow you) |
| Story media URL lifetime | Until the story expires (24 hours) or is deleted |
| Caching story media | Not permitted |
Inbox behavior & conversation moderation
Deliverability on Instagram is not only about API acceptance - the account's inbox has documented behavior of its own. Meta publishes a high-volume threshold past which the inbox stops displaying and sending new messages, with warning banners shown in the conversation, and a moderation API that moves conversations to the spam folder or blocks users outright. A blocked or spam-filed user is unreachable in ways that surface as 551 or 200/1545041 on sends, and a business that users block en masse risks the account-level cutoff documented under 100/2534029.
| What | Limit |
|---|---|
| High-volume inbox threshold | 72,000 messages sent and received |
| Moderation actions per request | 2 actions, 10 IDs |
| Move to spam | Conversation moves to the spam folder in Meta Business Suite inbox |
| Block / unblock user | Blocks messaging in both directions |
Account, permission & app requirements
These are the gates everything above sits behind, and most of them fail silently - no webhook events, empty account lists - rather than with an error code. The professional-account requirement and the Allow access to messages toggle are consumer-app settings invisible from the developer dashboard; when the toggle is revoked after connection, sends fail with 200/2534041. Development-mode and Standard Access restrictions produce the "works for admins, silent for customers" pattern behind code 200 and code 10. Choose one API route deliberately - permissions and tokens do not transfer between them.
| What | Limit |
|---|---|
| Account type | Instagram professional account (Business or Creator) |
| Facebook Page link (Messenger Platform route) | Required |
| Facebook Page link (Instagram Login route) | Not required |
| Allow access to messages toggle | Must be enabled by the account owner |
| Permissions (Messenger Platform route) | instagram_basic, instagram_manage_messages, pages_manage_metadata |
| Permissions (Instagram Login route) | instagram_business_basic, instagram_business_manage_messages |
| Messaging the public | Advanced Access + Live mode (Business Verification for most apps) |
| Receiving webhooks | App must be published |
Instagram guides and tools
Other platforms
Frequently asked questions
How long is the Instagram messaging window?
24 hours from the person's last message to the account. Meta documents the rule on its error page as "Apps can only send a message to a customer within 24 hours of receiving the customer's message." Sends after that fail with error 10, subcode 2534022. The window reopens whenever the person sends another message, including story replies.
Can I message someone after 24 hours on Instagram?
Only with the human_agent tag, and only within 7 days of the person's message. The tag requires approval for the Human Agent feature through App Review and is documented for genuine human support - business closed for the weekend, issues needing more than 24 hours - not automation. Beyond 7 days there is no sanctioned path; the person must message you again.
Does Instagram support message tags like Messenger?
No. Meta's Send API reference marks ACCOUNT_UPDATE, CONFIRMED_EVENT_UPDATE and CUSTOMER_FEEDBACK as "Not available for Instagram Messaging API." The only tag that works on Instagram is HUMAN_AGENT. There is also no template system like WhatsApp's for re-opening conversations, which makes window-aware design essential on this channel.
What are the Instagram Send API rate limits?
Documented per Instagram professional account: 100 calls per second for messages containing text, links, reactions and stickers, and 10 calls per second for messages containing audio or video. Conversation history reads through the Conversations API are limited to 2 calls per second. Exceeding them returns error 613 with subcode 2534040, or the generic (#4) throttling error.
How long can an Instagram DM text message be?
1,000 characters. The send-message documentation states text "must be less than 1000 characters" and elsewhere that message text "must be UTF-8 and be 1,000 bytes or less" - so emoji-heavy or non-Latin text hits the byte form earlier. Longer content should be split across messages or linked. Oversized payloads are rejected as parameter errors (code 100).
What media can a bot send in Instagram DMs?
Images (png, jpeg - gif is additionally listed on the Messenger Platform route) up to 8 MB, audio (aac, m4a, wav, mp4) up to 25 MB, and video (mp4, ogg, avi, mov, webm) up to 25 MB; the Instagram Login route also documents pdf files up to 25 MB. Videos sent by URL must be fetchable within 75 seconds or the send times out with subcode 2018294.
How many quick replies, carousel cards and ice breakers does Instagram allow?
A maximum of 13 quick replies per message, each title truncated beyond 20 characters and plain text only. Generic-template carousels carry up to 10 elements with 80-character titles and subtitles and up to 3 buttons per element (postback and web_url only). Ice breakers are capped at 4 questions and require a default locale.
What are the rules for Instagram private replies (comment to DM)?
One private reply per comment, sent within 7 days of the comment's creation for posts, ads and reels; replies to live comments can only be sent during the broadcast. Rate limits are 750 private replies per hour per account for posts and reels, and 100 calls per second for live comments. Invalid targets return error 100, subcode 2534025.
What accounts can use the Instagram messaging API at all?
Only Instagram professional accounts - Business or Creator. On the Messenger Platform route the account must also be linked to a Facebook Page; the Instagram API with Instagram Login drops the Page requirement. In both cases the owner must enable Allow access to messages under Message controls in the Instagram app, and public messaging requires Advanced Access with Business Verification.
Is there a limit on total message volume for an account?
Yes - Meta documents a high-volume threshold: if an Instagram professional account sends and receives more than 72,000 messages, new messages stop being displayed in the Instagram inbox and the account cannot send new ones until volume decreases, with banner warnings shown in the conversation. API sends are separately paced by the per-second Send API limits.
Build on Instagram without tracking every limit yourself
Conferbot paces sends, queues retries and surfaces limit errors as readable status.