Skip to Content
Getting StartedQuickstart

Quickstart

Get up and running with VerifNow in under 2 minutes. This guide walks you through getting an API key and making your first validation request.


Create your account

Go to app.verifnow.io  and sign up for a free account. No credit card required.

Get your API key

Once logged in:

  1. Click API Keys in the left sidebar
  2. Click Create new key
  3. Give your key a name (e.g., development)
  4. In the Expires section, choose a duration or select Never for a key that does not expire
  5. Confirm and copy your key

Your API key will only be shown once. Store it securely in a .env file or a secrets manager.

Store it in your environment:

export VERIFNOW_API_KEY=your_api_key_here

Or in a .env file:

.env.local
VERIFNOW_API_KEY=your_api_key_here

Make your first API call

Choose your preferred tool:

curl -X POST https://api.verifnow.io/api/v1/validate/email \ -H "X-API-KEY: $VERIFNOW_API_KEY" \ -H "Content-Type: application/json" \ -d '{"value": "user@example.com"}'

Read the response

A successful response looks like this:

{ "valid": true, "message": "Email address is valid but has risk factors", "normalizedValue": "user@example.com", "originalValue": "user@example.com", "validationLevel": "PREMIUM", "emailDetails": { "signals": { "syntax_valid": true, "mx_valid": true, "typo_detected": false, "suggested_domain": null, "disposable": false, "role_based": false, "free_provider": false, "domain_age_days": 11554, "mx_provider": "google", "mx_quality_score": 0.9 }, "risk_score": 30, "risk_level": "MEDIUM", "deliverability": "RISKY", "applied_level": "PREMIUM" } }

Key fields to check:

FieldWhat to look for
validUse true to accept the email
emailDetails.risk_levelLOW is the safest; HIGH warrants caution
emailDetails.deliverabilityDELIVERABLE means you can safely send to this address
emailDetails.signals.disposableReject if true for your use case
emailDetails.signals.typo_detectedIf true, suggest suggested_domain to the user

What’s next?

Now that you’ve made your first request, explore the rest of the documentation:

Tip: Use valid === true as the primary acceptance criteria, and check emailDetails.signals.disposable === false to block throwaway addresses.

Last updated on