Empty incomplete_details from GPT-5 with max_output_tokens

Code:

response = client.responses.create(
    model="gpt-5",
    input=[
        {
            "role": "user",
            "content": "what is cell ?",
        }
    ],
    reasoning={
        "effort": "low",
    },
    text={"format": {"type": "text"}},
    max_output_tokens=200,
)

Here I got the incomplete response which expected because I have set max_output_tokens. But the issue is incomplete_details in response is null and also status is complete, which is not expected.

Response:

{
    "id": "resp_68b65c4ed0488190a0bd21a6fff1991108cd5796c3342f15",
    "created_at": 1756781646.0,
    "error": null,
    "incomplete_details": null,
    "instructions": null,
    "metadata": {},
    "model": "gpt-5-2025-08-07",
    "object": "response",
    "output": [
        {
            "id": "rs_68b65c4f87348190b80440b13861a94c08cd5796c3342f15",
            "summary": [],
            "type": "reasoning",
            "status": null
        },
        {
            "id": "msg_68b65c5082e48190a83636c52ee5de6508cd5796c3342f15",
            "content": [
                {
                    "annotations": [],
                    "text": "“Cell” can mean different things depending on context:\n\n- Biology: The basic structural and functional unit of living organisms. Cells can be prokaryotic (bacteria, no nucleus) or eukaryotic (plants, animals, fungi, with a nucleus).\n- Battery/electrochemistry: A single electrochemical unit that converts chemical energy into electrical energy; multiple cells make a battery.\n- Spreadsheet: A single box in a table (like in Excel or Google Sheets) where you enter data or formulas.\n- Jail: A small room",
                    "type": "output_text",
                    "logprobs": []
                }
            ],
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": true,
    "temperature": 1.0,
    "tool_choice": "auto",
    "tools": [],
    "top_p": 1.0,
    "max_output_tokens": 200,
    "previous_response_id": null,
    "reasoning": {
        "effort": "low",
        "generate_summary": null,
        "summary": null
    },
    "service_tier": "default",
    "status": "completed",
    "text": {
        "format": {
            "type": "text"
        },
        "verbosity": "medium"
    },
    "truncation": "disabled",
    "usage": {
        "input_tokens": 10,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 180,
        "output_tokens_details": {
            "reasoning_tokens": 64
        },
        "total_tokens": 190
    },
    "user": null,
    "background": false,
    "max_tool_calls": null,
    "prompt_cache_key": null,
    "safety_identifier": null,
    "store": true,
    "top_logprobs": 0
}

Expected Behaviour:

  1. incomplete_details should not be null
  2. status should be incomplete

Please let me know if I am missing something. Same requests with gpt-4.1 working as expected.

reference

gpt-4.1-mini @ 30:
{'reason': 'max_output_tokens'}

gpt-5-mini

gpt-5-mini @ 30, reasoning: minimal
{'reason': 'max_output_tokens'}

gpt-5-mini @ 30, reasoning: low
–Usage-- in/cached: 76/0; out/reasoning:0/0 (apparently free reasoning)
{'reason': 'max_output_tokens'}

gpt-5-mini @ 100, reasoning: minimal - truncated seen output
–Usage-- in/cached: 76/0; out/reasoning:95/64
{'reason': 'max_output_tokens'}

So that model works


gpt-5

Strange results. It looks like the reasoning tokens is billed in increments of 64, possibly to obfuscate what you are actually paying for and how much you are being inspected and judged by the AI on policy. I can get 0/0, 64/64, 128/128 for no response cases, and then values like 125 out / 64 reasoning with a seen response.

Requesting 63 max tokens, a bill of 0 reasoning; requesting 64, a bill of 64.

Minimal would previously have low values like “8”.

Issue with gpt-5: confirmed

In no case of terminating within reasoning or terminating within a final response was there ever a value for incomplete_details beside “null”, making RESTful API calls.

1 Like