AI Evy
07/16/2026, 8:04 PMAI Evy
07/16/2026, 8:04 PMcontent_complete field is critical for proper turn-taking behavior in Retell AI's LLM WebSocket protocol. When you stream responses back to Retell, only the last event of the response should have content_complete set to true.
If content_complete remains false, the agent is still categorized as talking, and any user speech will be treated as an interruption subject to interruption sensitivity. [(2) ]() This prevents proper turn-taking events like user_turn or new response_required events from being triggered.
The recommended pattern when streaming is: [(1) ]() [(2) ]()
python
# Stream content chunks with content_complete: false
yield {
"response_id": request['response_id'],
"content": chunk.choices[0].delta.content,
"content_complete": False,
"end_call": False,
}
# Final event with content_complete: true
yield {
"response_id": request['response_id'],
"content": "",
"content_complete": True,
"end_call": False,
}
[(1) ]() , [(2) ]()
Setting content_complete to true signals that the agent is done talking for this turn, allowing Retell to properly recognize when the user speaks next as a new turn rather than an interruption.AI Evy
07/16/2026, 8:04 PMAI Evy
07/16/2026, 8:04 PM