API REST de e-Signature.eu — firmas electrónicas (SES, AES, QES)

1. Presentación

La API REST de e-Signature.eu permite a su aplicación enviar documentos para firma electrónica (simple SES, avanzada AES o cualificada QES según eIDAS) sin pasar por nuestra web. Usted envía el PDF y los firmantes; nosotros gestionamos la verificación de identidad, la firma y el seguimiento; usted recibe el documento firmado mediante la API o un callback.

URL base https://api.e-signature.eu/v3/signature/

Esta documentación describe la API v3. ¿Ya usa la API v2 (https://api.e-signature.eu/v2/signature/)? Consulte el Changelog.

2. Autenticación

Sus credenciales están en Mi cuenta > Firmas API una vez conectado en e-signature.eu:

  • User ID: en la URL, como parámetro userid de cada llamada;
  • API token: en la cabecera HTTP x-api-key de cada llamada.
curl -X GET "https://api.e-signature.eu/v3/signature/requestBalance?userid=123" \
  -H "x-api-key: YOUR_API_TOKEN"

Mantenga su token en secreto: da acceso completo a su cuenta mediante la API. Las llamadas deben hacerse desde su servidor, nunca desde un navegador o una app móvil.

3. Convenciones

Peticiones y respuestas

  • Solo HTTPS. Los cuerpos de las peticiones son JSON (Content-Type: application/json).
  • Cada respuesta es JSON, en una de estas dos formas:
{ "success": true,  "result": { ... } }
{ "success": false, "error": "Readable error message" }

Límites

Límite Valor
Peticiones 10 por minuto por cuenta y dirección IP (por encima, HTTP 403; reintente tras un minuto)
Documento Un PDF por solicitud, 30 MB como máximo, sin cifrar / sin contraseña
Descarga de documentos firmados 30 días tras la finalización (ver Conservación)

4. Créditos

Las solicitudes se pagan con sus créditos prepago de e-signature.eu. El precio de un método se obtiene con getMethods (tiene en cuenta sus precios específicos). Su saldo lo devuelven requestBalance y cada objeto solicitud (credits_balance).

Recarga automática de créditos

Para no quedarse nunca sin créditos, su cuenta puede recargarse automáticamente. Se configura una vez en Mi cuenta > Firmas API, no mediante la API:

  1. Elija un umbral (en créditos) y el paquete de créditos que se pedirá.
  2. Guarde un método de pago con nuestro proveedor de pagos Mollie (tarjeta, o adeudo directo SEPA mediante Bancontact, iDEAL…). Se solicita una sola vez un pago de verificación de 0,01 €.
  3. Cada vez que se descuentan créditos y su saldo baja del umbral, se crea un pedido del paquete elegido y se paga automáticamente con el método de pago guardado. La factura se le envía por email.
Recarga automática
Activación Un cargo de créditos (p. ej. una nueva solicitud) que hace bajar el saldo por debajo del umbral
Abono de los créditos En cuanto se confirma el pago: inmediatamente con tarjeta, tras unos días hábiles con adeudo directo SEPA
Recargas en curso Una a la vez
Límite de seguridad Un número máximo de recargas automáticas por 30 días
Pago fallido El pedido se marca como fallido, la recarga automática se desactiva y se le informa por email
La recarga se activa con un cargo. Una solicitud que cuesta más que su saldo actual se rechaza (HTTP 403, You do not have enough credits) y no activa ninguna recarga: elija un umbral superior al coste de sus solicitudes más grandes y mantenga un margen si paga con adeudo directo SEPA. Su saldo está disponible en todo momento con requestBalance y credits_balance.

5. Cómo funciona una solicitud de firma

  1. Usted crea la solicitud con el PDF, los firmantes y los métodos de firma aceptados. Se descuentan los créditos.
  2. Cada firmante recibe un email con un enlace de firma personal (o usted envía el signature_link cuando send_email es false).
  3. El firmante verifica su identidad con uno de los métodos aceptados (itsme®, Evrotrust, Veriff, OTP…) y firma.
  4. Cuando todos han firmado, la solicitud pasa a finished: el PDF firmado (PAdES) está disponible con getRequest y se envía en el callback.

Orden de firma

Por defecto, todos los firmantes firman en paralelo. Para definir un orden, indique sign_first: true en los firmantes del primer grupo: se les invita de inmediato, varios en paralelo si es necesario. Los demás firmantes solo se invitan cuando todo el primer grupo ha firmado. Dos grupos como máximo.

Dos modos de integración

Modo Funcionamiento
Modo email (send_email: true, por defecto) Enviamos en su nombre a los firmantes las invitaciones, los recordatorios y los emails de finalización.
Modo integrado (send_email: false) No se envía ningún email al crear la solicitud: el signature_link de cada firmante se devuelve en la respuesta y usted redirige a sus usuarios desde su propia interfaz.
Incluso con send_email: false, un recordatorio o una cancelación lanzados desde el panel en línea envían un email a los firmantes pendientes.

No consulte la API en bucle

No llame a getRequest repetidamente para seguir el estado de una solicitud: utilice los callbacks, enviados automáticamente en cada cambio. Las llamadas excesivas activan una limitación automática que suspende temporalmente el tratamiento de sus peticiones.

6. Crear una solicitud de firma

POST/v3/signature/request?userid={userid}
{
  "title": "Sales agreement 2026-114",
  "lang": "en",
  "methods": [
    "itsme-qes-signature",
    "evrotrust-signature"
  ],
  "signature_place": "position_auto",
  "reminder": 3,
  "send_email": true,
  "email_notification": false,
  "note_html": "Please sign the agreement before Friday.",
  "signature_redirect": "https://www.example.com/thank-you",
  "external_reference": "QUOTE-2026-114",
  "metadata": {
    "crm_deal_id": 8812
  },
  "callback_url": "https://erp.example.com/hooks/esignature",
  "signers": [
    {
      "firstname": "Ann",
      "lastname": "Peeters",
      "email": "[email protected]",
      "phone": "+32475111222",
      "sign_first": true
    },
    {
      "firstname": "Marc",
      "lastname": "Dubois",
      "email": "[email protected]",
      "sign_first": false
    }
  ],
  "pdf_file_base64": "JVBERi0xLjcKJeLjz9MK..."
}

Métodos de firma

Método Nivel Cobertura Precio
itsme-qes-signature — itsme® QES (cualificada) 32 países europeos 1 crédito / firmante
evrotrust-signature — Evrotrust QES (cualificada) 69 países 1 crédito / firmante
veriff-advanced-signature — Veriff AES (avanzada) 198 países 0,7 créditos / firmante
otp-email-non-qualified — OTP por email o SMS SES (simple) Todo el mundo 0,4 créditos / firmante

Son los precios estándar: getMethods devuelve los métodos disponibles y los precios de su cuenta. Solo una firma electrónica cualificada (QES) equivale legalmente a una firma manuscrita según el Reglamento eIDAS. otp-email-non-qualified cubre email y SMS: el código se envía por SMS si el firmante tiene phone, si no por email, al mismo precio.

Campos del cuerpo de la petición

Campo Obligatorio Tipo Descripción
title sí string Nombre del documento. Se conservan letras, cifras y guiones; si el nombre ya existe en su cuenta, se añade un sufijo -1, -2…
lang sí string Idioma de los emails y de las páginas de firma: fr, nl, en, de, es.
methods sí array Métodos de firma aceptados, ver Métodos de firma. Si se aceptan varios, cada firmante elige.
signers sí array Firmantes, ver más abajo.
pdf_file_base64 sí string El PDF, codificado en base64. Un solo archivo, 30 MB como máximo, sin cifrar.
signature_place no string position_auto (por defecto) o position_manual, ver Colocación de las firmas.
reminder no number Recordatorio automático cada N días, de 0 a 14. Por defecto 0 (sin recordatorio).
send_email no boolean Por defecto true (modo email). Con false (modo integrado) no se envía ningún email de invitación ni de finalización: envíe usted el signature_link. No compatible con sign_first: true.
email_notification no boolean Por defecto false. Con true, recibe un email en cada firma.
note_html no string Mensaje añadido a los emails enviados a los firmantes (modo email). Se aceptan etiquetas HTML, p. ej. Note with <strong>HTML</strong>.
signature_redirect no string (URL) Página mostrada al firmante tras la firma. Debe ser una URL válida (no se aceptan cadenas vacías). Por defecto: página de confirmación en e-signature.eu.
external_reference no string Su propio identificador (presupuesto, contrato…), 255 caracteres como máximo. Se devuelve en cada respuesta y callback.
metadata no object Objeto JSON libre, 4 KB como máximo, devuelto tal cual.
callback_url no string (URL) URL de callback solo para esta solicitud (HTTPS público). Por defecto: la URL de su cuenta.

Campos de un firmante

Campo Obligatorio Tipo Descripción
lastname sí string
email sí string Dirección de email válida
firstname no string
phone no string Formato internacional que empieza por + y el prefijo del país (+32…); se eliminan los espacios. Un número no válido se ignora. Con el método OTP, el código se envía por SMS si se indica un número, si no por email.
sign_first no boolean Por defecto false. Ver Orden de firma.
sign_page, sign_left, sign_bottom con position_manual number Ver Colocación de las firmas.

Coste

Precio del método más caro de methods × número de firmantes. Los créditos se descuentan al crear la solicitud. Los de los firmantes que no hayan firmado se reembolsan si la solicitud se cancela o se detiene.

Respuesta 201 Created

{
  "success": true,
  "result": {
    "id_sign": 4521,
    "lang": "en",
    "doc_name": "Sales-agreement-2026-114",
    "send_email": true,
    "from_api": true,
    "signature_redirect": "https://www.example.com/thank-you",
    "status_id": "pending",
    "date_status": "2026-10-20 10:15:02",
    "last_reminder": null,
    "timezone": "Europe/Brussels",
    "credits": 2,
    "credits_balance": 38.4,
    "signers": {
      "1": {
        "firstname": "Ann",
        "lastname": "Peeters",
        "email": "[email protected]",
        "phone": "+32475111222",
        "sign_first": true,
        "status": "pending",
        "signature_link": "https://www.e-signature.eu/en/sign/?key=…"
      },
      "2": {
        "firstname": "Marc",
        "lastname": "Dubois",
        "email": "[email protected]",
        "sign_first": false,
        "status": "pending",
        "signature_link": "https://www.e-signature.eu/en/sign/?key=…"
      }
    },
    "external_reference": "QUOTE-2026-114",
    "metadata": {
      "crm_deal_id": 8812
    }
  }
}

7. Colocación de las firmas

position_auto (por defecto)

Coloque los marcadores #SIG01, #SIG02… (también se acepta #SIG01#) como texto en su documento, donde cada firmante debe firmar (#SIG01 = primer firmante del array signers). La firma se coloca arriba a la izquierda del marcador. Si un mismo marcador aparece varias veces, se usa su primera aparición. Un marcador se omite si su zona de firma cubriría una firma ya colocada (o una firma existente): el firmante toma entonces el siguiente marcador libre. Un marcador tan cerca del borde de la página que la firma deba desplazarse solo se usa como último recurso.

Consejo: escriba los marcadores en texto blanco (sobre fondo blanco) para que sean invisibles en el PDF firmado. Deben seguir siendo texto real, no una imagen, para ser detectados.

Documento aún no firmado

Si el documento no contiene ningún marcador, o falta el marcador de un firmante, se añade al final del documento una página de firmas con los marcadores y todas las firmas se colocan en esa página (6 firmantes en la primera página añadida, luego 10 por página adicional).

Documento ya firmado

No se puede añadir ninguna página a un PDF ya firmado electrónicamente: invalidaría las firmas existentes. Con position_auto, las firmas se colocan en los marcadores libres, es decir, los marcadores cuya zona de firma no cubre ninguna firma existente. Los marcadores libres se asignan a los firmantes por orden (#SIG01, #SIG02…).

Si el documento firmado no contiene suficientes marcadores libres para todos los firmantes, la solicitud se rechaza (HTTP 400): use position_manual.

position_manual

Indique la posición de la firma, en centímetros, para cada firmante:

Campo Valor
sign_page Número de página, a partir de 1 (entero)
sign_left Distancia del borde izquierdo de la página a la izquierda de la firma, en cm (se admiten decimales)
sign_bottom Distancia del borde inferior de la página a la parte superior de la firma, en cm (se admiten decimales)
{ "lastname": "Peeters", "email": "[email protected]", "sign_page": 3, "sign_left": 2.5, "sign_bottom": 6 }

sign_left y sign_bottom indican la esquina superior izquierda de la firma. La firma se coloca debajo y a la derecha de este punto.

Los límites dependen del tamaño real de la página y del tamaño del sello visual: toda la firma debe quedar al menos a 2 cm de cada borde de la página. Si se aceptan varios métodos de firma, se toma el sello más grande. Si un valor está fuera de los límites, el mensaje de error indica el rango permitido para esa página.

Una firma no puede cubrir otra firma de la solicitud, ni una firma existente si el documento ya está firmado.

8. El objeto solicitud de firma

Devuelto por request, getRequest, cancel, skip, remind, delete y enviado en los callbacks.

Campo Descripción
id_sign Identificador de la solicitud
doc_name Nombre del documento
status_id pending en curso · finished firmado por todos · skipped detenido, firmado parcialmente · cancelled · deleted
signers Objeto de los firmantes, por clave ("1", "2"…) — ver más abajo
lang, send_email, signature_redirect, timezone Tal como se definieron al crear
from_api true si la solicitud se creó mediante la API
date_status Fecha del último cambio de estado (zona horaria de la solicitud)
last_reminder Fecha del último recordatorio, o null
credits Créditos de la solicitud (reservados mientras está en curso, consumidos al finalizar)
credits_balance Saldo actual de su cuenta
pdf_file_base64 PDF firmado, cuando la solicitud ya no está en curso
external_reference, metadata Tal como se enviaron al crear

Firmante

Campo Descripción
firstname, lastname, email, phone, sign_first Tal como se enviaron al crear
status pending · signed · skipped
signature_link Enlace de firma personal, mientras el firmante no haya firmado
signing_time, signing_method Tras la firma: fecha y método utilizado
verified_firstname, verified_lastname Tras la firma: identidad verificada por el método de firma
{
  "1": {
    "firstname": "Ann",
    "lastname": "Peeters",
    "email": "[email protected]",
    "status": "signed",
    "signing_time": "2026-10-20 11:02:47",
    "signing_method": "itsme-qes-signature",
    "verified_firstname": "Ann",
    "verified_lastname": "Peeters"
  }
}

9. Otros endpoints

Todos los endpoints reciben userid en la URL y x-api-key en las cabeceras. id_sign se pasa en la URL.

Listar las solicitudes

GET/v3/signature/list?userid={userid}&status_id=pending

status_id (opcional): pending, finished o skipped. external_reference (opcional): solo las solicitudes con esta referencia.

{
  "success": true,
  "result": [
    {
      "id_sign": 4521,
      "status_id": "pending",
      "external_reference": "QUOTE-2026-114"
    },
    {
      "id_sign": 4498,
      "status_id": "finished"
    }
  ]
}

Obtener una solicitud

GET/v3/signature/getRequest?userid={userid}&id_sign=4521

Devuelve el objeto solicitud de firma, con el PDF firmado una vez finalizada la solicitud. Para seguir el estado, use los callbacks en lugar de llamadas repetidas.

Enviar un recordatorio

PATCH/v3/signature/remind?userid={userid}&id_sign=4521

Envía un email de recordatorio a los firmantes con status: pending del grupo invitado actualmente (primero el grupo sign_first). Solo solicitudes pending. Funciona también con solicitudes creadas con send_email: false.

Detener una solicitud (conservando las firmas ya realizadas)

PATCH/v3/signature/skip?userid={userid}&id_sign=4521

Posible cuando al menos un firmante ha firmado y al menos otro no. La solicitud pasa a skipped, el PDF firmado parcialmente está disponible y se reembolsan los créditos de los firmantes que no firmaron.

Cancelar una solicitud

DELETE/v3/signature/cancel?userid={userid}&id_sign=4521

Posible mientras nadie haya firmado; para terminar una solicitud firmada parcialmente, use skip. La respuesta contiene la solicitud con status_id: cancelled; después, la solicitud y su documento se eliminan de su panel, los enlaces de firma dejan de funcionar y se reembolsan los créditos.

Eliminar una solicitud

DELETE/v3/signature/delete?userid={userid}&id_sign=4521

Solo solicitudes finished o skipped. Elimina los documentos y la solicitud. La respuesta contiene la solicitud una última vez, con status_id: deleted: descargue el PDF firmado antes de eliminar.

Descargar el audit trail

GET/v3/signature/requestAuditTrail?userid={userid}&id_sign=4521

No disponible mientras la solicitud está en curso (HTTP 412). Devuelve el objeto solicitud con audit_trail_base64: un PDF con el historial de la solicitud (fechas, métodos, identidades verificadas).

Obtener el saldo de créditos

GET/v3/signature/requestBalance?userid={userid}
{ "success": true, "result": { "credits_balance": 38.4 } }

Listar los métodos de firma

GET/v3/signature/getMethods?userid={userid}&lang=en

Métodos aceptados en methods, con el precio en créditos por firmante para su cuenta. lang (opcional) traduce las etiquetas.

{
  "success": true,
  "result": [
    {
      "id": "itsme-qes-signature",
      "label": "itsme® | QES",
      "credits": 1
    },
    {
      "id": "evrotrust-signature",
      "label": "Evrotrust | QES",
      "credits": 1
    },
    {
      "id": "veriff-advanced-signature",
      "label": "Veriff | AES",
      "credits": 0.7
    },
    {
      "id": "otp-email-non-qualified",
      "label": "OTP by Email/SMS | SES",
      "credits": 0.4
    }
  ]
}

10. Callbacks (webhooks)

Defina su URL de callback en Mi cuenta > Firmas API (HTTPS, accesible públicamente). También puede indicar una callback_url por solicitud. El callback es un POST con un cuerpo JSON que contiene el estado completo actual de la solicitud (mismo formato que getRequest), enviado para las solicitudes creadas mediante la API.

Campos del evento

Campo Descripción
event Tipo de evento (ver más abajo)
event_id Identificador único del evento (evt_…). Idéntico en cada reintento del mismo evento: úselo para ignorar duplicados.
event_at Fecha del evento (UTC, ISO 8601)
changes Cambios de estado de los firmantes, p. ej. [{"signer_key": 1, "from": "pending", "to": "signed"}] (solo si un firmante cambió)
external_reference, metadata Tal como se enviaron al crear la solicitud

Tipos de eventos

Evento Cuándo
signer.signed Un firmante ha firmado, la solicitud sigue en curso
signer.declined, signer.skipped, signer.expired Un firmante rechazó, fue omitido o expiró
request.completed Todos los firmantes han firmado: el PDF firmado está incluido (pdf_file_base64)
request.stopped La solicitud se detuvo: el PDF firmado parcialmente está incluido
request.cancelled La solicitud fue cancelada
request.deleted La solicitud fue eliminada
request.expired La solicitud expiró
request.declined Correo certificado rechazado por el destinatario
request.updated Cualquier otro cambio: recordatorio enviado, firmante modificado, nuevos enlaces de firma…

El cuerpo contiene siempre el estado completo actual: su integración puede basarse en status_id y en el estado de cada firmante en lugar de solo en el tipo de evento.

Cabeceras

Cabecera Ejemplo
X-Esig-Api-Version 3
X-Esig-Event signer.signed
X-Esig-Event-Id evt_4f0c2b9e1d7a3c55e8b1a2f0
X-Esig-Delivery-Attempt 1, 2, …
X-Esig-Signature t=1792407600,v1=5d41402abc4b2a76b9719d911017c592…

Verificar la firma

Su secreto de firma aparece en Mi cuenta > Firmas API, donde también puede regenerarlo. v1 es el HMAC-SHA256 de "<t>.<raw request body>" con su secreto, codificado en hexadecimal. Use el cuerpo bruto, antes de cualquier lectura JSON, y rechace los callbacks de más de 5 minutos.

PHP

$body   = file_get_contents( 'php://input' );
$header = $_SERVER['HTTP_X_ESIG_SIGNATURE'] ?? '';
preg_match( '/t=(\d+),v1=([a-f0-9]{64})/', $header, $m );
$valid = $m
    && abs( time() - (int) $m[1] ) <= 300
    && hash_equals( hash_hmac( 'sha256', $m[1] . '.' . $body, $secret ), $m[2] );

Node.js

const crypto = require('crypto');
function verify(rawBody, header, secret) {
  const m = /t=(\d+),v1=([a-f0-9]{64})/.exec(header || '');
  if (!m || Math.abs(Date.now() / 1000 - Number(m[1])) > 300) return false;
  const expected = crypto.createHmac('sha256', secret).update(`${m[1]}.${rawBody}`).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(m[2]));
}

C# (.NET)

using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions;
static bool Verify(string rawBody, string header, string secret) {
    var m = Regex.Match(header ?? "", @"t=(\d+),v1=([a-f0-9]{64})");
    if (!m.Success || Math.Abs(DateTimeOffset.UtcNow.ToUnixTimeSeconds() - long.Parse(m.Groups[1].Value)) > 300) return false;
    using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
    var expected = Convert.ToHexString(h.ComputeHash(Encoding.UTF8.GetBytes(m.Groups[1].Value + "." + rawBody))).ToLowerInvariant();
    return CryptographicOperations.FixedTimeEquals(Encoding.ASCII.GetBytes(expected), Encoding.ASCII.GetBytes(m.Groups[2].Value));
}

Respuestas y reintentos

  • Responda HTTP 2xx en cuanto reciba el callback y trátelo de forma asíncrona si es necesario.
  • En caso de error de red, tiempo agotado (30 s), HTTP 429 o 5xx, el callback se reenvía cada hora con el mismo event_id, hasta 24 intentos. Las demás respuestas 4xx se consideran definitivas. Si la solicitud vuelve a cambiar antes de una entrega correcta, el siguiente callback lleva un nuevo evento y el estado completo actual. El estado actual sigue disponible en todo momento con getRequest.
  • Se siguen las redirecciones (se mantiene el método POST). No se pueden usar localhost ni direcciones privadas.

11. Errores

Los errores se devuelven con "success": false y un mensaje error legible. Base su lógica en el código HTTP: los mensajes pueden mejorar con el tiempo.

Código HTTP Significado
200 / 201 OK / solicitud creada
400 Campo ausente o no válido (el mensaje indica el campo)
400 id_sign ausente, o filtro status_id no válido
401 userid o x-api-key no válidos
403 Créditos insuficientes, o límite de peticiones alcanzado (10 por minuto)
404 id_sign desconocido para esta cuenta
412 Acción no posible en el estado actual (p. ej. cancelar tras una firma, eliminar una solicitud en curso)

Errores por endpoint

Endpoint Código HTTP Mensaje Causa
Todos los endpoints 401 Please provide a valid x-api-key in headers & userid in url parameters. userid o x-api-key no válidos
Todos los endpoints 403 Rate limit exceeded: 10 requests per minute is allowed. Please try again after a minute. Más de 10 peticiones por minuto
request 400 Ver Mensajes de validación Campo, PDF o posición ausente o no válido
request 403 You do not have enough credits Saldo inferior al coste de la solicitud
list 400 Incorrect value for status_id. Filtro status_id desconocido
getRequest, remind, skip, cancel, delete, requestAuditTrail 400 please provide id_sign parameter. id_sign ausente
getRequest, remind, skip, cancel, delete, requestAuditTrail 404 invalid id_sign value. id_sign desconocido para esta cuenta
remind 412 request can not be remind to user(s): wrong status La solicitud no está en curso
skip 412 request can not be skipped: wrong status Nadie ha firmado todavía, todos han firmado, o la solicitud ya no está en curso
cancel 412 request can not be cancelled: someone already signed the PDF Al menos un firmante ha firmado
delete 412 request can not be deleted: wrong status_id La solicitud sigue en curso
requestAuditTrail 412 Can not download Audit Trail while the signature request is pending La solicitud sigue en curso

Mensajes de validación al crear (request, HTTP 400)

El mensaje indica el campo o el problema; … representa un valor de su petición. Base su código en el código HTTP y muestre el mensaje para ayudar a corregir la petición.

Mostrar todos los mensajes de validación

Cuerpo de la petición

  • Request body can not be empty

title, lang

  • Field 'title' must be of type string and can not be empty
  • Field 'lang' is an invalid language code

signers

  • field 'signers' is omitted or is empty
  • Firstname, Lastname & email address must be of type string and can not be empty
  • … is not an email address
  • field 'sign_first' is not a boolean value
  • field 'sign_first' can not be 'true' when field 'send_email' is 'false'

methods

  • You must set at least one signing method
  • … is not a valid method

Opciones

  • Field 'reminder' should be of type numeric between 0 & 14 (days)
  • Field 'send_email' should be of type boolean
  • Field 'email_notification' should be of type boolean
  • Field 'note_html' should be of type string
  • Field 'signature_redirect' is not a valid url

external_reference, metadata, callback_url

  • Field 'external_reference' must be a string
  • Field 'external_reference' can not exceed 255 characters
  • Field 'metadata' must be a JSON object
  • Field 'metadata' can not exceed 4096 bytes
  • Field 'callback_url' must be a publicly reachable HTTPS URL

PDF

  • Field 'pdf_file_base64' should be of type string and not empty
  • Field 'pdf_file_base64' doesn't contains a base64 encoded string
  • Field 'pdf_file_base64' doesn't contains a base64 encoded PDF file
  • Your file is too big > 30 MB
  • Couldn't load your PDF document
  • PDF file is encrypted and password protected. Please unprotected your PDF file.
  • Couldn't get pages from PDF document

Colocación de las firmas

  • field 'signature_place' is incorrect
  • field 'sign_page' is empty or is not an integer
  • field 'sign_left' is empty or is not a number (cm)
  • field 'sign_bottom' is empty or is not a number (cm)
  • Field 'sign_left' for signer … must be between … and … cm (page … is … x … cm, signature … x … cm, margin … cm)
  • Field 'sign_bottom' for signer … must be between … and … cm (…)
  • Field 'sign_page' for signer … is too big: the document has … page(s)
  • Page … is too small for the signature of … (…)
  • The signature of … on page … overlaps an existing signature of the document (…)
  • The signatures of … and … overlap on page … (…)
  • The existing signatures of the document could not be read: the position of the signature of … can not be checked

Documento ya firmado (position_auto)

  • Your PDF file is already signed: pages can not be added without invalidating the existing signatures. It contains … free marker(s) for … signer(s): place the signatures manually (signature_place: position_manual).
  • Your PDF file is already signed: pages can not be added without invalidating the existing signatures. The free markers could not be determined: place the signatures manually (signature_place: position_manual).

Procesamiento

  • Couldn't extract markers from PDF document: …
  • Unknown error: Request could not be saved into the Database
  • Mensaje de error devuelto por el proveedor de firma (eID Easy)

12. Conservación

Los documentos firmados pueden descargarse durante 30 días tras la finalización, con getRequest o el callback request.completed. El audit trail se conserva durante el periodo definido en nuestro DPA. Archive el documento firmado y el audit trail por su parte en un plazo de 30 días.

13. Changelog

API v3 — diferencias con la API v2

La API v2 (https://api.e-signature.eu/v2/signature/) sigue disponible y sin cambios. Los endpoints, parámetros y la autenticación son idénticos en ambas versiones: para pasar a la API v3, sustituya la URL base por https://api.e-signature.eu/v3/signature/. Puede migrar endpoint por endpoint.

Las URL anteriores (https://www.e-signature.eu/wp-json/signature/ para la API v2 y https://www.e-signature.eu/wp-json/esig/v3/signature/ para la API v3) siguen siendo válidas. Recomendamos utilizar las URL de api.e-signature.eu.

Tema API v2 API v3
URL base /v2/signature/ /v3/signature/
Sus propias referencias — Nuevos campos external_reference y metadata, devueltos en cada respuesta y callback; filtro list por external_reference
URL de callback Una URL por cuenta También por solicitud (callback_url)
Contenido del callback Estado completo de la solicitud Estado completo de la solicitud + event, event_id, event_at, changes
Seguridad del callback — Firma HMAC-SHA256 en la cabecera X-Esig-Signature
Reintentos del callback Cada hora en caso de error de red, hasta su recepción Cada hora en caso de error de red, tiempo agotado, HTTP 429 o 5xx, hasta 24 intentos, mismo event_id
id_sign ausente, filtro status_id no válido HTTP 401 HTTP 400
id_sign desconocido HTTP 401 HTTP 404
Audit trail de una solicitud en curso HTTP 401 HTTP 412
Colocación manual: sign_left / sign_bottom Límites fijos para una página A4 vertical (0 a 15 cm / 4 a 28,7 cm), altura de firma 2,5 cm Límites calculados según el tamaño real de la página y del sello de los métodos aceptados, margen de 2 cm; se admiten decimales; el mensaje de error indica el rango permitido
Colocación manual: solapamientos No se comprueban Rechazado si una firma cubre otra firma de la solicitud o una firma existente del documento
Colocación manual: sign_page No se rechazaba un número de página superior en uno a la última página Se rechaza cualquier página inexistente

Los callbacks siguen la versión usada para crear la solicitud: una solicitud creada con la API v2 sigue recibiendo callbacks de la API v2.

Carrito de la compra

0
image/svg+xml

No products in the cart.

Seguir comprando
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.