Para desarrolladores
La firma electrónica, dentro de tu sistema.
Tu ERP, CRM, core o software propio manda el PDF con una llamada, cada persona firma desde su celular y un webhook firmado le avisa a tu sistema. Viene con el plan Empresarial.

Integración
Son 7 líneas.
Una petición HTTPS a app.fyrelis.com y el contrato sale a firmar. Lo demás te llega solo.
- Una llamada crea la solicitudUn POST con el PDF y los firmantes. Te devuelve el id, el estado y la huella SHA-256 del documento.
- Un webhook te avisaTu sistema no pregunta cada minuto: recibe firma.completada, solicitud.completada o firma.rechazada.
- Reintentar no duplicaCon Idempotency-Key, el mismo cuerpo devuelve la misma solicitud. Nadie recibe dos veces el enlace.
curl https://app.fyrelis.com/api/v1/solicitudes \
-H "x-api-key: fyr_tu_llave" \
-H "Idempotency-Key: contrato-8814" \
-F asunto="Contrato de arrendamiento" \
-F referencia="contrato-8814" \
-F archivo=@contrato.pdf \
-F 'firmantes=[{"nombre":"María José Peñaranda","identificacion":"1045678901","celular":"3001234567","correo":"maria@ejemplo.com"}]'El PDF como archivo y los firmantes como JSON. Responde 201 con la solicitud.
Cómo funciona
De tu sistema al firmante, y de vuelta.
- Tu sistema
Manda el PDF
Tu ERP, CRM o core llama una vez con el documento y quién firma.
POST /api/v1/solicitudes - Fyrelis
Avisa al firmante
Guarda la huella del PDF y manda el enlace por WhatsApp, correo o ambos. O no manda nada y tú lo entregas.
201 · urlFirma - El firmante
Firma en su celular
Lee el documento, firma con el dedo y confirma con un código de 6 dígitos.
firma.completada - Tu sistema
Recibe el aviso
Un webhook firmado le dice a tu sistema que ya está, y bajas el PDF sellado.
solicitud.completada
Lo que trae la API
Lo que tu sistema ya necesita.
Siete estados, derivados, nunca a mano:
pendientevistoparcialfirmadorechazadovencidocancelado
anclasAnclas de texto
Escribe [[firma:cliente]] en la plantilla de tu sistema y la rúbrica cae ahí. También por coordenadas.
documentosVarios documentos, un código
Hasta 6 PDF en un mismo sobre. El firmante confirma una vez y cada PDF se sella por separado.
canal: "ninguno"El enlace en tu app
Con canal ninguno no avisamos nosotros: te damos urlFirma para tu chat, tu portal o un QR.
recordatoriosRecordatorios
Cada 1 a 30 días, hasta 10 veces, solo de 8:00 a 19:00 de Colombia. O a pedido con /recordar.
tipo_firmaNivel de firma
Simple con código, con cédula que debe coincidir, o biométrica con foto del rostro y del documento.
GET /api/v1/verificarVerificación pública
Cualquiera comprueba un PDF por su huella, sin llave y sin ver cédulas, teléfonos ni correos.
Seguridad de la integración
Cómo cuidamos cada firmaLlaves fyr_ que no guardamos
Viajan en x-api-key. En la base queda solo su HMAC-SHA256; la ves una vez al crearla y rotarla invalida la anterior al instante.
Avisos firmados
Cada webhook trae x-fyrelis-firma: el HMAC-SHA256 del cuerpo crudo con tu secreto. Lo rotas en el panel y lo pruebas con prueba.conexion.
6 reintentos
Si tu sistema no contesta 2xx en 10 s, se reintenta a los 1, 5, 15, 60, 360 y 1440 minutos. Las redirecciones no se siguen.
Idempotencia de 24 horas
La misma llave con otro cuerpo responde 409 idempotencia_conflicto en vez de crear otra solicitud.

No integras solo
Te acompañamos hasta la primera firma.
Escríbenos con tu caso: qué sistema tienes, qué documentos firmas y quién firma. Te responde una persona del equipo.
Preguntas
Lo que preguntan los equipos de TI.
¿Qué plan necesito para usar la API?
La API y los webhooks vienen con el plan Empresarial. Con él, generas tu llave en el panel, en Desarrolladores. Mira los paquetes en precios.
¿Cuánto cuesta cada solicitud?
Cada documento enviado gasta una firma por firmante, aunque no lo firmen: se descuentan al crear la solicitud y lo rechazado, cancelado o vencido no las devuelve. Si no te alcanza, la API responde 402 saldo_insuficiente sin crear nada, y GET /api/v1/saldo te dice cuánto queda.
¿Qué pasa si mi servidor está caído cuando llega el aviso?
El aviso queda en cola y se reintenta seis veces, la última unas 31 horas después del primer intento. Y el estado real siempre está en Fyrelis: GET /api/v1/solicitudes/:id con ?eventos=1 te trae la bitácora para reconciliar.
¿Cómo pruebo mi webhook antes de salir?
Desde Desarrolladores en el panel: registras tu URL y el botón de prueba manda un prueba.conexion firmado con tu secreto, con las mismas cabeceras. Ves en el momento qué contestó tu aplicación.
¿Sirve con cualquier lenguaje?
Sí. Es HTTP con JSON o multipart/form-data, así que lo llama cualquier sistema que haga una petición HTTPS. No necesitas una librería nuestra.