Skip to content
Docs

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

email_verification.created

Sent when you verify one address with Verify an address. The verification is already complete, and the payload matches the API response. Addresses in verification lists send email_verification.updated instead.

Webhook requests carry a JSON array of events like this one; see Webhook requests.

Fields

event_idstring

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.

typestring

Always email_verification.created.

objectobject

The verification the event describes. Its fields are listed below.

data.objectobject

The same object again, in the shape that the Events API returns in data.

Verification object

idstring

Verification ID (ev_…).

objectstring

Always email_verification.

emailstring

Verified address.

statusstring

completed when the check finished, or failed.

scoreinteger

Score from 0 to 100.

riskstring

low, medium or high.

resultstring

safe, invalid, disposable, disabled, inbox_full, role or unknown. See Verify an address.

modestring

fast or full. Addresses in lists are always checked in full mode.

checksobject

Individual checks. The mailbox checks smtp_connect, deliverable, disabled, inbox_full and catch_all are null in fast mode.

addressobject

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

did_you_meanstring | null

Suggested correction for a likely typo.

mx_recordsobject[]

MX records of the domain, each with priority and exchange.

created_atstring

When the verification was created, in ISO 8601 with a UTC offset.

updated_atstring

When the verification was last updated.

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"
    }
  }
}

email_verification.updated

Sent when Emailit finishes verifying an address in a verification list, 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 instead.

Webhook requests carry a JSON array of events like this one; see Webhook requests.

Fields

event_idstring

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.

typestring

Always email_verification.updated.

objectobject

The verification the event describes. Its fields are listed below.

data.objectobject

The same object again, in the shape that the Events API returns in data.

Verification object

idstring

Verification ID (ev_…).

objectstring

Always email_verification.

emailstring

Verified address.

statusstring

completed when the check finished, or failed.

scoreinteger

Score from 0 to 100.

riskstring

low, medium or high.

resultstring

safe, invalid, disposable, disabled, inbox_full, role or unknown. See Verify an address.

modestring

fast or full. Addresses in lists are always checked in full mode.

checksobject

Individual checks. The mailbox checks smtp_connect, deliverable, disabled, inbox_full and catch_all are null in fast mode.

addressobject

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

did_you_meanstring | null

Suggested correction for a likely typo.

mx_recordsobject[]

MX records of the domain, each with priority and exchange.

created_atstring

When the verification was created, in ISO 8601 with a UTC offset.

updated_atstring

When the verification was last updated.

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"
    }
  }
}

Was this page helpful?

Thanks for the feedback.

Thanks, we read every message.