
The OpenAI Assistants API retired on August 26, 2026 and is no longer available. OpenAI’s migration guide directs developers to the Responses API. This is no longer a future deprecation to put on a roadmap: an application still relying on Assistants needs a supported implementation.
For a support team, there are two different decisions to make. One is how to migrate a custom application. The other is whether the job still needs a custom application at all. This guide covers the API changes first, then explains how eesel CLI can help operate a support teammate when that is the outcome you need.
What was the OpenAI Assistants API?
The Assistants API supplied persistent assistant configuration, stored conversation threads, and runs that processed those conversations. It also provided access to tools such as file search and Code Interpreter, alongside function calling for application-defined actions.
Its main objects separated configuration from conversation:
- An Assistant held model choice, instructions, and tool declarations.
- A Thread stored messages in a conversation.
- A Run executed an assistant against a thread.
- Run steps recorded parts of that execution.
That structure helped developers assemble AI assistants without inventing each component. It did not provide the whole support product: the application still needed a customer interface, identity checks, business-system connections, and rules about what the assistant could do.
What changes when migrating to Responses?
OpenAI’s migration documentation maps the old objects to a different set of concepts:
| Assistants API concept | Responses-era concept | What to review |
|---|---|---|
| Assistant | Prompt configuration | Model, instructions, tools, and version selection |
| Thread | Conversation | Stored items, user ownership, and retention |
| Run | Response | Input and output handling, errors, and tool execution |
| Run step | Item | Messages, function calls, and tool results |
Treat this as a guide to responsibilities, not a find-and-replace list. Existing object IDs and application assumptions need review. Start with the assistant’s instructions and tool definitions, then check how the application creates a conversation and processes each response.
Conversation state is still supported
Responses does not force every application to rebuild conversation storage from scratch. You can use a persistent Conversation, chain responses with previous_response_id, or pass prior items yourself. The Responses migration guide explains the options.
The distinction matters when porting a support assistant. A follow-up such as “what if I bought it last month?” needs the relevant earlier question and answer. Check that the new implementation preserves that context without mixing conversations belonging to different customers.
When chaining calls, resend top-level instructions: previous_response_id does not carry those instructions forward. Stored context also does not mean free context. Earlier input tokens in a response chain are still billed as input tokens.
Tool execution needs a deliberate migration
Responses returns typed output items, which can include messages and function calls. An application-defined function still needs application code to execute it and return a result associated with the matching call_id. OpenAI-hosted tools can handle their own execution.
For example, a tool that changes an order address needs the same identity checks and action limits after migration as before it. Do not infer permission merely because a model requested the function. For more on that distinction, see function calling.
Also review streaming consumers and structured output parsing. Responses uses typed streaming events, and structured output configuration belongs under text.format. Reusing an old parser without checking its assumptions can leave a working request paired with a broken interface.
File search and cost: What to measure
File search retrieves information from uploaded files in a vector store through semantic and keyword search. OpenAI hosts the tool’s execution, so using it does not require you to implement every retrieval step yourself. The file search guide explains the setup.
It would be misleading to estimate every question as “the complete text of every uploaded PDF, charged again.” Measure the input actually used, generated output, tool activity, and storage. A document upload and a model’s selected context are different things.
For a migrated application, compare short questions, long conversations, retrieval-heavy requests, and failed tool calls. Check current API pricing for the models and tools you choose. Historical Assistants tool prices are not a current quote for a Responses deployment.
Run the support job through eesel CLI
If the old assistant mainly answered customer questions from company policies and helpdesk knowledge, consider whether you want to maintain a custom application for that job. eesel’s helpdesk teammate is a support-focused product, and eesel CLI lets you operate it from a terminal.
The CLI uses the same teammate and workspace as the dashboard. It is useful when a developer wants to configure the setup, a script needs to inspect it, or a coding agent such as Claude Code, Cursor, or Codex is helping with the work. The support team can still review that same setup in the dashboard.
Start with the existing workspace
With Node.js 18.17 or newer, use the npm package directly. For an existing account, log in before setting up anything new:
npx @eesel/cli login
npx @eesel/cli whoami
npx @eesel/cli agents
Choose the intended teammate from the agent list. Replace AGENT_ID below with its ID:
npx @eesel/cli integrations --agent AGENT_ID
npx @eesel/cli status --agent AGENT_ID
npx @eesel/cli instructions --agent AGENT_ID
These commands answer three separate questions: which systems are connected, whether connected content has downloaded, and what standing rules the teammate follows. A successful status check does not establish that the knowledge is correct or the answers meet your policy.
Bring the support knowledge, not the old API objects
Suppose your old assistant used an approved warranty policy. You can upload that source document:
npx @eesel/cli files upload ./warranty-policy.pdf --agent AGENT_ID
This adds knowledge to eesel. It does not import an OpenAI Assistant, its threads, or its vector store, and it does not update the teammate’s standing instructions.
Review the instructions separately: what can it answer, when should it ask for more information, and which cases need a person? If the job needs a helpdesk connection, the CLI also supports connecting integrations such as Zendesk and Freshdesk, with browser authorization where required.
Test representative questions on a test agent with suitable action restrictions. Compare answers with the original policy and inspect activity. CLI chat can invoke actions; it is not automatically a read-only test environment.
Give a coding agent a bounded setup task
JSON output lets a coding agent read command results. It can list the connections, inspect the result, and identify the next step. Errors include structured information and a hint about what to do next.
For example, ask it to inspect a specified agent’s sources and instructions, report missing configuration, and request permission before changing anything. That permission requirement comes from your instructions to the coding agent. It is distinct from eesel’s approvals command, which reviews actions held for the eesel teammate.
The CLI also exposes activity for recent work and automations for event, scheduled, and webhook automation settings. Use a command’s --help to inspect available operations. --dry-run prints the server call a write would make without sending it; it is not a simulation of the teammate’s answer.
For a headless script, configure EESEL_API_URL and EESEL_API_TOKEN, and scope it with EESEL_AGENT_ID or an explicit agent flag. Store credentials securely. OpenAI API keys, eesel credentials, and their billing are separate.
API migration or a support teammate?
Choose Responses when your product needs a custom application whose interface, tool logic, and runtime you own. Follow the migration guide, validate representative behavior, and check your app’s authentication, errors, and usage.
Evaluate eesel when the requirement is an operational support teammate connected to your knowledge and existing tools. The CLI gives technical users a way to configure and inspect that product without turning every task into a dashboard visit.
Neither choice removes the need to test. eesel CLI is not an Assistants-compatible endpoint, and it does not automatically migrate your application. Moving the support job means configuring its sources, instructions, integrations, and approvals, then checking the result.
Put one support scenario through the new setup
Before expanding a rollout, choose a scenario with a clear expected outcome: a warranty question with enough information to answer, one with a missing purchase date, and one requiring escalation. Review both the response and any actions.

If that support job is what you need, Try eesel and follow the CLI documentation. You can inspect the setup from your terminal while the support team reviews the same teammate in the dashboard.








