Messenger error 1200: Temporary send message failure
Last verified against Meta for Developers - Messenger Platform error codes
Temporary send message failure. Please try again later.What error 1200 means
Code 1200 is the Messenger Platform's internal error: "Temporary send message failure. Please try again later." Meta's own Send API error documentation filed it under Internal Errors, the only code in that bucket, and the message means exactly what it says. The failure is on Meta's side or in the transient path between your request and delivery; your request was well-formed, authenticated, permitted, in-window and addressed to a reachable person, and the platform still could not send it right now.
That makes 1200 the one Messenger error where a retry is not just acceptable but the designed response. It is also rare enough in steady state that its frequency is a useful signal: isolated 1200s are background noise; a burst of them usually correlates with a Meta platform incident, which you can confirm on the Meta Status dashboard before touching your own code. During large incidents 1200 often appears alongside code 1 ("unknown error") and code 2 ("unexpected error, please retry"), the Graph API's generic transient pair.
The engineering risk with 1200 is not the error itself but naive retry logic. A tight retry loop turns a five-minute platform blip into a self-inflicted rate-limit problem (613 or 4), and a retry without idempotency can double-send when the first attempt actually succeeded after the response timed out. Retries need backoff, jitter, a retry budget, and deduplication keyed on your own message identifier.
What is NOT wrong: everything you control. Do not rotate tokens, resubmit for review, or rewrite payloads in response to 1200; if the error persists beyond your retry budget, capture the fbtrace_id values and open a Developer Support ticket, that trace is what lets Meta find the request in their logs.
What it looks like
{
"error": {
"message": "Temporary send message failure. Please try again later.",
"type": "OAuthException",
"code": 1200,
"fbtrace_id": "Fz54k3GZrio"
}
}Why it happens
- A transient failure inside Meta's messaging infrastructure while processing the send.
- A platform incident; bursts of 1200 across all your Pages usually track outages visible on the Meta Status dashboard.
- Momentary backend timeouts under load spikes on Meta's side.
- Occasionally, a problematic conversation state that resolves itself within minutes.
How to fix Messenger error 1200
- 1Retry with exponential backoff and jitter: for example 5s, 25s, 2m, 10m, with a cap on total attempts.
- 2Make the retry idempotent: key each logical message with your own ID and drop the retry if a success for that key already landed.
- 3Check metastatus.com (Meta Status) during bursts; if an incident is open, pause the queue rather than burning retries.
- 4Keep 1200 out of your alerting noise floor with a rate threshold, alert on sustained elevation, not single occurrences.
- 5If a specific conversation returns 1200 for hours while others succeed, collect the fbtrace_id set and file a Developer Support bug.
How to stop it recurring
You cannot prevent Meta-side blips; you can make them invisible. Send through a durable queue so a failed attempt is a state transition, not a lost message, with backoff, retry budgets and idempotency built in. Separate the retryable class (1200, 1, 2) from throttling (back off harder) and from permanent errors (never retry) in one error-classification function. Where each code falls is summarized in the Messenger troubleshooting guide, with the platform's ceilings in the limits reference.
Official reference: Meta for Developers - Messenger Platform error codes. See all Messenger error codes or the Messenger limits and quotas.
Related codes
- 1: An unknown error occurredAn unknown error occurred.
- 2: Unexpected error - retry laterAn unexpected error has occurred. Please retry your request later.
- 613: Calls to this API have exceeded the rate limitCalls to this API have exceeded the rate limit
- 4: Application request limit reachedRate Limit error: Application request limit reached.
Error 1200 - quick answers
What does Messenger error 1200 mean?
Code 1200 is the Messenger Platform's internal error: "Temporary send message failure. Please try again later." Meta's own Send API error documentation filed it under Internal Errors, the only code in that bucket, and the message means exactly what it says.
How do I fix Messenger error 1200?
1. Retry with exponential backoff and jitter: for example 5s, 25s, 2m, 10m, with a cap on total attempts. 2. Make the retry idempotent: key each logical message with your own ID and drop the retry if a success for that key already landed. 3. Check metastatus.com (Meta Status) during bursts; if an incident is open, pause the queue rather than burning retries. 4. Keep 1200 out of your alerting noise floor with a rate threshold, alert on sustained elevation, not single…
Can I retry after error 1200?
Yes - this is a retryable condition. Back off (start around one second and double on each attempt, with jitter) and watch for a retry-after hint from the platform before resending.
Stop debugging Messenger by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.