ToolAssay

Validate email addresses

Validate email addresses: RFC-style syntax checks, IDN domain normalization, live MX lookups with A/AAAA fallback (DNS-over-HTTPS), disposable-domain detection, role-address detection (info@, support@), free-provider flagging, and typo suggestions for popular providers (gmial.com -> gmail.com). Single address or batches up to 50. POST a JSON body like: {"emails":["ada@example.com","bad@mailinator.com","typo@gmial.com"]}

Answeringour last check, 2026-09-24
1 of 1checks answered this week
33 msmedian answer time
$0.003listed price per call
$0.003price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://keyronne.com/api/email-validate

CategoryEverything else
Provider hostkeyronne.com
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.003 33 ms

Example input (from the provider)

{
  "body": {
    "emails": [
      "ada@example.com",
      "bad@mailinator.com",
      "typo@gmial.com"
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "properties": {
        "body": {
          "properties": {
            "email": {
              "description": "One address to validate. Provide email or emails.",
              "type": "string"
            },
            "emails": {
              "description": "Batch of addresses to validate (max 50).",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "type": "array"
            },
            "skipDns": {
              "default": false,
              "description": "Skip MX/A lookups and return syntax + heuristic checks only.",
              "type": "boolean"
            }
          },
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "type": "object"
    },
    "output": {
      "properties": {
        "results": {
          "items": {
            "properties": {
              "checks": {
                "properties": {
                  "disposable": {
                    "type": "boolean"
                  },
                  "freeProvider": {
                    "type": "boolean"
                  },
                  "hasPlusTag": {
                    "type": "boolean"
                  },
                  "role": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "dns": {
                "properties": {
                  "deliverable": {
                    "description": "true/false, or null if DNS was unreachable."
                  },
                  "method": {
                    "enum": [
                      "MX",
                      "A-fallback",
                      "AAAA-fallback",
                      "unavailable"
                    ],
                    "type": "string"
                  },
                  "mxRecords": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "domain": {
                "description": "Normalized ASCII domain.",
                "type": "string"
              },
              "email": {
                "type": "string"
              },
              "reason": {
                "description": "Why the address is invalid, if it is.",
                "type": "string"
              },
              "suggestion": {
                "description": "Likely intended address for typos.",
                "type": "string"
              },
              "valid": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON