Summary
When using reasoning_effort with models that have mode: "responses" in LiteLLM, the parameter is automatically converted to include
reasoning.summary. This causes 400 errors for OpenAI users with unverified organizations, since only reasoning.summary requires verification.
Current
In litellm/completion_extras/litellm_responses_transformation/transformation.py (lines 541-551):
def _map_reasoning_effort(self, reasoning_effort: str) -> Optional[Reasoning]:
if reasoning_effort == "high":
return Reasoning(effort="high", summary="detailed") # ← Always adds summary
elif reasoning_effort == "medium":
return Reasoning(effort="medium", summary="auto") # ← Always adds summary
elif reasoning_effort == "low":
return Reasoning(effort="low", summary="auto") # ← Always adds summary
elif reasoning_effort == "minimal":
return Reasoning(effort="minimal", summary="auto") # ← Always adds summary
return None
OpenAI's official recommendations:
Error Message
{
"error": {
"message": "Your organization must be verified to generate reasoning summaries.
Please go to: https://platform.openai.com/settings/organization/general
and click on Verify Organization.",
"type": "invalid_request_error",
"param": "reasoning.summary",
"code": "unsupported_value"
}
}
Why This Matters
- reasoning.summary is optional - It's only for debugging/auditing the reasoning process, not required for model functionality
- Not all users are verified - Many individual developers don't have (or need) verified organizations
- reasoning_effort is useful alone - Users want to control reasoning computation without needing summaries
- No workaround exists - Users can't use reasoning_effort at all if their org isn't verified
Proposed Solutions
Option 1: Make summary parameter optional (Recommended)
Allow users to control whether summary is included:
def _map_reasoning_effort(
self,
reasoning_effort: str,
include_summary: bool = False # ← New parameter, defaults to False
) -> Optional[Reasoning]:
if reasoning_effort == "high":
summary = "detailed" if include_summary else None
return Reasoning(effort="high", summary=summary)
elif reasoning_effort == "medium":
summary = "auto" if include_summary else None
return Reasoning(effort="medium", summary=summary)
# ... etc
Usage:
Without summary (works for unverified orgs)
completion(
model="gpt-5-codex",
messages=[...],
reasoning_effort="high" # No summary added
)
With summary (requires verified org)
completion(
model="gpt-5-codex",
messages=[...],
reasoning_effort="high",
include_reasoning_summary=True # Explicitly opt-in
)
Option 2: Add separate reasoning_summary parameter
completion(
model="gpt-5-codex",
messages=[...],
reasoning_effort="high",
reasoning_summary="detailed" # Optional
)
Recommendation
Option 1 is because:
- ✅ Backward compatible (defaults to False)
- ✅ Explicit opt-in (follows best practices)
- ✅ Clear API design
Related
Relevant log output
Are you a ML Ops Team?
No
What LiteLLM version are you on ?
v1.77.7
Twitter / LinkedIn details
No response
Summary
When using
reasoning_effortwith models that havemode: "responses"in LiteLLM, the parameter is automatically converted to includereasoning.summary. This causes 400 errors for OpenAI users with unverified organizations, since onlyreasoning.summaryrequires verification.Current
In
litellm/completion_extras/litellm_responses_transformation/transformation.py(lines 541-551):OpenAI's official recommendations:
reasoning.summaryshould be opt-in, not automatically addedError Message
{ "error": { "message": "Your organization must be verified to generate reasoning summaries. Please go to: https://platform.openai.com/settings/organization/general and click on Verify Organization.", "type": "invalid_request_error", "param": "reasoning.summary", "code": "unsupported_value" } }Why This Matters
Proposed Solutions
Option 1: Make summary parameter optional (Recommended)
Allow users to control whether summary is included:
Usage:
Without summary (works for unverified orgs)
With summary (requires verified org)
Option 2: Add separate reasoning_summary parameter
Recommendation
Option 1 is because:
Related
reasoning_effort='high'causes 400 errors with OpenAI Responses API models for unverified organizations OpenHands/OpenHands#11552Relevant log output
Are you a ML Ops Team?
No
What LiteLLM version are you on ?
v1.77.7
Twitter / LinkedIn details
No response