Ir al contenido

Crear Documento Asíncrono

POST {{base_url}}/v1/documents/envelopes/async
curl -X POST {{base_url}}/v1/documents/envelopes/async \
-H "Authorization: Bearer TU_TOKEN_AQUI" \
-H "Content-Type: application/json" \
-d '{
  "name": "Contrato de Servicios",
  "documents": [{
    "ref_id": "main",
    "source_type": "url",
    "file_format": "pdf",
    "role": "sign",
    "source_payload": { "url": "https://files.example.com/contrato.pdf" }
  }],
  "signers": [{
    "name": "John Doe",
    "email": "[email protected]",
    "country_code": "+51",
    "phone": "900000001"
  }]
}'
Sin ejecutar·latencia ~ 412 ms
Demo pública · no guarda datos · firma con sandbox PKI

A diferencia del método síncrono, este endpoint acepta lotes masivos en una sola llamada y responde inmediatamente con un código 202 Accepted y un ingest_token. El sobre se arma en segundo plano (background) descargando los archivos en paralelo.



Límite Valor
Documentos máximos por sobre 100
Peso máximo por documento ~100 MB
Peso máximo total del sobre 1 GB
Fuente soportada (V1) Solo URL

Para evitar duplicados en caso de fallas de red, puedes enviar una llave de idempotencia. Si reintentas la misma llamada, el servidor devolverá la misma respuesta cacheada (TTL de 30 minutos).

ParámetroTipoDescripciónLímites
Idempotency-KeyuuidIdentificador único generado por el cliente. Si la ingesta original aún está en proceso y reintentas, devolverá código 409.Cabecera HTTP (Header)

ParámetroTipoDescripciónLímites
name*stringNombre del sobre (se normaliza a MAYÚSCULAS y se le añade .pdf).Obligatorio
documents*arrayLista de 1 a 100 documentos. El primer elemento (posición 0) siempre será considerado el documento principal.Obligatorio
documents[].ref_idstringIdentificador único. Para el principal es opcional (por defecto 'main'). Para los anexos es obligatorio y único.Obligatorio en anexos
documents[].source_typeenumTipo de fuente del archivo.Solo admite 'url'
documents[].source_payload.url*urlURL pública desde donde se descargará el documento.Máx: 2048 caracteres
callback_urlurlWebhook de un solo uso (one-shot) que será invocado cuando la ingesta termine (éxito o fallo).Máx: 2048 caracteres
callback_secretstringLlave secreta. Si se envía, el payload del webhook irá firmado mediante HMAC-SHA256 en la cabecera X-Firmeasy-Signature-SHA256.Opcional
external_idstring(255)ID externo libre asignado por el integrador (pass-through). Se copia al documento resultante.Opcional
metadataobjectObjeto JSON libre de almacenamiento llave-valor para guardar metadatos personalizados. Se copia al documento resultante.Pass-through

El endpoint asíncrono acepta los mismos campos de configuración que el endpoint síncrono:

ParámetroTipoDescripciónLímites
folder_tokenuuidToken de la carpeta destino donde se guardará el documento.Debe ser un UUID válido
signature_deadlineISO8601Fecha y hora límite futura para completar las firmas (ej. '2026-12-31T23:59:59.000Z').Formato UTC completo
is_signature_order_activeboolFuerza a que los firmantes sigan estrictamente el orden jerárquico establecido.Por defecto: false
is_rejection_allowedboolHabilita el botón para que un firmante pueda rechazar formalmente el documento.Por defecto: false
is_original_download_allowedboolPermite al firmante descargar el PDF original limpio antes de firmar.Por defecto: true
disable_owner_notificationsboolDesactiva alertas por correo hacia el propietario del sobre.Por defecto: false
disable_signer_notificationsboolDesactiva alertas automáticas hacia los firmantes.Por defecto: false
send_automatic_invitationsboolDispara invitaciones al crear el sobre.Por defecto: true
send_automatic_invitations_byenumMedio de envío de invitaciones. Valores: 'email' o 'whatsapp'.Opcional
send_signed_document_by_whatsappboolEnvía copia del documento finalizado por WhatsApp.Por defecto: false
reminder_every_n_daysintFrecuencia en días para recordatorios automáticos (0 a 30).0 para desactivar
observersarray<string>Lista de correos de observadores con acceso de solo lectura (máx 20).Array de emails
redirect_linkstring(255)URL de redirección post-firma.Debe ser una URL válida
created_byemailCorreo del usuario creador de la solicitud.Formato de email
sender_namestring(150)Nombre del solicitante mostrado al firmante. Si se omite, se usa el del propietario.Máx 150 caracteres
reply_to_emailemailDirección para recibir respuestas de las notificaciones.Formato de email

Si la solicitud es válida, el sistema responde inmediatamente con un token de ingesta. El tiempo estimado se calcula como min(1800, 10 + n·5) segundos, donde n es el número de documentos.

Si la solicitud es válida, el sistema responderá que ha comenzado el proceso.

