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.Crear vs. crear y enviar
Firma ofrece dos formas de iniciar una solicitud de firma, y elegir la incorrecta es el error de integración más común:
Usa
create cuando tu flujo de trabajo necesite un paso de revisión o edición antes de que algo llegue a un destinatario. Usa create-and-send cuando quieras que la solicitud quede activa y los destinatarios notificados en una sola llamada.
El indicador send_signing_email
Este indicador vive en settings.send_signing_email, pero significa algo distinto según el endpoint que llames:
El indicador allow_presigning_download
Controla si los destinatarios pueden descargar el documento sin firmar antes de completar su parte del flujo de firma. Se comporta igual en ambos endpoints:
- Si lo estableces explícitamente en
settings, ese valor se almacena en la solicitud de firma. - Si lo omites, se resuelve en el momento de visualización/descarga a través de una cadena de herencia: solicitud de firma → espacio de trabajo → configuración de la empresa, con un valor predeterminado de no permitido si ninguno de esos está configurado.
- Al crear desde una plantilla y omitirlo, la solicitud hereda el propio valor
allow_presigning_downloadde la plantilla.
El esquema OpenAPI público de
create-and-send actualmente no incluye allow_presigning_download dentro de su objeto settings, pero el endpoint lo acepta y lo aplica de forma idéntica a POST /signing-requests.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)
Los destinatarios requieren
first_name y last_name como campos separados - no existe un único campo name.first_name(obligatorio) - Nombre del destinatariolast_name(opcional) - Apellido del destinatario (obligatorio solo al crear mediantePOST /signing-requestscon un documento sin procesar)email(obligatorio) - Dirección de correo electrónico (createadvierte sobre formato inválido;create-and-sendy/sendlo rechazan)designation(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)initial- Campo de iniciales (también aceptainitialscomo alias)approval_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
Prácticas recomendadas:
- 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 y email - last_name es opcional) y que los campos prellenados tengan los datos correspondientes del destinatario.Incrustación de la vista de firma
Para incrustar la experiencia de firma en tu propia aplicación, obtén elid del destinatario desde GET /signing-requests/{id}/users y construye la URL de firma:
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
- Prellena campos con datos del destinatario o datos estáticos antes de enviar
- 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