Messenger error 100: Failed to fetch the file from the URL
Last verified against Meta for Developers - Messenger Platform error codes
Failed to fetch the file from the url. Check that the URL is valid, with a valid SSL certificate, valid file size, and that the server is responding fast enough to avoid timeouts.What error 100 means
Code 100 with subcode 2018008 means Meta's fetcher could not download the attachment you referenced by URL. When you send media with payload.url, the platform does not trust your bytes, it fetches them itself from your server, and that fetch is subject to the conditions the error message enumerates: a valid URL, a valid SSL certificate, an acceptable file size, and a server that responds fast enough to avoid timeouts.
Each clause is a distinct failure class. "Valid URL" fails on localhost addresses, intranet hosts, redirects to login pages, and URLs with unencoded characters. "Valid SSL certificate" fails on self-signed, expired, or incomplete-chain certificates, browsers forgive an incomplete chain because they cache intermediates; Meta's fetcher does not. "Valid file size" ties to the platform's 25 MB attachment cap. And "responding fast enough" catches cold serverless functions, slow image resizers, and CDNs that block unfamiliar user agents; for video specifically, the related 2018294 documents a 75-second ceiling on the fetch.
The classic production trap is asset URLs that work in the office: behind a VPN, allow-listed by IP, or served by a staging host the internet cannot reach. Meta fetches from its own infrastructure, so the test that matters is a plain curl from a cloud host with no special access. The alternative that removes this class of failure entirely is the Attachment Upload API: upload once, get a reusable attachment_id, and stop depending on your edge at send time.
What it looks like
{
"error": {
"message": "(#100) Failed to fetch the file from the url",
"type": "OAuthException",
"code": 100,
"error_subcode": 2018008,
"fbtrace_id": "BLBz/WZt8dN"
}
}Why it happens
- Asset URLs not publicly reachable (localhost, VPN-only, IP-allow-listed, staging hosts).
- Expired, self-signed, or incomplete-chain TLS certificates on the asset host.
- Files exceeding the 25 MB attachment limit.
- Slow responses: cold starts, on-the-fly image processing, or CDNs challenging bot user agents.
- Redirect chains ending at HTML (login or error pages) instead of the file.
How to fix Messenger error 100
- 1Fetch the exact URL with curl -sSL -o /dev/null -w "%{http_code} %{time_total}" from a cloud machine; anything but a fast 200 with the right content type explains the error.
- 2Test the host's TLS chain (e.g. SSL Labs); fix incomplete chains and expired certificates.
- 3Compress or transcode media under 25 MB; for video, well under, so the fetch finishes inside 75 seconds.
- 4Whitelist or exempt Meta's fetcher in bot-protection and hotlink rules on your CDN.
- 5Switch to the Attachment Upload API with is_reusable, and send attachment_id instead of url.
How to stop it recurring
Serve bot media from a boring place: public CDN, long-lived URLs, correct content types, no auth, no geo rules. Upload frequently used assets once via the Attachment Upload API and reference IDs thereafter, faster for users and immune to your edge's moods. The media size and timeout numbers are tabulated in the Messenger limits reference; delivery debugging is in the troubleshooting guide.
Official reference: Meta for Developers - Messenger Platform error codes. See all Messenger error codes or the Messenger limits and quotas.
Related codes
- 100: Upload attachment failureUpload attachment failure. A common way to trigger this error is that the…
- 100: Attachment size exceeds allowable limitAttachment size exceeds allowable limit
- 100: Video upload timed out or corruptedVideo upload timed out or video is corrupted. Note that if the video can't be…
- 100: Invalid attachment ID or not ownedPossible invalid ID or you do not own the attachment.
Error 100 - quick answers
What does Messenger error 100 mean?
Code 100 with subcode 2018008 means Meta's fetcher could not download the attachment you referenced by URL.
How do I fix Messenger error 100?
1. Fetch the exact URL with curl -sSL -o /dev/null -w "%{http_code} %{time_total}" from a cloud machine; anything but a fast 200 with the right content type explains the error. 2. Test the host's TLS chain (e.g. SSL Labs); fix incomplete chains and expired certificates. 3. Compress or transcode media under 25 MB; for video, well under, so the fetch finishes inside 75 seconds. 4. Whitelist or exempt Meta's fetcher in bot-protection and hotlink rules on your CDN. 5. Switch to…
Stop debugging Messenger by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.