NovaCheck

API Documentation

Everything you need to integrate NovaCheck into your application.

Quick Start

  1. Sign up at novacheck.io/dashboard
  2. Create an API key in the dashboard
  3. Make your first validation request:
curl -X GET "https://api.novacheck.io/v1/email?email=test@example.com" \
  -H "X-API-Key: nc_live_your_api_key_here"

Test Keys

When you create an API key, you can choose between Live or Test environment. Test keys return mock results without making real DNS lookups — perfect for development and CI/CD.

Test keys don't count against your monthly quota, so you can test as much as you want.

Known Test Domains

DomainResultMX Records
test.comDeliverableYes
gmail.comDeliverableYes
yahoo.comDeliverableYes
example.comUndeliverableNo
invalid.comUndeliverableNo
(any other domain)DeliverableMocked

Note: Test key responses are deterministic and fast, but they don't reflect real email deliverability. Always use live keys for production validation.

API Reference

GET/v1/email

Validate a single email address

Query Parameters

ParameterTypeDescription
emailstringThe email address to validate (URL encoded)
smtpbooleanEnable SMTP validation (see SMTP section below)

Response

{
  "success": true,
  "requestId": "req_abc123",
  "email": "test@example.com",
  "valid": true,
  "status": "VALID",
  "confidence": 95,
  "checks": {
    "format": true,
    "domain": true,
    "mx": true,
    "disposable": false,
    "freeProvider": false
  },
  "suggestion": null
}
POST/v1/email-bulk

Validate multiple email addresses at once

Request Body

{
  "emails": ["test1@example.com", "test2@example.com"],
  "smtp": false
}

Response

{
  "success": true,
  "requestId": "req_abc123",
  "results": [
    {
      "email": "test1@example.com",
      "valid": true,
      "status": "VALID",
      "confidence": 95
    },
    {
      "email": "test2@example.com", 
      "valid": false,
      "status": "INVALID_MX",
      "confidence": 100
    }
  ],
  "summary": {
    "total": 2,
    "valid": 1,
    "invalid": 1
  }
}

Domain Lookup

GET/v1/domain

Query Parameters

ParameterTypeRequiredDescription
domainstringYesThe domain name to look up (e.g., example.com)

Response

{
  "domain": "example.com",
  "dns": {
    "a": ["93.184.216.34"],
    "aaaa": ["2606:2800:220:1:248:1893:25c8:1946"],
    "mx": ["10 mail.example.com"],
    "ns": ["ns1.example.com", "ns2.example.com"],
    "txt": ["v=spf1 -all"],
    "caa": ["0 issue "pki.example.com""]
  },
  "whois": {
    "registrar": "MarkMonitor Inc.",
    "registrarUrl": "http://www.markmonitor.com",
    "creationDate": "1997-09-15",
    "expiryDate": "2028-09-14",
    "updatedDate": "2019-09-09",
    "nameservers": ["ns1.google.com", "ns2.google.com"],
    "status": ["clientTransferProhibited"],
    "redacted": false
  },
  "request_id": "req_abc123"
}

DNS Response Fields

FieldTypeDescription
astring[]IPv4 addresses
aaaastring[]IPv6 addresses
mxstring[]Mail servers (priority + host)
nsstring[]Name servers
txtstring[]TXT records (SPF, DKIM, etc.)
caastring[]Certification Authority Authorization

WHOIS Response Fields

FieldTypeDescription
registrarstringDomain registrar name
registrarUrlstringRegistrar website
creationDatestringRegistration date
expiryDatestringExpiration date
updatedDatestringLast update date
nameserversstring[]Authoritative name servers
statusstring[]Domain status codes
redactedbooleanTrue if data is hidden due to GDPR

Code Examples

Validate Email

curl -X GET "https://api.novacheck.io/v1/email?email=test@example.com" \
  -H "X-API-Key: nc_live_your_api_key_here"

Domain Lookup

curl -X GET "https://api.novacheck.io/v1/domain?domain=example.com" \
  -H "Authorization: Bearer nc_live_your_api_key_here"

Error Codes

CodeHTTP StatusDescription
VALID200Email is valid
INVALID200Email format is invalid
CATCH_ALL200Email domain accepts all addresses (verify manually)
DISPOSABLE200Email uses a disposable domain
FREE_PROVIDER200Email uses a free email provider (Gmail, etc.)
TYPO200Email likely has a typo (suggestion provided)
INVALID_MX200Domain has no valid MX records
UNVERIFIABLE200Could not verify email (server blocks verification)
RATE_LIMITED429Rate limit exceeded
QUOTA_EXCEEDED403Monthly quota exceeded
INVALID_API_KEY401API key is invalid or revoked

SMTP Validation

By default, the API performs DNS/MX lookups to validate email domains. For higher accuracy, you can enable SMTP validationwhich connects to the mail server to verify the mailbox actually exists.

⚠️ Warning: SMTP validation significantly increases response time (typically 3-10 seconds per email) because it must connect to external mail servers. Use sparingly and only when higher accuracy is critical.

Usage

Single email with SMTP validation:

curl -X GET "https://api.novacheck.io/v1/email?email=test@example.com&smtp=true" \
  -H "X-API-Key: nc_live_your_api_key_here"

Bulk validation with SMTP:

curl -X POST "https://api.novacheck.io/v1/email-bulk" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: nc_live_your_api_key_here" \
  -d '{"emails": ["test1@example.com", "test2@example.com"], "smtp": true}'

How It Works

  • • SMTP validation only runs if DNS/MX checks pass first
  • • Connects to mail server on ports 587, 465, then 25 (in order)
  • • Sends RCPT TO command to check if mailbox exists
  • • 3 second timeout per server
  • • Returns smtp_valid in the response details

Response Field

{
  "email": "test@example.com",
  "valid": true,
  "details": {
    "syntax": true,
    "mx": true,
    "disposable": false,
    "role": false,
    "free": false,
    "smtp_valid": true  // SMTP validation result
  }
}

Rate Limits

API requests are rate-limited based on your plan:

Free

10/min

Starter

100/min

Pro

300/min

Business

1,000/min

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset