Revoke a personal API key or MCP grant
curl --request DELETE \
--url https://mill-api.example.com/api/credentials/{id} \
--header 'Origin: <origin>' \
--cookie mill_session=import requests
url = "https://mill-api.example.com/api/credentials/{id}"
headers = {
"cookie": "mill_session=",
"Origin": "<origin>"
}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {cookie: 'mill_session=', Origin: '<origin>'}};
fetch('https://mill-api.example.com/api/credentials/{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://mill-api.example.com/api/credentials/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_COOKIE => "mill_session=",
CURLOPT_HTTPHEADER => [
"Origin: <origin>"
],
]);
$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://mill-api.example.com/api/credentials/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("cookie", "mill_session=")
req.Header.Add("Origin", "<origin>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://mill-api.example.com/api/credentials/{id}")
.header("cookie", "mill_session=")
.header("Origin", "<origin>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mill-api.example.com/api/credentials/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["cookie"] = 'mill_session='
request["Origin"] = '<origin>'
response = http.request(request)
puts response.read_body{
"revoked": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}Revoke a personal API key or MCP grant
Revokes an owned credential. Team revocation also requires recent authentication; subsequent requests cannot use the revoked key or grant.
DELETE
/
api
/
credentials
/
{id}
Revoke a personal API key or MCP grant
curl --request DELETE \
--url https://mill-api.example.com/api/credentials/{id} \
--header 'Origin: <origin>' \
--cookie mill_session=import requests
url = "https://mill-api.example.com/api/credentials/{id}"
headers = {
"cookie": "mill_session=",
"Origin": "<origin>"
}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {cookie: 'mill_session=', Origin: '<origin>'}};
fetch('https://mill-api.example.com/api/credentials/{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://mill-api.example.com/api/credentials/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_COOKIE => "mill_session=",
CURLOPT_HTTPHEADER => [
"Origin: <origin>"
],
]);
$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://mill-api.example.com/api/credentials/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("cookie", "mill_session=")
req.Header.Add("Origin", "<origin>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://mill-api.example.com/api/credentials/{id}")
.header("cookie", "mill_session=")
.header("Origin", "<origin>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mill-api.example.com/api/credentials/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["cookie"] = 'mill_session='
request["Origin"] = '<origin>'
response = http.request(request)
puts response.read_body{
"revoked": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}A signed-in human session is required. API keys and MCP bearer credentials cannot replace that session.
Revokes an owned credential. Team revocation also requires recent authentication; subsequent requests cannot use the revoked key or grant.
Request conventions · API keys · MCP connections
Authorizations
Signed-in human browser session; mutation requests also need the exact UI Origin
Headers
The exact configured Mill UI origin. Required for browser mutations carrying session cookies.
Reuse the same key and exact request bytes for retries of one logical mutation; different content conflicts.
Required string length:
8 - 128Pattern:
^[A-Za-z0-9._:-]+$Path Parameters
The id from the corresponding list, record or authorization response.
Response
Successful response. Examples are illustrative; field values vary by record.
Illustrative response shape. Fields can be absent in alternate successful flows; see the operation description and example.
Was this page helpful?
