API native WakaSign
Workflow complet : créer un token, créer une enveloppe, l'envoyer, puis recevoir les événements du Workflow via webhook.
Pré-requis communs
Tous les tutoriels partagent le même mécanisme d'authentification.
Chaque appel HTTP doit porter un header Authorization: Bearer <token> où <token> est un token dk_… généré dans l'app WakaSign (menu Clés API & Webhooks). Le token est lié à un workspace (team) — toutes les opérations s'effectuent dans son périmètre.
Base URL : https://app.wakasign.com/api
Envoyer des documents avec l'API native
Récupérer le teamId du workspace cible
L'endpoint d'envoi accepte un teamId numérique. Récupère-le via GET /api/proxy/teams côté UI, ou via la base directement.
Créer une enveloppe (DRAFT)
curl -X POST 'https://app.wakasign.com/api/envelopes/team/<TEAM_ID>' \
-H 'Authorization: Bearer dk_xxx' \
-H 'Content-Type: application/json' \
-d '{
"title": "Contrat de prestation",
"message": "Bonjour, merci de signer ce document.",
"signers": [
{ "email": "client@example.com", "name": "Jean Dupont", "role": "SIGNER" }
]
}'La réponse contient un id d'enveloppe (état DRAFT) — c'est cet identifiant qu'on utilise pour les étapes suivantes.
Uploader le fichier PDF
curl -X POST 'https://app.wakasign.com/api/envelopes/team/<TEAM_ID>/<ENVELOPE_ID>/upload' \
-H 'Authorization: Bearer dk_xxx' \
-F 'file=@contrat.pdf'Envoyer aux signataires
curl -X POST 'https://app.wakasign.com/api/envelopes/team/<TEAM_ID>/<ENVELOPE_ID>/send' \
-H 'Authorization: Bearer dk_xxx'Chaque signataire reçoit un email contenant le lien de signature. L'enveloppe passe à l'état SENT.
Suivre l'avancement via webhooks
Plutôt que de poller GET /api/envelopes/team/<TEAM_ID>/<ID>, branche un webhook qui sera appelé à chaque transition d'état du Workflow.
Webhooks — événements du Workflow
WakaSign POST chaque événement sur l'URL configurée pour le workspace.
Événements disponibles
Forme du payload reçu
{
"event": "DOCUMENT_COMPLETED",
"timestamp": "2026-05-15T10:42:18.523Z",
"data": {
"envelopeId": "env_abc123",
"teamId": 42,
"status": "COMPLETED",
"signers": [
{ "email": "client@example.com", "status": "SIGNED", "signedAt": "..." }
]
}
}Vérifier la signature HMAC
WakaSign ajoute le header X-Webhook-Secret à chaque appel. Compare-le au secret retourné à la création du webhook.
app.post('/webhooks/wakasign', (req, res) => {
const received = req.header('X-Webhook-Secret');
if (received !== process.env.WAKASIGN_WEBHOOK_SECRET) {
return res.status(401).send('invalid signature');
}
const { event, data } = req.body;
// … traite l'événement ici
res.status(200).send('ok');
});