Streaming responses dropping chunks randomly

Nina Patel
Nina PatelFeb 22, 2026

I'm using streaming with the Chat Completions API and noticing that some chunks are being dropped, resulting in incomplete responses. This happens about 5-10% of the time.

const stream = await openai.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: prompt }],
  stream: true,
});

let fullResponse = ""; for await (const chunk of stream) { const content = chunk.choices[0]?.delta?.content || ""; fullResponse += content; }

The fullResponse sometimes ends mid-sentence. Is this a known issue? Am I handling the stream incorrectly?

2.8k views15 replies34 likesSolved
3 Replies
Maria Santos
Maria SantosStaffAccepted AnswerJun 28

We're aware of this issue with function calling and malformed JSON. The recommended solution is to use Structured Outputs (response_format with json_schema) which guarantees valid JSON output.

response = client.chat.completions.create(
    model="gpt-4o-2024-08-06",
    messages=[...],
    tools=[...],
    response_format={"type": "json_schema", ...}
)

Structured Outputs were specifically designed to solve this problem.

Alex Petrov

Confirmed - switched to Structured Outputs and haven't seen a single malformed JSON response in 50K+ requests. This should be the default recommendation.

Marcus Webb

Also had this issue. Structured Outputs fixed it completely. For anyone still on the older API, adding a JSON schema in the function definition also reduces errors significantly.

Log in to reply to this topic.