← All field notes
SaaS Development

OpenAI Assistants API Shutdown (August 26, 2026): The Complete Migration Guide

OpenAI shuts down the Assistants API on August 26, 2026. Here is exactly what breaks, and how to migrate your assistants, threads, and vector stores to the Responses API, with code.

Matthew TurleyAugust 3, 20265 min read

Quick answer: OpenAI is shutting down the Assistants API on August 26, 2026. After that date, every call to /v1/assistants, /v1/threads, and /v1/threads/runs stops working. The replacement is the Responses API (plus the Conversations API for chat history). OpenAI has stated it will not provide an automated tool to migrate Threads to Conversations, you rebuild assistants as Responses API calls and recreate threads yourself. This guide walks the entire migration with code.

Migrating now? The free Assistants Rescue tool exports your assistants, vector stores, and files to JSON and generates the exact Responses API code to replace them, entirely in your browser (your API key never leaves the page).

What is happening, and the exact date

  • August 26, 2026: the Assistants API (beta) sunsets. The endpoints return errors.
  • It was announced on August 26, 2025, a one-year deprecation window.
  • OpenAI's recommended path is the Responses API (for the model calls and tools) plus the Conversations API (for persisting chat history).
  • There is no automated migration tool from OpenAI. This is the single most-quoted line from their own migration notes, and it is why most teams are doing this by hand.

What breaks after August 26, 2026

Anything that touches these stops working:

  • POST/GET /v1/assistants (create, list, retrieve, modify, delete)
  • /v1/threads, /v1/threads/{id}/messages, /v1/threads/{id}/runs
  • The OpenAI-Beta: assistants=v2 flows built on the above
  • Your stored assistant configurations and thread history become unreachable

Your vector stores and files persist, they move to the Responses API's File Search tool. But the assistant definitions and threads do not carry over automatically.

The migration in three steps

Step 1: Back up your account now

Even if you migrate later, export first. After the deadline this data is gone. You can list assistants, vector stores, and files via the API:

from openai import OpenAI
client = OpenAI()

assistants    = list(client.beta.assistants.list(limit=100))
vector_stores = list(client.vector_stores.list(limit=100))
files         = list(client.files.list())

import json
json.dump({
  "assistants":    [a.model_dump() for a in assistants],
  "vector_stores": [v.model_dump() for v in vector_stores],
  "files":         [f.model_dump() for f in files],
}, open("assistants-backup.json", "w"), indent=2)

Important constraint: OpenAI has no "list threads" endpoint, threads are only retrievable by ID. So you can only export the threads whose IDs your app stored in its own database. The Assistants Rescue tool does all of the above in the browser, and takes a pasted list of thread IDs.

Step 2: Rebuild each assistant as a Responses API call

The mental model shift: an Assistant was a stored config (model plus instructions plus tools). In the Responses API, you pass those inline on each call. There is nothing to create ahead of time.

Before (Assistants API):

assistant = client.beta.assistants.create(
    model="gpt-4o",
    instructions="You are a helpful support agent.",
    tools=[{"type": "file_search"}],
    tool_resources={"file_search": {"vector_store_ids": ["vs_123"]}},
)
thread = client.beta.threads.create()
client.beta.threads.messages.create(thread.id, role="user", content="Hi")
run = client.beta.threads.runs.create_and_poll(thread.id, assistant_id=assistant.id)

After (Responses API):

resp = client.responses.create(
    model="gpt-4o",
    instructions="You are a helpful support agent.",
    tools=[{"type": "file_search", "vector_store_ids": ["vs_123"]}],
    input="Hi",
)
print(resp.output_text)

Tool mapping:

  • file_search becomes a file_search tool with vector_store_ids inline (no more tool_resources).
  • code_interpreter becomes {"type": "code_interpreter", "container": {"type": "auto"}}.
  • functions flatten: {"type": "function", "name": ..., "parameters": ...} (no nested function key).

Step 3: Rebuild conversation continuity

Threads gave you multi-turn memory. You have two replacements.

Option A, previous_response_id (simplest):

r1 = client.responses.create(model="gpt-4o", input="My name is Sam.")
r2 = client.responses.create(model="gpt-4o", input="What's my name?",
                             previous_response_id=r1.id)

Option B, the Conversations API (persistent, closest to threads):

conv = client.conversations.create()
client.responses.create(model="gpt-4o", conversation=conv.id, input="My name is Sam.")
client.responses.create(model="gpt-4o", conversation=conv.id, input="What's my name?")

To carry old thread history forward, read each thread's messages by ID and recreate them as Conversation items (input_text for user turns, output_text for assistant turns).

Migration checklist

  • Backed up assistants, vector stores, and files to JSON
  • Exported the thread IDs your app stored (threads cannot be listed)
  • Rebuilt each assistant as a responses.create call
  • Mapped file_search / code_interpreter / functions to the new tool shapes
  • Re-pointed vector stores to the Responses file_search tool
  • Switched multi-turn flows to previous_response_id or Conversations
  • Removed the OpenAI-Beta: assistants=v2 header
  • Verified everything before August 26, 2026

FAQ

When exactly does the Assistants API shut down? August 26, 2026.

Is there an official automated migration tool? No. OpenAI has explicitly said it will not provide one for Threads to Conversations.

Do my vector stores and files survive? Yes. Re-point them to the Responses API's file_search tool.

Can I export all my threads automatically? No, there is no list-threads endpoint. You can only fetch threads whose IDs you saved.

What happens if I miss the deadline? The endpoints return errors and the stored data is unreachable, you would rebuild from scratch with no backup.

Migrate in minutes, or get it done for you

The free Assistants Rescue tool exports your account and generates the Responses API code for every assistant, in your browser. If you are migrating a production app with real traffic and cannot afford a regression, Continuum runs full, verified migrations of AI-built and AI-integrated apps.

M
Matthew Turley, Continuum

Fractional CTO helping teams ship and migrate AI-built products.

Run a free Leak Check →