> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jsonperu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DNI

> Consulta información de una persona mediante su número de DNI.

# Consulta DNI

Obtiene la información de una persona utilizando su **Documento Nacional de Identidad (DNI)**.

<RequestExample>
  ```http theme={null}
  POST https://api.json.pe/api/dni
  ```
</RequestExample>

***

## Autenticación

Todas las solicitudes requieren un **Bearer Token**.

<ParamField header="Authorization" type="string" required>
  Bearer authentication.

  ```http theme={null}
  Authorization: Bearer TU_TOKEN
  ```
</ParamField>

***

## Body

El cuerpo de la solicitud debe enviarse en formato **application/json**.

<ParamField body="dni" type="string" required>
  Número de Documento Nacional de Identidad (DNI).

  **Reglas**

  * Debe contener exactamente **8 dígitos**.
  * Solo se permiten caracteres numéricos.

  **Ejemplo**

  ```json theme={null}
  {
    "dni": "27427864"
  }
  ```
</ParamField>

***

## Ejemplo de solicitud

<CodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.json.pe/api/dni \
    --header "Authorization: Bearer TU_TOKEN" \
    --header "Content-Type: application/json" \
    --data '{
      "dni":"27427864"
  }'
  ```

  ```javascript Node.js theme={null}
  fetch("https://api.json.pe/api/dni", {
    method: "POST",
    headers: {
      "Authorization": "Bearer TU_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      dni: "27427864"
    })
  })
  .then(res => res.json())
  .then(console.log);
  ```

  ```php PHP theme={null}
  <?php

  $curl = curl_init();

  curl_setopt_array($curl, [
      CURLOPT_URL => "https://api.json.pe/api/dni",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer TU_TOKEN",
          "Content-Type: application/json"
      ],
      CURLOPT_POSTFIELDS => json_encode([
          "dni" => "27427864"
      ])
  ]);

  $response = curl_exec($curl);

  curl_close($curl);

  echo $response;
  ```

  ```ruby Ruby theme={null}
  require 'uri'
  require 'net/http'

  url = URI("https://api.json.pe/api/dni")

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(url)
  request["Authorization"] = "Bearer TU_TOKEN"
  request["Content-Type"] = "application/json"

  request.body = '{
    "dni":"27427864"
  }'

  response = http.request(request)

  puts response.read_body
  ```
</CodeGroup>

***

## Respuesta

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "message": "exito",
    "data": {
      "numero": "27427864",
      "nombre_completo": "CASTILLO TERRONES, JOSE PEDRO",
      "nombres": "JOSE PEDRO",
      "apellido_paterno": "CASTILLO",
      "apellido_materno": "TERRONES",
      "codigo_verificacion": "7",
      "direccion": "",
      "direccion_completa": "",
      "ubigeo_reniec": "",
      "ubigeo_sunat": "",
      "ubigeo": [
        null,
        null,
        null
      ]
    }
  }
  ```
</ResponseExample>

***

## Campos de la respuesta

<ParamField path="success" type="boolean">
  Indica si la consulta fue exitosa.
</ParamField>

<ParamField path="message" type="string">
  Mensaje descriptivo del resultado.
</ParamField>

<ParamField path="data.numero" type="string">
  Número de DNI consultado.
</ParamField>

<ParamField path="data.codigo_verificacion" type="string">
  Código de verificación del DNI.
</ParamField>

<ParamField path="data.nombres" type="string">
  Nombres de la persona.
</ParamField>

<ParamField path="data.apellido_paterno" type="string">
  Apellido paterno.
</ParamField>

<ParamField path="data.apellido_materno" type="string">
  Apellido materno.
</ParamField>

<ParamField path="data.nombre_completo" type="string">
  Nombre completo en formato:

  **APELLIDOS, NOMBRES**
</ParamField>

<ParamField path="data.direccion" type="string">
  Dirección registrada.
</ParamField>

<ParamField path="data.direccion_completa" type="string">
  Dirección completa.
</ParamField>

<ParamField path="data.ubigeo_reniec" type="string">
  Ubigeo según RENIEC.
</ParamField>

<ParamField path="data.ubigeo_sunat" type="string">
  Ubigeo según SUNAT.
</ParamField>

***

## Códigos de respuesta

| Código  | Descripción                                        |
| ------- | -------------------------------------------------- |
| **200** | Consulta realizada correctamente.                  |
| **400** | El DNI enviado es inválido.                        |
| **401** | Token inválido o no enviado.                       |
| **404** | No se encontró información para el DNI consultado. |
| **429** | Se excedió el límite de consultas.                 |
| **500** | Error interno del servidor.                        |
