All articles
May 18, 2025 6 min read

The OpenAI Responses API: should you use it, or stick with Chat Completions?

OpenAI's Responses API is its new default for building on the platform — stateful, with built-in tools and agentic features. Here's what it changes, and when Chat Completions is still the right call.

Written forEngineeringProduct
OpenAIAPIAgents

OpenAI now has two ways to generate text: the familiar Chat Completions API and the newer Responses API. Responses is what OpenAI recommends for new work, and it folds in what the Assistants API used to do. Before you pick one for your next build, it's worth knowing exactly what changes.

What the Responses API adds

  • Built-in tools — web search, file search, and computer use hosted by OpenAI and callable directly, without you wiring up the plumbing.
  • Server-side state — pass a previous_response_id to continue a conversation instead of resending the whole history on every turn.
  • An agentic shape — designed for multi-step, tool-using flows, and the foundation the OpenAI Agents SDK builds on.
  • A structured, item-based format — a more explicit input/output model than a flat list of chat messages.
The same idea, the new shape
const res = await client.responses.create({
  model: 'gpt-4o',
  input: 'Summarise the latest support tickets.',
  tools: [{ type: 'web_search' }],
});
console.log(res.output_text);
// continue statefully: pass previous_response_id on the next call

Where Chat Completions still wins

Chat Completions is the de-facto industry standard — Groq, OpenRouter, LiteLLM, and local runtimes all speak its shape. If portability across providers matters to you, that stateless, universally-copied interface is a feature, not a limitation. The Responses API is OpenAI-only, so building on it is a deliberate step toward their ecosystem.

So, should you use it?

  • Use Responses when — you're building an OpenAI-native app, you want the built-in tools or server-side state, or you're heading toward agents on their stack.
  • Use Chat Completions when — you need multi-provider portability, want to stay on the lowest-common-denominator standard, or you just have a simple stateless call.
  • Note the deprecation — the Assistants API is on a sunset path; if that's what you were reaching for, Responses is where that road now leads.

Don't rewrite a working Chat Completions app just to be current — it isn't going away soon. But for a new, OpenAI-committed, tool-heavy build, Responses is the better foundation to start on.

Responses is the better OpenAI-native foundation; Chat Completions is the better lingua franca. Choose for lock-in tolerance, not novelty.
Building something with LLMs?
I help teams ship GenAI that’s reliable and cost-efficient.
Let’s talk