API Reference

https://apimanager.online/api/v1

¿Qué es esta API?

API Manager te permite consultar datos de personas jurídicas (RUC) y naturales (DNI) registradas en las bases de datos de SUNAT y RENIEC, con más de 34 millones de registros disponibles.

Todas las consultas requieren un token de acceso válido. Puedes obtenerlo registrándote y activando un plan desde tu panel de cliente.

La API devuelve resultados paginados de 50 registros por página. Usa el parámetro page para navegar.

Autenticación

Todas las peticiones deben incluir tu token en el header Authorization usando el esquema Bearer.

Authorization: Bearer TU_TOKEN_AQUI
Nunca compartas tu token. Si crees que fue comprometido, regéneralo desde tu panel en Mis Tokens → Regenerar.

Obtener tu token

Desde tu panel de cliente ve a Mis Tokens. Si tu token aparece como "Revocado" necesitas renovar tu plan desde Planes y pagos.

Límites y cuotas

Cada plan tiene un límite mensual de consultas contado desde la fecha de activación del plan.

Plan Consultas/mes Vigencia Precio
free 20 30 días Gratis
10k 10,000 30 días S/ 25/mes
30k 30,000 30 días S/ 50/mes
50k 50,000 30 días S/ 100/mes
100k 100,000 30 días S/ 150/mes
enterprise Ilimitado 30 días A consultar

Cuando se agota la cuota mensual, la API responde con HTTP 429 hasta que inicie el siguiente período de 30 días.

Consulta RUC

Busca personas jurídicas por número de RUC o razón social en la base de datos de SUNAT.

GET /api/v1/ruc

Parámetros

ParámetroTipoRequeridoDescripción
ruc string opcional Número de RUC (exactamente 11 dígitos)
razon string opcional Razón social (mín. 3 caracteres, búsqueda parcial)
page integer opcional Número de página (1–500, default: 1)
Debes enviar al menos ruc o razon. No puedes enviar ambos vacíos.

Respuesta exitosa

HTTP 200 · application/json
{
  "current_page": 1,
  "data": [
    {
      "ruc":          "20100070970",
      "razon_social": "BANCO DE CREDITO DEL PERU",
      "estado":       "ACTIVO",
      "condicion":    "HABIDO",
      "direccion":    "AV. CENTENARIO NRO. 156 LIMA"
    }
  ],
  "per_page":     50,
  "total":        1,
  "last_page":    1,
  "next_page_url": null
}

Consulta DNI

Busca personas naturales por DNI, nombres o apellidos en la base de datos de RENIEC.

GET /api/v1/dni

Parámetros

ParámetroTipoRequeridoDescripción
dni string opcional Número de DNI (exactamente 8 dígitos)
nombres string opcional Nombres (mín. 3 caracteres, búsqueda parcial)
ap_pat string opcional Apellido paterno (mín. 2 caracteres)
ap_mat string opcional Apellido materno (mín. 2 caracteres)
page integer opcional Número de página (1–500, default: 1)

Respuesta exitosa

HTTP 200 · application/json
{
  "current_page": 1,
  "data": [
    {
      "dni":        "12345678",
      "ap_pat":     "GARCIA",
      "ap_mat":     "LOPEZ",
      "nombres":    "JUAN CARLOS",
      "full_name":  "JUAN CARLOS GARCIA LOPEZ",
      "fecha_nac":  "1985-03-15",
      "sexo":       "M",
      "est_civil":  "SOLTERO",
      "direccion":  "AV. AREQUIPA 1234 LIMA",
      "ubigeo_dir": "150101"
    }
  ],
  "per_page":  50,
  "total":     1,
  "last_page": 1
}

Códigos de error

La API usa códigos HTTP estándar para indicar el resultado de cada petición.

CódigoErrorDescripción
200 OK Consulta exitosa
401 Token requerido No enviaste el header Authorization
401 Token inválido o expirado El token no existe, fue revocado o venció
403 Cuenta suspendida Tu cuenta fue desactivada por el administrador
422 Parámetros inválidos Parámetros faltantes o con formato incorrecto
429 Cuota mensual agotada Alcanzaste el límite del plan. Espera o actualiza tu plan

