Envoi d’une demande de signature
Ce guide couvre la création d’une demande de signature, l’ajout d’un modèle ou d’un document, et l’invitation des destinataires à signer.Créer vs. créer et envoyer
Firma propose deux façons de démarrer une demande de signature, et choisir la mauvaise est l’erreur d’intégration la plus courante :
Utilisez
create lorsque votre workflow nécessite une étape de relecture ou d’édition avant qu’un destinataire ne soit atteint. Utilisez create-and-send lorsque vous voulez que la demande soit active et les destinataires notifiés en un seul appel.
Le paramètre send_signing_email
Ce paramètre se trouve dans settings.send_signing_email, mais il signifie quelque chose de différent selon le endpoint que vous appelez :
Le paramètre allow_presigning_download
Contrôle si les destinataires peuvent télécharger le document non signé avant d’avoir terminé leur part du processus de signature. Il se comporte de la même manière sur les deux endpoints :
- Si vous le définissez explicitement dans
settings, cette valeur est stockée sur la demande de signature. - Si vous l’omettez, il se résout au moment de la consultation/du téléchargement via une chaîne d’héritage : demande de signature → espace de travail → paramètre de l’entreprise, avec comme valeur par défaut non autorisé si aucun de ces niveaux n’est défini.
- Lors de la création à partir d’un modèle et en l’omettant, la demande hérite de la propre valeur
allow_presigning_downloaddu modèle.
Le schéma OpenAPI public de
create-and-send ne liste pas actuellement allow_presigning_download dans son objet settings, mais le endpoint l’accepte et l’applique de façon identique à POST /signing-requests.Étapes
- Créez ou sélectionnez un modèle
- Créez une demande de signature référençant le modèle
- Ajoutez des destinataires avec les informations requises (prénom, nom, email)
- Ajoutez éventuellement des champs de formulaire avec un positionnement basé sur des pourcentages
- Envoyez la demande par email ou intégrez la vue de signature
Schéma du destinataire (champs requis)
Les destinataires nécessitent
first_name et last_name comme champs distincts - il n’existe pas de champ name unique.first_name(requis) - Prénom du destinatairelast_name(optionnel) - Nom du destinataire (requis uniquement lors de la création viaPOST /signing-requestsavec un document brut)email(requis) - Adresse email (createavertit en cas de format invalide ;create-and-sendet/sendle rejettent)designation(requis) - Rôle :"Signer","CC", ou"Approver". Les approbateurs examinent et approuvent le document (sans signature) via les types de champsapproval_*ci-dessousorder(optionnel) - Ordre de signature pour les workflows séquentiels
phone_number,street_address,city,state_province,postal_code,country,title,companycustom_fields- Objet avec des paires clé-valeur personnalisées
Créer une demande de signature à partir d’un modèle (API)
Endpoint : POST /signing-requestsExemple curl (création d’une demande à partir d’un modèle) :
Document incluant id (le signing_request_id) et document_url le cas échéant.
Créer une demande de signature (exemple serveur) - Node (fetch)
Créer une demande de signature (exemple serveur) - Python (requests)
Créer une demande de signature à partir d’un document
Au lieu d’utiliser un modèle, vous pouvez créer une demande de signature en téléversant directement un document PDF ou DOCX. Choisissez la méthode en fonction de la taille de votre fichier :- Petits fichiers (moins de 5 Mo)
- Fichiers volumineux (jusqu'à 50 Mo)
Pour les documents de moins de 5 Mo, incluez le fichier encodé en base64 directement dans le corps de la requête :
Ajout de champs de formulaire (positionnement basé sur des pourcentages)
Lors de la création directe d’une demande de signature (POST/signing-requests) ou de sa mise à jour, vous pouvez ajouter des champs de formulaire :
Exemple de positionnement de champ
Types de champs
signature- Champ de signaturetext- Saisie de texte sur une seule lignedate- Sélecteur de datecheckbox- Case à cocherdropdown- Sélecteur déroulant (nécessitedropdown_options)initial- Champ d’initiales (accepte égalementinitialscomme alias)approval_signature- Tampon APPROVED (Approbateur uniquement)approval_checkmark- Coche d’approbation (Approbateur uniquement)approval_date- Date d’approbation (Approbateur uniquement)
Les types de champs
approval_* ne peuvent être attribués qu’à un destinataire dont la designation est "Approver" (en attribuer un à un Signataire renvoie une erreur 400). Leur valeur est établie côté serveur lorsque l’approbateur termine son examen, vous n’avez donc pas à soumettre de valeur pour eux, et le tampon d’approbation est apposé sur le certificat d’achèvement.Directives de positionnement
Le système de coordonnées utilise des pourcentages pour une mise à l’échelle responsive :x: 0 (bord gauche) à 100 (bord droit)y: 0 (bord supérieur) à 100 (bord inférieur)width: pourcentage de la largeur de la page (par ex., 30 = 30 % de largeur)height: pourcentage de la hauteur de la page (par ex., 8 = 8 % de hauteur)
Mise à jour des demandes de signature
Avant qu’une demande de signature ne soit envoyée, vous pouvez mettre à jour ses détails via l’API. L’API propose deux méthodes :Mise à jour complète (PUT)
Utilisezcomprehensive-update-signing-request pour les mises à jour complexes impliquant plusieurs sections.
Quand l’utiliser :
- Mise à jour de plusieurs destinataires à la fois
- Suppression de destinataires (avec réattribution/suppression des champs)
- Mise à jour des champs et des rappels ensemble
- Effectuer des modifications coordonnées sur plusieurs sections
signing_request_properties- Mettre à jour le nom, la description, le document, l’expiration, les paramètresrecipients- Upsert des destinataires (inclure id pour mettre à jour, omettre pour créer)deleted_recipients- Supprimer des destinataires avecfield_action(supprimer ou réattribuer les champs)fields- Upsert des champs (inclure id pour mettre à jour, omettre pour créer)reminders- Upsert des rappels (inclure id pour mettre à jour, omettre pour créer)
- ✅ Peut mettre à jour plusieurs sections en une seule requête
- ✅ Prend en charge la suppression de destinataires avec gestion des champs
- ✅ Ne fonctionne que si la demande n’a pas encore été envoyée
Mise à jour partielle (PATCH)
Utilisezpartially-update-signing-request pour mettre à jour des propriétés spécifiques ou un seul destinataire.
Quand l’utiliser :
- Mise à jour du nom, de la description ou des paramètres
- Ajout ou mise à jour d’un destinataire à la fois
- Effectuer des modifications ciblées sans affecter les autres données
- Mettre à jour uniquement les propriétés (name, description, document, expiration_hours, settings)
- OU mettre à jour/créer un seul destinataire
- ✅ N’envoyez que les champs que vous souhaitez modifier
- ✅ Plus efficace pour les petits changements
- ✅ Les autres champs restent inchangés
- ✅ Plus sûr pour les modifications concurrentes
Choisir entre PUT et PATCH
Bonnes pratiques :
- Mettez à jour les demandes de signature avant d’appeler
/send - Validez les données des destinataires avant de mettre à jour
- Utilisez PATCH pour les modifications incrémentales
- Implémentez une logique de nouvelle tentative avec un backoff exponentiel
Envoi (invitations par email)
Une fois que vous avez un ID de demande de signature (et avez effectué les mises à jour nécessaires), appelez POST/signing-requests/{signing_request_id}/send pour envoyer des emails à tous les destinataires.
Exemple
L’endpoint
/send vérifie que tous les destinataires disposent des informations requises (first_name et email - last_name est optionnel) et que tous les champs préremplis disposent des données correspondantes du destinataire.Intégration de la vue de signature
Pour intégrer l’expérience de signature dans votre propre application, récupérez l’id du destinataire depuis GET /signing-requests/{id}/users et construisez l’URL de signature :
Cas particuliers et astuces
- Ordre de signature : assurez-vous que les destinataires ont des valeurs
orderséquentielles (1, 2, 3…) pour les workflows de signature séquentiels - Piste d’audit : téléchargez la piste d’audit via GET
/signing-requests/{id}/trackingpour voir toutes les actions des utilisateurs - Téléchargement du PDF terminé : utilisez GET
/signing-requests/{id}/downloadaprès l’achèvement - Webhooks : abonnez-vous à des événements comme
signing_request.completedplutôt que d’effectuer du polling (voir le guide Webhooks)
Prochaines étapes
- Préremplissez les champs avec les données du destinataire ou des données statiques avant l’envoi
- Configurer des webhooks pour recevoir des notifications d’événements en temps réel (60 req/min)
- Ajouter des rappels automatisés pour les destinataires en attente
- Intégrer l’éditeur de modèles avec authentification JWT (120 req/min)
- Configurer les paramètres de l’espace de travail pour des modèles d’email personnalisés (100-200 req/min)
- Éditeur de modèles intégrable avec authentification JWT pour des workflows intégrés sécurisés