API Signature Upload Multiple
Signez plusieurs documents PDF avec des signataires externes en toute simplicité
POST /v3/sign-upload-multiple
Vue d'ensemble
https://dkbsignv3.com/
Endpoint
/v3/sign-upload-multiple
Méthode
POST
Content-Type
multipart/form-data
Auth
X-API-Key
Maximum de 100 documents par requête pour éviter les problèmes de performance, timeout HTTP et surcharge mémoire.
Authentification
L'API utilise un système d'authentification en deux étapes : connexion JWT puis génération de clé API.
Étape 1 : Connexion et obtention du token JWT
POST /auth/login
Authentifiez-vous pour obtenir un token JWT d'accès.
curl -X POST "https://dkbsignv3.com/auth/login" \
-H "Content-Type: application/json" \
-d '{
"email": "freddy.egnin@dkbsign.com",
"password": "testpassord@dksign2025"
}'
{
"email": "freddy.egnin@dkbsign.com",
"password": "testpassord@dksign2025"
}
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"message": "Connexion réussie en tant qu'employé.",
"user": {
"email": "freddy.egnin@dkbsign.com",
"name": "Admin",
"sub_name": "Sign",
"user_type": "employee",
"company": {
"name": "DKBS",
"signature_volume": 100,
"signature_volume_used": 98
}
}
}
Étape 2 : Génération de la clé API
POST /auth/generate-app-key
Utilisez le token JWT obtenu pour générer une clé API permanente.
curl -X POST "https://dkbsignv3.com/auth/generate-app-key" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Étape 3 : Utilisation de la clé API
Une fois la clé API générée, incluez-la dans les headers de vos requêtes :
X-API-Key: votre_cle_api
# OU
Authorization: Bearer votre_cle_api
Conservez votre clé API en sécurité. Ne la partagez jamais et ne la commitez pas dans votre code source.
Paramètres d'entrée
documents[]
OBLIGATOIREDocuments PDF à signer (maximum 100 fichiers)
File (PDF)
Tableau de fichiers
signature_image_X
OPTIONNELImages de signature personnalisées pour chaque signataire externe
File (Image)
signature_image_0, signature_image_1, ...
PNG, JPG, JPEG, GIF
Si absent, l'image de signature par défaut de l'utilisateur authentifié sera utilisée.
signers_data
OBLIGATOIREInformations des signataires externes au format JSON
[
{
"name": "Dupont", // OBLIGATOIRE
"firstname": "Jean", // OBLIGATOIRE
"function": "Directeur Général", // OBLIGATOIRE
"email": "jean.dupont@example.com", // OPTIONNEL
"phone": "+225123456789" // OPTIONNEL
}
]
signature_params
OBLIGATOIREParamètres de positionnement des signatures au format JSON
[
{
"document_index": 0, // Index du document
"signer_index": 0, // Index du signataire
"pages": [ // Positionnement manuel
{
"page": 0,
"signatures": [
{"x": 100, "y": 200}
]
}
],
"sign_on_last_page": true, // Signature auto sur dernière page
"show_signer_info": true, // Afficher infos signataire
"signature_size": { // Taille personnalisée
"width": 150,
"height": 50
},
"qrcodes": [ // QR codes optionnels
{
"page": 0,
"x": 50, "y": 50,
"size": 30,
"data": "https://verify.dkbsign.com/doc/12345"
}
]
}
]
Nouvelles fonctionnalités
Affichage des informations du signataire
show_signer_info
Affiche automatiquement le nom, la fonction et l'email du signataire sous l'image de signature.
{
"document_index": 0,
"signer_index": 0,
"pages": [{"page": 0, "signatures": [{"x": 100, "y": 200}]}],
"show_signer_info": true
}
Signature automatique sur dernière page
sign_on_last_page
Place automatiquement toutes les signatures sur la dernière page du document, quel que soit le nombre de pages.
{
"document_index": 0,
"signer_index": 0,
"sign_on_last_page": true
}
{
"document_index": 0,
"signer_index": 0,
"sign_on_last_page": true,
"pages": [{"page": 0, "signatures": [{"x": 150, "y": 220}]}]
// Les positions X/Y sont respectées, seule la page change
}
Taille personnalisée des signatures
signature_size
Spécifiez une taille personnalisée pour les images de signature.
"signature_size": {
"width": 150, // Largeur en pixels
"height": 50 // Hauteur en pixels
}
L'algorithme de redimensionnement LANCZOS est utilisé pour une qualité optimale.
Exemples d'utilisation
curl -X POST "https://dkbsignv3.com/apiDkbSignV3/v3/sign-upload-multiple" \
-H "X-API-Key: your_app_key" \
-F "documents[]=@document1.pdf" \
-F "signature_image_0=@signature_jean.png" \
-F 'signers_data=[
{
"name": "Dupont",
"firstname": "Jean",
"function": "Directeur Général",
"email": "jean.dupont@example.com"
}
]' \
-F 'signature_params=[
{
"document_index": 0,
"signer_index": 0,
"sign_on_last_page": true,
"show_signer_info": true,
"signature_size": {"width": 180, "height": 60}
}
]'
import requests
import json
url = "https://dkbsignv3.com/apiDkbSignV3/v3/sign-upload-multiple"
headers = {"X-API-Key": "your_app_key"}
signers_data = [
{
"name": "Dupont",
"firstname": "Jean",
"function": "Directeur Général",
"email": "jean.dupont@example.com"
}
]
signature_params = [
{
"document_index": 0,
"signer_index": 0,
"sign_on_last_page": True,
"show_signer_info": True,
"signature_size": {"width": 180, "height": 60}
}
]
files = {
'documents': ('document.pdf', open('document.pdf', 'rb')),
'signature_image_0': ('signature.png', open('signature.png', 'rb'))
}
data = {
'signers_data': json.dumps(signers_data),
'signature_params': json.dumps(signature_params)
}
response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()
if response.status_code == 200:
print(f"Succès: {result['message']}")
else:
print(f"Erreur: {result.get('error')}")
const formData = new FormData();
// Ajouter les documents
formData.append('documents', documentFile);
formData.append('signature_image_0', signatureFile);
// Données des signataires
const signersData = [
{
name: "Dupont",
firstname: "Jean",
function: "Directeur Général",
email: "jean.dupont@example.com"
}
];
// Paramètres de signature
const signatureParams = [
{
document_index: 0,
signer_index: 0,
sign_on_last_page: true,
show_signer_info: true,
signature_size: { width: 180, height: 60 }
}
];
formData.append('signers_data', JSON.stringify(signersData));
formData.append('signature_params', JSON.stringify(signatureParams));
// Envoyer la requête
fetch('https://dkbsignv3.com/apiDkbSignV3/v3/sign-upload-multiple', {
method: 'POST',
headers: {
'X-API-Key': 'your_app_key'
},
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Succès:', data);
})
.catch(error => {
console.error('Erreur:', error);
});
Réponses de l'API
Succès (200)
{
"message": "2 document(s) signé(s) avec succès",
"signed_documents": [
{
"document_name": "document1.pdf",
"signed_pdf_url": "https://dkbsignv3.com/.../signed.pdf",
"signers": [
{
"name": "Dupont",
"firstname": "Jean",
"function": "Directeur Général"
}
]
}
],
"total_signatures": 2
}
Erreurs
{"error": "Champ 'name' manquant pour le signataire 0"}
{"error": "Nombre maximum de documents dépassé. Limite: 100"}
{"error": "Clé API manquante ou invalide"}
{"error": "Volume de signatures insuffisant"}
Cas d'usage
Contrat simple
1 signataire sur la dernière page
{
"sign_on_last_page": true,
"show_signer_info": true
}
Document multi-signataires
3 signataires côte à côte
[
{
"signer_index": 0,
"sign_on_last_page": true,
"pages": [{"page": 0,
"signatures": [{"x": 50, "y": 200}]}]
},
{
"signer_index": 1,
"sign_on_last_page": true,
"pages": [{"page": 0,
"signatures": [{"x": 250, "y": 200}]}]
}
]
Paraphe + Signature
Paraphe sur chaque page + signature finale
[
{
"signer_index": 0,
"pages": [
{"page": 0, "signatures": [{"x": 500, "y": 20}]},
{"page": 1, "signatures": [{"x": 500, "y": 20}]}
],
"signature_size": {"width": 50, "height": 30}
},
{
"signer_index": 0,
"sign_on_last_page": true,
"show_signer_info": true
}
]
Avec QR Code
Signature avec QR code de vérification
{
"sign_on_last_page": true,
"show_signer_info": true,
"qrcodes": [
{
"page": 0,
"x": 50, "y": 50,
"size": 30,
"data": "https://verify.dkbsign.com/..."
}
]
}
Changelog
Version 2.2 - 2025-10-09
- Ajout de
show_signer_info: Affichage des informations du signataire - Ajout de
sign_on_last_page: Signature automatique sur dernière page - Ajout de
custom_x: Position X personnalisée - Amélioration : Respect des positions X/Y avec sign_on_last_page
Version 2.1 - 2025-10-08
- Ajout de
signature_size: Taille personnalisée des signatures - Amélioration des métadonnées de signature pour Adobe Reader
- Ajout de l'email et du téléphone dans les métadonnées
Version 2.0 - 2025-10-07
- Support des signataires externes
- Upload d'images de signature personnalisées
- Limite de sécurité : 100 documents maximum