
# Remove a passkey

`DELETE /fapi/v1/me/passkeys/{authenticator_id}` · called from the environment's sign-in host

Removes a passkey record. The removal is rejected if it would prevent the user from signing into any application in the environment. After successful removal, a security notification is sent to the user's verified email addresses (according to the environment's security notification setting). Requires the authenticated user's `__Host-idp_session` cookie; if the cookie is missing, expired, or revoked, returns `401 unauthenticated`. A first-party app on another origin can instead send its front API access token (`Authorization: DPoP <token>` with a DPoP proof; see [Front API access token](/docs/api/fapi/front-api-token)).

## Request

Headers:

| Header | Required | Description |
| --- | --- | --- |
| `Idp-Client` | yes | SDK identifier. |
| `Origin` | yes | Must be exactly `https://<sign-in host>`. |

No body.

## Response

`204 No Content`.

## Errors

| Status | Code | When |
| --- | --- | --- |
| 401 | `unauthenticated` | No valid session cookie. |
| 401 | `step_up_required` | Session was not verified in the last 5 minutes; re-verify with `max_age=300` in the `WWW-Authenticate` header. |
| 403 | `origin_not_allowed` | `Origin` is missing or wrong. |
| 404 | `not_found` | No such passkey or security key for this user. |
| 409 | `last_factor` | Removing this factor would prevent the user from signing into at least one application. |

## Example

```bash
curl -X DELETE https://example.keenauth.app/fapi/v1/me/passkeys/cred_01j9zzzzzzzzzzzzzzzzzzzzzz \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -b cookies.txt
```

## Personal data

This endpoint carries personal data: credentials. [Personal data in the KeenAuth APIs](/docs/policies/personal-data) describes what is stored, how long it is kept and how it is deleted. Do not send special categories of personal data (health, biometric data, religion, political opinions, sexual orientation) in any field.
