📋 Endpoints
GET
/status
Público
Estado del servicio y estadísticas generales
curl -X GET "https://certius.online/api/v1/status"
📄 Ver respuesta
{
"success": true,
"message": "OK",
"data": {
"servicio": "Certius API",
"version": "1.0.0",
"estado": "OPERATIVO",
"timestamp": "2024-06-26 19:30:00",
"base_datos": { "estado": "OK", "error": null },
"estadisticas": {
"total_certificaciones": 150,
"total_usuarios": 45
},
"endpoints_disponibles": [ ... ]
}
}
POST
/auth/login
Público
Obtén tu API Key (código de referido) con tu email
curl -X POST "https://certius.online/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"email": "usuario@ejemplo.com"}'
📄 Ver respuesta
{
"success": true,
"message": "Login exitoso",
"data": {
"user": {
"id": 1,
"email": "usuario@ejemplo.com",
"creditos": 10,
"es_ilimitado": false,
"codigo_referido": "ABCD1234"
},
"api_key": "ABCD1234",
"mensaje": "Usa tu código de referido como API Key en el header X-API-Key"
}
}
GET
/auth/me
🔒 Requiere API Key
Obtén los datos de tu usuario autenticado
curl -X GET "https://certius.online/api/v1/auth/me" \
-H "X-API-Key: ABCD1234"
📄 Ver respuesta
{
"success": true,
"data": {
"id": 1,
"email": "usuario@ejemplo.com",
"creditos": 10,
"es_ilimitado": false,
"codigo_referido": "ABCD1234",
"total_certificaciones": 12
}
}
POST
/certificates
🔒 Requiere API Key
Certifica un documento. Límites según categoría.
📦 Límites por categoría:
| Categoría |
Extensiones |
Límite |
| 📄 Documentos |
PDF, DOC, DOCX, TXT, RTF, ODT, HTML |
10 MB |
| 📑 Presentaciones |
PPT, PPTX |
15 MB |
| 📊 Hojas de cálculo |
XLS, XLSX |
10 MB |
| 🖼️ Imágenes |
JPG, JPEG, PNG, GIF, WEBP |
5 MB |
| 🎵 Audio |
MP3, WAV, OGG, FLAC, M4A, AAC |
25 MB |
| 🎬 Video |
MP4, AVI, MOV, MKV, WEBM, FLV, WMV |
50 MB |
Formatos soportados:
📕 PDF
📘 DOC / DOCX
📝 TXT
📄 RTF
📃 ODT
🌐 HTML
📑 PPT / PPTX
📊 XLS / XLSX
🖼️ JPG / PNG / GIF / WEBP
🎵 MP3 / WAV / OGG / FLAC / M4A / AAC
🎬 MP4 / AVI / MOV / MKV / WEBM / FLV / WMV
Campos del formulario (multipart/form-data):
| Campo |
Tipo |
Requerido |
Descripción |
| documento |
File |
Requerido |
Archivo a certificar (ver límites por categoría) |
| email |
String |
Opcional |
Email del propietario (por defecto el del usuario autenticado) |
curl -X POST "https://certius.online/api/v1/certificates" \
-H "X-API-Key: ABCD1234" \
-F "documento=@contrato.pdf" \
-F "email=cliente@ejemplo.com"
curl -X POST "https://certius.online/api/v1/certificates" \
-H "X-API-Key: ABCD1234" \
-F "documento=@cancion.mp3"
curl -X POST "https://certius.online/api/v1/certificates" \
-H "X-API-Key: ABCD1234" \
-F "documento=@video.mp4"
📄 Ver respuesta
{
"success": true,
"message": "Documento certificado exitosamente",
"data": {
"codigo": "XYZ789",
"hash": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
"documento": "cancion.mp3",
"fecha": "2024-06-26 19:30:00",
"tipo": "audio",
"formato": "mp3",
"icono": "🎵",
"tsa_obtenido": true,
"blockchain_obtenido": true,
"url_descarga": "https://certius.online/api/v1/certificates/XYZ789/download",
"url_verificacion": "https://certius.online/verificar.php?codigo=XYZ789",
"creditos_restantes": 9
}
}
GET
/certificates/{codigo}
🔒 Requiere API Key
Obtén los metadatos de un certificado
curl -X GET "https://certius.online/api/v1/certificates/XYZ789" \
-H "X-API-Key: ABCD1234"
📄 Ver respuesta
{
"success": true,
"data": {
"codigo": "XYZ789",
"hash_documento": "5e884898da...",
"nombre_original": "cancion.mp3",
"email_usuario": "cliente@ejemplo.com",
"fecha_certificacion": "2024-06-26 19:30:00",
"metadata": {
"formato": "mp3",
"nombre_formato": "Audio MP3",
"categoria": "audio",
"tamaño": 15728640,
"icono": "🎵"
},
"url_descarga": "https://certius.online/api/v1/certificates/XYZ789/download",
"url_verificacion": "https://certius.online/verificar.php?codigo=XYZ789"
}
}
GET
/certificates/{codigo}/download
🔒 Requiere API Key
Descarga el PDF del certificado
curl -X GET "https://certius.online/api/v1/certificates/XYZ789/download" \
-H "X-API-Key: ABCD1234" \
--output certificado_XYZ789.pdf
POST
/verify
Público
Verifica un certificado por su código
curl -X POST "https://certius.online/api/v1/verify" \
-H "Content-Type: application/json" \
-d '{"codigo": "XYZ789"}'
📄 Ver respuesta
{
"success": true,
"data": {
"certificado": {
"codigo": "XYZ789",
"documento": "cancion.mp3",
"propietario": "cliente@ejemplo.com",
"fecha_certificacion": "2024-06-26 19:30:00",
"hash": "5e884898da...",
"metadatos": {
"formato": "mp3",
"nombre_formato": "Audio MP3",
"categoria": "audio",
"tamaño": 15728640,
"icono": "🎵"
}
},
"verificacion": {
"estado": "VALIDO",
"mensaje": "✅ Certificado válido"
}
}
}
GET
/verify/{codigo}
Público
Verifica un certificado directamente desde el navegador
# Desde el navegador:
https://certius.online/api/v1/verify/XYZ789
# Con cURL:
curl -X GET "https://certius.online/api/v1/verify/XYZ789"
GET
/users/credits
🔒 Requiere API Key
Consulta tus créditos disponibles
curl -X GET "https://certius.online/api/v1/users/credits" \
-H "X-API-Key: ABCD1234"
📄 Ver respuesta
{
"success": true,
"data": {
"creditos": 10,
"es_ilimitado": false,
"plan": "Créditos",
"codigo_referido": "ABCD1234"
}
}
💻 Ejemplos de uso
Python
import requests
BASE_URL = "https://certius.online/api/v1"
response = requests.post(f"{BASE_URL}/auth/login",
json={"email": "usuario@ejemplo.com"})
api_key = response.json()["data"]["api_key"]
with open("cancion.mp3", "rb") as f:
files = {"documento": f}
headers = {"X-API-Key": api_key}
response = requests.post(f"{BASE_URL}/certificates",
files=files, headers=headers)
print(response.json())
with open("video.mp4", "rb") as f:
files = {"documento": f}
response = requests.post(f"{BASE_URL}/certificates",
files=files, headers=headers)
print(response.json())
JavaScript (Node.js)
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
const BASE_URL = "https://certius.online/api/v1";
const loginRes = await axios.post(`${BASE_URL}/auth/login`, {
email: "usuario@ejemplo.com"
});
const apiKey = loginRes.data.data.api_key;
const formData = new FormData();
formData.append('documento', fs.createReadStream('cancion.mp3'));
const certRes = await axios.post(`${BASE_URL}/certificates`,
formData, {
headers: {
'X-API-Key': apiKey,
...formData.getHeaders()
}
}
);
console.log(certRes.data);
PHP
<?php
$apiKey = "ABCD1234";
$baseUrl = "https://certius.online/api/v1";
$ch = curl_init("{$baseUrl}/auth/login");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['email' => 'usuario@ejemplo.com']));
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
$apiKey = $data['data']['api_key'];
$ch = curl_init("{$baseUrl}/certificates");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: {$apiKey}"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'documento' => new CURLFile('/ruta/video.mp4')
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
?>
cURL
curl -X POST "https://certius.online/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"email": "usuario@ejemplo.com"}'
curl -X POST "https://certius.online/api/v1/certificates" \
-H "X-API-Key: ABCD1234" \
-F "documento=@cancion.mp3"
curl -X POST "https://certius.online/api/v1/certificates" \
-H "X-API-Key: ABCD1234" \
-F "documento=@video.mp4"
curl -X POST "https://certius.online/api/v1/verify" \
-H "Content-Type: application/json" \
-d '{"codigo": "XYZ789"}'
curl -X GET "https://certius.online/api/v1/status"