Helo.ai marks years of building enterprise communicationExplore our Journey

Automate bulk messaging for promotions, alerts, and updates - Explore

WhatsApp API Error 131053: Media Upload Failures

WhatsApp Error 131042 indicates a payment or billing issue affecting your WhatsApp Business Account. Learn how to identify and resolve the issue.

helo.ai authorSuraj Kori
Aug 20, 20266mins
WhatsApp API Error 131053

Error 131053 is where a lot of otherwise-working integrations break the first time they send something other than text. Meta documents it as "Media upload error," with details stating it is unable to upload the media used in the message, an HTTP status of 400, and a recommended action of inspecting media files to confirm they match supported types and verifying the MIME type (Meta for Developers, WhatsApp error codes reference, retrieved 2026-08-20).

The phrase "verify MIME type" is doing more work than it appears to. The most common cause of 131053 is not an unsupported file format — it is a supported file whose declared MIME type does not match its actual contents, or a hosted URL that serves the wrong Content-Type header.

This guide covers the difference between the two ways to attach media, what actually gets rejected, and why hosted links fail more often than direct uploads. For the wider failure surface, our WhatsApp Business API error codes reference indexes the rest.



Two Ways to Attach Media, Two Failure Surfaces

The Cloud API accepts media in two forms, and they fail differently.


Uploaded media (id). You upload the file to Meta first and receive a media ID, then reference that ID in the send. Failures happen at upload time, which is good — you find out before the campaign runs.


Hosted media (link). You supply a publicly reachable URL and Meta fetches it at send time. Failures happen during send, and they include everything that can go wrong with an HTTP fetch on top of everything that can go wrong with the file itself.



Uploaded (id)

Hosted (link)

When it fails

At upload

At send

Failure surface

File validity only

File validity + fetch

Needs public hosting

No

Yes

Handle lifetime

Short-lived

As long as the URL serves

Best for

Campaigns, repeated sends

One-off dynamic assets

Prefer uploaded media for anything you send more than once. Validating at upload time turns a send-time incident into a build-time check, and one upload reused across a campaign is far fewer moving parts than thousands of fetches against your CDN.


What Gets Rejected

Cause

Signature

Fix

Declared MIME type does not match contents

Supported format still rejected

Detect type from file bytes, not extension

Genuinely unsupported format

Every send of that asset fails

Convert to a documented supported type

File exceeds the size limit for its type

Larger files fail, smaller ones succeed

Compress or resize before upload

Hosted URL not publicly reachable

Works in your browser, fails from Meta

Remove auth, allowlists, and signed-URL expiry

Wrong Content-Type header on the URL

Correct file, rejected fetch

Configure the server to serve the real type

Redirect chain on the hosted URL

Intermittent failures

Serve the asset directly, no redirects

Expired or foreign media ID

Worked yesterday, fails today

Re-upload; do not cache IDs long-term

Corrupt or truncated file

Consistent failure on one asset

Re-encode from source


The MIME type mismatch

This is the cause Meta's recommended action points at, and it is the one that feels unfair because the file is a supported format.

The situation: a file named receipt.pdf that is actually a JPEG, or logo.png that a design tool exported as WebP. WhatsApp validates the declared type against the actual bytes and rejects the mismatch.

It happens because file extensions are metadata that anyone can set, and content pipelines rename files constantly — a CMS export, a user upload, a batch conversion that changed contents without changing names.


Detect the type from the file's contents server-side. Every language has a way to sniff magic bytes (python-magic, file, equivalents elsewhere). Trust that, not the extension, and set the declared MIME type from what you detected. This single change eliminates the largest cause of 131053.


Why hosted links fail more


A link adds an HTTP fetch performed by Meta's infrastructure, from outside your network, with no session and no credentials. Four things break there and none of them are visible when you test the URL in your own browser:


Authentication. An asset behind a login, a VPN, an IP allowlist, or a signed URL that has since expired.


Content-Type header. Your server serves application/octet-stream for everything, or guesses wrong. The file is fine; the header is what Meta reads.


Redirects. A CDN or shortener that 302s to the real asset. Serve it directly.


Reachability and latency. A slow or geo-restricted origin can time out on the fetch even though the file is perfectly valid.


The test that matters is fetching the URL from outside your network with no cookies and no auth, and inspecting the returned Content-Type header — not opening it in a logged-in browser tab.


Media IDs expire

An uploaded media ID is a short-lived handle, not a permanent asset reference. Three patterns fail:

  • Caching an ID for weeks and reusing it across a long campaign
  • Using an ID uploaded under a different phone number
  • Using an ID from an upload that reported success but was truncated

