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.
https://api.certuap.com/v1Formato: JSON
Protocolo: HTTPS únicamente
Características Principales
- Verificación instantánea: Respuestas en menos de 2 segundos
- Alta disponibilidad: 99.9% uptime garantizado
- Escalable: Desde cientos hasta millones de solicitudes
- Seguro: Encriptación SSL/TLS y OAuth 2.0
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
Authorization: Bearer tu_api_key_aqui
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 |
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.
https://api.certuap.com/v1/verify
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
code |
string | Sí | Código del certificado a verificar |
Ejemplo de Solicitud
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)
{
"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)
{
"valid": false,
"message": "Certificado no encontrado"
}
Verificación por Lote
Verifica múltiples certificados en una sola solicitud.
https://api.certuap.com/v1/verify/batch
Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
codes |
array | Sí | Array de códigos a verificar (máx. 100) |
Ejemplo de Solicitud
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
{
"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 require certuap/api-client
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 install certuap-api
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:
+51 999 999 999
Lun-Vie 9am-6pm
Chat
En vivo en el sitio web
24/7 disponible