📘 Certius API v1.0

API de certificación de documentos con doble sello de autenticidad (RFC 3161 TSA + OTS Blockchain)

https://certius.online/api/v1/

🔑 Tu API Key es tu código de referido/cliente. Lo obtienes al hacer hacer la primera recarga de créditos.

🔐 Autenticación

La API usa API Key (tu código de referido/cliente) para autenticar las solicitudes.

⚠️ Importante: Tu API Key es tu código de referido/cliente. No lo compartas y mantenlo en secreto.

Header requerido:

X-API-Key: TU_CODIGO_REFERIDO/CLIENTE

Ejemplo con cURL:

curl -X GET "https://certius.online/api/v1/auth/me" \ -H "X-API-Key: ABCD1234"

📋 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)
# Ejemplo con PDF curl -X POST "https://certius.online/api/v1/certificates" \ -H "X-API-Key: ABCD1234" \ -F "documento=@contrato.pdf" \ -F "email=cliente@ejemplo.com" # Ejemplo con MP3 (Audio - 25MB) curl -X POST "https://certius.online/api/v1/certificates" \ -H "X-API-Key: ABCD1234" \ -F "documento=@cancion.mp3" # Ejemplo con MP4 (Video - 50MB) 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" } }

⚠️ Códigos de Error

Código Significado Qué hacer
200 OK Todo funcionó correctamente
201 Creado Recurso creado exitosamente
400 Bad Request Revisa los parámetros de tu solicitud
401 Unauthorized API Key inválida o no proporcionada
402 Payment Required No tienes créditos suficientes
403 Forbidden No tienes permiso para acceder
404 Not Found El recurso no existe
405 Method Not Allowed Método HTTP no permitido
500 Internal Server Error Error en el servidor, contacta a soporte

Ejemplo de respuesta de error:

{ "success": false, "message": "El archivo supera el límite de 25MB para archivos de tipo audio", "errors": null, "timestamp": "2024-06-26 19:30:00", "api_version": "1.0.0" }

💻 Ejemplos de uso

Python

import requests BASE_URL = "https://certius.online/api/v1" # 1. Login para obtener API Key response = requests.post(f"{BASE_URL}/auth/login", json={"email": "usuario@ejemplo.com"}) api_key = response.json()["data"]["api_key"] # 2. Certificar un MP3 (audio) 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()) # 3. Certificar un MP4 (video) 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"; // 1. Login const loginRes = await axios.post(`${BASE_URL}/auth/login`, { email: "usuario@ejemplo.com" }); const apiKey = loginRes.data.data.api_key; // 2. Certificar un MP3 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"; // 1. Login $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']; // 2. Certificar un MP4 $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

# 1. Login curl -X POST "https://certius.online/api/v1/auth/login" \ -H "Content-Type: application/json" \ -d '{"email": "usuario@ejemplo.com"}' # 2. Certificar un MP3 (audio - 25MB) curl -X POST "https://certius.online/api/v1/certificates" \ -H "X-API-Key: ABCD1234" \ -F "documento=@cancion.mp3" # 3. Certificar un MP4 (video - 50MB) curl -X POST "https://certius.online/api/v1/certificates" \ -H "X-API-Key: ABCD1234" \ -F "documento=@video.mp4" # 4. Verificar certificado curl -X POST "https://certius.online/api/v1/verify" \ -H "Content-Type: application/json" \ -d '{"codigo": "XYZ789"}' # 5. Estado del servicio curl -X GET "https://certius.online/api/v1/status"

📊 Límites y Políticas

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

* Solicitudes por minuto: 60 · Certificaciones por crédito: 1 documento

🔒 Seguridad:

  • ✅ Todas las comunicaciones son a través de HTTPS
  • ✅ Tu API Key es tu código de referido/cliente
  • ✅ Todas las solicitudes son registradas para auditoría
  • ✅ Los archivos originales nunca se almacenan, solo su HASH

📞 Soporte

📧 Email: info@certius.online

🌐 Web: https://certius.online

📚 Documentación: https://certius.online/api/docs