Upload as part of the send flow, or refresh IDs on a schedule shorter than their lifetime. Do not store one alongside a product record as though it were a permanent URL.


Where 131053 Sits Among Its Neighbours

Code

Meaning

What it points at

131053

Media upload error

The asset or its fetch

131009

Parameter value not valid

A malformed media id or link value

131008

Required parameter missing

The media object omitted entirely

131000

Something went wrong

Sometimes surfaces a media problem as an unclassified 500

131026

Message undeliverable

Sometimes an outdated client that cannot render the media

That last row is worth a note. If a media message fails for a small subset of recipients while succeeding for most, the asset is probably fine and you are looking at error 131026 and an outdated client rather than an upload problem. Media that is genuinely invalid fails for everyone.

Templates with media headers add their own layer: if the template is the problem rather than the asset, you will see error 132000 for a component count mismatch or error 132012 if the media parameter was supplied as a plain string where a structured object was expected.


Frequently Asked Questions


What causes WhatsApp error 131053?

WhatsApp could not upload the media in your message. Meta documents it as "Media upload error" with HTTP status 400 and recommends inspecting the file to confirm it matches supported types and verifying the MIME type. In practice the leading cause is a declared MIME type that does not match the file's actual contents, followed by problems fetching a hosted URL.


Why does my supported file format still fail?

Because the declared type and the real contents disagree. A file named .jpg that is actually a PNG, or a .png exported as WebP, is a supported format with the wrong label, and WhatsApp validates the label against the bytes. Detect the type server-side from the file's magic bytes rather than trusting its extension, then declare what you detected.


Should I use uploaded media or a hosted link?

Upload for anything you send more than once. Uploading validates the file before the campaign runs and gives you one asset instead of thousands of fetches against your origin. Hosted links add an HTTP fetch that can fail on authentication, Content-Type headers, redirects, or reachability — none of which are visible when you open the URL in your own browser.


Why did a media ID that worked yesterday stop working?

Media IDs are short-lived handles rather than permanent references. An ID cached for weeks, uploaded under a different phone number, or produced by an upload that silently truncated will all fail. Upload as part of the send flow, or refresh IDs on a schedule shorter than their lifetime.


My media message fails for some recipients but not others. Is that 131053?

Probably not. Media that is genuinely invalid fails for everyone. A partial failure pattern more often points at error 131026, where an outdated WhatsApp client cannot render the message type. Test by resending the same content as plain text to a failing recipient — if that delivers, the client is the constraint, not your asset.


Detect the Type, Prefer the Upload

Error 131053 has a reputation for being about unsupported formats, and it mostly is not. It is about labels that disagree with contents, and about hosted URLs that behave differently for Meta's fetcher than for a logged-in browser tab.

Two changes remove most of it. Detect MIME type from file bytes server-side and declare what you actually found. And upload media to get an ID rather than passing a link, for anything sent more than once, so validation happens before your campaign rather than during it.


Want media handling that validates before the campaign runs? Helo.ai is a Meta Partner and Google RCS Anchor Partner of the Year, managing media upload, type validation, and ID lifecycle for enterprise WhatsApp programmes. Talk to an expert.

Next: error 131009 if the media identifier itself is being rejected, or error 132012 if a media parameter inside a template is the problem.

About Author
helo.ai author
Suraj Kori

Suraj Kori is associated with Helo.ai and focuses on enterprise communication technologies including WhatsApp Business API, SMS, RCS, and CPaaS solutions. He contributes practical insights on AI-driven messaging, customer engagement, and omnichannel communication strategies for modern businesses.

Related Blogs

WhatsApp Error 133010
Whatsapp / All

WhatsApp Error 133010: Register Your Number First

WhatsApp Error 133010 occurs when a phone number is not registered on the WhatsApp Business Platform. Learn how to register the number, complete verification, and resolve common registration issues.

helo.ai author
Suraj Kori
Aug 20, 20265mins
WhatsApp API Error 132015
Whatsapp / All

WhatsApp API Error 132015: Fix a Paused Template

WhatsApp Error 132015 means a template was paused due to low quality. Learn what causes the pause, how to recover the template, and prevent it from being disabled.

helo.ai author
Suraj Kori
Aug 19, 20264mins
WhatsApp Error 132012
Whatsapp / All

WhatsApp Error 132012: Template Parameter Format

WhatsApp Error 132012 occurs when template parameters use the wrong format. Learn what causes it, how to sanitise data, and how to prevent failed messages.

helo.ai author
Suraj Kori
Aug 19, 20266mins
WhatsApp Error 131037: Display Name Approval