{
"ingest_token": "01234567-89ab-cdef-0123-456789abcdef",
"status": "ingesting",
"documents_total": 2,
"credits_cost": 2,
"status_url": "[{{base_url}}/v1/documents/envelopes/01234567-89ab-cdef-0123-456789abcdef/status]({{base_url}}/v1/documents/envelopes/01234567-89ab-cdef-0123-456789abcdef/status)",
"estimated_processing_time_seconds": 20
}
NombreTipoDescripción
ingest_tokenstringIdentificador único de la ingesta. Guárdalo para consultar el estado o cancelar el proceso.
statusstringEstado inicial de la ingesta. Valor devuelto: 'ingesting'.
documents_totalintegerCantidad total de documentos recibidos para procesar en este lote.
credits_costintegerCréditos que se descontarán al finalizar exitosamente. Si la ingesta falla, no se cobra.
status_urlstringURL para consultar el progreso del armado del sobre en tiempo real.
estimated_processing_time_secondsintegerEstimación en segundos del tiempo que tomará completar la ingesta.

Nota sobre facturación: Se cobra 1 crédito por documento recién al finalizar exitosamente el armado. Si la ingesta falla, no se descuentan créditos. Si el saldo de la organización es firmas_disponibles < -500, la operación se rechaza con código 402.


Permite verificar el progreso del armado del sobre. Cuando alcanza el estado ready, el sistema te devolverá el document_token real definitivo.

Consulta la página dedicada para más detalle: Estado de la ingesta.

Endpoint: GET /v1/documents/envelopes/{{ingest_token}}/status

Estados posibles: ingestingassemblingready (éxito) | failed | cancelled.

Códigos de error adicionales: 402 si la organización tiene saldo insuficiente (firmas_disponibles < -500).


Si el documento aún está en proceso, puedes enviar la orden de abortar.

Consulta la página dedicada para más detalle: Cancelar ingesta.

Endpoint: POST /v1/documents/envelopes/{{ingest_token}}/cancel

Responderá con código 200 si se cancela correctamente. Si el sobre ya está en estado terminal (ready, failed o cancelled), devolverá un error 409.


Objeto Documento (Respuesta Final / Webhooks)

Sección titulada «Objeto Documento (Respuesta Final / Webhooks)»

Una vez que el documento es procesado, el sistema consolida el sobre completo. Esta es la estructura que obtendrás al consultar el documento mediante la API (o a través de Webhooks de creación).

{
"external_id": "ERP-123",
"token": "abcdef01-2345-6789-abcd-ef0123456789",
"name": "CONTRATO_LOTE_MASIVO.pdf",
"folder": { "token": "uuid", "name": "Carpeta" },
"status": "pending",
"lang": "es",
"size": 245100,
"original_file": "https://.../files/...?intent=view&signature=...",
"signed_file": null,
"original_download_file": "https://.../files/...?intent=download&...",
"signed_download_file": null,
"signatures_made": 0,
"signature_deadline": "2026-12-31T23:59:59.000Z",
"created_by": { "email": "[email protected]" },
"extra_docs_count": 2,
"extra_docs": [
{
"token": "anexo-token",
"name": "Anexo 1 - Tarifario 2026.pdf",
"original_file": "https://.../?intent=view&...",
"signed_file": null,
"original_download_file": "https://.../?intent=download&...",
"signed_download_file": null,
"uploaded_by": { "email": "[email protected]" }
}
],
"signers": [
{
"external_id": null,
"token": "signer-api-id",
"status": "pending",
"rejection_reason": null,
"order": 1,
"name": "Jane Doe",
"email": "[email protected]",
"phone": "900000001",
"country_code": "+51",
"document_type": "dni",
"document_number": "900000003",
"role": "signer",
"link": "[https://app.firmeasy.legal/](https://app.firmeasy.legal/)...",
"placements": [
{
"document_ref": "main",
"type": "signature",
"page_number": 1,
"relative_position_left": 36.5,
"relative_position_top": 39.25,
"relative_size_width": 25,
"relative_size_height": 8
}
],
"standard_flow": [
{
"state": "pending",
"flow_name": "Firma Holográfica",
"flow_key": "holographic_signature"
}
],
"advanced_flow": []
}
],
"created_through": "api",
"created_at": "2026-06-23T10:00:00.000000Z",
"updated_at": "2026-06-23T10:00:00.000000Z"
}
NombreTipoDescripción
tokenstringIdentificador único del sobre generado por FirmEasy. Guárdalo para consultas y operaciones futuras.
external_idstringID externo enviado en la petición original, devuelto para validación de tu sistema.
namestringNombre normalizado del documento (en MAYÚSCULAS con extensión '.pdf').
statusstringEstado actual del sobre. Valor inicial: 'pending'.
original_filestringURL firmada para visualizar el PDF original en el navegador.
original_download_filestringURL firmada para descargar directamente el PDF original.
signed_filestringURL del documento firmado. Null mientras el sobre no esté completamente firmado.
signatures_madeintegerNúmero de firmas estampadas hasta el momento. Inicia en 0.
extra_docs_countintegerCantidad de documentos anexos incluidos en el sobre.
extra_docsarrayLista de anexos con sus tokens y URLs de descarga. Las URLs expiran en 60 minutos.
signersarrayLista de firmantes registrados con su token individual, estado, link de firma y configuración de flujo.
created_atdatetimeFecha y hora exacta de creación del sobre en formato UTC ISO 8601.