API Documentation
Complete guide to integrate DataVerif API into your applications
Getting Started
Démarrage
How to obtain an API Key
- Visit our website and create an account
- Purchase credits according to your needs
- Generate your API key from your account dashboard
- Check your remaining credits anytime on your account page
Comment obtenir une clé API
- Visitez notre site web et créez un compte
- Achetez des crédits selon vos besoins
- Générez votre clé API depuis le tableau de bord de votre compte
- Vérifiez vos crédits restants à tout moment sur votre page de compte
Authentication Priority
The API accepts authentication through multiple methods with the following priority order:
- Authorization header (Recommended):
Authorization: Bearer YOUR_API_KEY - X-API-Key header:
X-API-Key: YOUR_API_KEY - Request body field:
api_keyparameter (fallback only)
Authorization: Bearer header for security and consistency. Priorité d'authentification
L'API accepte l'authentification via plusieurs méthodes avec l'ordre de priorité suivant :
- En-tête Authorization (Recommandé) :
Authorization: Bearer VOTRE_CLE_API - En-tête X-API-Key :
X-API-Key: VOTRE_CLE_API - Champ dans le corps : paramètre
api_key(solution de secours uniquement)
Authorization: Bearer pour la sécurité et la cohérence. Validation Result Messages
Messages de Résultats de Validation
All validation responses include a verdict field with a clear, user-friendly message and optional details.message for more context.
Toutes les réponses de validation incluent un champ verdict avec un message clair et convivial, et un details.message optionnel pour plus de contexte.
📧 Email Address Verdicts
| Verdict Message | Condition |
|---|---|
Valid email | Email is valid and passes all checks |
Valid email (generic account) | Valid email but it's a generic account (admin, support, contact) |
Invalid email format | Email doesn't match the standard format (e.g., name@domain.com) |
Disposable email detected | Email domain is identified as a temporary/disposable email service |
Email domain not found | The email domain doesn't have a mail server configured |
Email domain is blacklisted | The mail server is on an anti-spam blacklist |
Email rejected by server | The mail server rejected this email address (SMTP check) |
📱 Phone Number Verdicts
| Verdict Message | Condition |
|---|---|
Valid phone number | Phone number is valid with all information available |
Valid phone number (warning: carrier not identified) | Valid but carrier information couldn't be determined |
Valid phone number (warning: line type not identified) | Valid but line type (mobile/fixed) couldn't be determined |
Invalid phone number | The phone number structure doesn't match the expected format |
Unsupported phone type: [TYPE] | Phone type (VoIP, Toll free, etc.) is not accepted |
Cannot parse phone number | The number cannot be parsed - check format and country code prefix |
📍 Physical Address Response Fields
| Field | Type | Description |
|---|---|---|
verdict | string | Clear validation message for end users |
code | string | Status code: OK, INVALID, MISSING_ADDRESS, etc. |
confidence | string | Confidence level: HIGH, MEDIUM, LOW |
formatted_address | string | Properly formatted and validated address |
details.message | string | Detailed explanation of the validation result |
details.validation_granularity | string | Validation level: PREMISE, STREET, RANGE, etc. |
details.has_unconfirmed_components | boolean | True if address has unconfirmed components |
details.has_unexpected_components | boolean | True if unnecessary information was provided (doesn't invalidate) |
details.address_diff | object | Differences (only if actual changes exist): {added: [], removed: []} |
- The response is optimized for clarity and contains only essential validation data
address_diffonly appears when there are real differences between input and formatted address- An address with
has_unexpected_components: truecan still be valid if validated atPREMISElevel - Example: "Île-de-France" region is unnecessary for French addresses but doesn't invalidate them
📍 Address Verdict Examples
| Verdict Message | Condition |
|---|---|
Valid address | Address validated at PREMISE level |
Valid address (some provided information was unnecessary...) | Valid PREMISE but had unexpected components (e.g., region) |
Address validated at street level only (street number not confirmed) | Validated at STREET or RANGE level |
Address found but some components need confirmation | PREMISE level but has unconfirmed components |
Address is incomplete or imprecise | Lower granularity or missing components |
Address is missing | No address provided |
Address validation service unavailable | Validation service temporarily unavailable |
📋 Complete Response Examples
/verify Endpoint
Endpoint de vérification unique
/verifyDescription: Verify single phone/email/address with detailed validation and confidence level.
Description : Vérifiez un téléphone/email/adresse unique avec validation détaillée et niveau de confiance.
Request Parameters / Paramètres de requête
| Name | Type | Required | Description (EN) | Description (FR) |
|---|---|---|---|---|
number | string | Optional | Phone number to verify | Numéro de téléphone à vérifier |
email | string | Optional | Email address to verify | Adresse email à vérifier |
street_number | string | Optional | Street number | Numéro de rue |
street_name | string | Required | Street name | Nom de rue |
postal_code | string | Required | Postal code | Code postal |
city | string | Required | City | Ville |
country | string | Required | Country | Pays |
country_code | string | Required | ISO country code (e.g., FR) | Code pays ISO (ex: FR) |
Response Example / Exemple de réponse
{
"result": {
"email_address": {
"input": "contact@data-verif.fr",
"valid": true,
"complete_result": {
"valid": true,
"verdict": "Valid email (generic account)",
"details": {
"message": "Valid email but it's a generic account (e.g., admin, support, contact)"
}
}
},
"phone_number": {
"input": "0644884434",
"valid": true,
"complete_result": {
"valid": true,
"number": "+33 6 44 88 44 34",
"carrier": "La poste telecom",
"line_type": "Mobile",
"verdict": "Valid phone number",
"warnings": []
}
},
"physical_address": {
"input": "29 Rue de Rivoli, 75004 Paris, Île-de-France, France",
"valid": true,
"complete_result": {
"valid": true,
"verdict": "Valid address (some provided information was unnecessary but doesn't affect validity)",
"code": "OK",
"confidence": "HIGH",
"formatted_address": "29 Rue de Rivoli, 75004 Paris, France",
"details": {
"message": "Valid address (some provided information was unnecessary but doesn't affect validity)",
"has_unconfirmed_components": false,
"has_unexpected_components": true,
"validation_granularity": "PREMISE"
}
}
}
},
"status_code": 200
}Error Responses / Réponses d'erreur
| Code | Message | Description (EN/FR) |
|---|---|---|
401 | Api key not recognized | Invalid API key / Clé API invalide |
401 | Not enough credit | Credit exhausted / Crédit insuffisant |
400 | Invalid JSON body | Request body malformed / Body JSON invalide |
429 | Rate limit exceeded | Too many requests / Trop de requêtes |
/bulk_verify Endpoint
Vérification en masse par CSV
/bulk_verifyDescription: Verify multiple rows (CSV) of emails/phones/addresses. Each row is validated individually with detailed results.
Description : Vérifiez plusieurs lignes (CSV) d'emails/téléphones/adresses. Chaque ligne est validée individuellement avec des résultats détaillés.
CSV Example / Exemple CSV
Mail;Phone;Address
contact@example.com;0644884434;29 Rue de Rivoli, 75004 Paris
info@test.fr;0123456789;10 Avenue des Champs-Élysées, 75008 ParisRequest Parameters / Paramètres de requête
| Name | Type | Required | Description (EN/FR) |
|---|---|---|---|
file | file | Required | CSV file / Fichier CSV |
country_code | string | Required | ISO country code (e.g., FR) / Code pays ISO |
Response Example / Exemple de réponse
Note : Les réponses sont optimisées pour la lisibilité et contiennent uniquement les informations de validation essentielles pour garder les réponses claires et concises.
[
{
"row": 1,
"input": {
"Mail": "contact@data-verif.fr",
"Phone": "0644884434",
"Address": "29 Rue de Rivoli, 75004 Paris, Île-de-France, France"
},
"email_result": {
"valid": true,
"verdict": "Valid email (generic account)",
"details": {
"message": "Valid email but it's a generic account (e.g., admin, support, contact)"
}
},
"phone_result": {
"valid": true,
"number": "+33 6 44 88 44 34",
"line_type": "Mobile",
"carrier": "La poste telecom",
"verdict": "Valid phone number",
"warnings": []
},
"address_result": {
"valid": true,
"verdict": "Valid address (some provided information was unnecessary but doesn't affect validity)",
"code": "OK",
"confidence": "HIGH",
"formatted_address": "29 Rue de Rivoli, 75004 Paris, France",
"details": {
"message": "Valid address (some provided information was unnecessary but doesn't affect validity)",
"has_unconfirmed_components": false,
"has_unexpected_components": true,
"validation_granularity": "PREMISE"
}
}
},
{
"row": 2,
"input": {"Mail": "", "Phone": "", "Address": ""},
"email_result": {"valid": false, "error": "Missing"},
"phone_result": {"valid": false, "error": "Missing"},
"address_result": {"valid": false, "error": "Missing"}
}
]Code Examples
Exemples de code
Python - /verify
import requests
url = "https://YOUR_API_URL/verify"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
data = {
"number": "0644884434",
"email": "contact@example.com",
"street_number": "29",
"street_name": "Rue de Rivoli",
"postal_code": "75004",
"city": "Paris",
"country": "France",
"country_code": "FR"
}
response = requests.post(url, json=data, headers=headers)
print(response.json())JavaScript - /verify
const url = "https://YOUR_API_URL/verify";
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
};
const data = {
number: "0644884434",
email: "contact@example.com",
street_name: "Rue de Rivoli",
postal_code: "75004",
city: "Paris",
country: "France",
country_code: "FR"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));Python - /bulk_verify
import requests
url = "https://YOUR_API_URL/bulk_verify"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
files = {"file": open("data.csv", "rb")}
data = {"country_code": "FR"}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())/apidocs when the service is running for interactive API testing. 💡 Astuce : Consultez la documentation Swagger complète à
/apidocs lorsque le service est en cours d'exécution pour des tests d'API interactifs.