Crear un documento
El endpoint principal. Sube un PDF, coloca los recuadros de firma sobre él y devuelve la URL donde se puede firmar.
El documento puede venir de una URL, de Base64 o de una plantilla ya registrada — elige uno.
Cada entrada de stickers es un firmante en un lugar; dale email y configura un flujo si
quieres que Firmame mande las invitaciones, si no, reparte tú document_url.
Autenticación
signmage Cada petición lleva Authorization: signmage {webId}:{firma}, donde firma es el Base64 de
HMAC-SHA256(apiKey, cadenaFirmada).
Qué va dentro de cadenaFirmada depende de la petición:
| Petición | cadenaFirmada |
|---|---|
GET | La URI completa incluyendo el query string, exactamente como se envía |
POST con JSON | El cuerpo JSON, re-serializado compacto (sin espacios ni salto de línea final) |
POST multipart | El SHA-256 en Base64 del archivo, que además se manda en el header Content-SHA256 |
Dos detalles que conviene resolverlos desde el principio:
- En
GET, la URI se firma tal como se envía, así que el orden y el encoding de los parámetros importan. - En
POST, la comparación se hace contra tu JSON re-serializado en forma compacta. Manda JSON compacto y canónico para que las firmas coincidan.
Una firma que no coincide devuelve 401 con el cuerpo vacío. Como la misma respuesta cubre un
web ID desconocido, una llave inactiva y una firma que no coincide, revisa las tres cosas al
diagnosticar.
En: header
Cuerpo de la petición
application/json
Definiciones de TypeScript
Usa el tipo request body en TypeScript.
Cuerpo de la respuesta
application/json
text/plain
curl -X POST "https://example.com/developers/json" \ -H "Content-Type: application/json" \ -d '{ "url_doc": { "url": "https://ejemplo.com/contrato.pdf", "name": "contrato.pdf" }, "stickers": [ { "authority": "EMAIL_LINK", "stickerType": "rect", "dataType": "email", "imageType": "stroke", "data": "[email protected]", "page": 0, "rect": { "lx": 330, "ly": 300, "tx": 530, "ty": 400 } } ] }'{ "document_ticket": "c6279a7c-b3d5-4c71-b417-4687a4f38914", "document_flow": false, "sticker_count": 1, "stickers": [ { "sticker_id": "qv3ZzAL3w", "sticker_index": 0, "sticker_email": "[email protected]", "sticker_data": "[email protected]", "sticker_page": 0, "sticker_coordinates": { "lx": 388, "ly": 400, "ux": 496, "uy": 480 }, "sticker_type": "EMAIL", "sticker_image_type": "hash", "sticker_authorities": [ { "authority_name": "Vinculada a Correo Electrónico" } ] } ], "document_url": "https://app.firmame.com/pdf/c6279a7c-b3d5-4c71-b417-4687a4f38914/?child=true&inv=true"}