POST /v1/email/validate · 1 credit

Request

{
  "email": "jhon.doe@gmial.com"
}
Field Type Required Description
email string The email address to validate

Response

{
  "input": "jhon.doe@gmial.com",
  "valid_syntax": true,
  "mx_found": true,
  "disposable": false,
  "role_based": false,
  "free_provider": true,
  "did_you_mean": "john.doe@gmail.com",
  "deliverability": "risky",
  "score": 61,
  "credits_used": 1
}
Field Type Description
input string Original input value
valid_syntax boolean RFC-5321 syntax valid
mx_found boolean Domain has valid MX records
disposable boolean Known disposable/throwaway provider
role_based boolean Role address (info@, support@, etc.)
free_provider boolean Free consumer provider (gmail, yahoo…)
did_you_mean string | null Typo suggestion if detected
deliverability enum deliverable risky undeliverable unknown
score integer 0–100 quality score (higher = better)
credits_used integer Credits consumed (always 1)

Example

    curl -X POST https://api.checkharbor.com/v1/email/validate \
      -H "X-Api-Key: chk_live_..." \
      -H "Content-Type: application/json" \
      -d '{"email": "jhon.doe@gmial.com"}'
    ```
    const result = await checkharbor.validateEmail("jhon.doe@gmial.com");
    // result.did_you_mean === "john.doe@gmail.com"
    // result.score === 61
    // result.deliverability === "risky"
    ```
    result = client.validate_email("jhon.doe@gmial.com")
    # result["did_you_mean"] == "john.doe@gmail.com"
    # result["score"] == 61
    ```

Error responses

Status Code Description
400 validation_error email field missing
402 insufficient_credits Zero credit balance
429 rate_limited Rate limit exceeded