The WhatsApp Cloud API does not accept WebP in image messages: image messages take image/jpeg and image/png only, and image/webp is valid only in sticker messages (100 KB static, 500 KB animated), per Meta's documentation checked 18 October 2026. In our 2026 production traffic, a WebP image sent to POST /{phone-number-id}/messages still returned HTTP 200 with a message id, and error 131053 arrived later in a statuses webhook.
The format rule is documented: "WebP images can only be sent in sticker messages" (Meta, supported media types, checked 18 October 2026). The timing of the rejection is not documented. This post gives the media limits table, the failure sequence, the webhook shape to parse, and the checks that catch the problem before the send.
Which media types and sizes does the WhatsApp Cloud API accept?
Five message types carry media: audio, document, image, sticker and video, and each has its own MIME list and size ceiling. Every cell below was read on Meta's supported media types reference on 18 October 2026.
| Type | MIME types | Max size | Notes |
|---|---|---|---|
| Audio | audio/aac, audio/amr, audio/mpeg, audio/mp4, audio/ogg | 16 MB | audio/ogg is accepted with OPUS codecs only. Base audio/ogg is not supported. Mono input only. |
| Document | text/plain, application/pdf, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-powerpoint, application/vnd.openxmlformats-officedocument.presentationml.presentation | 100 MB | Extensions: .txt, .pdf, .xls, .xlsx, .doc, .docx, .ppt, .pptx. |
| Image | image/jpeg, image/png | 5 MB | "Images must be 8-bit, RGB or RGBA." No other image format is listed. |
| Static sticker | image/webp | 100 KB | "WebP images can only be sent in sticker messages." |
| Animated sticker | image/webp | 500 KB | Same rule as the static sticker. |
| Video | video/mp4, video/3gpp | 16 MB | "Only H.264 video codec and AAC audio codec supported." Single audio stream or no audio stream only. |
Two more notes from the same page matter in practice. Android WhatsApp clients do not support video encoded with the H.264 High profile and B-frames, so Meta recommends the Main or Baseline profile without B-frames. The maximum file size for incoming media messages is 100 MB, and a larger customer file triggers error 131052 (Meta, media page, checked 18 October 2026).
Meta also states that an uploaded media file is kept for 30 days unless you delete it sooner, and that the media id returned by the upload expires after 30 days (Meta, media page, checked 18 October 2026). Re-upload anything you reuse for longer than that.
How do you upload media with POST /{phone-number-id}/media?
You reference a file in a message either by a media id returned from an upload or by a public link. The upload endpoint is POST https://graph.facebook.com/<API_VERSION>/<PHONE_NUMBER_ID>/media with a multipart body (Meta, media page, checked 18 October 2026). Three form fields are required: file (with its MIME type set), type (the MIME type, as in Meta's own example) and messaging_product set to whatsapp. The response is {"id": "<MEDIA_ID>"}.
Then send the id with POST /{phone-number-id}/messages:
Meta's media page lists a MIME type mismatch as a common cause of error 131053 and tells you to make sure the file extension matches the actual file type. A WebP file renamed to .jpg is therefore a plausible second route to the same error. We have not reproduced that case ourselves.
Why did my WhatsApp message fail after a 200 response?
Media errors are reported asynchronously, so the send call can succeed and the delivery can still fail. Meta's error codes page says Cloud API errors are returned "either synchronously as a Graph API response, asynchronously via Webhook" and advises you to "monitor both the Graph API response and the messages webhook for error handling" (Meta, error codes, checked 18 October 2026).
The WebP case is a first-party production observation from 2026, not a documented behaviour. The messages call returned 200 with a wamid, and the rejection arrived minutes later in a statuses webhook as 131053, with error_data.details reading "WebP image uploads are not currently supported." Nothing between your server and the webhook reports a problem, so a format error that happens on every attempt reads like intermittent flakiness.
First-party production observation, 2026. Meta documents the format rule and the 131053 code, not the timing of the rejection.
What is WhatsApp error 131053?
Error 131053 means the media in your outbound message could not be uploaded. Meta's error codes page gives the details as "Unable to upload the media used in the message." and the description as "The media could not be uploaded for one or more reasons, such as an unsupported media type." The solution it lists is "Inspect any media files that are causing errors and confirm that they are in fact supported." (Meta, error codes, checked 18 October 2026).
The neighbouring code 131052, "Unable to download the media sent by the user", covers the opposite direction: media a customer sent you that could not be downloaded. Meta's solution there is to ask the user to send the file by a non-WhatsApp method. Both sit in the 1310xx media range, which is why they get confused.
| Code | Direction | Meta's description | Meta's solution |
|---|---|---|---|
| 131052 | Inbound, a customer sent you media | The media included in the WhatsApp user's message could not be downloaded. | Ask the user to send the file by a non-WhatsApp method. |
| 131053 | Outbound, media in your message | The media could not be uploaded for one or more reasons, such as an unsupported media type. | Inspect the media files and confirm they are supported. |
Meta's page lists no HTTP status and no title for either code. The details string you receive for a given cause, such as the WebP text above, comes from our traffic, and Meta can reword it.
What does the failed statuses webhook look like?
A failed outbound message arrives in the messages webhook field as an entry in value.statuses. The documented shape has id, status, timestamp, recipient_id and an errors array, and each error carries code, title, message and error_data.details (Meta, status webhook reference, checked 18 October 2026). Meta states that errors is only included if the message failed to send or deliver, and that title and message hold the same value.
The payload below is an example assembled from that documented shape, not a captured webhook. Ids and phone numbers are placeholders. The code and details values are the 131053 values we observed in 2026. Meta publishes no title text for this code, so <ERROR_TITLE> stays a placeholder.
Match the webhook to the send on statuses[].id, which is the wamid the messages call returned. Handle status: "failed" as a state change on a message you already recorded as sent.
How do you stop a WebP image from reaching the send call?
Check the format before you call the API, because the send call did not check it for us in 2026. Three checks cover the cases in this post:
- 1.Read the file's real content type, not its extension. A WebP renamed to
.jpgis a MIME mismatch, which Meta lists as a common cause of 131053. - 2.Convert WebP to JPEG or PNG for
imagemessages. Keep WebP only forstickermessages, within 100 KB (static) or 500 KB (animated). - 3.Enforce the other limits from the table: 5 MB and 8-bit RGB or RGBA for images, 16 MB for audio and video, H.264 plus AAC for video, OPUS-only mono for OGG audio.
Then treat the statuses webhook as the outcome. A message is delivered when you see delivered, not when the send returned 200. If your product shows "sent" the moment the call returns, a failed status has to be able to flip it. Webhook authenticity is a separate check, covered in webhook signature verification.
How can you reproduce the WebP failure yourself?
Send a small WebP as an image message to a test number you control, record the HTTP response, and capture the next statuses webhook. Compare the code and details with the values above. Then send the same file as a sticker to see the other side of the rule. SocialAPI.ai covers WhatsApp alongside the other messaging platforms, see the WhatsApp platform page.
Questions developers ask about WhatsApp Cloud API media
- Does the WhatsApp Cloud API support WebP images?
- Only as stickers. Meta's supported media types page, checked 18 October 2026, lists image/webp for static stickers (100 KB) and animated stickers (500 KB) and states that WebP images can only be sent in sticker messages. Image messages accept image/jpeg and image/png.
- What is WhatsApp error 131053?
- Error 131053 means the media in an outbound message could not be uploaded, for reasons such as an unsupported media type. Meta's error codes page, checked 18 October 2026, tells you to inspect the media files and confirm they are supported. It arrives in the statuses webhook.
- What is the maximum image size for the WhatsApp Cloud API?
- 5 MB for image messages, in image/jpeg or image/png, 8-bit RGB or RGBA (Meta, checked 18 October 2026). Other limits: 16 MB for audio and video, 100 MB for documents, 100 KB for static stickers and 500 KB for animated stickers.
- Why did my WhatsApp message fail after a 200 response?
- A 200 from POST /{phone-number-id}/messages means the request was accepted, and media errors can arrive afterwards in a statuses webhook with status failed. Meta advises monitoring both the Graph API response and the webhook. In our 2026 production traffic, a WebP image message returned 200 and then failed with 131053.
- What is the difference between WhatsApp errors 131052 and 131053?
- 131052 is inbound: media a customer sent you could not be downloaded. 131053 is outbound: media in your message could not be uploaded. Both are documented on Meta's error codes page, checked 18 October 2026.
Every Meta claim traces to a page on developers.facebook.com, checked 18 October 2026. The WebP 200-then-fail behaviour is a first-party production observation from 2026, not a Meta statement, and the webhook payload is an example assembled from the documented shape. Meta, WhatsApp Cloud API media (supported media types, upload endpoint, 30-day retention, incoming 100 MB limit), Meta, WhatsApp error codes (131052, 131053, sync versus async errors), Meta, messages webhook status reference (failed status payload)