# Cancel changing your email address

> The users.email_change.cancel operation: POST /api/v1/users/me/email_change/cancel in the REST API and the users_email_change_cancel tool in the MCP server.

Cancels the address change `users.email_change.start` began: its code stops working and your address stays as
it is. Answers `canceled: false` when no change was waiting.

**Who can call it:** the signed-in user, for their own account, in the console.

## At a glance

- **REST:** `POST /api/v1/users/me/email_change/cancel`
- **MCP tool:** `users_email_change_cancel`
- **Operation ID:** `users.email_change.cancel`
- **Scope:** Platform
- **Permission:** `account:write`
- **Risk tier:** `write`
- **Dry run:** Supported (send `Ownrecord-Dry-Run: true`)
- **Idempotency:** `Idempotency-Key` required
- **Modes:** Test and live
- **Authentication:** API key with the `account:write` scope
- **Since:** M13

## Request

### Body

This operation takes no body.

## Response

`200 OK` with a JSON object:

| Field      | Type                          | Description                                                                 |
| ---------- | ----------------------------- | --------------------------------------------------------------------------- |
| `object`   | `"email_change_cancellation"` |                                                                             |
| `canceled` | boolean                       | Whether an address change was waiting (false: there was nothing to cancel). |

## Examples

### Cancel the change

```http
POST /api/v1/users/me/email_change/cancel
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14
```

Response (`200`):

```json
{
  "object": "email_change_cancellation",
  "canceled": true
}
```

## Errors

| Code                                                                                   | HTTP status | When                                                | What to do                                                                      |
| -------------------------------------------------------------------------------------- | ----------- | --------------------------------------------------- | ------------------------------------------------------------------------------- |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied) | 403         | The caller isn't a person signed in to the console. | Ask an organization owner or admin for a role or scope that allows this action. |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed), [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`invalid_json`](https://ownrecord.io/docs/reference/errors.md#invalid_json), [`unsupported_media_type`](https://ownrecord.io/docs/reference/errors.md#unsupported_media_type), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found), [`idempotency_key_required`](https://ownrecord.io/docs/reference/errors.md#idempotency_key_required), [`idempotency_key_reused`](https://ownrecord.io/docs/reference/errors.md#idempotency_key_reused), [`idempotency_in_progress`](https://ownrecord.io/docs/reference/errors.md#idempotency_in_progress), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
