API validare CNP

Documentație, exemple de cod și testare live pentru validarea individuală și bulk a CNP-urilor.

← Înapoi la prezentarea API

POST
Trimite un singur CNP, conținut CSV/TXT sau un array în câmpul input. API-ul selectează automat modul single sau bulk. Limita este de 60 cereri/minut pentru fiecare adresă IP.

Validare individuală

Pentru un singur CNP trimite valoarea ca string sau număr. Un CNP invalid returnează tot HTTP 200, dar cu valid: false.

Exemple de integrare

Cerere
POST
curl -X POST 'https://verificarecnp.ro/api/v1/cnp/validate' \
  -H 'Content-Type: application/json' \
  -d '{"input":"1960527400195"}'
<?php

$payload = array (
  'input' => '1960527400195',
);
$ch = curl_init('https://verificarecnp.ro/api/v1/cnp/validate');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
const response = await fetch('https://verificarecnp.ro/api/v1/cnp/validate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": "1960527400195"
})
});
const result = await response.json();
import json
import urllib.request

payload = json.dumps({
    "input": "1960527400195"
}).encode()
request = urllib.request.Request(
    'https://verificarecnp.ro/api/v1/cnp/validate', data=payload,
    headers={'Content-Type': 'application/json'}, method='POST'
)
result = json.load(urllib.request.urlopen(request))
Răspuns live
Pregătit
Apasă „Rulează testul” pentru rezultat.

Exemplu de răspuns JSON

JSON
{
    "success": true,
    "lang": "ro",
    "mode": "single",
    "result": {
        "valid": true,
        "errors": [],
        "data": {
            "cnp": "1960527400195",
            "s": "1",
            "person_type": "Masculin, născut 1900-1999",
            "gender": "Masculin",
            "gender_key": "male",
            "birth_date": "1996-05-27",
            "week_day": "Luni",
            "week_day_key": 1,
            "age": 30,
            "zodiac": "Gemeni",
            "zodiac_key": "gemini",
            "county_code": "40",
            "county": "București",
            "serial": "019",
            "control_digit": "5",
            "expected_digit": "5"
        }
    }
}

Validare bulk / CSV

Trimite CSV/TXT ca text sau ca array JSON. Separatorii acceptați sunt linia nouă, virgula, punctul și virgula sau spațiul.

Exemple de integrare

Cerere
POST
curl -X POST 'https://verificarecnp.ro/api/v1/cnp/validate' \
  -H 'Content-Type: application/json' \
  -d '{"input":"1960527400195\n9999999999999"}'
<?php

$payload = array (
  'input' => '1960527400195
9999999999999',
);
$ch = curl_init('https://verificarecnp.ro/api/v1/cnp/validate');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
const response = await fetch('https://verificarecnp.ro/api/v1/cnp/validate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "input": "1960527400195\n9999999999999"
})
});
const result = await response.json();
import json
import urllib.request

payload = json.dumps({
    "input": "1960527400195\n9999999999999"
}).encode()
request = urllib.request.Request(
    'https://verificarecnp.ro/api/v1/cnp/validate', data=payload,
    headers={'Content-Type': 'application/json'}, method='POST'
)
result = json.load(urllib.request.urlopen(request))
Răspuns live
Pregătit
Apasă „Rulează testul” pentru rezultat.

Exemplu de răspuns JSON

JSON
{
    "success": true,
    "lang": "ro",
    "mode": "bulk",
    "summary": {
        "total": 2,
        "valid": 1,
        "invalid": 1
    },
    "results": [
        {
            "valid": true,
            "errors": [],
            "data": {
                "cnp": "1960527400195",
                "s": "1",
                "person_type": "Masculin, născut 1900-1999",
                "gender": "Masculin",
                "gender_key": "male",
                "birth_date": "1996-05-27",
                "week_day": "Luni",
                "week_day_key": 1,
                "age": 30,
                "zodiac": "Gemeni",
                "zodiac_key": "gemini",
                "county_code": "40",
                "county": "București",
                "serial": "019",
                "control_digit": "5",
                "expected_digit": "5"
            }
        },
        {
            "valid": false,
            "errors": [
                "Data nașterii este invalidă.",
                "Cod județ / regiune invalid.",
                "Cifră de control invalidă. Cifra de control așteptată: 6."
            ],
            "data": {
                "cnp": "9999999999999",
                "s": "9",
                "person_type": "Rezident străin",
                "gender": "Rezident străin",
                "gender_key": "resident",
                "birth_date": "",
                "week_day": "",
                "week_day_key": null,
                "age": "",
                "zodiac": "",
                "zodiac_key": null,
                "county_code": "99",
                "county": "",
                "serial": "999",
                "control_digit": "9",
                "expected_digit": "6"
            }
        }
    ]
}

Răspunsuri de eroare

Fiecare eroare este returnată ca JSON împreună cu statusul HTTP corespunzător.

Status Semnificație
400 Bad RequestBody JSON malformat sau nevalid.
415 Unsupported Media TypeContent-Type nu este application/json.
422 Unprocessable ContentUnul sau mai multe câmpuri nu au trecut validarea.
429 Too Many RequestsLimita a fost depășită (60 cereri/minut).