# Verification events

> Single addresses verified through the API, and each address in a verification list as it finishes.



## email_verification.created

> Sent when you verify a single email address through the API. The payload is the full verification result.

# email_verification.created

Sent when you verify one address with [Verify an address](/docs/api-reference/email-verifications/verify/). The verification is already complete, and the payload matches the API response. Addresses in verification lists send [`email_verification.updated`](/docs/webhooks/events/email-verification/updated/) instead.

Webhook requests carry a JSON array of events like this one; see [Webhook requests](/docs/webhooks/webhook-requests/).

```json
{
  "event_id": "evt_2xLc9Rr4Tn6Wb1Qm8Ks3Vf0Hd7a",
  "type": "email_verification.created",
  "object": {
    "id": "ev_2xLd4Wq8Bn1Ys6Pk3Rm9Tc0Fh5a",
    "object": "email_verification",
    "email": "ada@example.com",
    "status": "completed",
    "score": 100,
    "risk": "low",
    "result": "safe",
    "mode": "fast",
    "checks": {
      "valid_syntax": true,
      "disposable": false,
      "role_account": false,
      "inbox_full": null,
      "deliverable": null,
      "disabled": null,
      "free_email": false,
      "gibberish": false,
      "catch_all": null,
      "smtp_connect": null,
      "has_mx_records": true,
      "domain_age": 10957
    },
    "address": {
      "mailbox": "ada",
      "domain": "example.com",
      "suffix": null,
      "root": "ada@example.com"
    },
    "did_you_mean": null,
    "mx_records": [
      {
        "priority": 10,
        "exchange": "mx1.example.com"
      }
    ],
    "created_at": "2026-10-01T10:20:31.118000+00:00",
    "updated_at": "2026-10-01T10:20:31.118000+00:00"
  },
  "data": {
    "object": {
      "id": "ev_2xLd4Wq8Bn1Ys6Pk3Rm9Tc0Fh5a",
      "object": "email_verification",
      "email": "ada@example.com",
      "status": "completed",
      "score": 100,
      "risk": "low",
      "result": "safe",
      "mode": "fast",
      "checks": {
        "valid_syntax": true,
        "disposable": false,
        "role_account": false,
        "inbox_full": null,
        "deliverable": null,
        "disabled": null,
        "free_email": false,
        "gibberish": false,
        "catch_all": null,
        "smtp_connect": null,
        "has_mx_records": true,
        "domain_age": 10957
      },
      "address": {
        "mailbox": "ada",
        "domain": "example.com",
        "suffix": null,
        "root": "ada@example.com"
      },
      "did_you_mean": null,
      "mx_records": [
        {
          "priority": 10,
          "exchange": "mx1.example.com"
        }
      ],
      "created_at": "2026-10-01T10:20:31.118000+00:00",
      "updated_at": "2026-10-01T10:20:31.118000+00:00"
    }
  }
}
```

## Fields

- `event_id` (string): Event ID (`evt_…`). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with [Retrieve an event](/docs/api-reference/events/get/).

- `type` (string): Always `email_verification.created`.

- `object` (object): The verification the event describes. Its fields are listed below.

- `data.object` (object): The same object again, in the shape that the [Events API](/docs/api-reference/events/get/) returns in `data`.

### Verification object

- `id` (string): Verification ID (`ev_…`).

- `object` (string): Always `email_verification`.

- `email` (string): Verified address.

- `status` (string): `completed` when the check finished, or `failed`.

- `score` (integer): Score from `0` to `100`.

- `risk` (string): `low`, `medium` or `high`.

- `result` (string): `safe`, `invalid`, `disposable`, `disabled`, `inbox_full`, `role` or `unknown`. See [Verify an address](/docs/api-reference/email-verifications/verify/).

- `mode` (string): `fast` or `full`. Addresses in lists are always checked in `full` mode.

- `checks` (object): Individual checks. The mailbox checks `smtp_connect`, `deliverable`, `disabled`, `inbox_full` and `catch_all` are `null` in `fast` mode.

- `address` (object): The address split into `mailbox`, `domain`, `suffix` (the part after `+`) and `root`.

- `did_you_mean` (string | null): Suggested correction for a likely typo.

- `mx_records` (object[]): MX records of the domain, each with `priority` and `exchange`.

- `created_at` (string): When the verification was created, in ISO 8601 with a UTC offset.

- `updated_at` (string): When the verification was last updated.

---
Source: https://emailit.com/docs/webhooks/events/email-verification/email-verification-created/

## email_verification.updated

