O3 model in API often omits reasoning summary despite reasoning.summary: detailed

I’m experiencing an issue with the o3 model when using the new responses endpoint.

Even though I explicitly request detailed reasoning summaries with the following configuration:

"reasoning": {
  "effort": "medium",
  "summary": "detailed"
}

In most cases (more than 90% of the time), the model does not return any reasoning summary.

Here is an example of a typical response I receive:

{
    "id": "resp_bGl0ZWxsbTpjdXN0b21fbGxtX...",
    "created_at": 1751638574,
    "error": null,
    "incomplete_details": null,
    "instructions": "...",
    "metadata": {},
    "model": "o3-2025-04-16",
    "object": "response",
    "output": [
        {
            "id": "rs_6867e2304ac481a...",
            "summary": [], //<--empty reasoning summary
            "type": "reasoning",
            "encrypted_content": null,
            "status": null
        },
        {
            "arguments": {
                "query": "..."
            },
            "call_id": "call_h1pEYvnkW...",
            "name": "function_name",
            "type": "function_call",
            "id": "fc_6867e23de5e0...",
            "status": "completed"
        }
    ],
    "parallel_tool_calls": true,
    "temperature": 1,
    "tool_choice": "auto",
    "tools": [...],
    "top_p": 1,
    "max_output_tokens": null,
    "previous_response_id": null,
    "reasoning": {
        "effort": "medium",
        "summary": "detailed"
    },
    "status": "completed",
    "text": {
        "format": {
            "type": "text"
        }
    },
    "truncation": "disabled",
    "usage": {
        "input_tokens": 6661,
        "input_tokens_details": {
            "audio_tokens": null,
            "cached_tokens": 0,
            "text_tokens": null
        },
        "output_tokens": 560,
        "output_tokens_details": {
            "reasoning_tokens": 512,
            "text_tokens": null
        },
        "total_tokens": 7221
    },
    "user": null
}

So far I haven’t found a consistent workaround. Is anyone else experiencing this behavior?

Have you found any solution, or is it a known issue?

Updates on this? Facing the same issue!

I am also experiencing the same issue.

Any news here? I am also running into this issue! I’d say we get reasoning summaries 25% of the time. Very frustrating UX to sometimes be able to show the reasoning summaries but then other times the user’s just waiting for minutes in a generic loading state.

Not from my side… as a workaround I added an intermediate LLM layer where, if the summary is empty, the LLM generates a “fake” reasoning for UI purposes.

This is very frustrating :frowning:

Same here when using the responses endpoint. Despite setting "reasoning": { "effort": "medium", "summary": "detailed" }, the summary field is frequently empty. I’ve tried adjusting effort and temperature, but it didn’t help. Might be a backend bug.

Very sorry for the delayed response. If not already, could you share this with support@openai.com? Thank you

Hi Colm, I just sent the email as you suggested. Thanks. What are the next steps?

When you get feedback, please share it with everyone, if possible pin my name.

That’s great, thanks for confirming. Our team will revert as soon as possible. Appreciate your continued patience while they dig in!

Struggling with the same issues. “Empty reasoning item” for o3 API calls. Thank you for your prompt response, hope it’s a simple fix.

Same problem here, I was hoping to get it working for debugging purposes
Edit: Even though I’m using o4-mini, not o3, this problem is still present

We’re seeing this happen quite frequently when the model decides to call tools. Summaries appear most of the time before text responses, but it seems there is no summary returned directly before a tool call (though not all the time!).

Based on the latency we’re seeing, it seems that the reasoning might not be long enough to even warrant a summary, which is why maybe it’s being hidden?

From an API consumer standpoint, it certainly feels odd to have empty reasoning events streamed back to us, though we can use those intermediate events to show the model is “thinking” before the tool call streams in.

Hi Adam,

To reiitterate the response from OpenAI Support:

Very sorry for the delayed response. If not already, could you share this with support@openai.com? Thank you

Also, it’s my understanding that the issue that caused this was rolled back, so should be fixed now.

Hi Colm, we are communicating with OpenAI support and I think that we are doing that whin an AI because he/she/it keeps to saying me the same stuff…

I will provide additional info when something is going to happen…

Thanks for everyone’s patience while we looked into this. Our team has confirmed that the missing reasoning.summary output with o3 in the Responses API was likely due to a model-side behavior issue. We saw it occur more often in longer, multi-turn conversations, and especially when the model made tool calls before a final text response.

The underlying change that introduced this behavior has since been rolled back, and summaries should now appear as expected. If you still see empty summaries after this point, it would be great if you could share recent request IDs with support@openai.com so we can investigate further.

Definitely not fixed for me. I’ll send an example to support now. Thanks!

Chris

Not fixed for me either: I opened an email thread via support@openai.com but it seems like that we get responses from AI and I am very confused…

It might take some back and forth, but you should be able to ask the bot to route you to the right (human) team!

FWIW, I’m seeing exactly the same behavior with GPT-5. Very few reasoning summaries (mostly empty to me and in the logs).

Chris