Documentación API
API REST para integrar firma electrónica simple en tus aplicaciones.
Todas las solicitudes requieren un API key en el header Authorization:
curl -X POST https://firma.cl/api/v1/signatures \ -H "Authorization: Bearer frm_live_tu_api_key" \ -F "file=@contrato.pdf" \ -F "signer_name=Juan Pérez" \ -F "signer_email=juan@ejemplo.cl" \ -F "signer_phone=+56912345678"
Las API keys se generan desde el dashboard en la sección API Objects.
Endpoints
/api/v1/signaturesCrear solicitud de firmaEnvía un documento PDF para ser firmado electrónicamente. Requiere multipart/form-data con el archivo y datos del firmante.
Request body:
{
"file": "(PDF binary)",
"signer_name": "Juan Pérez",
"signer_email": "juan@ejemplo.cl",
"signer_phone": "+56912345678",
"message": "Por favor firme este contrato"
}Response:
{
"id": "uuid",
"status": "pending",
"signer_name": "Juan Pérez",
"signer_email": "juan@ejemplo.cl",
"original_filename": "contrato.pdf",
"created_at": "2026-03-12T..."
}/api/v1/signaturesListar firmasRetorna las solicitudes de firma paginadas. Soporta filtros por status y fecha.
Response:
{
"data": [...],
"pagination": {
"total": 42,
"page": 1,
"per_page": 20
}
}/api/v1/signatures/:idDetalle de firmaRetorna el detalle completo de una solicitud incluyendo audit trail.
Response:
{
"id": "uuid",
"status": "signed",
"signer_name": "...",
"audit_trail": [...]
}/api/v1/signatures/:id/downloadDescargar PDF firmadoRetorna una URL pre-firmada temporal para descargar el documento firmado.
Response:
{
"download_url": "https://...",
"expires_in": 3600
}/api/v1/signatures/:id/cancelCancelar solicitudCancela una solicitud de firma pendiente.
Response:
{
"id": "uuid",
"status": "cancelled"
}/api/v1/webhooksRegistrar webhookCrea un endpoint webhook para recibir notificaciones de eventos.
Request body:
{
"url": "https://tu-servidor.com/webhook",
"events": ["signature.completed", "signature.viewed"]
}Response:
{
"id": "uuid",
"url": "https://...",
"secret": "whsec_...",
"events": [...]
}/api/v1/usageConsultar usoRetorna el uso del período de facturación actual desglosado por API Object.
Response:
{
"billing_period": "2026-03",
"total_tokens": 150,
"by_api_object": [...]
}Firma envía webhooks firmados con HMAC-SHA256. Verifica la firma usando el secret proporcionado al crear el webhook.
// Header: X-Firma-Signature: sha256=...
const crypto = require('crypto');
const signature = crypto
.createHmac('sha256', webhookSecret)
.update(JSON.stringify(payload))
.digest('hex');
const isValid = signature === receivedSignature;Eventos disponibles:
signature.createdsignature.viewedsignature.acceptedsignature.completedsignature.failedsignature.cancelledsignature.expiredPor defecto, 60 requests por minuto por API Object. Configurable desde el dashboard. Cuando se excede el límite, la API retorna 429 Too Many Requests.