Delete Workspace
curl --request DELETE \
--url https://app.tokencraft.dev/api/v1/workspaces/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tokencraft.dev/api/v1/workspaces/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.tokencraft.dev/api/v1/workspaces/{id}', 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://app.tokencraft.dev/api/v1/workspaces/{id}",
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://app.tokencraft.dev/api/v1/workspaces/{id}"
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://app.tokencraft.dev/api/v1/workspaces/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tokencraft.dev/api/v1/workspaces/{id}")
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_bodyWorkspaces
Delete Workspace
Permanently delete a workspace and all its data
DELETE
/
workspaces
/
{id}
Delete Workspace
curl --request DELETE \
--url https://app.tokencraft.dev/api/v1/workspaces/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tokencraft.dev/api/v1/workspaces/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.tokencraft.dev/api/v1/workspaces/{id}', 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://app.tokencraft.dev/api/v1/workspaces/{id}",
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://app.tokencraft.dev/api/v1/workspaces/{id}"
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://app.tokencraft.dev/api/v1/workspaces/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tokencraft.dev/api/v1/workspaces/{id}")
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_bodyDelete Workspace
Permanently deletes a workspace and all its associated tokensets, modes, and tokens. This action cannot be undone.Write access policy - This endpoint requires the
write:tokens scope.- TEAM-owned workspace:
owner,admin,editorcan write;vieweris blocked (403). - Non-TEAM workspace: only the workspace owner can write.
- If the workspace owner plan has no API write access (for example FREE), write is blocked.
Endpoint
DELETE /workspaces/{id}
Authentication
Requires a valid API token in the Authorization header.Request
Headers
| Header | Value | Required |
|---|---|---|
Authorization | Bearer token | Yes |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Workspace ID |
Response
Success Response
Status:200 OK
{
"message": "Workspace deleted successfully"
}
Examples
curl -X DELETE https://app.tokencraft.dev/api/v1/workspaces/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer tkc_your_token_here"
const workspaceId = '550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://app.tokencraft.dev/api/v1/workspaces/${workspaceId}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer tkc_your_token_here'
}
}
);
const result = await response.json();
console.log(result.message);
workspace_id = '550e8400-e29b-41d4-a716-446655440000'
response = requests.delete(
f'https://app.tokencraft.dev/api/v1/workspaces/{workspace_id}',
headers={'Authorization': 'Bearer tkc_your_token_here'}
)
result = response.json()
print(result['message'])
Error Responses
401 Unauthorized
{
"error": "Invalid API token"
}
404 Not Found
{
"error": "Workspace not found"
}
- Workspace ID doesn’t exist
- You do not have access to this workspace
500 Internal Server Error
{
"error": "Failed to delete workspace"
}
Cascade Deletion
When a workspace is deleted, the following are also deleted:- ✅ All tokensets in the workspace
- ✅ All modes in those tokensets
- ✅ All tokens in those modes
This operation is irreversible. All data will be permanently deleted. Make sure to export your tokens before deletion if you need a backup.
Best Practices
1. Confirmation
Always confirm with the user before deletion:async function deleteWorkspaceWithConfirmation(id) {
const confirmed = confirm(
'Are you sure? This will delete all tokensets and tokens. This action cannot be undone.'
);
if (!confirmed) return;
await deleteWorkspace(id);
}
2. Export Before Deletion
Download all data before deletion:async function safeDeleteWorkspace(id) {
// Export all tokensets first
const tokensets = await getWorkspaceTokensets(id);
for (const tokenset of tokensets) {
await exportTokenset(tokenset.id, 'json');
}
// Then delete
await deleteWorkspace(id);
}
3. Archive Instead
Consider archiving instead of deleting:// Update workspace name to indicate archived status
await updateWorkspace(id, {
name: `[ARCHIVED] ${workspace.name}`
});
Recovery
Deleted workspaces cannot be recovered. There is no undo or trash bin. Make sure you have backups of important data.
Next Steps
Export Workspace Data
Export before deletion
List Workspaces
View all workspaces