Realtime API: No Response After Function Calling Until Next User Turn (gpt-4o-realtime-preview-2025-06-03)

Hi everyone,

I’m implementing function calling using the OpenAI Realtime API (model: gpt-4o-realtime-preview-2025-06-03) following the official documentation. However, I’m experiencing a blocking issue: After a tool/function is called and the function_call_output is returned, the model does NOT send a response to the user unless the user speaks/interacts again. Even after sending a dummy user message (as a workaround), the assistant still doesn’t respond automatically.


What I’m doing:

  1. I listen for the "response.function_call" event.
  2. I reply with a "conversation.item.create" containing a "function_call_output" (with a valid call_id, output as JSON string).
  3. I immediately send a "response.create" event as the docs specify.
  4. (Workaround): I also send a “dummy” "conversation.item.create" message and another "response.create", to try and force a response.

What actually happens:

  • I see the following sequence in the event log:
    • response.function_call_arguments.done
    • (send function_call_output & response.create)
    • (send dummy message & response.create)
    • No response.audio.delta or response.text.delta
    • No actual assistant response is emitted
  • The dialogue is “stuck” — only after a new, real user input does the assistant finally reply.

Sample log:

EVENT response.function_call: ...
(Sent function_call_output)
(Sent response.create)
EVENT response.done: ...
(Sent dummy user message)
(Sent response.create)
# NO assistant response at all until real user input!

(Happy to provide the full logs, code, or event objects if needed.)


What I’ve tried:

  • Following the OpenAI docs step by step
  • Waiting for events after output
  • Sending extra response.create
  • Sending artificial/dummy user turns
  • Changing output format, role, session settings, etc.

Expected Behavior:

After sending function_call_output (and response.create), the model should naturally respond to the user without them having to provide another input.


Actual Behavior:

The model only responds after a real (manual) user input, not after function_call_output, even if a dummy message is sent.


Is this a known limitation or a bug?

Is there a recommended workaround that works right now, or can OpenAI confirm this as a limitation that will be fixed in a future release? Would appreciate any advice or insights from those who got tools working “seamlessly” with real-time turns!

Thank you in advance!


Tech:

  • Model: gpt-4o-realtime-preview-2025-06-03
  • Python SDK: openai.AsyncOpenAI
  • Endpoint: Realtime API, using function calling as described in docs

(Feel free to ping me for code snippets or deeper debug info.)