Crear match
curl --request POST \
--url https://prd-api.verifica.id/api/v1/solutions/match-reniec \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dni": "<string>",
"names": "<string>",
"fathers_last_name": "<string>",
"mothers_last_name": "<string>",
"married_last_name": "<string>",
"verification_digit": "<string>",
"birth_date": "<string>",
"issue_date": "<string>",
"expiration_date": "<string>"
}
'import requests
url = "https://prd-api.verifica.id/api/v1/solutions/match-reniec"
payload = {
"dni": "<string>",
"names": "<string>",
"fathers_last_name": "<string>",
"mothers_last_name": "<string>",
"married_last_name": "<string>",
"verification_digit": "<string>",
"birth_date": "<string>",
"issue_date": "<string>",
"expiration_date": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dni: '<string>',
names: '<string>',
fathers_last_name: '<string>',
mothers_last_name: '<string>',
married_last_name: '<string>',
verification_digit: '<string>',
birth_date: '<string>',
issue_date: '<string>',
expiration_date: '<string>'
})
};
fetch('https://prd-api.verifica.id/api/v1/solutions/match-reniec', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prd-api.verifica.id/api/v1/solutions/match-reniec",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dni' => '<string>',
'names' => '<string>',
'fathers_last_name' => '<string>',
'mothers_last_name' => '<string>',
'married_last_name' => '<string>',
'verification_digit' => '<string>',
'birth_date' => '<string>',
'issue_date' => '<string>',
'expiration_date' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://prd-api.verifica.id/api/v1/solutions/match-reniec"
payload := strings.NewReader("{\n \"dni\": \"<string>\",\n \"names\": \"<string>\",\n \"fathers_last_name\": \"<string>\",\n \"mothers_last_name\": \"<string>\",\n \"married_last_name\": \"<string>\",\n \"verification_digit\": \"<string>\",\n \"birth_date\": \"<string>\",\n \"issue_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://prd-api.verifica.id/api/v1/solutions/match-reniec")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dni\": \"<string>\",\n \"names\": \"<string>\",\n \"fathers_last_name\": \"<string>\",\n \"mothers_last_name\": \"<string>\",\n \"married_last_name\": \"<string>\",\n \"verification_digit\": \"<string>\",\n \"birth_date\": \"<string>\",\n \"issue_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prd-api.verifica.id/api/v1/solutions/match-reniec")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dni\": \"<string>\",\n \"names\": \"<string>\",\n \"fathers_last_name\": \"<string>\",\n \"mothers_last_name\": \"<string>\",\n \"married_last_name\": \"<string>\",\n \"verification_digit\": \"<string>\",\n \"birth_date\": \"<string>\",\n \"issue_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"message": "<string>",
"data": {
"id": "<string>",
"dni": "<string>",
"status": "<string>",
"created_at": "<string>"
}
}Match de Datos RENIEC
Crear match
Valida los datos que declaró una persona contra RENIEC y obtén un score de similitud por campo
POST
/
api
/
v1
/
solutions
/
match-reniec
Crear match
curl --request POST \
--url https://prd-api.verifica.id/api/v1/solutions/match-reniec \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dni": "<string>",
"names": "<string>",
"fathers_last_name": "<string>",
"mothers_last_name": "<string>",
"married_last_name": "<string>",
"verification_digit": "<string>",
"birth_date": "<string>",
"issue_date": "<string>",
"expiration_date": "<string>"
}
'import requests
url = "https://prd-api.verifica.id/api/v1/solutions/match-reniec"
payload = {
"dni": "<string>",
"names": "<string>",
"fathers_last_name": "<string>",
"mothers_last_name": "<string>",
"married_last_name": "<string>",
"verification_digit": "<string>",
"birth_date": "<string>",
"issue_date": "<string>",
"expiration_date": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
dni: '<string>',
names: '<string>',
fathers_last_name: '<string>',
mothers_last_name: '<string>',
married_last_name: '<string>',
verification_digit: '<string>',
birth_date: '<string>',
issue_date: '<string>',
expiration_date: '<string>'
})
};
fetch('https://prd-api.verifica.id/api/v1/solutions/match-reniec', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prd-api.verifica.id/api/v1/solutions/match-reniec",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dni' => '<string>',
'names' => '<string>',
'fathers_last_name' => '<string>',
'mothers_last_name' => '<string>',
'married_last_name' => '<string>',
'verification_digit' => '<string>',
'birth_date' => '<string>',
'issue_date' => '<string>',
'expiration_date' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://prd-api.verifica.id/api/v1/solutions/match-reniec"
payload := strings.NewReader("{\n \"dni\": \"<string>\",\n \"names\": \"<string>\",\n \"fathers_last_name\": \"<string>\",\n \"mothers_last_name\": \"<string>\",\n \"married_last_name\": \"<string>\",\n \"verification_digit\": \"<string>\",\n \"birth_date\": \"<string>\",\n \"issue_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://prd-api.verifica.id/api/v1/solutions/match-reniec")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"dni\": \"<string>\",\n \"names\": \"<string>\",\n \"fathers_last_name\": \"<string>\",\n \"mothers_last_name\": \"<string>\",\n \"married_last_name\": \"<string>\",\n \"verification_digit\": \"<string>\",\n \"birth_date\": \"<string>\",\n \"issue_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prd-api.verifica.id/api/v1/solutions/match-reniec")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"dni\": \"<string>\",\n \"names\": \"<string>\",\n \"fathers_last_name\": \"<string>\",\n \"mothers_last_name\": \"<string>\",\n \"married_last_name\": \"<string>\",\n \"verification_digit\": \"<string>\",\n \"birth_date\": \"<string>\",\n \"issue_date\": \"<string>\",\n \"expiration_date\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"message": "<string>",
"data": {
"id": "<string>",
"dni": "<string>",
"status": "<string>",
"created_at": "<string>"
}
}El Match de Datos RENIEC compara los datos que una persona declaró (nombres, apellidos, fechas de su documento) contra la información oficial de RENIEC, y devuelve un score de similitud de 0 a 100 por cada dato y uno general. No devuelve los datos oficiales: solo cuánto coinciden.
Es un proceso en dos pasos: este endpoint crea la validación y devuelve un
Este endpoint requiere autenticación Bearer. Incluye tu API key en el header Authorization (si aún no sabes cómo obtener y usar tu API key, consulta la página de Autenticación):
id; el resultado se obtiene en Consultar match.
Autenticación
¿Todavía no tienes un API token? El campo
Authorization del panel Try it espera tu token Bearer. Revisa dónde obtener tu API token para conseguirlo.Authorization: Bearer YOUR_API_KEY
Atributos
dni es obligatorio y debe ir acompañado de al menos uno de los demás campos. Solo se validan los campos que envíes.
string
required
Número de DNI de la persona. 8 dígitos.
string
Nombres de la persona.
string
Apellido paterno.
string
Apellido materno.
string
Apellido de casada, si lo tiene.
string
Dígito de verificación del DNI. Un solo carácter.
string
Fecha de nacimiento, en formato
AAAA-MM-DD.string
Fecha de emisión del DNI, en formato
AAAA-MM-DD.string
Fecha de caducidad del DNI, en formato
AAAA-MM-DD.Las fechas se envían completas. No se aceptan partes sueltas como solo el año: el resultado sí las desglosa en día, mes y año, para que veas cuál de las tres no coincide.
Respuesta
Responde202: la validación quedó en proceso. La respuesta trae solo lo necesario para consultarla después.
string
success cuando la validación se creó.string
Mensaje legible del resultado.
object
Show propiedades de data
Show propiedades de data
string
Identificador de la validación. Úsalo en Consultar match.
string
DNI validado.
string
Siempre
pending al crear.string
Fecha de creación, en ISO 8601.
Ejemplo de Solicitud
curl --request POST \
--url 'https://prd-api.verifica.id/api/v1/solutions/match-reniec' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {TU-API-KEY}' \
--header 'Content-Type: application/json' \
--data '{
"dni": "12345678",
"names": "JUANA MARIA",
"fathers_last_name": "TORRES",
"mothers_last_name": "RAMIREZ",
"birth_date": "1990-01-13"
}'
Ejemplo de Respuesta Exitosa
{
"status": "success",
"message": "Match created.",
"data": {
"id": "01a0f583-2f28-72df-835c-b88bd647d92e",
"dni": "12345678",
"status": "pending",
"created_at": "2026-09-30T22:30:10-05:00"
}
}
Consumo de tokens
Cada validación consume 1 token de tu paquete de Match de Datos RENIEC. El token se reserva al crear y se descuenta cuando la validación termina. Si la validación falla, el token se te devuelve.Códigos de Error
| Código | Descripción |
|---|---|
| 401 | Token de autenticación inválido o faltante |
| 402 | No tienes tokens disponibles en tu paquete de Match de Datos RENIEC |
| 422 | El DNI no es válido, no enviaste ningún dato además del DNI, o una fecha no tiene el formato AAAA-MM-DD. Detalle en errors |
| 503 | El servicio de validación no respondió. No se reservó ningún token: puedes reintentar |