Aller au contenu
signatik

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.

Référence

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.

Étape 1

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.

Étape 2

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://preprod-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://preprod-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.
  • retention_days : 1 à 90 jours après complétion, puis purge des PDF ; la preuve reste.
Étape 3

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.

Étape 4

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://preprod-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 purge
Erreurs

Format uniforme, codes stables

Toute erreur renvoie { "error": { "code": "…", "message": "…" } }.

CodeSens
401 unauthorizedclé absente, mal formée ou révoquée
403 forbiddenscope manquant sur la clé
402 insufficient_creditssolde insuffisant : la réponse contient le solde, le coût requis et l’URL d’achat
422 identity_requiredsignature avancée sans identité attestée — jamais contournable
409 invalid_statusaction impossible dans l’état courant (ex. envoi d’une enveloppe déjà envoyée)
429 rate_limitedtrop de requêtes ; en-tête Retry-After
Agents

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://preprod-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/mcp

Recommandation : 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.

Chaîne de confiance

Publiée, stable, à ne jamais casser

Certificats de l’autorité

https://preprod-app.signatik.com/pki/ca.crt

Racine et émettrice : pour vérifier nos cachets et les certificats des signataires.

Liste de révocation

https://preprod-app.signatik.com/pki/crl.der

Republiée chaque jour, même vide : une liste périmée invaliderait la vérification de tous les documents.

Politique de signature

https://preprod-app.signatik.com/.well-known/signature-policy.json

Identifiée par un OID référencé dans chaque signature.