eIDV API · KYC & KYB · France

Verify an identity
in a single request.

Connect your platform to the Verify by Zecible API and check your contacts' identity in real time: individuals (KYC, 300M+ FR individual records) and businesses (KYB, 50M+ FR records, executives included). 0-100 reliability score per field, JSON response in a few milliseconds, opt-in data hosted in France.

eIDV individuals (KYC) + businesses (KYB) Opt-in source data · hosted in France Synchronous real-time response
POST /api/person
curl -X POST https://verify.zecible.fr/api/person \ -H 'X-API-Key: vkey-...' \ -H 'Content-Type: application/json' \ -d '{"person":{"first_name":"Jean","last_name":"Dupont","birth_date":"1980-05-15"}}' # HTTP 200 { "transaction_id": "verify_5dd7f1ad", "reference": "tx-001", "score": 92, "ambiguous": false, "matches": { "first_name": { "status": "match", "score": 100 }, "last_name": { "status": "partial", "score": 87 }, "birth_date": { "status": "match", "score": 100 } }, "timing_ms": 42 }
KYC · Individuals
+300M
B2C records of French individuals, opt-in, continuously updated
KYB · Businesses
+50M
French businesses (B2B), with legal representatives' identity included
Verified data
6 fields +
Identity, postal address, email, mobile, landline, date of birth - and more on request
Latency
Real-time
Synchronous JSON response, low latency, optimised for onboarding
eIDV · KYC Individuals - POST /api/person

Verify a B2C FR identity.

300M+ opt-in French individual records. Simultaneous multi-field verification in a single request, no consolidation surcharge.

Identity + Date of birth

First name, last name, gender and date-of-birth verification. Our matching engine tolerates spelling variants and common input errors.

first_namelast_namegenderbirth_date

Postal address

Full address verification, normalised against French postal references (RNVP). Tolerance for common abbreviations, accents and postal code variations.

address.streetaddress.cityaddress.postal_code

Email, mobile, landline

Email verification (format + MX), mobile (06/07) and landline (01-05, 09). Phone type detection is automatic - the response always indicates the identified channel.

emailmobilelandlinephone
KYB Businesses - POST /api/business BETA

Verify a B2B FR business.

50M+ FR business records (active + dissolved SIREN, multi-source), with legal representative. Verification by SIRET or company name, with intelligent detection of close matches.

Legal identity

SIRET, SIREN, company name, legal form, NAF code, intra-EU VAT number. Strict verification on official identifiers, intelligent analysis on the company name.

siretsirennamelegal_formnafvat_intracom

Address & contact details

Verification of the head office or establishment address, normalised against official postal references (RNVP). Contact details included: professional email, phone, website.

address.streetaddress.cityaddress.postal_codeemailphonewebsite

Executives

Verification of legal representatives and contacts associated with the company (last name, first name, role). Up to 10 executives per request, with an independent match score per profile - computed across all contacts associated with the identified SIRET.

executives[].first_nameexecutives[].last_nameexecutives[].role

A simple REST API. No SDK required.

Clear JSON format, explicit statuses (match, partial, no_match, not_searched, missing) with a 0-100 reliability score per field. Compatible with any language that has an HTTP client.

  • POST /api/person (KYC) and POST /api/business (KYB) - same response structure
  • API key authentication (X-API-Key), renewable at any time
  • IP access restriction (whitelist)
  • Usage tracking and reporting included (GET /api/usage)
  • Synchronous response, optimised for real-time flows
  • Stable and versionable response format
curl -X POST https://verify.zecible.fr/api/person \
  -H 'X-API-Key: vkey-...' \
  -H 'Content-Type: application/json' \
  -d '{
    "reference": "tx-001",
    "person": {
      "first_name": "Jean",
      "last_name": "Dupont",
      "birth_date": "1980-05-15",
      "email": "jean@example.com"
    }
  }'
const response = await fetch('https://verify.zecible.fr/api/person', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.VERIFY_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    reference: 'tx-001',
    person: {
      first_name: 'Jean',
      last_name:  'Dupont',
      birth_date: '1980-05-15',
      email:      'jean@example.com'
    }
  })
});
const data = await response.json();
console.log(data.score, data.matches);
<?php
$ch = curl_init('https://verify.zecible.fr/api/person');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'X-API-Key: ' . getenv('VERIFY_KEY'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'reference' => 'tx-001',
        'person'    => [
            'first_name' => 'Jean',
            'last_name'  => 'Dupont',
            'birth_date' => '1980-05-15',
        ],
    ]),
]);
$data = json_decode(curl_exec($ch), true);
echo $data['score'];
import requests, os

response = requests.post(
    'https://verify.zecible.fr/api/person',
    headers={
        'X-API-Key': os.environ['VERIFY_KEY'],
        'Content-Type': 'application/json',
    },
    json={
        'reference': 'tx-001',
        'person': {
            'first_name': 'Jean',
            'last_name':  'Dupont',
            'birth_date': '1980-05-15',
        },
    },
)
data = response.json()
print(data['score'], data['matches'])

Ready to integrate Verify?

Explore the documentation and the interactive console. Get your API key on request to run your first tests, no commitment.

Open console Request access