← Back to home
Validation

Data Validation API

Server-side validation without the overhead

Validate and normalize emails, phone numbers, URLs, credit card numbers, and IBANs at the edge. No database calls, no vendor lock-in.

Base URL https://data-validation-api.p.rapidapi.com
Auth X-RapidAPI-Key: YOUR_KEY
Format application/json
Coming soon on RapidAPI

Validators at a Glance

@

Email

RFC 5322 syntax check + optional disposable domain detection via KV blocklist.

POST /v1/validate/email
#

Phone

E.164 normalization, country detection, and line type classification (mobile/landline/VoIP).

POST /v1/validate/phone

URL

Structural URL validation, scheme extraction, host parsing, and normalization.

POST /v1/validate/url

Credit Card

Luhn checksum validation + brand detection (Visa, MC, Amex, Discover).

POST /v1/validate/card

IBAN

ISO 13616 mod-97 checksum, country extraction, and normalized output.

POST /v1/validate/iban

Endpoints

POST /v1/validate/email

Validate email format and optionally detect disposable domains

Request body
{
  "email": "user@example.com",
  "check_disposable": false
}
Response 200
{
  "valid": true,
  "format_valid": true,
  "disposable": null,
  "normalized": "user@example.com"
}
cURL example
curl -X POST https://data-validation-api.p.rapidapi.com/v1/validate/email \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: data-validation-api.p.rapidapi.com" \
  -d '{"email":"user@example.com","check_disposable":true}'
POST /v1/validate/phone

Validate and normalize phone numbers to E.164 format

Request body
{
  "phone": "+1 (555) 123-4567",
  "country": "US"
}
Response 200
{
  "valid": true,
  "normalized": "+15551234567",
  "country": "US",
  "line_type": "mobile"
}
cURL example
curl -X POST https://data-validation-api.p.rapidapi.com/v1/validate/phone \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: data-validation-api.p.rapidapi.com" \
  -d '{"phone":"+1 (555) 123-4567","country":"US"}'
POST /v1/validate/url

Validate URL structure and extract components

Request body
{
  "url": "https://example.com/path?q=1"
}
Response 200
{
  "valid": true,
  "scheme": "https",
  "host": "example.com",
  "normalized": "https://example.com/path?q=1"
}
cURL example
curl -X POST https://data-validation-api.p.rapidapi.com/v1/validate/url \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: data-validation-api.p.rapidapi.com" \
  -d '{"url":"https://example.com/path?q=1"}'
POST /v1/validate/card

Validate credit card number via Luhn checksum and detect card brand

Request body
{
  "number": "4532015112830366"
}
Response 200
{
  "valid": true,
  "brand": "visa",
  "last_four": "0366"
}
cURL example
curl -X POST https://data-validation-api.p.rapidapi.com/v1/validate/card \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: data-validation-api.p.rapidapi.com" \
  -d '{"number":"4532015112830366"}'
POST /v1/validate/iban

Validate IBAN via ISO 13616 mod-97 checksum and extract country

Request body
{
  "iban": "GB82WEST12345698765432"
}
Response 200
{
  "valid": true,
  "country": "GB",
  "normalized": "GB82WEST12345698765432"
}
cURL example
curl -X POST https://data-validation-api.p.rapidapi.com/v1/validate/iban \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_API_KEY" \
  -H "X-RapidAPI-Host: data-validation-api.p.rapidapi.com" \
  -d '{"iban":"GB82WEST12345698765432"}'
GET /v1/health No auth required

Health check — no authentication required

Response 200
{
  "status": "ok"
}
cURL example
curl https://data-validation-api.p.rapidapi.com/v1/health

Implementation Notes

Disposable email detection

Set check_disposable: true to query our blocklist of known disposable email providers. When check_disposable is false or omitted, the disposable field is null and does not affect the valid flag.

Phone normalization

Provide numbers in any common format. The API normalizes to E.164 (+15551234567). Pass an optional country (ISO 3166-1 alpha-2) to disambiguate ambiguous numbers without a country prefix.

Credit card privacy

Only the last four digits are returned. The full card number is never logged or stored — validation is pure computation (Luhn algorithm) performed in-memory within the Cloudflare Worker.

IBAN validation scope

Validates structural correctness via ISO 13616 mod-97 checksum. Does not verify account existence or bank reachability — that requires a banking API.

Error Responses

All errors use the flat shape: { "error": "...", "code": <int> }

Status Condition
401Missing or invalid X-RapidAPI-Proxy-Secret header
422Malformed JSON request body
404Unknown route
500Internal server error

Start validating

Subscribe on RapidAPI to get your API key and validate your first record in under a minute.

Coming soon on RapidAPI