curl --request DELETE \
--url https://origami.chat/api/v2/workspaces/{workspaceId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://origami.chat/api/v2/workspaces/{workspaceId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://origami.chat/api/v2/workspaces/{workspaceId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://origami.chat/api/v2/workspaces/{workspaceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://origami.chat/api/v2/workspaces/{workspaceId}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://origami.chat/api/v2/workspaces/{workspaceId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://origami.chat/api/v2/workspaces/{workspaceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"confirmationRequired": true,
"willDelete": {
"tables": 123,
"rows": 123
}
}Delete a workspace (two-step; ?confirm=true)
Permanently deletes a workspace and its entire entity tree (tables,
rows, cells, sequences, chat history, documents). For a session
container the cascade covers the session, agents created in it,
and its exclusively-linked workspace-less tables; tables also
linked to other chats survive, and in-app chat sessions are
rejected with 403 WORKSPACE_NOT_DELETABLE. Follows the v2
deletes convention, deliberately two-step so it can’t fire on a
single ambiguous instruction:
- Call without
?confirm=true→ no deletion. Returns HTTP 200 with the impact preview{ workspaceId, name, confirmationRequired: true, willDelete: { tables, rows } }. The caller is expected to check with the user before proceeding. - After the user agrees, retry with
?confirm=true→ performs the cascade soft-delete and returns{ workspaceId, name, deleted: true }.
A missing / cross-org / already-deleted workspace returns
404 WORKSPACE_NOT_FOUND.
curl --request DELETE \
--url https://origami.chat/api/v2/workspaces/{workspaceId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://origami.chat/api/v2/workspaces/{workspaceId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://origami.chat/api/v2/workspaces/{workspaceId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://origami.chat/api/v2/workspaces/{workspaceId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://origami.chat/api/v2/workspaces/{workspaceId}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://origami.chat/api/v2/workspaces/{workspaceId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://origami.chat/api/v2/workspaces/{workspaceId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"confirmationRequired": true,
"willDelete": {
"tables": 123,
"rows": 123
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Deprecated container id: a legacy workspace id OR a chat-session id (the session-container form is what v2 returns for new agents). Both resolve everywhere this parameter appears.
Query Parameters
Must be true to actually delete. Omit for the impact preview.
Response
The impact preview (unconfirmed) or the delete receipt (confirmed).