Integra MiFirma en tu aplicación con nuestra potente API REST
Requiere plan Corporativo. Contacta con ventas para obtener tus credenciales API.
Solicitar Acceso APILa API REST de MiFirma te permite integrar firma electrónica en tus aplicaciones de forma programática. Ideal para:
https://api.MiFirma.com/v1
La API utiliza tokens Bearer para autenticación. Todos los requests deben incluir el header:
Authorization: Bearer YOUR_API_KEY
| Código | Significado | Descripción |
|---|---|---|
200 |
OK | Request exitoso |
201 |
Created | Recurso creado exitosamente |
400 |
Bad Request | Parámetros inválidos |
401 |
Unauthorized | API Key inválida o faltante |
403 |
Forbidden | Sin permisos para este recurso |
404 |
Not Found | Recurso no encontrado |
429 |
Too Many Requests | Rate limit excedido |
500 |
Internal Server Error | Error del servidor |
{
"success": false,
"error": {
"code": "INVALID_CERTIFICATE",
"message": "El certificado digital es inválido o está vencido",
"details": {
"expiry_date": "2025-12-31"
}
}
}
| Plan | Requests/minuto | Requests/día |
|---|---|---|
| Corporativo | 120 | 10,000 |
| Enterprise | 300 | 50,000 |
Los headers de respuesta incluyen información del rate limit:
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 115
X-RateLimit-Reset: 1704207600
Firma un documento PDF con un certificado digital.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
pdf_file |
file | REQUERIDO | Archivo PDF a firmar (base64 o multipart) |
certificate_file |
file | REQUERIDO | Certificado digital (.p12/.pfx) |
certificate_password |
string | REQUERIDO | Contraseña del certificado |
signature_config |
object | OPCIONAL | Configuración de la firma visual |
reason |
string | OPCIONAL | Razón de la firma |
location |
string | OPCIONAL | Ubicación de la firma |
cargo |
string | OPCIONAL | Cargo del firmante |
curl -X POST https://api.MiFirma.com/v1/documents/sign \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: multipart/form-data" \
-F "pdf_file=@/path/to/document.pdf" \
-F "certificate_file=@/path/to/certificate.p12" \
-F "certificate_password=mypassword" \
-F "reason=Firma de contrato" \
-F "location=Quito, Ecuador" \
-F "cargo=Gerente General" \
-F 'signature_config={"x":100,"y":200,"page":1,"showQr":true}'
const formData = new FormData();
formData.append('pdf_file', pdfFile);
formData.append('certificate_file', certificateFile);
formData.append('certificate_password', 'mypassword');
formData.append('reason', 'Firma de contrato');
formData.append('location', 'Quito, Ecuador');
formData.append('cargo', 'Gerente General');
formData.append('signature_config', JSON.stringify({
x: 100,
y: 200,
page: 1,
showQr: true,
borderColor: '#1a4d7a',
textColor: '#000000'
}));
const response = await fetch('https://api.MiFirma.com/v1/documents/sign', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
},
body: formData
});
const result = await response.json();
{
"success": true,
"data": {
"document_id": "doc_1234567890",
"filename": "contrato_firmado.pdf",
"download_url": "https://api.MiFirma.com/v1/documents/doc_1234567890/download",
"signed_at": "2026-01-02T15:30:00Z",
"signer": {
"name": "Juan Pérez García",
"certificate_issuer": "BCE"
},
"file_size": 524288,
"pages": 5
}
}
Firma múltiples documentos PDF con el mismo certificado.
| Parámetro | Tipo | Descripción |
|---|---|---|
documents |
array | Array de objetos con pdf_file y configuración |
certificate_file |
file | Certificado digital |
certificate_password |
string | Contraseña del certificado |
{
"documents": [
{
"pdf_file": "base64_encoded_pdf_1",
"filename": "contrato_1.pdf",
"signature_config": {"x": 100, "y": 200, "page": 1}
},
{
"pdf_file": "base64_encoded_pdf_2",
"filename": "contrato_2.pdf",
"signature_config": {"x": 150, "y": 250, "page": 2}
}
],
"certificate_file": "base64_encoded_certificate",
"certificate_password": "mypassword"
}
{
"success": true,
"data": {
"batch_id": "batch_abc123",
"status": "processing",
"total_documents": 2,
"estimated_completion": "2026-01-02T15:35:00Z"
}
}
Obtiene información de un documento firmado.
{
"success": true,
"data": {
"document_id": "doc_1234567890",
"filename": "contrato.pdf",
"status": "signed",
"signed_at": "2026-01-02T15:30:00Z",
"signer": {
"name": "Juan Pérez García",
"certificate_issuer": "BCE",
"certificate_valid_until": "2027-12-31"
},
"download_url": "https://api.MiFirma.com/v1/documents/doc_1234567890/download",
"verification_url": "https://MiFirma.com/verificar?id=doc_1234567890"
}
}
Lista todos los documentos firmados.
| Parámetro | Tipo | Descripción |
|---|---|---|
page |
integer | Número de página (default: 1) |
per_page |
integer | Resultados por página (default: 20, max: 100) |
status |
string | Filtrar por estado: signed, pending, failed |
date_from |
date | Fecha desde (YYYY-MM-DD) |
date_to |
date | Fecha hasta (YYYY-MM-DD) |
curl -X GET "https://api.MiFirma.com/v1/documents?page=1&per_page=20&status=signed" \
-H "Authorization: Bearer YOUR_API_KEY"
Verifica la autenticidad de un documento firmado.
| Parámetro | Tipo | Descripción |
|---|---|---|
pdf_file |
file | Documento PDF firmado a verificar |
{
"success": true,
"data": {
"is_valid": true,
"signatures": [
{
"signer_name": "Juan Pérez García",
"signed_at": "2026-01-02T15:30:00Z",
"certificate": {
"issuer": "BCE",
"serial_number": "ABC123456",
"valid_from": "2025-01-01",
"valid_until": "2027-12-31",
"is_valid": true
},
"document_integrity": "intact"
}
],
"total_signatures": 1
}
}
Recibe notificaciones en tiempo real cuando ocurren eventos en tu cuenta.
document.signed - Documento firmado exitosamentedocument.failed - Error al firmar documentobatch.completed - Lote de firmas completadocertificate.expiring - Certificado por vencer (30 días){
"event": "document.signed",
"timestamp": "2026-01-02T15:30:00Z",
"data": {
"document_id": "doc_1234567890",
"filename": "contrato.pdf",
"signer_name": "Juan Pérez García",
"download_url": "https://api.MiFirma.com/v1/documents/doc_1234567890/download"
}
}
Nuestro equipo técnico está disponible para asistirte