> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-exo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Confirm token invalid

> The purge confirmation token is missing, malformed or expired.

This page is the resolution target of the RFC 9457 `type` URI on every `confirm_token_invalid` problem body: `https://docs.get-exo.com/errors/confirm_token_invalid`.

**HTTP status: `422` Unprocessable Content**.

```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
{
  "type": "https://docs.get-exo.com/errors/confirm_token_invalid",
  "title": "Confirm token invalid",
  "status": 422,
  "detail": "Malformed request or invalid confirmation token.",
  "code": "confirm_token_invalid",
  "requestId": "req_9f2c41ab7d0e5c18"
}
```

## Why it happens

A destructive confirm requires the token from a recent dry run of the same scope. Tokens are short-lived and single use.

This is deliberately not replayable by `Idempotency-Key`: a repeated destructive act must be a repeated deliberate act.

## How to fix it

* Run the dry run again and use the fresh `confirmToken` before its `expiresAt`.
* Send the token exactly as returned. It is opaque.

## Related

* [`purge_impact_changed`](/errors/purge_impact_changed)
* [`validation_error`](/errors/validation_error)
* [Errors](/platform/errors) for the envelope and the full catalogue
