Introduction
VerifNow is a high-performance data validation API built for developers. It validates emails, phone numbers, and more — with a strong focus on email verification. Whether you’re building a SaaS product, running marketing campaigns, or cleaning up user databases, VerifNow gives you the tools to keep your data clean and reliable.
Why data validation?
Invalid data hurts your business:
- Increased bounce rates push your domain into spam folders
- Disposable addresses inflate your user counts with fake accounts
- Typos frustrate users who genuinely want to sign up
- Invalid phone numbers lead to failed communications
VerifNow catches these issues at the point of entry — in real time.
How it works
VerifNow performs a multi-layer validation pipeline. For email validation, the following checks are performed:
| Check | Description |
|---|---|
| Syntax validation | Ensures the address follows valid email format |
| MX record lookup | Confirms the domain has valid mail exchange records |
| Disposable detection | Flags known throwaway email providers |
| Role account detection | Identifies addresses like info@, admin@, noreply@ |
| Free provider detection | Marks addresses from Gmail, Yahoo, Hotmail, etc. |
| Typo detection | Detects typos and suggests the correct domain |
| Domain age | Reports the age of the domain in days |
| MX provider & quality | Identifies the mail provider and scores its quality |
| Risk scoring | Returns a risk score (0–100) and risk level |
| Deliverability assessment | Evaluates if the email is deliverable |
Base URL
All validation requests are made to:
https://api.verifnow.io/api/v1/validateValidation endpoints
All endpoints accept a POST request with a JSON body containing the value to validate:
{
"value": "user@example.com"
}| Type | Endpoint |
|---|---|
POST /api/v1/validate/email | |
| Phone | POST /api/v1/validate/phone |
| More coming soon | POST /api/v1/validate/... |
Authentication
VerifNow uses API key authentication. Every request must include your API key in the X-API-KEY header.
X-API-KEY: your_api_key_hereKeep your API key out of your source code and client-side bundles. Use environment variables.
Getting your API key
- Sign up at app.verifnow.io
- Navigate to Settings → API Keys
- Click Create new key
- Copy the key — it will only be shown once
Store it as an environment variable:
# .env.local
VERIFNOW_API_KEY=your_api_key_herePlans & quotas
| Plan | Validations per billing period | Concurrent requests | Max API keys | Overage behavior |
|---|---|---|---|---|
| FREE | 500 | 1 | 1 | Blocked |
| STARTER | 10,000 | 1 | 2 | Billed per unit |
| GROWTH | 50,000 | 2 | 5 | Billed per unit |
| PRO | 150,000 | 10 | 20 | Billed per unit |
- FREE plan: requests are blocked once the limit is reached.
- Paid plans (STARTER, GROWTH, PRO): requests above the quota are billed per unit at the end of the billing period.
- Concurrent requests: all plans enforce a maximum number of simultaneous requests. Exceeding this returns a
429error. On non-PRO plans, a429can also happen temporarily because of shared server-side concurrency protection, even if you are still within your documented per-plan limit. - Quota reset: quotas are reset at the start of each billing period (e.g., if your subscription started on the 4th, quotas reset every 4th of the month for a monthly subscription).
See Rate Limits for more details.
Response format
All validation responses share a common structure:
{
"valid": true,
"message": "Email address is valid but has risk factors",
"normalizedValue": "user@example.com",
"originalValue": "user@example.com",
"validationLevel": "PREMIUM"
}For email validations, an additional emailDetails field is included:
{
"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
| Field | Description |
|---|---|
valid | Whether the value passed validation |
message | Human-readable validation summary |
normalizedValue | The cleaned/normalized version of the input |
originalValue | The original value as submitted |
validationLevel | The validation depth applied (e.g., PREMIUM) |
emailDetails | (Email only) Detailed email-specific signals and scoring |
Risk levels (email)
| Risk Level | Meaning |
|---|---|
LOW | Low risk — safe to use |
MEDIUM | Medium risk — some risk factors detected |
HIGH | High risk — significant risk factors |
Deliverability values (email)
| Deliverability | Meaning |
|---|---|
DELIVERABLE | The email is deliverable with high confidence |
RISKY | The email may be deliverable but has risk factors |
UNDELIVERABLE | The email is not deliverable |
SDKs & libraries
Java / Spring Boot SDK — An official SDK is available to simplify integration in Spring projects:
For other languages, use the REST API directly — it’s just a few lines of code. See the Examples section.
Support
- 📧 Email: support@verifnow.io