API documentation
One REST endpoint to validate your data. Create an account, generate a key, call the endpoint. A successful call spends one credit, whatever the type checked. 100 free credits.
Authentication
Every request carries your API key in the HTTP header:
Authorization: Bearer dck_live_…Endpoint
POST https://data-checker.fr/api/v1/validate
Request body (JSON):
{
"type": "email | phone | siret | iban",
"value": "the value to check",
"country": "FR" // optional, for phone numbers
}Each successful call spends 1 credit. The response is a 402 when the balance runs out, and a 401 when the key is missing or unrecognised.
Example (JavaScript)
const res = await fetch("https://data-checker.fr/api/v1/validate", {
method: "POST",
headers: {
"Authorization": "Bearer dck_live_…",
"Content-Type": "application/json",
},
body: JSON.stringify({ type: "email", value: "contact@example.com" }),
});
const data = await res.json();
console.log(data.valid); // true | falseResponses by type
Email type: "email"
RFC 5322 syntax, domain, MX record, disposable and role-based detection.
{
"type": "email",
"input": "contact@example.com",
"valid": true,
"syntaxValid": true,
"domain": "example.com",
"mxFound": true,
"disposable": false,
"roleBased": true,
"reason": null,
"credits_remaining": 99
}Phone type: "phone"
Validity within the country's numbering plan, E.164 format, line type.
{
"type": "phone",
"input": "06 12 34 56 78",
"valid": true,
"e164": "+33612345678",
"national": "06 12 34 56 78",
"international": "+33 6 12 34 56 78",
"country": "FR",
"type_line": "mobile",
"credits_remaining": 98
}SIRET / SIREN type: "siret"
Luhn key, SIREN + NIC split, derived VAT number.
{
"type": "siret",
"input": "55210055400021",
"valid": true,
"kind": "SIRET",
"siren": "552100554",
"nic": "00021",
"formatted": "552 100 554 00021",
"laPoste": false,
"vatNumber": "FR96552100554",
"vatKey": "96",
"reason": null,
"credits_remaining": 97
}IBAN type: "iban"
ISO 13616 mod-97 check, per-country length, BBAN split.
{
"type": "iban",
"input": "FR1420041010050500013M02606",
"valid": true,
"country": "FR",
"countryName": "France",
"sepa": true,
"formatOk": true,
"lengthOk": true,
"formatted": "FR14 2004 1010 0505 0001 3M02 606",
"bankCode": "20041",
"bank": "La Banque Postale",
"bic": "PSSTFRPP",
"bban": { "banque": "20041", "guichet": "01005", "compte": "0500013M026" },
"ribKeyValid": true,
"credits_remaining": 96
}On the siret type, the API checks the Luhn key — including the derogatory rule for La Poste SIRETs starting 356000000 —, returns the siren + nic split and derives the intra-community VAT number. These fields are computed from the number itself: the API does not check the company's existence against the INSEE register.
On the iban type, the response adds the country, SEPA membership, the formatted IBAN and, for a French IBAN, the BBAN split, the national RIB key check and the bank name when the institution code is recognised.
Error codes
| Code | Meaning |
|---|---|
| 400 | Invalid request: unknown type or missing value |
| 401 | API key missing or unrecognised |
| 402 | Out of credits |
One page per check type
Ready to wire Data Checker in?
Get my free API key