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

# Email Verification

> Verify email addresses with magic links

# Email Verification (Self-serve)

Send a magic link to verify a user's email address. User clicks the link, done.

## Setup

1. Create an app in the [dashboard](https://control.scute.io)
2. Get an M2M token from **Settings > M2M Tokens**

## Send verification

```bash theme={null}
curl -X POST "https://api.scute.io/v1/verify/{app_id}/verifications/intent" \
  -H "Content-Type: application/json" \
  -H "X-Authorization: Bearer {m2m_token}" \
  -d '{
    "intent_name": "Email Verification",
    "method": "email",
    "verification_type": "magic_link",
    "meta_data": {
      "contact_email": "user@example.com",
      "contact_name": "Jane"
    }
  }'
```

Response:

```json theme={null}
{
  "verification_id": "uuid",
  "status": 200,
  "message": "Verification needed, sent to an email ending in user@example.com"
}
```

## What happens

1. User receives an email with a magic link
2. User clicks the link, lands on the verification page
3. Identity confirmed, status updates to `verified`
4. Webhook fires to your endpoint (if configured)

## Check status

```bash theme={null}
curl "https://api.scute.io/v1/verify/{app_id}/verifications/{verification_id}" \
  -H "X-Authorization: Bearer {m2m_token}"
```

## Webhook

Configure in **Settings > Webhooks**. You'll get:

```json theme={null}
{
  "event_type": "verification.email.verified",
  "data": {
    "verification_id": "uuid",
    "meta_data": { "contact_email": "user@example.com" }
  }
}
```

See [Webhooks Guide](/guides/webhooks) for setup and signature verification.
