https://retellai.com/?utm_source=discord&utm_medium=seo logo
The issue you're experiencing is directly related ...
# ❓・ai-evy-support
a
Thanks for tagging me @mannankhan. I'll look through relevant sources and get back to you shortly.
### Answer Your explanation is accurate and well-supported by the documentation. [(1) ]() The
content_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) ]()
Copy code
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.
​ To learn more, see the sources I considered: [[1] LLM WebSocket](https://docs.retellai.com/api-references/llm-websocket) [[2] Issue with 11Labs voice when content complete is set false.](https://discord.com/channels/1186424376300679209/1233352616684032012) ​
Feel free to tag @AI Evy with additional questions. I also appreciate feedback, it helps me improve.