Delete Token
curl --request DELETE \
--url https://app.tokencraft.dev/api/v1/tokensets/{id}/modes/{modeId}/tokens/{tokenId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tokencraft.dev/api/v1/tokensets/{id}/modes/{modeId}/tokens/{tokenId}"
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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}', 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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}",
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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}"
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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tokencraft.dev/api/v1/tokensets/{id}/modes/{modeId}/tokens/{tokenId}")
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_bodyTokens
Delete Token
Permanently delete a token
DELETE
/
tokensets
/
{id}
/
modes
/
{modeId}
/
tokens
/
{tokenId}
Delete Token
curl --request DELETE \
--url https://app.tokencraft.dev/api/v1/tokensets/{id}/modes/{modeId}/tokens/{tokenId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.tokencraft.dev/api/v1/tokensets/{id}/modes/{modeId}/tokens/{tokenId}"
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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}', 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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}",
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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}"
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/tokensets/{id}/modes/{modeId}/tokens/{tokenId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tokencraft.dev/api/v1/tokensets/{id}/modes/{modeId}/tokens/{tokenId}")
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 Token
Permanently deletes a design token. 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 /tokensets/{id}/modes/{modeId}/tokens/{tokenId}
Request
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Tokenset ID |
modeId | string | Yes | Mode ID |
tokenId | string | Yes | Token ID |
Response
Status:200 OK
{
"message": "Token deleted successfully"
}
Examples
curl -X DELETE https://app.tokencraft.dev/api/v1/tokensets/tokenset-123/modes/mode-light/tokens/token-123 \
-H "Authorization: Bearer tkc_your_token_here"
const tokensetId = 'tokenset-123';
const modeId = 'mode-light';
const tokenId = 'token-123';
const response = await fetch(
`https://app.tokencraft.dev/api/v1/tokensets/${tokensetId}/modes/${modeId}/tokens/${tokenId}`,
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer tkc_your_token_here'
}
}
);
const result = await response.json();
console.log(result.message);
tokenset_id = 'tokenset-123'
mode_id = 'mode-light'
token_id = 'token-123'
response = requests.delete(
f'https://app.tokencraft.dev/api/v1/tokensets/{tokenset_id}/modes/{mode_id}/tokens/{token_id}',
headers={'Authorization': 'Bearer tkc_your_token_here'}
)
result = response.json()
print(result['message'])
Error Responses
404 Not Found
{
"error": "Token not found"
}
This operation is irreversible. The token will be permanently deleted. Consider exporting your tokens before deletion.
Considerations
1. Alias Dependencies
If other tokens reference this token as an alias, they will break. Check for dependencies first:async function safeDeleteToken(tokensetId, modeId, tokenId, tokenName) {
// Get all tokens
const { tokens } = await getTokens(tokensetId, modeId);
// Check for aliases
const aliases = tokens.filter(t => t.alias_to === tokenName);
if (aliases.length > 0) {
console.warn(`Warning: ${aliases.length} tokens reference this token`);
console.log('Aliases:', aliases.map(t => t.name));
// Option 1: Delete aliases first
for (const alias of aliases) {
await deleteToken(tokensetId, modeId, alias.id);
}
}
// Then delete the token
await deleteToken(tokensetId, modeId, tokenId);
}
2. Batch Deletion
Delete multiple tokens:async function deleteTokens(tokensetId, modeId, tokenIds) {
for (const tokenId of tokenIds) {
await deleteToken(tokensetId, modeId, tokenId);
}
}
// Usage
await deleteTokens('tokenset-123', 'mode-light', [
'token-1',
'token-2',
'token-3'
]);
3. Export Before Deletion
async function exportAndDelete(tokensetId, modeId, tokenId) {
// Get token details first
const token = await getToken(tokensetId, modeId, tokenId);
// Save to backup
fs.writeFileSync(
`backup-${token.name}.json`,
JSON.stringify(token, null, 2)
);
// Then delete
await deleteToken(tokensetId, modeId, tokenId);
}
Recovery
Deleted tokens cannot be recovered. There is no undo or trash bin. Make sure you have backups of important tokens.
Next Steps
Create Token
Create a new token
Export Tokens
Export before deletion
⌘I