What is the Response API
The Response API (/v1/responses) is the unified model endpoint OpenAI shipped in 2025. It consolidates capabilities that used to be spread across Chat Completions, Assistants, and Tools into a single call, so a single request can handle:
- Multi-turn conversation and context management
- Built-in tools (web search, file search, code interpreter, computer use)
- Custom function calling
- Reasoning traces from reasoning models (the o-series)
- Multimodal input and output (text, images, audio)
Key differences from Chat Completions
Stateful vs stateless
Chat Completions requires you to resend the full history on every request. The Response API lets you continue from the last response via
previous_response_id, and manages context server-side.Unified input
Chat Completions uses a
messages array. The Response API uses a single input field that accepts a string, a message array, or a multimodal payload with images and files.Built-in tools
The Response API natively supports hosted tools such as
web_search, file_search, code_interpreter, and computer_use, so you no longer need to build them yourself.Transparent reasoning
For reasoning models like o1 and o3, the Response API returns explicit
reasoning items in the output, making the chain of thought easy to inspect and debug.The simplest possible call
cURL
id: unique ID for this response, usable to continue the conversationoutput: array of items the model produced (text, tool calls, reasoning)output_text: convenience field with all text items concatenatedusage: token accounting
Multi-turn conversations without manual history
The old pattern required resending the fullmessages array every turn. With the Response API you just pass the previous id:
Python
Built-in tools: web search in one line
Python
file_search (RAG over uploaded files), code_interpreter (sandboxed execution), and computer_use (browser and desktop control) work the same way.
Streaming output
The Response API streams structured Server-Sent Events, which is easier to consume than Chat Completions’ raw deltas:Python
response.created, response.output_text.delta, response.tool_call.created, and response.completed.
When to use the Response API
Reasons to stay on Chat Completions for now
- You have a large codebase built on
messagesand no immediate migration payoff - You only need stateless, one-shot completions with no tools
- You depend on a third-party wrapper that hasn’t adopted the Response API yet
Migration guide
1
Swap the endpoint
Replace
/v1/chat/completions with /v1/responses and rename messages to input.2
Manage sessions with previous_response_id
Stop persisting full histories on the client. Keep only the most recent
response.id.3
Adopt built-in tools
Evaluate whether your custom search, RAG, or code execution can be replaced with
web_search, file_search, or code_interpreter.4
Migrate the event stream
If you use streaming, switch delta parsing to a dispatch based on
event.type.