Formato de error

// HTTP 429 — cuota agotada
{
  "error":     "Cuota mensual agotada",
  "limit":     10000,
  "used":      10000,
  "resets_at": "2026-04-29T00:00:00+00:00",
  "plan":      "10k"
}

// HTTP 401 — token inválido
{
  "error":   "Token inválido o expirado",
  "message": "Verifica tu token o contacta al administrador"
}

Headers de respuesta

Cada respuesta exitosa incluye estos headers informativos:

HeaderDescripción
X-RateLimit-Limit Límite total de consultas de tu plan
X-RateLimit-Remaining Consultas restantes en el período actual
X-RateLimit-Reset Timestamp Unix de cuando se resetea el contador
X-Plan Plan activo del token (free, 10k, 30k, etc.)
X-Cache HIT si el resultado viene de caché, MISS si es consulta fresca

Ejemplos de integración

Consulta RUC por número

curl -X GET "https://apimanager.online/api/v1/ruc?ruc=20100070970" \
  -H "Authorization: Bearer TU_TOKEN_AQUI" \
  -H "Accept: application/json"
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://apimanager.online/api/v1/ruc?ruc=20100070970',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer TU_TOKEN_AQUI',
        'Accept: application/json',
    ],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

// Acceder a resultados
foreach ($response['data'] as $empresa) {
    echo $empresa['ruc'] . ' - ' . $empresa['razon_social'] . PHP_EOL;
}
import requests

url     = "https://apimanager.online/api/v1/ruc"
headers = {"Authorization": "Bearer TU_TOKEN_AQUI"}
params  = {"ruc": "20100070970"}

response = requests.get(url, headers=headers, params=params)
data     = response.json()

for empresa in data["data"]:
    print(empresa["ruc"], "-", empresa["razon_social"])
const response = await fetch(
  'https://apimanager.online/api/v1/ruc?ruc=20100070970',
  {
    headers: {
      'Authorization': 'Bearer TU_TOKEN_AQUI',
      'Accept':        'application/json',
    }
  }
);

const data = await response.json();
data.data.forEach(e => console.log(e.ruc, e.razon_social));

Consulta DNI por número

curl -X GET "https://apimanager.online/api/v1/dni?dni=12345678" \
  -H "Authorization: Bearer TU_TOKEN_AQUI" \
  -H "Accept: application/json"
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://apimanager.online/api/v1/dni?dni=12345678',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer TU_TOKEN_AQUI',
        'Accept: application/json',
    ],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

$persona = $response['data'][0] ?? null;
if ($persona) {
    echo $persona['full_name'];  // "JUAN CARLOS GARCIA LOPEZ"
}
import requests

url     = "https://apimanager.online/api/v1/dni"
headers = {"Authorization": "Bearer TU_TOKEN_AQUI"}
params  = {"dni": "12345678"}

response = requests.get(url, headers=headers, params=params)
persona  = response.json()["data"][0]

print(persona["full_name"])   # JUAN CARLOS GARCIA LOPEZ
print(persona["fecha_nac"])  # 1985-03-15
const response = await fetch(
  'https://apimanager.online/api/v1/dni?dni=12345678',
  { headers: { 'Authorization': 'Bearer TU_TOKEN_AQUI' } }
);
const { data } = await response.json();
console.log(data[0]?.full_name); // JUAN CARLOS GARCIA LOPEZ

Búsqueda por nombre y apellido

curl -X GET "https://apimanager.online/api/v1/dni?ap_pat=GARCIA&ap_mat=LOPEZ&page=1" \
  -H "Authorization: Bearer TU_TOKEN_AQUI"
$params = http_build_query([
    'ap_pat'  => 'GARCIA',
    'ap_mat'  => 'LOPEZ',
    'nombres' => 'JUAN',
    'page'    => 1,
]);
// Mismo patrón curl_init de arriba con la URL:
// https://apimanager.online/api/v1/dni?{$params}