Engineering
WhatsApp error 131053 (media upload error): find the bad file and fix it
Why WhatsApp rejects the media in a message with 131053: unsupported file types such as HEIC and MOV, files over the size limit, links that need a login or send the wrong Content-Type, and stale media IDs, with commands to inspect each one.
By Broadchat teamPublished 7 min read
In short
WhatsApp error 131053 means "Unable to upload the media used in the message": WhatsApp could not take the image, video, audio, document or sticker you attached, for example because its type is not supported. Read error_data.details in the failed-status webhook, check the file's real MIME type and size against Meta's supported media list, make sure any link is public and returns the right Content-Type, then convert or re-host the file and resend.
Key takeaways
- 131053 is about the file, not the recipient or the template: the same file will fail for every recipient until you change it.
- Meta's own first step is to inspect the rejected file's MIME type (for example with file -I on macOS) and compare it with the supported media types.
- The extension can lie: a .jpg that is really HEIC, or a link that serves an HTML login page, fails just like a wrong format.
- Images must be JPEG or PNG up to 5 MB, videos MP4 or 3GPP up to 16 MB and documents up to 100 MB on the Cloud API.
- Uploading the file to the /media endpoint first and sending by media ID surfaces problems before a campaign starts.
WhatsApp error 131053 means WhatsApp could not upload the media you attached to a message. Meta's error reference describes it as "Unable to upload the media used in the message" and adds: "The media could not be uploaded for one or more reasons, such as an unsupported media type." Meta's suggested fix is to read error.error_data.details in the messages webhook for the failed message, inspect the file, and "confirm that they are in fact supported". In practice the file is the wrong type, too big, or not reachable from Meta's servers.
Who sees this error
Anyone sending an image, video, audio, document or sticker through the Cloud API, whether in a free-form reply inside the 24-hour customer service window or in a message template with a media header. It is not related to your quality rating or messaging limit, and other text messages from the same number keep working. Do not confuse it with 131052, which is the reverse: media sent to you by a customer that the API could not download.
The usual causes
| Cause | Typical Indian example | How to confirm |
|---|---|---|
| Unsupported format | iPhone photo saved as HEIC, screen recording as MOV, voice note exported as M4A with an odd codec, WebP sent as an image | file -I or file --mime-type on the file |
| File too large | A 22 MB product video, a 7 MB scanned bill as JPEG | Compare the size with the table below |
| Link not public | Google Drive or Dropbox share page, a CRM attachment URL that needs a login, an S3 signed URL that has expired | Open the link in a private browser window, or curl -I it |
| Wrong Content-Type from your server | A PDF served as application/octet-stream, an image served as text/html because of a redirect | curl -I and read the content-type header |
| Extension does not match content | invoice.pdf that is really a Word file, banner.jpg that is really PNG renamed by hand | file -I shows the true type |
| Stale or foreign media ID | An ID uploaded more than 30 days ago, or uploaded with another phone number | The ID worked before and now fails |
Supported media at a glance
These are the Cloud API limits from Meta's media reference. Check the page before quoting exact values elsewhere, because Meta updates it.
| Media | Accepted types | Maximum size |
|---|---|---|
| Image | JPEG, PNG | 5 MB |
| Video | MP4, 3GPP (H.264 video with AAC audio) | 16 MB |
| Audio | AAC, AMR, MP3, MP4 audio, OGG (Opus) | 16 MB |
| Document | PDF, Word, Excel, PowerPoint, plain text and other common types | 100 MB |
| Sticker | WebP | 100 KB static, 500 KB animated |
Uploaded media IDs are kept by Meta for 30 days. After that, an old ID is rejected and you must upload again.
What the failure looks like
When you send by link, the API usually accepts the request, and the failure comes back in the status webhook a moment later. Illustrative payload (title and details text vary):
{
"statuses": [
{
"id": "wamid.HBgMOTE5ODI5MDAxMjM0FQIAERgSQzVF...",
"status": "failed",
"timestamp": "1761985800",
"recipient_id": "919829001234",
"errors": [
{
"code": 131053,
"title": "Media upload error",
"message": "Media upload error",
"error_data": {
"details": "Downloading media from weblink failed with http code 403, status message Forbidden"
}
}
]
}
]
}The details string is the most useful part of this error. An HTTP code such as 403 or 404 points to the link; a phrase about an unsupported or unknown type points to the file itself.
Step-by-step fix
- Read the details. Log
errors[0].error_data.detailsfrom the webhook, not just the code. - Fetch the link the way Meta does. From a server with no cookies, run
curl -I "https://cdn.example.in/banner.jpg". You want status200and acontent-typesuch asimage/jpeg. A302to a login page,403,404ortext/htmlexplains the failure. - Check the real type. Download the file and run
file -I banner.jpg(macOS) orfile --mime-type banner.jpg(Linux). Meta's reference gives exactly this check:file -I rejected-file.mov. - Check the size against the table above.
- Convert if needed. A MOV or an HEVC video can be converted with
ffmpeg -i input.mov -c:v libx264 -c:a aac -movflags +faststart output.mp4. An HEIC photo can be exported as JPEG from the phone or converted on a computer. - Host it properly or upload it. Either serve the file from a public HTTPS URL with the right Content-Type, or upload it to
POST /<PHONE_NUMBER_ID>/mediaand send the returnedidinstead of alink. - Send one test message to your own phone before resending to the whole audience.
A worked example
Priya runs marketing for Rangoli Home, a home-decor brand in Jaipur. She schedules a template with a video header showing the new block-print bedsheets (₹2,349) to 1,800 opted-in customers. Every send fails with 131053. The video was shot on an iPhone and uploaded to the brand's website as bedsheet-launch.mov, 19 MB.
Two problems, both visible in a minute: file -I reports video/quicktime, which is not on Meta's list, and the file is over 16 MB. Her developer converts it with the ffmpeg command above, trims it to 30 seconds so it comes down to about 9 MB, uploads it to the media endpoint and resends. Meta charges only for delivered messages, so the 1,800 failed sends did not cost anything, but the launch went out two hours late. The team now runs file -I and a size check on every campaign asset.
Preventing 131053
- Validate before you send. Check type and size when a file is added to your system, not when the campaign starts.
- Prefer media IDs for repeated sends. Upload once, reuse the ID for up to 30 days, and re-upload before it expires.
- Never send share pages. Drive, Dropbox and WhatsApp Web links are pages, not files.
- Set Content-Type on your storage. Object storage often defaults to
application/octet-streamwhen the type is not set at upload. - Keep a test step. One message to an internal phone catches format problems for free.
How Broadchat handles media
Files you upload in Broadchat (in the Inbox, campaign headers, chatbot steps or templates) are uploaded to Meta and sent by media ID. The ID is cached for each file and phone number for about 25 days, inside Meta's 30-day window. If Meta rejects a cached ID, Broadchat drops it, uploads the file again and retries once, and if that still fails it sends the file by link. External links that you paste are sent to Meta as they are, so they must be public and correctly typed. When a send still fails, the message shows the reason "The media could not be uploaded or downloaded." and the code 131053 in message info. In Campaigns, a template with a media header cannot be launched until you upload the file or paste its URL.
For the full list of codes see the WhatsApp API error codes cheat-sheet. Template sends that fail because of the template itself are covered in error 132001 and error 132000. New to the platform? Start with what the WhatsApp Business API is.
Sources
- WhatsApp error codes — Meta for Developers, checked 1 November 2026
- Cloud API media reference (supported media types and sizes) — Meta for Developers, checked 1 November 2026
Broadchat team · Product and partner success team
The people who build and support Broadchat, the white-label WhatsApp Business API platform. We write from what we see while onboarding partners and their clients on the official WhatsApp Cloud API, and we check every article against Meta's current documentation.
Last updated:
Frequently asked questions
What does WhatsApp error 131053 mean?
It means WhatsApp could not upload the media used in your message. Meta says this can happen for one or more reasons, such as an unsupported media type. Check the file type, size and link, then resend.
Why does my image link work in a browser but fail with 131053?
Your browser may be logged in, or it may be following a redirect to a page that Meta's servers cannot open. Test the link with curl -I from a server: it should return status 200 and an image content type, not a login page or text/html.
Can I send HEIC photos or MOV videos on the WhatsApp Business API?
Not as they are. Meta's media reference lists JPEG and PNG for images and MP4 or 3GPP for video. Convert HEIC photos to JPEG and MOV videos to MP4 with H.264 video and AAC audio before sending.
Am I charged when a message fails with 131053?
Meta charges per delivered message, and a message that fails with 131053 is not delivered, so Meta does not charge for it. Check your platform's wallet history to see how failed sends are recorded.
How long can I reuse a WhatsApp media ID?
Meta keeps uploaded media for 30 days. Reuse the ID within that period and upload the file again after it, otherwise the send fails and you have to upload anyway.