Verification API

Verify a single email address in real-time and get detailed results including deliverability status, risk flags, and enrichment data.

Endpoint

POST/v1/verify

Request Body

ParameterTypeRequiredDescription
emailstringYesEmail address to verify
include_activitybooleanNoInclude engagement activity data (default: false)
options.deep_verifybooleanNoRequest extended checks. The current production workers attempt SMTP mailbox probing when deep verification is requested and the target mail server supports the check; otherwise Kawaa falls back to syntax, domain, MX, and AI risk analysis.
options.include_aibooleanNoInclude AI-powered analysis (default: true)

Example Request

cURL
curl -X POST https://api.kawaa.com/v1/verify \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "john@example.com",
    "include_activity": true,
    "options": {
      "deep_verify": true,
      "include_ai": true
    }
  }'

Response

200 OK
{
  "success": true,
  "data": {
    "email": "john@example.com",
    "status": "risky",
    "quality_score": 72,
    "verification": {
      "syntax_valid": true,
      "domain_exists": true,
      "mx_found": true,
      "catch_all": false
    },
    "flags": {
      "disposable": false,
      "role_account": false,
      "free_provider": false,
      "spam_trap": false,
      "honeypot": false,
      "bot_generated": false
    },
    "enrichment": {
      "first_name": "John",
      "full_name": "John",
      "gender": "male",
      "country": "United States",
      "country_code": "US"
    },
    "ai": {
      "typo_suggestion": null,
      "typo_confidence": null,
      "catch_all_confidence": 15
    },
    "activity": {
      "level": "active",
      "score": 78,
      "last_activity_at": "2026-01-15T10:30:00Z",
      "engagement": { "open_count": 12, "click_count": 5, "reply_count": 1 },
      "deliverability": { "hard_bounce_count": 0, "soft_bounce_count": 0, "complaint_count": 0 },
      "confidence": 80,
      "data_points": 18
    },
    "verified_at": "2026-02-03T14:22:15.123Z"
  }
}

Response Fields

Status Values

StatusDescription
validSMTP accepted the address and no catch-all/provider-limited caveat was detected during this run
invalidNo valid mail server or SMTP rejected the mailbox
riskyMay receive mail, but risk signals or incomplete proof remain
unknownCould not determine deliverability
catch_allDomain accepts all emails - individual mailbox unverifiable
disposableTemporary email address
roleRole-based email (info@, support@)
spam_trapKnown spam trap - do not send

Quality Score

The quality_score is a 0-100 score indicating overall email quality:

  • 90-100: Excellent - lowest observed risk
  • 70-89: Good - Generally safe
  • 50-69: Fair - Review recommended
  • 0-49: Poor - High risk of issues

For catch-all domains, policy blocks, and provider-limited responses, see Understanding Results & Provider Limits.

Credits

  • 1 credit per verification (cache miss)
  • 0.5 credits for cached results (within 24 hours)
  • Async cache-miss checks hold 1 credit while processing
  • Held credits are refunded by job reconciliation if the worker fails before producing a result
  • Activity data included at no extra cost when available