Build1 distinct publisher3 min readPublished
Responses swaps runs and threads for input items and conversations. The guide files history pruning, retries and the tool loop under separation of concerns, which means your application owns them now, and prompts move to the dashboard.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The two response payloads in the guide differ by one field. A thread comes back with `tool_resources`, empty in the example; the conversation comes back with id, object, created_at and metadata, and nothing else [12]. At the create site the diff is shallow too: `openai.beta.threads.create` takes `messages`, `openai.conversations.create` takes `items`, and the metadata dict is unchanged [20]. That is the easy half, and it is the half the code samples cover.
The run is where the work is. A run was an asynchronous process executed against a thread, and the guide's own Python example sits in a while loop on `run.status`, sleeping one second between retrievals [13]. That is roughly one retrieval per second of run duration [18]. A response returns its output items from the call [2], so the polling loop goes away. What arrives in its place is a loop you design: the guide lists history pruning, the tool loop and retries as orchestration handled by application code, with the prompt left to carry system guidance, tool availability, structured output schema and temperature defaults [7]. You trade a loop you could copy out of the docs for one you have to get right.
Then there is where prompts live. An assistant bundled model choice, instructions and tool declarations, and you created and managed it entirely through the API [4]. A prompt can only be created in the dashboard [5]. Step three of the migration steps says to store the prompt ID, or its exported spec, in source control so code can refer to a stable identifier [9]. The identifier is what your repo pins; the authoring surface is a UI. Snapshot, review, diff and rollback on prompt specs [6] are a real gain over a server object whose current state was whatever your last API write left, and A/B testing by swapping prompt IDs is cheaper than creating and deleting assistant objects programmatically [10]. The bill lands if your assistants were per tenant. Migrating N instruction bundles is N dashboard actions [19], and nothing in this guide restores the programmatic path.
The guide also claims better performance and names deep research, MCP and computer use as new features [2], with no numbers in the text [17]. For the performance half to reach your p95, your latency would have to have been dominated by run polling rather than model time; if your median run spent several seconds inside the model, one-second poll granularity was noise, and the gain here is a simpler call shape. Responses is designed to be used alone, with prompt and conversation objects optional for storing context and configuration [14]. That is the escape hatch: keep your own transcript store, and the dashboard prompt becomes the only part of your behaviour spec that CI cannot author. The guide already writes about assistants, threads and runs in the past tense [15].
In my context one manual dashboard step per product surface is an acceptable trade, because we ship one behaviour bundle per surface and want the diff history more than we want the API call. If yours are minted per customer at signup, this is a design change, and it should be budgeted as one.
Ranked by verification strength, evidence, and original report placement.
OpenAI's Assistants migration guide thanks everyone who used the Assistants API and tells developers to use the guide to migrate their integration to the Responses API.
The guide says responses are simpler, sending input items and getting output items back, and that the Responses API also brings better performance and new features like deep research, MCP, and computer use.
The guide says the change lets you manage conversations instead of passing back previous_response_id.
Assistants were persistent API objects that bundled model choice, instructions and tool declarations, created and managed entirely through the API.
Their replacement, prompts, can only be created in the dashboard, where you can version them as you develop your product.
The guide says you can snapshot, review, diff and roll back prompt specs, and can version a prompt so code points at the latest version.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · August 30, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
product
A 2x LLM bill is not a bug report: token spend is an observability problem1 distinct publisher
product
OpenAI's plan to hand everyone a coding agent leaves the hard part to the model1 distinct publisher
product
Washington's secret AI test is coming for open weights, and release dates go with it2 distinct publishers
build
Bedrock turns GPT-5.6 throughput into a routing choice, with residency as the price1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Authoritative on mechanics, silent on cost
The checkable material here is unusually good: object shapes, the polling loop, the metadata-identical create calls, the four migration steps. It is also all from one place — OpenAI describing its own API, which nobody has yet tested against a real migration. Where the guide leaves the documented surface for an assertion, as with 'better performance', there is nothing under it.
No usage signal
We can see that the guide exists and what it asks for. We cannot see a single migrated integration, a count of affected teams, or any statement of how much Assistants traffic remains — so there is nothing to measure.
Slightly overstated, mostly by omission
The guide is not loud; its tilt comes from arrangement. 'Separation of concerns' is a flattering name for handing developers the tool loop, retries and history pruning, and it sits in a list headed 'Why this is helpful'. Add one unquantified 'better performance' and a past tense with no sunset date behind it, and the picture reads a little sunnier than the work involved.
Vendor writing its own migration notice
The only voice here belongs to the party retiring the product and to the platform developers are being moved onto. OpenAI gains from consolidating traffic on Responses, from prompts living in its dashboard where the same definition also feeds Realtime, and from shedding server-side orchestration it previously ran. None of that makes the code samples wrong; it does explain which sentences got a heading and which got left out.
Solid on what was said, blind to what wasn't
We are confident about the shape of the change because the issuer documented it in code. We are much less confident about consequence: no timeline, no benchmark, no migrated team's experience, and one publisher deciding what the record contains.