Introduction
L'API REST JuriSign vous permet d'intégrer la signature électronique conforme eIDAS (SES) directement dans votre back-office ou votre application. Vous pouvez :
- Télécharger des documents PDF
- Créer des demandes de signature avec un ou plusieurs signataires
- Valider l'identité par code OTP email ou SMS
- Suivre l'avancement en temps réel via webhooks
- Télécharger les documents signés et les preuves d'audit
REST
API JSON standard
eIDAS SES
Signature conforme
OTP Email / SMS
Vérification d'identité
URL de base : https://jurisign.fr/api/v1
Format : JSON (Content-Type: application/json)
Auth : Bearer Token (Sanctum)
Authentification
L'API utilise l'authentification par Bearer Token (Laravel Sanctum). Obtenez un token avec vos identifiants :
POST /api/v1/auth/token
// Requête
curl -X POST https://jurisign.fr/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{
"email": "votre@email.com",
"password": "votre_mot_de_passe",
"device_name": "mon-backoffice"
}'
// Réponse
{
"token": "1|abc123def456...",
"token_type": "Bearer",
"user": {
"id": "uuid-...",
"name": "Christophe Duval",
"email": "christophe.duval@trimaran.com",
"organization": {
"id": "uuid-...",
"name": "Trimaran"
}
}
}
Important
Conservez ce token en sécurité. Utilisez-le dans l'en-tete Authorization de toutes vos requêtes :
Authorization: Bearer 1|abc123def456...
Flux complet de signature
Voici le processus en 4 étapes pour envoyer un document à la signature via l'API :
Upload PDF
POST /documents
Créer demande
POST /sign-requests
Envoyer
POST /sign-requests/{id}/send
Suivi & DL
GET + webhooks
Télécharger un document PDF
POST /api/v1/documents
Envoyez le PDF en multipart/form-data. Taille max : 20 Mo.
curl -X POST https://jurisign.fr/api/v1/documents \
-H "Authorization: Bearer VOTRE_TOKEN" \
-F "file=@contrat.pdf" \
-F "title=Contrat de bail 2026"
// Réponse 201
{
"data": {
"id": "doc-uuid-...",
"title": "Contrat de bail 2026",
"original_filename": "contrat.pdf",
"status": "draft",
"page_count": 5,
"file_size": 245760,
"created_at": "2026-03-31T10:00:00+02:00"
}
}
Note : Conservez l'id du document, il sera nécessaire pour créer la demande de signature.
Créer une demande de signature
POST /api/v1/sign-requests
Définissez les signataires, le canal OTP (email ou SMS), les zones de signature et la durée de validité.
curl -X POST https://jurisign.fr/api/v1/sign-requests \
-H "Authorization: Bearer VOTRE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"document_id": "doc-uuid-...",
"subject": "Signature du contrat de bail",
"message": "Merci de bien vouloir signer ce document.",
"signing_order_type": 0,
"expiry_hours": 168,
"signers": [
{
"prenom": "Jean",
"nom": "Dupont",
"email": "jean.dupont@email.com",
"otp_channel": "sms",
"telephone": "+33612345678"
},
{
"prenom": "Marie",
"nom": "Martin",
"email": "marie.martin@email.com",
"otp_channel": "email"
}
],
"zones": [
{
"signer_index": 0,
"page": 5,
"x": 10,
"y": 75,
"width": 35,
"height": 10
},
{
"signer_index": 1,
"page": 5,
"x": 55,
"y": 75,
"width": 35,
"height": 10
}
]
}'
Paramètres de la demande
| document_id | UUID du document (requis) |
| subject | Objet de la demande (requis) |
| message | Message pour les signataires |
| signing_order_type | 0 = simultané, 1 = séquentiel |
| expiry_hours | Durée de validité (24 à 720h) |
Paramètres signataire
| prenom | Prénom (requis) |
| nom | Nom (requis) |
| Email (requis) | |
| otp_channel | "email" ou "sms" |
| telephone | Requis si otp_channel = "sms" |
Zones de signature (coordonnées)
Les coordonnées x, y, width, height sont en pourcentage de la page (0 à 100). Le point (0,0) est en haut à gauche. signer_index correspond à l'index du signataire (0, 1, 2...).
Erreur courante : aucun email/SMS recu apres la creation
La creation d'une demande de signature (etape 2) ne declenche pas l'envoi des notifications. La demande est creee en statut draft.
Vous devez appeler l'etape 3 (POST /sign-requests/{uuid}/send) pour envoyer les emails d'invitation aux signataires.
Ce fonctionnement en 2 temps permet de verifier la demande avant envoi, ou de l'annuler si necessaire.
Envoyer aux signataires
POST /api/v1/sign-requests/{uuid}/send
Déclenche l'envoi des invitations par email à chaque signataire. Le signataire reçoit un lien sécurisé unique pour signer.
curl -X POST https://jurisign.fr/api/v1/sign-requests/sr-uuid-.../send \
-H "Authorization: Bearer VOTRE_TOKEN"
// Réponse 200
{
"message": "Demande envoyée aux signataires.",
"data": {
"id": "sr-uuid-...",
"status": "pending",
"sent_at": "2026-03-31T10:05:00+02:00"
}
}
Processus côté signataire :
- Le signataire reçoit un email avec un lien sécurisé
- Il visualise le document PDF et les zones de signature
- Il dessine sa signature (tracée manuscrite ou texte)
- Il reçoit un code OTP (par email ou SMS) pour valider
- Le document est signé et un dossier de preuve est généré
Suivi et téléchargement
Consulter le statut
GET /api/v1/sign-requests/{uuid}
// Réponse - statuts possibles : draft, pending, partially_signed, completed, expired, cancelled
{
"data": {
"id": "sr-uuid-...",
"status": "completed",
"subject": "Contrat de bail",
"progress": 100,
"signers": [
{
"id": "signer-uuid-...",
"name": "Jean Dupont",
"email": "jean.dupont@email.com",
"status": "signed",
"otp_channel": "sms",
"signed_at": "2026-03-31T14:30:00+02:00"
}
]
}
}
Télécharger le PDF signé
GET /api/v1/sign-requests/{uuid}/download
Retourne le fichier PDF signé (Content-Type: application/pdf). Disponible uniquement quand le statut est completed.
Télécharger la preuve d'audit
GET /api/v1/sign-requests/{uuid}/proof
Retourne le dossier de preuve PDF (horodatage, IP, empreintes, captures de signature).
Webhooks
Recevez des notifications en temps réel sur votre serveur lorsqu'un événement se produit :
sign_request.sent
Demande envoyée aux signataires
sign_request.completed
Tous les signataires ont signé
sign_request.cancelled
Demande annulée
signer.signed
Un signataire a signé
signer.declined
Un signataire a refusé
Enregistrer un webhook
POST /api/v1/webhooks
curl -X POST https://jurisign.fr/api/v1/webhooks \
-H "Authorization: Bearer VOTRE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://votre-serveur.com/webhooks/jurisign",
"events": ["sign_request.completed", "signer.signed"]
}'
// Réponse 201 - conservez le secret !
{
"data": {
"id": 1,
"url": "https://votre-serveur.com/webhooks/jurisign",
"events": ["sign_request.completed", "signer.signed"],
"secret": "wh_sec_abc123..."
}
}
Vérification de signature
Chaque webhook est signé avec le secret fourni. Vérifiez l'en-tête X-Signature pour vous assurer de l'authenticité. En cas d'échec de livraison, 3 tentatives automatiques sont effectuées (1min, 5min, 30min).
Validation OTP / SMS
JuriSign supporte deux canaux de validation OTP pour vérifier l'identité du signataire :
Inclus dans tous les plans
Le code OTP à 6 chiffres est envoyé par email au signataire. Valable 5 minutes, 3 tentatives max.
"otp_channel": "email"
SMS
Plan Professionnel et supérieur
Le code OTP est envoyé par SMS au numéro du signataire. Plus sécurisé, recommandé pour les documents sensibles.
"otp_channel": "sms"
"telephone": "+33612345678"
Format téléphone : Format international avec indicatif pays (ex: +33612345678 pour la France).
Tous les endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| Authentification | ||
| POST | /auth/token | Obtenir un token d'accès |
| DELETE | /auth/token | Révoquer le token courant |
| Documents | ||
| GET | /documents | Lister les documents |
| POST | /documents | Télécharger un document PDF |
| GET | /documents/{uuid} | Détails d'un document |
| DELETE | /documents/{uuid} | Supprimer un document (brouillon) |
| GET | /documents/{uuid}/download | Télécharger le fichier PDF |
| Demandes de signature | ||
| GET | /sign-requests | Lister les demandes |
| POST | /sign-requests | Créer une demande de signature |
| GET | /sign-requests/{uuid} | Détails et statut d'une demande |
| POST | /sign-requests/{uuid}/send | Envoyer aux signataires |
| POST | /sign-requests/{uuid}/cancel | Annuler une demande |
| GET | /sign-requests/{uuid}/download | PDF signé (après complétion) |
| GET | /sign-requests/{uuid}/proof | Preuve d'audit PDF |
| Webhooks | ||
| GET | /webhooks | Lister les webhooks configurés |
| POST | /webhooks | Créer un endpoint webhook |
| PUT | /webhooks/{id} | Modifier un webhook |
| DELETE | /webhooks/{id} | Supprimer un webhook |
Gestion des erreurs
L'API retourne des codes HTTP standards avec un corps JSON décrivant l'erreur :
| Code | Signification |
|---|---|
| 200 | Succès |
| 201 | Ressource créée |
| 401 | Token invalide ou expiré |
| 403 | Action non autorisée (organisation suspendue, plan insuffisant) |
| 404 | Ressource non trouvée |
| 422 | Erreur de validation (champs manquants ou invalides) |
| 429 | Rate limit dépassé (trop de requetes) |
| 500 | Erreur serveur interne |
// Exemple d'erreur 422
{
"message": "Les données fournies ne sont pas valides.",
"errors": {
"document_id": ["Le champ document id est requis."],
"signers.0.email": ["L'adresse email est invalide."]
}
}
Support
Documentation interactive
Explorez et testez tous les endpoints en direct avec notre interface Swagger :
Ouvrir Swagger UIContact technique
Pour toute question sur l'intégration :
- Email : support@jurisign.fr
- Site : www.jurisign.fr