Skip to content

Media Won't Send in an Automated DM

Updated

The text part of the DM arrives and the attachment doesn’t, or the whole message fails. Instagram returns “upload attachment failure”, which covers everything from an oversized file to a format it won’t accept.

Most failures are here. The full media reference has the detail; the ceilings are:

Type Formats Max size
Image PNG, JPG, GIF 8 MB
Video MP4, MOV 25 MB
Audio AAC, M4A, WAV 25 MB
Document PDF 25 MB

GIFs go through as images, so they get the 8 MB ceiling, not 25 MB. A long loop exported as a GIF blows past it easily — export it as MP4 instead and it gets the video allowance.

Nothing else is accepted. WebP, HEIC, AVI, MKV, DOCX and ZIP will fail however small they are. Convert to a format on the list.

An upload that was interrupted leaves a media reference that looks fine in the editor and fails at send time. Remove the attachment, re-add it, and republish.

This is worth doing before anything else if the automation used to work and started failing without you changing it — media references don’t always survive account reconnection.

A 30 MB video isn’t a good DM attachment even if it fit. Under 25 MB is the hard limit, but well under it sends faster and fails less. Re-encode at a lower bitrate rather than cutting the content.

Images are the same story: an 8 MB PNG screenshot is usually a 400 KB JPG with no visible difference.

Instagram allows 10 DMs per second carrying audio or video, against 100 per second for text — media-heavy automations hit their ceiling ten times sooner. During a spike, media messages are the first to be throttled, so a video automation on a viral post will look slow and patchy while a text one alongside it runs fine. That’s the queue protecting the account, not a broken attachment.

Carousels cap at 10 cards, and every card needs its image, its title (80 characters) and its button label (20 characters). One incomplete card fails the whole message, and the card that’s missing something isn’t always the one you were editing last — check all of them.