v2
latestOpenAPI 3.1.02026-08-075421692.0 MBDownload WhatsApp media
Streams the binary for a WhatsApp attachment. This is the endpoint the url on a WhatsApp attachments[] entry points at, in both the message.received webhook and the List messages response.
This is an authenticated endpoint, not a public link. Send Authorization: Bearer <your API key> exactly as you would for any other call. Passing the URL straight to a browser, an LLM vision API, or a no-code "download file" step without the header returns 401. This is the most common integration mistake on this endpoint, and it differs from Instagram, Facebook and Telegram, whose attachments[].url is a direct CDN link that needs no header.
Fetch on receipt, not lazily. WhatsApp media lives in Meta's media store, not ours, and it is removed after a limited retention window (currently 7 days, and Meta has been dropping some inbound media sooner). Once Meta drops it the media is unrecoverable and this endpoint answers 400 permanently, so retrying will never succeed. Download and store the bytes when the webhook arrives.
Path parameters
The media id from attachments[].payload.id.
Query parameters
The WhatsApp account that received the media.
Response
The media binary, streamed with its original content type.