API des sessions de signature
Créer, gérer et suivre des sessions de signature électronique pour les questions de contrat.
L'API des sessions de signature vous permet de créer et de gérer par programmation des sessions de signature pour les questions de contrat. Vous pouvez créer des sessions, suivre la progression des signatures, renvoyer des demandes, annuler des sessions et télécharger les documents signés.
Tous les corps de requête et de réponse utilisent des noms de champs en snake_case.
/api/v1/forms/:id/signing-sessionsGET/api/v1/forms/:id/signing-sessionsGET/api/v1/signing-sessions/:sessionIdPOST/api/v1/signing-sessions/:sessionId/voidPOST/api/v1/signing-sessions/:sessionId/resend/:slotNumberGET/api/v1/signing-sessions/:sessionId/documentsGET/api/v1/signing-sessions/:sessionId/documents/:docIdGET/api/v1/signing-sessions/:sessionId/auditGET/api/v1/s/:shortCodePOST/api/v1/s/:shortCode/verify-passwordCréer une session
/api/v1/forms/:id/signing-sessionsCrée une nouvelle session de signature pour un formulaire contenant une ou plusieurs questions de contrat. Renvoie la session avec des liens de signature uniques pour chaque emplacement de signataire.
Paramètres de chemin
idstringL'identifiant du formulaire
Corps de la requête
signersarrayTableau de configurations de signataires, une par emplacement. Chaque objet peut inclure slot_number (entier), first_name (chaîne), last_name (chaîne) et email (chaîne). Tous les champs sauf slot_number sont facultatifs.
signing_orderstring"sequential" ou "any". Par défaut, l'ordre de signature par défaut de la question.
expiry_daysintegerNombre de jours avant l'expiration de la session. Par défaut : 30.
passwordstringMot de passe pour protéger les liens de signature.
hide_other_signersbooleanMasquer les champs remplis par les autres signataires. Par défaut : false.
require_email_verificationbooleanExiger une vérification d'e-mail avant la signature. Par défaut : false.
copy_modestring"ask", "always" ou "disabled". Par défaut : "ask".
notify_emailsarrayTableau d'adresses e-mail recevant les notifications de statut.
notify_eventsarrayTableau de types d'événements : "each_signature", "all_complete", "decline", "expiry".
send_signing_emailsbooleanEnvoyer les e-mails de demande de signature aux signataires disposant d'une adresse e-mail. Par défaut : false.
custom_email_bodystringModèle d'e-mail personnalisé. Prend en charge les variables : {slot_firstName}, {slot_lastName}, {slot_link}, {expiryDate}.
Réponse
{
"id": "ses_abc123def456",
"form_id": "665a1b2c3d4e5f6a7b8c9d0e",
"status": "active",
"signing_order": "sequential",
"total_slots": 2,
"total_signed": 0,
"expires_at": "2026-04-25T00:00:00.000Z",
"hide_other_signers": false,
"copy_mode": "ask",
"signer_links": [
{
"slot_number": 1,
"slot_label": "Buyer",
"short_code": "xK9f2",
"signing_url": "https://nue.fm/s/xK9f2",
"first_name": "John",
"last_name": "Smith",
"email": "john@example.com",
"status": "pending"
},
{
"slot_number": 2,
"slot_label": "Seller",
"short_code": "mP3a7",
"signing_url": "https://nue.fm/s/mP3a7",
"first_name": null,
"last_name": null,
"email": null,
"status": "pending"
}
],
"created_at": "2026-03-26T10:00:00.000Z"
}
Exemples de code
curl -X POST "https://api.nueform.io/api/v1/forms/FORM_ID/signing-sessions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"signers": [
{"slot_number": 1, "first_name": "John", "last_name": "Smith", "email": "john@example.com"},
{"slot_number": 2, "first_name": "Jane", "last_name": "Doe"}
],
"signing_order": "sequential",
"expiry_days": 30,
"send_signing_emails": true
}'
Lister les sessions
/api/v1/forms/:id/signing-sessionsRenvoie toutes les sessions de signature d'un formulaire.
Paramètres de requête
statusstringFiltrer par statut : "active", "fully_signed", "declined", "voided", "expired".
pageintegerNuméro de page (par défaut : 1)
per_pageintegerRésultats par page (par défaut : 20)
Réponse
{
"sessions": [
{
"id": "ses_abc123def456",
"status": "active",
"total_slots": 2,
"total_signed": 1,
"signing_order": "sequential",
"expires_at": "2026-04-25T00:00:00.000Z",
"created_at": "2026-03-26T10:00:00.000Z"
}
],
"total": 5,
"page": 1,
"per_page": 20
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/forms/FORM_ID/signing-sessions?status=active" \
-H "Authorization: Bearer YOUR_API_KEY"
Obtenir une session
/api/v1/signing-sessions/:sessionIdRenvoie une seule session de signature avec tous les détails, y compris les liens de signataires et leurs statuts.
Réponse
Renvoie le même objet de session que le point d'accès de création, avec les statuts et horodatages mis à jour pour chaque lien de signataire.
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/signing-sessions/ses_abc123def456" \
-H "Authorization: Bearer YOUR_API_KEY"
Annuler une session
/api/v1/signing-sessions/:sessionId/voidAnnule une session de signature active. Tous les liens de signature en attente sont invalidés. Les parties ayant déjà signé sont notifiées et les PDF reçoivent le filigrane « VOIDED ».
Corps de la requête
reasonstringMotif de l'annulation de la session.
Réponse
{
"id": "ses_abc123def456",
"status": "voided",
"voided_at": "2026-03-27T15:30:00.000Z",
"void_reason": "Terms changed, new agreement required"
}
Exemples de code
curl -X POST "https://api.nueform.io/api/v1/signing-sessions/ses_abc123def456/void" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"reason": "Terms changed, new agreement required"}'
Renvoyer une demande de signature
/api/v1/signing-sessions/:sessionId/resend/:slotNumberRenvoie l'e-mail de demande de signature à un signataire précis. Le signataire doit avoir une adresse e-mail configurée.
Réponse
{
"success": true,
"sent_to": "john@example.com",
"slot_number": 1
}
Exemples de code
curl -X POST "https://api.nueform.io/api/v1/signing-sessions/ses_abc123def456/resend/1" \
-H "Authorization: Bearer YOUR_API_KEY"
Lister les documents signés
/api/v1/signing-sessions/:sessionId/documentsRenvoie la liste des documents signés d'une session terminée. Chaque document correspond à une question de contrat du formulaire.
Réponse
{
"documents": [
{
"id": "doc_xyz789",
"question_id": "q_abc123",
"question_title": "Service Agreement",
"document_url": "https://storage.nueform.io/signed/doc_xyz789.pdf",
"document_hash": "sha256:a1b2c3d4e5f6...",
"generated_at": "2026-03-28T12:00:00.000Z"
}
]
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/signing-sessions/ses_abc123def456/documents" \
-H "Authorization: Bearer YOUR_API_KEY"
Obtenir un document signé
/api/v1/signing-sessions/:sessionId/documents/:docIdTélécharge un document signé précis sous forme de fichier PDF.
Réponse
Renvoie le fichier PDF avec Content-Type: application/pdf.
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/signing-sessions/ses_abc123/documents/doc_xyz789" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o signed-document.pdf
Obtenir la piste d'audit
/api/v1/signing-sessions/:sessionId/auditRenvoie la piste d'audit complète d'une session de signature, y compris les événements de consultation, les signatures, les refus et les événements système.
Réponse
{
"entries": [
{
"id": "aud_001",
"action": "session_created",
"timestamp": "2026-03-26T10:00:00.000Z",
"actor_email": "owner@company.com",
"ip_address": "192.168.1.1",
"user_agent": "Chrome 120 / macOS"
},
{
"id": "aud_002",
"action": "document_viewed",
"slot_number": 1,
"actor_email": "john@example.com",
"timestamp": "2026-03-26T15:44:00.000Z",
"ip_address": "10.0.0.1",
"user_agent": "Chrome 120 / macOS"
},
{
"id": "aud_003",
"action": "signed",
"slot_number": 1,
"actor_name": "John Smith",
"actor_email": "john@example.com",
"timestamp": "2026-03-26T15:45:00.000Z",
"ip_address": "10.0.0.1",
"user_agent": "Chrome 120 / macOS"
}
]
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/signing-sessions/ses_abc123def456/audit" \
-H "Authorization: Bearer YOUR_API_KEY"
Résoudre un code court
/api/v1/s/:shortCodePoint d'accès public (aucune authentification requise). Résout un code court de signature vers le contexte de formulaire et de session nécessaire pour afficher l'expérience de signature.
Réponse
{
"form_id": "665a1b2c3d4e5f6a7b8c9d0e",
"session_id": "ses_abc123def456",
"slot_number": 1,
"slot_label": "Buyer",
"status": "pending",
"requires_password": true,
"requires_email_verification": false,
"signing_order": "sequential",
"is_turn": true
}
Exemples de code
curl -X GET "https://api.nueform.io/api/v1/s/xK9f2"
Vérifier le mot de passe
/api/v1/s/:shortCode/verify-passwordPoint d'accès public. Vérifie le mot de passe d'une session de signature protégée par mot de passe. Renvoie un jeton d'accès temporaire en cas de succès.
Corps de la requête
passwordstringLe mot de passe de la session.
Réponse
{
"success": true,
"access_token": "tmp_abc123..."
}
Réponse d'erreur (401)
{
"error": "Invalid password"
}
Exemples de code
curl -X POST "https://api.nueform.io/api/v1/s/xK9f2/verify-password" \
-H "Content-Type: application/json" \
-d '{"password": "mySecretPass123"}'