Misar IO Docs

Email Validation

Validate email addresses for deliverability before sending

Email Validation

Validate one or more email addresses to check syntax, MX records, SMTP reachability, and disposable/role-account status before adding contacts or sending campaigns.

Auth scope: validate or send


Endpoints

| Method | Path | Description | |--------|------|-------------| | POST | /api/v1/validate | Validate one or more email addresses | | GET | /api/v1/validate | Get a cached validation result by email |


POST /api/v1/validate

Validate a single email address or a batch of up to 100 addresses.

Single email

curl -X POST https://api.misar.io/mail/v1/validate \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]" }'

Response

{
  "success": true,
  "result": {
    "email":  "[email protected]",
    "status": "valid",
    "score":  92,
    "checks": {
      "syntax":       true,
      "mx":           true,
      "smtp":         true,
      "disposable":   false,
      "role_account": false,
      "free_provider":true
    }
  }
}

Batch validation

curl -X POST https://api.misar.io/mail/v1/validate \
  -H "Authorization: Bearer msk_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "emails": [
      "[email protected]",
      "[email protected]",
      "[email protected]"
    ]
  }'

Response

{
  "success": true,
  "results": [
    {
      "email":  "[email protected]",
      "status": "valid",
      "score":  95,
      "checks": { "syntax": true, "mx": true, "smtp": true, "disposable": false, "role_account": false, "free_provider": false }
    },
    {
      "email":  "[email protected]",
      "status": "invalid",
      "score":  10,
      "checks": { "syntax": true, "mx": true, "smtp": false, "disposable": true, "role_account": false, "free_provider": false }
    },
    {
      "email":  "[email protected]",
      "status": "risky",
      "score":  40,
      "checks": { "syntax": true, "mx": true, "smtp": true, "disposable": false, "role_account": true, "free_provider": false }
    }
  ],
  "summary": {
    "total":   3,
    "valid":   1,
    "risky":   1,
    "invalid": 1,
    "unknown": 0
  }
}

GET /api/v1/validate

Retrieve a cached validation result for an email address. Returns the most recent result within the last 30 days, if available.

curl "https://api.misar.io/mail/v1/validate?email=test%40example.com" \
  -H "Authorization: Bearer msk_YOUR_API_KEY"

Query Parameters

| Param | Type | Required | Notes | |-------|------|----------|-------| | email | string | ✓ | URL-encoded email address to look up |

Response

{
  "success": true,
  "cached":  true,
  "result": {
    "email":      "[email protected]",
    "status":     "valid",
    "score":      92,
    "checked_at": "2026-04-01T10:00:00Z"
  }
}

Returns 404 if no cached result exists — use POST /api/v1/validate to run a fresh check.


Status Values

| Status | Score Range | Meaning | |--------|-------------|---------| | valid | 70–100 | Safe to send — address is deliverable | | risky | 30–69 | Proceed with caution — role account, catch-all, or low confidence | | invalid | 0–29 | Do not send — disposable, no MX, or SMTP rejected | | unknown | — | Check inconclusive (SMTP timeout or catch-all domain) |

Checks Reference

| Check | Description | |-------|-------------| | syntax | Valid RFC 5322 email format | | mx | Domain has valid MX DNS records | | smtp | SMTP server accepts the address | | disposable | Known disposable/temporary email domain | | role_account | Generic role address: info@, noreply@, admin@ etc. | | free_provider | Gmail, Yahoo, Outlook, etc. |

Validation consumes Hunter Verification credits on Pro and Max plans. Free plan accounts cannot use email validation. See Plan Limits.