Responses API.
You do not need to migrate immediately. Stay on Chat Completions if your current integration already works and the migration cost is not worth it yet.
Mental Model Shift
| Chat Completions | Responses |
|---|---|
messages[] | input string or typed input items |
choices[0].message | output item array |
delta.content | semantic SSE events like response.output_text.delta |
tool_calls | function_call items |
role: tool | function_call_output items |
| repeated conversation history | input replay or previous_response_id |
When To Stay On Chat Completions
- you already have a large OpenAI chat integration that would gain little from migration right now
- your SDK wrappers are deeply tied to
choices[0].message
When To Migrate
- you are adding new tools or richer multimodal flows
- you want the primary platform surface going forward
- you want docs and examples that match the main product path
Field mapping
| Chat Completions field | Responses equivalent |
|---|---|
messages | input |
system message | instructions or a system / developer input message |
tools | tools |
tool_choice | tool_choice |
stream: true | stream: true |
tool result message with role: tool | function_call_output input item |
Simple request conversion
Chat Completions
Responses
Tool-calling migration notes
tool_callsbecomefunction_callitems inoutput[]- follow-up tool results become
function_call_outputitems in the nextinput - do not assume the final assistant text is always
output[0]
Streaming migration notes
- Chat Completions streams chat deltas
- Responses streams semantic events such as
response.output_text.delta - if your client parses raw delta text today, update it before switching APIs