DELETE /v2/ai/assistants/{assistant_id} performs a soft delete by default: the assistant moves to the Recently Deleted list, where it stays restorable for 30 days and is then permanently deleted automatically. Pass hard_delete=true to skip the retention window and delete permanently in one request.
The same lifecycle is available in the Mission Control Portal under AI, Storage and Compute > AI Assistants, in the Recently Deleted tab.
Soft delete
By default,DELETE /v2/ai/assistants/{assistant_id} soft-deletes the assistant:
- The assistant no longer appears in the active assistant list.
- Its versions and TeXML application are preserved, so the assistant can be restored intact.
- The response carries
deleted: true,object: "assistant.deleted", and the assistant’sid.
GET /v2/ai/assistants/deleted (paginated with page[number] and page[size], up to 100 per page). Each entry carries deleted_at — when the assistant was soft-deleted — and permanently_deleted_at — the point after which it is erased automatically and can no longer be restored. Inspect a single entry with GET /v2/ai/assistants/{assistant_id}/deleted.
Deletion fails with 400 if other assistants depend on the one being deleted:
- Another assistant’s handoff tool points to it.
- Another assistant’s conversation flow has an edge handing off to it.
Restore
Restore a soft-deleted assistant withPOST /v2/ai/assistants/{assistant_id}/restore. The assistant becomes active again with its versions and TeXML application as they were at deletion time — soft delete only marks the assistant deleted, so nothing else needs re-attaching. In the Portal, open the Recently Deleted tab and select Restore.
Retention and automatic permanent deletion
A soft-deleted assistant is kept for 30 days.permanently_deleted_at in the deleted-assistant listing is exactly deleted_at plus 30 days.
After that point the assistant is permanently deleted automatically by a background job that runs every 6 hours, so the actual erasure can lag the 30-day mark by up to 6 hours. Once erased, an assistant cannot be restored.
Permanent deletion
Two ways to delete an assistant permanently:- Wait for the 30-day retention window to expire on a soft-deleted assistant.
- Pass
hard_delete=truetoDELETE /v2/ai/assistants/{assistant_id}— this deletes permanently immediately, skipping the retention window. It works both on a soft-deleted assistant and on an active one.
- The assistant and all of its versions.
- The assistant’s TeXML application — unless phone numbers are still assigned to it, in which case the TeXML application is kept (the assistant itself is still deleted).
- Conversations and messages the assistant took part in.
- Call recordings.
- Shared tools the assistant referenced — these live in the Tools Library and may be used by other assistants.
- Knowledge-base files and their embeddings.
400 until the reference is removed. A soft-deleted assistant is exempt, so the automatic cleanup of expired assistants can always finish.
Deleting an assistant does not delete its shared tools
A shared tool in the Tools Library is not deleted when an assistant that references it is deleted — the tool stays available for other assistants. While an assistant is in Recently Deleted, it still counts as referencing its tools: a tool referenced only by trash-resident assistants cannot be deleted, because restoring the assistant would revive a dangling reference. The tool-delete error names the soft-deleted assistants blocking it. To free the tool, either:- Restore each referencing assistant, remove the tool from it, then delete the tool, or
- Delete the referencing assistants permanently with
hard_delete=true, then delete the tool.
Permanent-purge procedure
To permanently remove AI assistants while leaving telephony untouched — for example when retiring AI assets:- List the assistants in the retention window:
GET /v2/ai/assistants/deleted. - For each assistant to purge, call
DELETE /v2/ai/assistants/{assistant_id}?hard_delete=true. - Verify the entry is gone:
GET /v2/ai/assistants/deletedno longer lists it, andGET /v2/ai/assistants/{assistant_id}returns404.