> Sent once for each address in an email verification list as soon as Emailit finishes verifying it.

# email_verification.updated

Sent when Emailit finishes verifying an address in a [verification list](/docs/api-reference/email-verifications/lists/create/), once per address. A list of 10,000 addresses sends 10,000 of these events; if you only need to know when the whole list is done, listen for [`email_verification_list.updated`](/docs/webhooks/events/email-verification-list/updated/) instead.

Webhook requests carry a JSON array of events like this one; see [Webhook requests](/docs/webhooks/webhook-requests/).

```json
{
  "event_id": "evt_2xLc9Rr4Tn6Wb1Qm8Ks3Vf0Hd7a",
  "type": "email_verification.updated",
  "object": {
    "id": "ev_2xLeA1Pn6Rw3Ks8Vb0Ht5Mq2Fd9c",
    "object": "email_verification",
    "email": "ada@example.com",
    "status": "completed",
    "score": 100,
    "risk": "low",
    "result": "safe",
    "mode": "full",
    "checks": {
      "valid_syntax": true,
      "disposable": false,
      "role_account": false,
      "inbox_full": false,
      "deliverable": true,
      "disabled": false,
      "free_email": false,
      "gibberish": false,
      "catch_all": false,
      "smtp_connect": true,
      "has_mx_records": true,
      "domain_age": 10957
    },
    "address": {
      "mailbox": "ada",
      "domain": "example.com",
      "suffix": null,
      "root": "ada@example.com"
    },
    "did_you_mean": null,
    "mx_records": [
      {
        "priority": 10,
        "exchange": "mx1.example.com"
      }
    ],
    "created_at": "2026-10-01T10:30:02.441000+00:00",
    "updated_at": "2026-10-01T10:30:09.876000+00:00"
  },
  "data": {
    "object": {
      "id": "ev_2xLeA1Pn6Rw3Ks8Vb0Ht5Mq2Fd9c",
      "object": "email_verification",
      "email": "ada@example.com",
      "status": "completed",
      "score": 100,
      "risk": "low",
      "result": "safe",
      "mode": "full",
      "checks": {
        "valid_syntax": true,
        "disposable": false,
        "role_account": false,
        "inbox_full": false,
        "deliverable": true,
        "disabled": false,
        "free_email": false,
        "gibberish": false,
        "catch_all": false,
        "smtp_connect": true,
        "has_mx_records": true,
        "domain_age": 10957
      },
      "address": {
        "mailbox": "ada",
        "domain": "example.com",
        "suffix": null,
        "root": "ada@example.com"
      },
      "did_you_mean": null,
      "mx_records": [
        {
          "priority": 10,
          "exchange": "mx1.example.com"
        }
      ],
      "created_at": "2026-10-01T10:30:02.441000+00:00",
      "updated_at": "2026-10-01T10:30:09.876000+00:00"
    }
  }
}
```

## Fields

- `event_id` (string): Event ID (`evt_…`). A retried request carries the same ID, so use it to skip events you already handled. You can also look the event up with [Retrieve an event](/docs/api-reference/events/get/).

- `type` (string): Always `email_verification.updated`.

- `object` (object): The verification the event describes. Its fields are listed below.

- `data.object` (object): The same object again, in the shape that the [Events API](/docs/api-reference/events/get/) returns in `data`.

### Verification object

- `id` (string): Verification ID (`ev_…`).

- `object` (string): Always `email_verification`.

- `email` (string): Verified address.

- `status` (string): `completed` when the check finished, or `failed`.

- `score` (integer): Score from `0` to `100`.

- `risk` (string): `low`, `medium` or `high`.

- `result` (string): `safe`, `invalid`, `disposable`, `disabled`, `inbox_full`, `role` or `unknown`. See [Verify an address](/docs/api-reference/email-verifications/verify/).

- `mode` (string): `fast` or `full`. Addresses in lists are always checked in `full` mode.

- `checks` (object): Individual checks. The mailbox checks `smtp_connect`, `deliverable`, `disabled`, `inbox_full` and `catch_all` are `null` in `fast` mode.

- `address` (object): The address split into `mailbox`, `domain`, `suffix` (the part after `+`) and `root`.

- `did_you_mean` (string | null): Suggested correction for a likely typo.

- `mx_records` (object[]): MX records of the domain, each with `priority` and `exchange`.

- `created_at` (string): When the verification was created, in ISO 8601 with a UTC offset.

- `updated_at` (string): When the verification was last updated.

---
Source: https://emailit.com/docs/webhooks/events/email-verification/email-verification-updated/
