Introducción

Bienvenido a la documentación oficial del API de Verificación Académica de CertUAP. Este API te permite verificar certificados académicos en tiempo real desde tu aplicación.

URL Base: https://api.certuap.com/v1
Formato: JSON
Protocolo: HTTPS únicamente

Características Principales

Autenticación

Todas las solicitudes al API requieren autenticación mediante una API Key que recibes al registrarte.

Obtener tu API Key

1. Regístrate en CertUAP API
2. Recibirás tu API Key por email inmediatamente
3. Incluye tu API Key en el header Authorization

HTTP Header
Authorization: Bearer tu_api_key_aqui
Importante: Nunca compartas tu API Key públicamente ni la incluyas en código frontend. Guárdala de forma segura en variables de entorno.

Rate Limits

Los límites de solicitudes varían según tu plan:

Plan Límite por minuto Límite mensual
Básico 10 req/min 500 verificaciones
Profesional 30 req/min 3,000 verificaciones
Empresarial 100 req/min Ilimitadas
Si excedes tu límite, recibirás un error 429 Too Many Requests. El header X-RateLimit-Remaining indica cuántas solicitudes te quedan.

Verificar Certificado

Verifica la autenticidad de un certificado académico mediante su código único.

POST https://api.certuap.com/v1/verify

Parámetros

Parámetro Tipo Obligatorio Descripción
code string Código del certificado a verificar

Ejemplo de Solicitud

cURL
curl -X POST https://api.certuap.com/v1/verify \
  -H "Authorization: Bearer tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"code": "MF-92FXSP"}'

Respuesta Exitosa (200)

JSON
{
  "valid": true,
  "certificate": {
    "code": "MF-92FXSP",
    "student_name": "Juan Pérez García",
    "dni": "12345678",
    "institution": "Universidad Nacional de Lima",
    "program": "Diplomado en Marketing Digital",
    "issue_date": "2025-11-15",
    "status": "ACTIVO",
    "verification_count": 12
  }
}

Respuesta No Encontrado (404)

JSON
{
  "valid": false,
  "message": "Certificado no encontrado"
}

Verificación por Lote

Verifica múltiples certificados en una sola solicitud.

POST https://api.certuap.com/v1/verify/batch

Parámetros

Parámetro Tipo Obligatorio Descripción
codes array Array de códigos a verificar (máx. 100)

Ejemplo de Solicitud

JavaScript
const response = await fetch('https://api.certuap.com/v1/verify/batch', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer tu_api_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    codes: ['MF-92FXSP', 'AT-45KL23', 'CD-89WX56']
  })
});

const data = await response.json();
console.log(data);

Respuesta

JSON
{
  "results": [
    {"code": "MF-92FXSP", "valid": true, "student_name": "Juan Pérez"},
    {"code": "AT-45KL23", "valid": false},
    {"code": "CD-89WX56", "valid": true, "student_name": "María López"}
  ],
  "summary": {
    "total": 3,
    "valid": 2,
    "invalid": 1
  }
}

Códigos de Error

Código Significado Solución
400 Bad Request Verifica que los parámetros sean correctos
401 Unauthorized API Key inválida o faltante
403 Forbidden No tienes acceso a este recurso
404 Not Found Certificado no encontrado
429 Too Many Requests Has excedido el rate limit
500 Internal Server Error Error del servidor, intenta nuevamente

SDK PHP

Instala y usa nuestro SDK oficial de PHP:

Composer
composer require certuap/api-client
PHP
use CertUAP\ApiClient;

$client = new ApiClient('tu_api_key');

// Verificar certificado
$resultado = $client->verify('MF-92FXSP');

if ($resultado->isValid()) {
    echo "Certificado válido: " . $resultado->getStudentName();
} else {
    echo "Certificado no encontrado";
}

SDK Python

pip
pip install certuap-api
Python
from certuap import ApiClient

client = ApiClient('tu_api_key')

# Verificar certificado
resultado = client.verify('MF-92FXSP')

if resultado.is_valid:
    print(f"Certificado válido: {resultado.student_name}")
else:
    print("Certificado no encontrado")

Mejores Prácticas

1. Manejo de Errores

Siempre implementa manejo de errores robusto:

try {
    $resultado = $client->verify($codigo);
} catch (InvalidApiKeyException $e) {
    // API key inválida
} catch (RateLimitException $e) {
    // Límite excedido
} catch (CertUAPException $e) {
    // Otro error
}

2. Caché de Resultados

Cachea las verificaciones para reducir llamadas al API:

$cache_key = "cert_" . $codigo;
$resultado = Cache::remember($cache_key, 3600, function() use ($client, $codigo) {
    return $client->verify($codigo);
});

3. Logs y Monitoreo

Registra todas las verificaciones para auditoría:

Log::info('Verificación de certificado', [
    'code' => $codigo,
    'valid' => $resultado->isValid(),
    'timestamp' => now()
]);

¿Necesitas Ayuda?

Si tienes dudas o problemas, estamos aquí para ayudarte:

Email

api@certuap.com

Respuesta en 24h

WhatsApp

+51 999 999 999

Lun-Vie 9am-6pm

Chat

En vivo en el sitio web

24/7 disponible