Import and export
Agents are portable. You can bring one in from another platform, and you can export any Glytos agent as a self-contained file to back up, version, or move between workspaces.
Migrating in
Open Agents -> Import / Migrate. Pick the platform you are coming from:
| Source | Becomes | Kind |
|---|---|---|
| Vapi | A prompt agent | Voice |
| Retell | A prompt agent, or a workflow if it has multiple states | Voice |
| Bland | A prompt agent, or a workflow for a multi-node pathway | Voice |
| OpenAI Assistants | A chat agent | Chat |
| Glytos backup | Whatever it was exported from | Backup |
A source imports in one of two ways:
- Connect - paste the platform's API key, and Glytos lists your agents so you can pick which to import. The key is used only for that request and is never stored. This is how Vapi, Retell and Bland import.
- Paste JSON - paste a definition you already have. This is how OpenAI Assistants and a Glytos backup import. A pasted assistant is checked before anything is created, so the wrong file is refused with a reason instead of becoming an empty agent.
Every import lands in your Development environment, so you can review and test it before promoting it up.
A multi-step Retell or Bland flow becomes a Glytos workflow: each state becomes a node, and a prompt-based transition becomes an AI edge - the same LLM-decided routing Glytos uses natively. Review the transitions after importing.
Function tools
Function tools come in as stubs: the model knows the tool's name, description and parameters, but only you know the endpoint behind it. An imported tool has no URL and will not run until you open it and set its endpoint and auth. Nothing an import creates can place a live call on its own.
The mapping report after an import lists exactly what carried over and what needs your attention - a tool to wire up, a voice id to confirm, a webhook to reconnect.
Rebuilding an OpenAI Assistant
OpenAI closed its Assistants API on 26 August 2026. Importing by connecting an OpenAI account no longer works, because there is no API left to read assistants from. Past threads and messages cannot be imported: they were held by OpenAI.
What still comes across is the definition: the instructions, model settings and tool list an assistant was created with. An assistant made from code already has that definition in the code, and an assistant JSON saved before the shutdown has the same shape.
Paste it under Agents -> Import / Migrate -> OpenAI Assistants, or send it to the API (see below). Each definition becomes a Glytos chat agent.
What maps onto what
| OpenAI Assistants | Glytos |
|---|---|
| Assistant | A chat agent |
| Instructions | The agent's system prompt |
Model, temperature, top_p | The agent's model settings |
response_format | Structured outputs (json_object and json_schema) |
| Function tool | An HTTP tool - schema imported, endpoint set by you |
| Thread | A thread in every server SDK, backed by a session with its transcript, events and cost |
| Run | A run: one turn on that thread |
| File Search | Knowledge base or a vector store - upload the documents |
| Code Interpreter | Not imported |
| Past threads and messages | Not recoverable |
A strict json_schema is adjusted automatically to the closed-object form OpenAI
requires (additionalProperties: false, all keys required, optionals made nullable),
so a schema that worked on an Assistant does not start returning 400s here.
After the import
The report names what still needs you. In practice that is two things: give each imported tool its endpoint URL and auth, and upload any File Search documents into a knowledge base. Until a tool has an endpoint it cannot run, so an import can never place a live call on its own.
Then move your application's conversation calls from OpenAI's threads and runs to the
threads resource of a Glytos server SDK, which keeps the same thread-and-run shape.
Importing through the API
The API accepts a definition directly: POST /imports/openai-assistant with
{"assistant": { ... }}, which every Glytos server SDK wraps. It is checked the same way
as a paste: a list response, an error body or another platform's export is refused with
a 400 and an invalid_import code that says what the payload looks like instead, and
nothing is created.
For the fuller comparison - what you gain, what it costs, and how the two platforms differ - see the OpenAI Assistants alternative guide.
Exporting an agent
From an agent's menu, choose Export as JSON. You get a portable glytos-agent
document containing the agent's configuration (or workflow graph) with every tool it
uses inlined, so it is fully self-contained.
Fields whose names mark them as secrets (keys, tokens, passwords, authorization
headers) and phone numbers such as the transfer number are removed, and each removal
is listed in the document's notes so you know what to reconnect after importing.
Review an export before you share it or commit it. Removal works on field names, so a credential stored anywhere else stays in the file: a key inside a URL's query string, and the headers of a workflow's HTTP tool step as the workflow builder saves them (a list of name and value pairs), are exported as they are.
To bring an export back, use Import / Migrate -> Glytos backup and paste it. Tools are recreated, references are re-linked, and the new agent lands in Development. This makes the export a natural fit for backups, templates, and moving an agent between workspaces.