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

# Face blocklist and device linking

> Decline people whose face you blocked, and the devices they used.

When you decide a person must not pass verification again, for a spoofing attempt, a forged document, abuse of your platform or because they are underage, block their face. From then on their verifications are declined automatically, in every workspace of your account.

## Block a face

From your backend:

```bash theme={null}
curl -X POST https://api.proofage.net/v1/verifications/550e8400-e29b-41d4-a716-446655440000/blocked-face \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pk_live_..." \
  -H "X-HMAC-Signature: <signature>" \
  -d '{"reason_code": "scam_or_abuse", "reason": "Chargeback fraud on order 1234"}'
```

| Field | Required | Description |
| - | - | - |
| `reason_code` | No | Why: `presentation_attack` (a photo of a screen, a print or a mask), `fraudulent_document` (a forged or edited document), `scam_or_abuse` (the identity may be real, but the person abused your platform), `underage`, `other`. Send it: it is how you and ProofAge later tell why each face was blocked. |
| `reason` | No | Free text kept with the block. Text past 1000 characters is cut off. |

The face comes from the verification's selfie. You can also block, and lift a block, from the console: see [Blocklist](/console/blocklist).

### Responses

| Status | Meaning |
| - | - |
| `204` | Blocked. |
| `403 FACE_BLOCKLIST_DISABLED` | The face blocklist is not enabled for your account. |
| `403 VERIFICATION_MISMATCH` | The verification belongs to another workspace. |
| `404` | No such verification. |
| `422 VALIDATION_ERROR` | `reason_code` is not one of the values above, or there is nothing to block: no completed attempt, no usable selfie, the face is already blocked, or the verification was already declined for a blocked face. `error.message` says which. |

## What happens next

* If the verification you blocked was `approved` or `resubmission_requested`, it becomes `declined` with `aml.blocklist.face_match`, and your webhook receives the decline.
* Later verifications whose face matches a blocked face are declined with `aml.blocklist.face_match`.
* On Facial age estimation workspaces the block also covers the devices the person was seen on: a later verification from one of those devices is declined with `aml.blocklist.device_match`, even with a different face.

## Reasons

| Code | Outcome |
| - | - |
| `aml.blocklist.face_match` | Declined |
| `aml.blocklist.device_match` | Declined |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.