Remove a passkey
curl --request DELETE \
--url https://mill-api.example.com/api/auth/passkeys/{id} \
--header 'Origin: <origin>' \
--cookie mill_session=import requests
url = "https://mill-api.example.com/api/auth/passkeys/{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/auth/passkeys/{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/auth/passkeys/{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/auth/passkeys/{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/auth/passkeys/{id}")
.header("cookie", "mill_session=")
.header("Origin", "<origin>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mill-api.example.com/api/auth/passkeys/{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{
"ok": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}Remove a passkey
Removes an owned WebAuthn credential. Removing the last passkey also removes its recovery codes. The path ID is the credential ID, not a UUID.
DELETE
/
api
/
auth
/
passkeys
/
{id}
Remove a passkey
curl --request DELETE \
--url https://mill-api.example.com/api/auth/passkeys/{id} \
--header 'Origin: <origin>' \
--cookie mill_session=import requests
url = "https://mill-api.example.com/api/auth/passkeys/{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/auth/passkeys/{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/auth/passkeys/{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/auth/passkeys/{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/auth/passkeys/{id}")
.header("cookie", "mill_session=")
.header("Origin", "<origin>")
.asString();require 'uri'
require 'net/http'
url = URI("https://mill-api.example.com/api/auth/passkeys/{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{
"ok": true
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}A signed-in human session with recent authentication is required. Complete password/passkey reauthentication when requested.
Removes an owned WebAuthn credential. Removing the last passkey also removes its recovery codes. The path ID is the credential ID, not a UUID.
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.
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?
