web_search, image_generation, file_search, code_interpreter, remote MCP servers, as well as your own custom functions, within the span of one API request.store: true to maintain state from turn to turn, preserving reasoning and tool context from turn-to-turn.| CAPABILITIES | CHAT COMPLETIONS API | RESPONSES API |
|---|---|---|
| Text generation | ✓ | ✓ |
| Audio | ✓ | Coming soon |
| Vision | ✓ | ✓ |
| Structured Outputs | ✓ | ✓ |
| Function calling | ✓ | ✓ |
| Web search | ✓ | ✓ |
| File search | x | ✓ |
| Computer use | x | ✓ |
| Code interpreter | x | ✓ |
| MCP | x | ✓ |
| Image generation | x | ✓ |
| Reasoning summaries | x | ✓ |
message is a type of Item, as is a function_call or function_call_output. Unlike a Chat Completions Message, where many concerns are glued together into one object, Items are distinct from one another and better represent the basic unit of model context.choices, using the n param. In Responses, we've removed this param, leaving only one generation.message, you receive a typed response object with its own id. Responses are stored by default. Chat completions are stored by default for new accounts. To disable storage when using either API, set store: false.choices, each containing a message. In Responses, you receive an array of Items labled output.{
"id": "chatcmpl-C9EDpkjH60VPPIB86j2zIhiR8kWiC",
"object": "chat.completion",
"created": 1756315657,
"model": "gpt-5-2025-08-07",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Under a blanket of starlight, a sleepy unicorn tiptoed through moonlit meadows, gathering dreams like dew to tuck beneath its silver mane until morning.",
"refusal": null,
"annotations": []
},
"finish_reason": "stop"
}
],
...
}{
"id": "resp_68af4030592c81938ec0a5fbab4a3e9f05438e46b5f69a3b",
"object": "response",
"created_at": 1756315696,
"model": "gpt-5-2025-08-07",
"output": [
{
"id": "rs_68af4030baa48193b0b43b4c2a176a1a05438e46b5f69a3b",
"type": "reasoning",
"content": [],
"summary": []
},
{
"id": "msg_68af40337e58819392e935fb404414d005438e46b5f69a3b",
"type": "message",
"status": "completed",
"content": [
{
"type": "output_text",
"annotations": [],
"logprobs": [],
"text": "Under a quilt of moonlight, a drowsy unicorn wandered through quiet meadows, brushing blossoms with her glowing horn so they sighed soft lullabies that carried every dreamer gently to sleep."
}
],
"role": "assistant"
}
],
...
}store: false.response_format, use text.format in Responses. Learn more in the Structured Outputs guide.output_text helper, which the Chat Completions SDK does not have.previous_response_id to easily chain Responses together.post /v1/chat/completions to post /v1/responses.store: false in the store field["reasoning.encrypted_content"] to the include fieldcall_id. See the tool calling docs for more detail on how function calling works in Responses.response_format to text.format: