Envío de una solicitud de firma
Esta guía cubre la creación de una solicitud de firma, la incorporación de una plantilla o documento, y la invitación de destinatarios a firmar.Pasos
- Crea o selecciona una plantilla
- Crea una solicitud de firma que haga referencia a la plantilla
- Agrega destinatarios con la información requerida (nombre, apellido, correo electrónico)
- Opcionalmente, agrega campos de formulario con posicionamiento basado en porcentajes
- Envía la solicitud por correo electrónico o incrusta la vista de firma
Esquema del destinatario (campos obligatorios)
Cada destinatario debe incluir:first_name(obligatorio) - Nombre del destinatariolast_name(obligatorio) - Apellido del destinatarioemail(obligatorio) - Dirección de correo electrónico válidadesignation(obligatorio) - Rol:"Signer","CC"o"Approver". Los aprobadores revisan y aprueban el documento (sin firma) mediante los tipos de campoapproval_*que se describen más abajoorder(opcional) - Orden de firma para flujos de trabajo secuenciales
phone_number,street_address,city,state_province,postal_code,country,title,companycustom_fields- Objeto con pares clave-valor personalizados
Crear una solicitud de firma a partir de una plantilla (API)
Endpoint: POST /signing-requestsEjemplo de curl (crear solicitud a partir de una plantilla):
Document que incluye id (el signing_request_id) y document_url cuando corresponda.
Crear una solicitud de firma (ejemplo de servidor) — Node (fetch)
Crear una solicitud de firma (ejemplo de servidor) — Python (requests)
Crear una solicitud de firma a partir de un documento
En lugar de usar una plantilla, puedes crear una solicitud de firma subiendo directamente un documento PDF o DOCX. Elige el método según el tamaño de tu archivo:- Archivos pequeños (menos de 5MB)
- Archivos grandes (hasta 50MB)
Para documentos de menos de 5MB, incluye el archivo codificado en base64 directamente en el cuerpo de la solicitud:
Agregar campos de formulario (posicionamiento basado en porcentajes)
Al crear una solicitud de firma directamente (POST/signing-requests) o al actualizar una, puedes agregar campos de formulario:
Ejemplo de posicionamiento de campos
Tipos de campo
signature- Campo de firmatext- Entrada de texto de una líneadate- Selector de fechacheckbox- Casilla de verificacióndropdown- Selector desplegable (requieredropdown_options)initials- Campo de inicialesimage- Campo de imagenapproval_signature- Sello de APROBADO (solo Aprobador)approval_checkmark- Marca de aprobación (solo Aprobador)approval_date- Fecha de aprobación (solo Aprobador)
Los tipos de campo
approval_* solo pueden asignarse a un destinatario cuya designation sea "Approver" (asignar uno a un Firmante devuelve un 400). Su valor se genera del lado del servidor cuando el aprobador completa su revisión, por lo que no necesitas enviar un valor para ellos, y el sello de aprobación se representa en el certificado de finalización.Guías de posicionamiento
El sistema de coordenadas usa porcentajes para escalado responsivo:x: 0 (borde izquierdo) a 100 (borde derecho)y: 0 (borde superior) a 100 (borde inferior)width: porcentaje del ancho de la página (por ejemplo, 30 = 30% de ancho)height: porcentaje del alto de la página (por ejemplo, 8 = 8% de alto)
Actualización de solicitudes de firma
Antes de que se envíe una solicitud de firma, puedes actualizar sus detalles mediante la API. La API ofrece dos métodos:Actualización integral (PUT)
Usacomprehensive-update-signing-request para actualizaciones complejas que involucren varias secciones.
Cuándo usarlo:
- Actualizar varios destinatarios a la vez
- Eliminar destinatarios (con reasignación/eliminación de campos)
- Actualizar campos y recordatorios juntos
- Realizar cambios coordinados en varias secciones
signing_request_properties- Actualiza el nombre, la descripción, el documento, la expiración y la configuraciónrecipients- Inserta o actualiza destinatarios (incluye id para actualizar, omítelo para crear)deleted_recipients- Elimina destinatarios confield_action(eliminar o reasignar campos)fields- Inserta o actualiza campos (incluye id para actualizar, omítelo para crear)reminders- Inserta o actualiza recordatorios (incluye id para actualizar, omítelo para crear)
- ✅ Puede actualizar varias secciones en una sola solicitud
- ✅ Admite la eliminación de destinatarios con manejo de campos
- ✅ Solo funciona antes de que se envíe la solicitud
Actualización parcial (PATCH)
Usapartially-update-signing-request cuando actualices propiedades específicas o un solo destinatario.
Cuándo usarlo:
- Actualizar el nombre, la descripción o la configuración
- Agregar o actualizar un destinatario a la vez
- Realizar cambios puntuales sin afectar otros datos
- Actualizar solo propiedades (name, description, document, expiration_hours, settings)
- O actualizar/crear un solo destinatario
- ✅ Envía solo los campos que quieres cambiar
- ✅ Más eficiente para cambios pequeños
- ✅ Los demás campos permanecen sin cambios
- ✅ Más seguro para ediciones concurrentes
Cómo elegir entre PUT y PATCH
| Escenario | Usar | Motivo |
|---|---|---|
| Reconstrucción completa de la solicitud de firma | PUT | Reemplazo completo con todas las secciones (propiedades, destinatarios, campos, recordatorios) |
| Actualizar solo el nombre o la configuración | PATCH | Más eficiente, conserva destinatarios y campos |
| Agregar/actualizar un destinatario | PATCH | Modo de destinatario único, los demás destinatarios no se modifican |
| Actualizar varios destinatarios | PUT | Puede insertar o actualizar varios destinatarios en una sola solicitud |
| Eliminar destinatarios con reasignación de campos | PUT | Admite deleted_recipients con field_action |
| Cambiar el documento y todos los campos | PUT | Cambios estructurales importantes |
| Actualizar campos personalizados | PATCH | Conserva la solicitud de firma principal |
| Reemplazar todos los destinatarios | PUT | Enfoque de tabla rasa |
- Actualiza las solicitudes de firma antes de llamar a
/send - Valida los datos del destinatario antes de actualizar
- Usa PATCH para cambios incrementales
- Implementa lógica de reintento con retroceso exponencial
Envío (invitaciones por correo electrónico)
Una vez que tengas un ID de solicitud de firma (y hayas hecho las actualizaciones necesarias), llama a POST/signing-requests/{signing_request_id}/send para enviar correos electrónicos a todos los destinatarios.
Ejemplo
El endpoint
/send valida que todos los destinatarios tengan la información requerida (first_name, last_name, email) y que los campos con variable_name tengan los datos correspondientes en los registros de los destinatarios.Incrustación de la vista de firma
La interfaz pública de firma está disponible en el siguiente patrón:https://app.firma.dev/signing/{signing_request_user_id}
Notas:
- El
signing_request_user_idnormalmente se devuelve como parte del objetorecipientso como un token por destinatario; revisa la respuesta de GET /signing-requests/id para ver enlaces o tokens de firma a nivel de destinatario. - Si la API devuelve directamente un
document_urloembed_url, úsalo. Si no, genera un enlace de firma efímero del lado del servidor y devuélvelo al frontend.
Ejemplo — obtener los detalles de firma y renderizar un iframe
Casos particulares y consejos
- Orden de firma: Asegúrate de que los destinatarios tengan valores de
ordersecuenciales (1, 2, 3…) para flujos de trabajo de firma secuenciales - Registro de auditoría: Descarga el registro de auditoría mediante GET
/signing-requests/{id}/trackingpara ver todas las acciones de los usuarios - Descargar el PDF completado: Usa GET
/signing-requests/{id}/downloaddespués de la finalización - Webhooks: Suscríbete a eventos como
signing_request.completeden lugar de hacer polling (consulta la guía de Webhooks)
Próximos pasos
- Configura webhooks para recibir notificaciones de eventos en tiempo real (60 req/min)
- Agrega recordatorios automáticos para los destinatarios pendientes
- Incrusta el editor de plantillas con autenticación JWT (120 req/min)
- Configura los ajustes del espacio de trabajo para plantillas de correo electrónico personalizadas (100-200 req/min)
- Editor de plantillas incrustable con autenticación JWT para flujos de trabajo incrustados seguros