Première signature en dix minutes
Une API REST, des clés de bac à sable gratuites, un webhook à la complétion. Pas de SDK obligatoire : du JSON et du base64.
La documentation complète
Référence par ressource générée depuis les schémas du serveur, guides pas à pas, catalogue des erreurs, spécification OpenAPI.
Créez un compte et une clé de bac à sable
Les clés sk_test_ ne consomment aucun crédit ; les emails partent avec la mention [TEST]. Les clés sk_live_ facturent à la complétion.
Envoyez une enveloppe
Un PDF en base64, un ou plusieurs signataires, send: true. La réponse contient l’URL de signature de chacun : laissez partir l’email, ou injectez l’URL dans votre produit (marque blanche).
curl -X POST https://app.signatik.com/api/v1/envelopes \
-H "Authorization: Bearer sk_test_…" \
-H "Content-Type: application/json" \
-d '{
"name": "Contrat de mission n°1234",
"send": true,
"signature_level": "simple",
"documents": [{ "name": "contrat.pdf", "pdf_base64": "JVBERi0…" }],
"signers": [{ "email": "jean.dupont@exemple.fr", "name": "Jean Dupont" }]
}'
# → 201 { "id": "env_…", "status": "sent",
# "signers": [{ "sign_url": "https://app.signatik.com/sign/…" }] }signature_level:simple(défaut),advanced(identité attestée requise),organization_seal(cachet sous mandat, signé en lot).signers[].order: 0 = parallèle ; 1, 2, 3… = séquentiel.fields[]: signature, texte, date, case à cocher — position en pourcentage de la page, origine en haut à gauche. Sans champ, la signature est placée automatiquement. Le signataire peut ensuite déplacer et redimensionner son cadre de signature sur la page, ajouter des zones de texte pour compléter le document, et y faire figurer, s'il le souhaite, la date et le lieu (« Fait à …, le … », renvoyé danssigners[].signature_place).retention_days: 1 à 90 jours après complétion, puis purge des PDF ; la preuve reste.
Recevez la complétion par webhook
Créez un endpoint depuis la console : le secret n’est affiché qu’une fois. Chaque livraison est signée en HMAC-SHA256 du corps brut ; 8 tentatives avec attente exponentielle tant que vous ne répondez pas 2xx.
// Vérification de la signature d'un webhook (Node)
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers['x-esign-signature']));Événements : envelope.completed (après scellement, avec liens de téléchargement), envelope.expired, mandate.activated, seal_batch.applied, attendance.session_closed.
Vérifiez un document, même des années plus tard
Par le PDF ou par son empreinte SHA-256. C’est l’endpoint que l’avocat de votre client utilisera.
curl -X POST https://app.signatik.com/api/v1/verify \
-H "Authorization: Bearer sk_test_…" -H "Content-Type: application/json" \
-d '{ "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08" }'
# → enveloppe, signataires, chronologie chaînée, chain_valid — même après purgeFormat uniforme, codes stables
Toute erreur renvoie { "error": { "code": "…", "message": "…" } }.
| Code | Sens |
|---|---|
401 unauthorized | clé absente, mal formée ou révoquée |
403 forbidden | scope manquant sur la clé |
402 insufficient_credits | solde insuffisant : la réponse contient le solde, le coût requis et l’URL d’achat |
422 identity_required | signature avancée sans identité attestée — jamais contournable |
409 invalid_status | action impossible dans l’état courant (ex. envoi d’une enveloppe déjà envoyée) |
429 rate_limited | trop de requêtes ; en-tête Retry-After |
Serveur MCP : la signature depuis Claude, Cursor, n8n
Dix outils : créer une demande, attendre la signature, télécharger les documents scellés et la preuve, vérifier un PDF, créer une session d’émargement… En stdio ou en HTTP.
claude mcp add esign -e ESIGN_API_URL=https://app.signatik.com -e ESIGN_API_KEY=sk_test_… -- npx @esign/mcp
# n8n / Make : ESIGN_API_URL=… ESIGN_API_KEY=… npx @esign/mcp --http --port 3333 → http://localhost:3333/mcpRecommandation : une clé dédiée à l’agent, en bac à sable pendant le développement, et une validation humaine dans le client avant tout envoi réel. Le signataire reste une personne qui reçoit un lien et saisit un code.
Publiée, stable, à ne jamais casser
Certificats de l’autorité
https://app.signatik.com/pki/ca.crtRacine et émettrice : pour vérifier nos cachets et les certificats des signataires.
Liste de révocation
https://app.signatik.com/pki/crl.derRepubliée chaque jour, même vide : une liste périmée invaliderait la vérification de tous les documents.
Politique de signature
https://app.signatik.com/.well-known/signature-policy.jsonIdentifiée par un OID référencé dans chaque signature.