# Freeze a User, a Wallet or an Account

Stop one of your tenant's users, one of its wallets, or the wallets of one of its accounts, on every server, from the moment this answers.

## Overview

- `target` `user`: every request of that user is refused with `423` `USER_FROZEN`, reads included. `target` `wallet`: every signature and send of it is refused with `423` `WALLET_FROZEN`, on every chain it has in your tenant. `target` `account`: every wallet the [account](https://docs.aureahub.com/docs/guide-accounts.md) holds is refused so, with `423` `ACCOUNT_FROZEN`; `id` is the account's id, or a user's id for that user's default account. What each stops: [Freezes & Quarantines](https://docs.aureahub.com/docs/guide-freezes.md).
- `201` with the freeze, about a second after it is written: by then it is in force everywhere.
- `until` (optional): the freeze ends by itself then. It must be in the future: `400` `FREEZE_UNTIL_PAST` (`` `until` must be in the future. ``).
- Refusals: `404` `FREEZE_TARGET_NOT_FOUND` (`No such user here.`, `No such wallet here.`, `No such account here.`) for a user, wallet or account that is not your tenant's; `409` `ALREADY_FROZEN` (`This is already frozen.`); `403` `FREEZE_SELF` (`Nobody freezes, or lifts a freeze of, their own account.`); `400` `FREEZE_REASON_INVALID` (`A reason of 1 to 500 characters is required.`).
- For the tenant roles `owner`, `tenantadmin`, `non_signing_admin` and `security_admin`, on their own tenant.

## Endpoint

### `POST /v1/admin/tenants/{id}/freezes`

Authentication: bearer token required.

Freezes a user, a wallet or an account of the tenant.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | Tenant UUID |

**Request body**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `target` | string | yes | `user`, `wallet` or `account` |
| `id` | string | yes | The user's, the wallet's or the account's id (a user's default account: the user's id) |
| `reason` | string | yes | 1–500 characters |
| `until` | string (date-time) | no | When the freeze ends by itself; in the future. Left out: until lifted |

**Responses**

`201` Frozen

```json
{
  "id": "a3e9c1d7-5b2f-4e86-9d0a-7c4b1e8f2d63",
  "target": "wallet",
  "targetId": "7c1e9b24-3f5a-4d8e-9b6c-1a2f3e4d5c6b",
  "tenantId": "6f1e2d3c-4b5a-4968-8776-a5b4c3d2e1f0",
  "reason": "Device reported stolen",
  "frozenBy": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
  "frozenByRole": "security_admin",
  "frozenByPlatform": false,
  "frozenAt": "2026-10-06T10:42:05.118Z",
  "until": null,
  "active": true,
  "liftedAt": null,
  "liftedBy": null,
  "liftedByRole": null,
  "liftReason": null
}
```

`409` Already frozen

```json
{
  "statusCode": 409,
  "error": "ConflictError",
  "message": "This is already frozen.",
  "details": { "code": "ALREADY_FROZEN" }
}
```

---

Web version: https://docs.aureahub.com/#freezes-create
