Des signatures depuis votre propre logiciel.
Créez des demandes de signature depuis votre application, faites signer vos signataires sur votre page à votre marque et recevez le PDF scellé et sa piste d'audit par webhook. Une API REST avec clés d'idempotence, événements signés et codes d'erreur stables.
Les clés API et les webhooks sont inclus dans l'offre Enterprise. Documentation publique, spécification OpenAPI 3.1, aucun SDK à installer.
curl https://api.wesign.now/v1/signing-requests \
-H "Authorization: Bearer $WSK_KEY" \
-H "Idempotency-Key: case-4711/poa" \
-F "file=@power-of-attorney.pdf" \
-F 'signers=[{"email":"anna@example.ch","role":"client","name":"Anna Muster"}]' \
-F "placement=anchors" \
-F 'metadata={"case_id":"4711"}'
# → 201 Created
# {
# "documentId": "8a1e4f9a-…",
# "status": "pending",
# "signers": [{ "role": "client", "signingUrl": "https://yourco.wesign.now/en/sign/…", "emailed": true, … }], …
# }Quatre étapes de votre code au PDF scellé.
Rien à installer : HTTPS, JSON et multipart. Chaque étape renvoie à la page de la documentation qui en est le contrat.
- Étape 1
Créer la demande
Un
Dans la documentationPOST /v1/signing-requestsavec le PDF, les signataires et le placement des champs :anchorsrepère les marqueurs[[ls:signature:client]]dans le PDF,explicitprend des coordonnées,auto_appendajoute une page de signature. La réponse contient ledocumentIdet unesigningUrlpar signataire.curl https://api.wesign.now/v1/templates/$TEMPLATE_ID/instantiate \ -H "Authorization: Bearer $WSK_KEY" \ -H "Idempotency-Key: case-4711/mandate" \ -H "Content-Type: application/json" \ -d '{ "recipients": [{ "slot": 1, "email": "anna@example.ch", "name": "Anna Muster" }], "field_values": { "company.legal_name": "Muster AG", "company.tax_id": "CHE-123.456.789" }, "metadata": { "case_id": "4711" } }'Le même envoi depuis un modèle verrouillé :
POST /v1/templates/{id}/instantiatefusionne vosfield_valuesdans les{{placeholders}}et invite les destinataires. - Étape 2
Votre signataire signe
Nous envoyons l'invitation dans la langue du signataire depuis votre sous-domaine à votre marque — ou vous transmettez le lien vous-même avec
Dans la documentationsend_emails: false. Ajoutez un numéro de mobile etrequire_sms_verification, et le signataire saisit d'abord un code à usage unique : une signature électronique avancée (AES) au lieu du niveau lien e-mail (SES)."signers": [{ "email": "anna@example.ch", "role": "client", "name": "Anna Muster", "locale": "de", "phone_e164": "+41791112233", "require_sms_verification": true }] # The invitation goes out in German from your branded subdomain. # Anna asks for the code on the signing page; the signature is AES once verified. # Deliver the link yourself instead: send_emails=false - Étape 3
Vous recevez l'événement
Enregistrez un webhook une fois pour l'espace de travail, ou passez
Dans la documentationcallback_urlpar demande. Chaque livraison est signée HMAC-SHA256, réessayée avec backoff exponentiel et consignée dans un journal de livraison depuis lequel vous pouvez relivrer.document.completedarrive une fois par document avecsigned_pdf_url,audit_trail_urlet lesha256du fichier.POST https://your-app.example/wesign/callback X-WeSign-Event: document.completed X-WeSign-Signature: t=1757404800,v1=9c3b…a2f1 { "event": "document.completed", "document_id": "8a1e4f9a-…", "metadata": { "case_id": "4711" }, "signed_pdf_url": "https://api.wesign.now/v1/documents/8a1e4f9a-…/signed", "audit_trail_url": "https://api.wesign.now/v1/documents/8a1e4f9a-…/audit-trail", "sha256": "4f9a…d21c", … } - Étape 4
Récupérer les fichiers
Dans la documentationGET /v1/documents/{id}/signedrenvoie le PDF scellé PAdES, toutes les signatures sous un seul sceau ;/audit-trailrend le journal des événements — SHA-256, horodatage, IP masquées — en PDF, toujours en anglais. Les deux exigent votre clé. Comparez le hachage et conservez les deux fichiers chez vous.curl -LOJ -H "Authorization: Bearer $WSK_KEY" \ https://api.wesign.now/v1/documents/$DOC_ID/signed curl -OJ -H "Authorization: Bearer $WSK_KEY" \ https://api.wesign.now/v1/documents/$DOC_ID/audit-trail # Compare the file's SHA-256 with the event's sha256, then store both files on your side.
Chaque réponse porte un X-Request-Id, et Paramètres → API conserve 30 jours un journal API de chaque appel — statut, code d'erreur, document concerné ; les corps ne sont jamais stockés. Une Idempotency-Key rend sûr un envoi ou un instantiate réessayé. Chaque clé peut effectuer 60 requêtes par minute.
Tout ce que l'API fait aujourd'hui.
Rédigez un contrat une fois avec des {{placeholders}}, verrouillez-le, et instantiate le remplit depuis field_values. GET /v1/templates/{id} publie le schéma d'entrée ; le registre de champs de l'espace de travail garde clés et valeurs d'exemple stables.
Placez des marqueurs [[ls:signature:client]] dans votre PDF généré et les champs se posent là où se trouve le texte — sans coordonnées. Les marqueurs sont masqués avant que le signataire voie la page.
phone_e164 et require_sms_verification : un code à usage unique avant l'affichage du document ou au moment de signer. Lie la signature à un téléphone — une signature électronique avancée.
signing_mode: sequential invite les signataires l'un après l'autre ; le parallèle est le défaut. Observateurs et webhooks suivent chaque libération.
observer_emails : des destinataires en copie qui ne signent jamais. Avertis à l'envoi et quand tous ont signé, avec le PDF final et le certificat.
Plusieurs signataires signent un PDF sous un seul sceau. Une enveloppe de plusieurs fichiers, ce sont plusieurs documents : chacun se termine seul et déclenche son propre document.completed.
Émettez une session éphémère pour un signataire et affichez la vue de signature dans votre propre page — iframe ou webview mobile, votre marque, aucune clé API dans le navigateur. Enterprise.
Signés, réessayés avec backoff exponentiel, charge complète ou minimale (sans données personnelles), un journal de livraison avec relivraison, et une rotation du secret qui garde l'ancien valide 24 heures.
Chaque PDF signé porte un sceau PAdES ; l'horodatage RFC 3161 est conservé dans nos registres. Chacun peut déposer le fichier sur /verify et obtenir un verdict : authentique, altéré ou inconnu.
Chaque espace de travail fixe ses documents dans une région : UE (par défaut), Suisse ou États-Unis. Les documents restent là où ils ont été créés.
Des signatures encadrées par eIDAS et la ZertES suisse, en SES et AES (pas de QES). Documentation publique, spécification OpenAPI 3.1 et 90 jours de préavis avant tout changement cassant.
Les logiciels qui présentent un contrat à un client.
Logiciels fiscaux et fiduciaires
Lettres de mission, procurations et autorisations de dépôt directement depuis le dossier : le modèle porte le texte du cabinet, votre plateforme remplit les données du client et de l'entreprise, le client signe sur la page à la marque du cabinet. La piste d'audit répond à la question de l'administration fiscale.
Plateformes RH et de recrutement
Offres, contrats et conventions de placement générés par candidat et envoyés en séquence — le candidat d'abord, puis l'employeur — avec le PDF signé de retour dans le dossier du candidat.
Onboarding fintech
Conventions d'entrée en relation et documents investisseurs exécutés dans votre parcours, intégrés ou par lien, avec un second facteur SMS là où le risque l'exige, et un PDF scellé vérifiable par hachage pour la conformité.
Agences et générateurs de documents
Votre outil produit le PDF, les ancres placent les champs, le client signe sans compte. `metadata` transporte votre identifiant de projet dans chaque événement jusqu'à votre système.
Les clés API et les webhooks viennent avec Enterprise.
Les espaces de travail Teams existants conservent leurs clés API et leurs webhooks. L'envoi de modèles par l'API (instantiate, generate, confirm) et la signature intégrée sont réservés à Enterprise. Chaque clé peut effectuer 60 requêtes par minute.
Voir les offres et les tarifsQuestions
Y a-t-il un bac à sable ou une clé de test ?
Pas encore : chaque clé est réelle. send_emails: false crée le document et les liens sans envoyer d'e-mail ; validate_only: true vérifie un instantiate sans rien créer ; review: true met un document en attente pour qu'une personne le confirme ou l'écarte.
Quel niveau de signature l'API produit-elle ?
Une signature électronique simple (SES) par lien e-mail, ou une signature électronique avancée (AES) quand le signataire valide un code SMS à usage unique. Pas de signature qualifiée (QES).
Comment savoir qu'un webhook vient de vous ?
Chaque livraison porte X-WeSign-Signature: t=<time>,v1=<hmac> — HMAC-SHA256 sur l'horodatage et le corps brut avec le secret du hook. Vérifiez-la avant de faire confiance au corps ; la documentation contient des vérificateurs en Node et PHP.
Que se passe-t-il si mon point de terminaison est indisponible ?
Nous réessayons avec backoff exponentiel et tenons un journal de livraison par hook ; une livraison peut être renvoyée depuis ce journal. Vous pouvez aussi interroger GET /v1/signing-requests/{id} à tout moment.
Puis-je réessayer un envoi sans envoyer deux fois ?
Oui. Envoyez une Idempotency-Key avec POST /v1/signing-requests ou instantiate : la même clé avec le même corps renvoie la première réponse pendant 24 heures ; la même clé avec un corps différent est refusée.
Où les documents sont-ils stockés ?
Dans la région fixée par l'espace de travail : UE (par défaut), Suisse ou États-Unis. Chiffrés en transit et au repos. Un PDF signé peut être supprimé après une durée de conservation que vous définissez ; conservez votre copie à document.completed.
Des signatures depuis votre propre logiciel.
Dites-nous ce que vous connectez. La documentation est publique — lisez-la d'abord si vous le souhaitez.











