What is the Response API
The Response API (/v1/responses) is OpenAI’s unified model-invocation interface, introduced in 2025. It consolidates capabilities that used to be scattered across Chat Completions, Assistants, and Tools APIs, letting you do all of the following in a single call:
- Multi-turn conversation and context management
- Built-in tool calls (web search, file search, code interpreter, computer use, and more)
- Custom function calls
- Chain-of-thought output from reasoning models (such as the o series)
- Multi-modal input and output for text, images, and audio
Core differences from Chat Completions
Stateful vs stateless
Chat Completions requires you to send the full message history on every request. The Response API lets you continue from the previous response directly with
previous_response_id, and the server manages the context for you.Unified input structure
Chat Completions uses a
messages array. The Response API uses an input field, which can be a string, a message array, or a multi-modal structure with images and files.Built-in tools
The Response API natively supports managed tools like
web_search, file_search, code_interpreter, and computer_use, so you do not have to implement them yourself.Transparent reasoning
For reasoning models such as o1 and o3, the Response API returns explicit
reasoning items in the output, making them easy to trace and debug.The simplest possible call
cURL
id: A unique ID for this response, used for continuationsoutput: An array of content items generated by the model (text, tool calls, reasoning, and so on)output_text: A convenience field with all text content concatenatedusage: Token consumption statistics
Multi-turn conversation: no more manual history stitching
Traditionally you send the fullmessages on every turn. The Response API only needs the previous id:
Python
Built-in tools: enable web search in one line
Python
file_search (RAG over uploaded files), code_interpreter (sandboxed code execution), and computer_use (browser/desktop control).
Streaming output
The Response API uses an event stream (Server-Sent Events) that returns structured events, which are easier to parse than the deltas in Chat Completions:Python
response.created, response.output_text.delta, response.tool_call.created, and response.completed.
When to use the Response API
When to stay on Chat Completions for now
- You already have a large codebase built around the
messagesstructure with no short-term migration payoff - You only need one-shot, stateless completions and no tools
- You depend on third-party wrappers that have not yet migrated to the Response API
Migration guidance
1
Replace the endpoint
Change
/v1/chat/completions to /v1/responses, and rename messages to input.2
Manage sessions with previous_response_id
Stop keeping the full history on the client. Store only the most recent
response.id.3
Replace in-house capabilities with built-in tools
Evaluate whether your custom search, RAG, and code execution can be swapped directly for
web_search, file_search, and code_interpreter.4
Adapt to the new event stream
If you use streaming, switch from delta parsing to dispatching on
event.type.