“Error in message stream” appears when the connection through which ChatGPT delivers its response gradually is interrupted before the response is complete. It is almost never caused by what you wrote: the usual causes are congestion on OpenAI’s side, an unstable connection, a browser extension, or a thread that has become too long. Regenerating the response resolves most cases; when it does not, one check tells you whether the problem is even on your side.
The error
Error en el flujo de mensajes
(La misma avería con otras redacciones: «Transmisión interrumpida.
Esperando el mensaje completo», «Vaya...parece que algo ha salido
mal.» El síntoma es idéntico — la respuesta se detiene a medias
y nunca se completa.)Causes and fixes at a glance
| Cause | Fix |
|---|---|
| Congestion or an incident on OpenAI’s side. It affects all plans at once, including Plus and Pro, and is the most likely cause when the error repeats every few minutes. | Check status.openai.com. During an incident, nothing you change on your device affects the result — waiting is the solution. |
| Unstable connection: switching between Wi-Fi and mobile data, a VPN or corporate proxy, or weak mobile coverage. Streaming keeps one connection open for a long time, so it breaks where a normal page load would still succeed. | Disable the VPN or proxy and retry over another connection (Wi-Fi ⇄ mobile data). |
| Browser environment: an extension injected into the page, an outdated cache, or an expired session. | Retry in a private window. If it works there, the cause is an extension or the cache — disable extensions, clear site data, and sign in again. |
| The thread is too long or the attachments are too large. Each turn resends the entire conversation, so generation takes longer and is more likely to be interrupted. | Move the key points to a new chat. Split large files instead of attaching them in full. |
The three actions for the first 90 seconds
Regenerate the response → reload the page (on mobile, fully close the app and reopen it) → sign out and sign back in. A one-off interruption is resolved by one of these three, and one-off is the normal case. If it always stops at exactly the same point, however, that indicates one of the specific causes below is acting rather than an isolated glitch.
First decide whether the problem is on your side
This is the step other troubleshooting lists skip, and the one that saves the most time. Open status.openai.com. If there is an active incident, no local adjustment will fix it and waiting is the only option. If nothing is listed, the cause is local and the next step narrows it down. Doing this check before changing settings prevents spending twenty minutes clearing caches during an outage.
Isolate the local cause from the outside in
Proceed in this order, because each layer rules out everything before it: (1) turn off the VPN and proxy; (2) open a private window — this removes extensions and cache at once; (3) try another browser or device; (4) switch networks. The layer at which it starts working again is the cause. If the error appears only in long threads, none of the four is at fault: move the essentials to a new chat.
For developers: the same interruption in the API
When calling the API with stream: true, the same failure appears as a Server-Sent Events connection that ends without finish_reason. The HTTP status is 200 — everything was fine when the headers were sent — so checking only the status code does not detect it; under load, 429 and 529 overloaded_error also appear. Three things make it manageable: (1) treat a stream that ended without finish_reason as retryable, not as a complete response; (2) retry 429, 500, and 529 with exponential backoff plus jitter; (3) if a proxy is involved, check its idle timeout and disable response buffering — a proxy that buffers turns a working stream into a long hang. To narrow it down, stream first without a proxy:
# Transmitir directamente, sin proxy por medio, y ver dónde se detiene.
curl -N https://api.kunavo.com/v1/chat/completions \
-H "Authorization: Bearer $KUNAVO_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","stream":true,
"max_tokens":300,
"messages":[{"role":"user","content":"cuenta despacio del 1 al 20"}]}'If you’re calling through Kunavo
Kunavo is an AI API gateway, and an interrupted stream is an expected operating state there, not an exception. When a model has multiple configured origin channels and the first attempt fails, the request is retried through another channel within the same call, so a temporary upstream problem becomes a slightly slower success rather than an error. Failed requests are never billed. Because GPT and Claude are accessible with a single key, avoiding a saturated model means changing the model name, not the integration. The retry and backoff pattern for streaming is developed in LLM API streaming errors.
Frequently asked questions
“Error in message stream”—is it my fault?
Almost never. The message indicates that the connection carrying the response was interrupted before it finished. What you wrote does not cause it. The causes are load on OpenAI’s side, an unstable network, a browser extension or expired session, or a thread that has grown long enough for responses to time out.
What should I do if regenerating does not fix it?
First check status.openai.com — during an incident, nothing local helps. If there is no incident, open a private window on another network: that single test removes extensions, cache, and your usual connection at once. If it works there, add each component back until it breaks again. If it fails everywhere and only in one long conversation, move the essentials to a new chat.
Does it happen with other AI systems too?
The wording is specific to ChatGPT, but any assistant that delivers responses by streaming can be interrupted in the same way. Claude displays a message saying it could not generate the complete response; in a direct API call, it appears as an SSE stream ending without finish_reason, or under load as a 529 overloaded_error.
Why does it happen more often in long conversations?
Each turn resends the entire thread, so a long conversation means a longer generation sustained over a single open connection. The longer it remains open, the more opportunities there are for a proxy timeout, network hop, or upstream issue to break it. Starting a new chat with a summary of what matters usually helps more than any browser setting.
Related guides
- LLM streaming errors — SSE cutoffs, hanging streams and missing usage
- Claude API error 529 overloaded_error — what it is and how to absorb it
- Claude Prices in 2026: Pro, Max, the Per-Token API, and Which Is Cheaper
More error semantics live in the error reference; getting a key takes a minute via signing up and the authentication guide.