Data CheckerData verification

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 | false

Responses 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

CodeMeaning
400Invalid request: unknown type or missing value
401API key missing or unrecognised
402Out of credits

One page per check type

Ready to wire Data Checker in?

Get my free API key
Data validation API documentation | Data Checker