JavaScript Examples

Code examples for integrating the nofakemails email validation API into your JavaScript applications.

Single Email Validation

Validate a single email address with a GET request to the /v1/email/{email} endpoint.

validate-email.js
const response = await fetch(
  'https://api.nofakemails.com/v1/email/user@example.com',
  {
    method: 'GET',
    headers: {
      'X-API-Key': process.env.NOFAKEMAILS_API_KEY,
    },
  }
);

const result = await response.json();
console.log(result);

Response:

{
  "email": "user@example.com",
  "valid": true,
  "normalized": "user@example.com",
  "local_part": "user",
  "alias": false,
  "ascii": true,
  "role": null,
  "gibberish": false,
  "gibberish_score": 0.12,
  "domain": "example.com",
  "mx": true,
  "disposable": false,
  "public": false,
  "relay": false,
  "typo": false,
  "typo_suggestion": null
}

See the Response Format page for a full description of every field.

Batch Validation

Validate up to 64 email addresses in a single POST request to the /v1/emails endpoint.

batch-validation.js
const emails = [
  'user1@example.com',
  'user2@tempmail.com',
  'user3@gmail.com',
];

const response = await fetch('https://api.nofakemails.com/v1/emails', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.NOFAKEMAILS_API_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ emails }),
});

const batch = await response.json();

// Check for partial results (timeout)
if (batch.partial) {
  console.warn('Some emails may not have been processed');
}

// Process each result
for (const item of batch.results) {
  if (item.status === 'error') {
    console.error(`${item.email}: ${item.error.message}`);
    continue;
  }

  if (item.result.disposable) {
    console.log(`${item.email} is disposable`);
  }
}

Response:

{
  "success": true,
  "partial": false,
  "total": 3,
  "valid_count": 3,
  "invalid_count": 0,
  "error_count": 0,
  "usage_points": 3,
  "processing_time_ms": 195,
  "results": [
    {
      "email": "user1@example.com",
      "status": "success",
      "result": {
        "email": "user1@example.com",
        "valid": true,
        "normalized": "user1@example.com",
        "local_part": "user1",
        "alias": false,
        "ascii": true,
        "role": null,
        "gibberish": false,
        "gibberish_score": 0.11,
        "domain": "example.com",
        "mx": true,
        "disposable": false,
        "public": false,
        "relay": false,
        "typo": false,
        "typo_suggestion": null
      },
      "error": null
    },
    {
      "email": "user2@tempmail.com",
      "status": "success",
      "result": {
        "email": "user2@tempmail.com",
        "valid": true,
        "normalized": "user2@tempmail.com",
        "local_part": "user2",
        "alias": false,
        "ascii": true,
        "role": null,
        "gibberish": false,
        "gibberish_score": 0.10,
        "domain": "tempmail.com",
        "mx": true,
        "disposable": true,
        "public": false,
        "relay": false,
        "typo": false,
        "typo_suggestion": null
      },
      "error": null
    },
    {
      "email": "user3@gmail.com",
      "status": "success",
      "result": {
        "email": "user3@gmail.com",
        "valid": true,
        "normalized": "user3@gmail.com",
        "local_part": "user3",
        "alias": false,
        "ascii": true,
        "role": null,
        "gibberish": false,
        "gibberish_score": 0.09,
        "domain": "gmail.com",
        "mx": true,
        "disposable": false,
        "public": true,
        "relay": false,
        "typo": false,
        "typo_suggestion": null
      },
      "error": null
    }
  ]
}

Each item in results contains the full validation result. See the Batch Validation response format for details on the envelope fields and per-email result structure.