SSFSignature électronique

Référence API · v1

Documentation API

L'API REST SSF permet à votre site ou application d'envoyer un document en signature, de suivre son statut et d'en vérifier l'intégrité. Toutes les réponses sont au format JSON, en UTF-8.

BASEhttps://votre-domaine/api/v1

Introduction

Le cycle est simple : votre système crée un document avec le PDF et les informations du signataire, la plateforme renvoie un lien de signature sécurisé. Le signataire l'ouvre, consent explicitement et dessine sa signature. Le document est alors scellé et un webhook notifie votre système.

Chaque document reçoit un identifiant de la forme SSF-2026-000154 (préfixe, année, numéro séquentiel).

Sécurité

Authentification

Toutes les requêtes vers /api/v1/* exigent une clé API dans l'en-tête Authorization. Générez vos clés depuis l'onglet Clés APIde l'administration. Une clé n'est affichée qu'une seule fois et stockée hachée côté serveur.

En-tête d'authentification
Authorization: Bearer ssf_a1b2c3d4e5f6…

Une clé manquante ou invalide renvoie une réponse 401 Unauthorized.

POST

Créer un document

POST/api/v1/documents

Corps en multipart/form-data. Crée une demande de signature et renvoie le lien à transmettre au signataire (ou envoyé automatiquement par email si le SMTP est configuré).

ParamètreTypeDescription
filerequisfichier (PDF)Le document PDF à signer (max 15 Mo).
signer_namerequisstringNom complet du signataire.
signer_emailrequisstringEmail du signataire.
titleoptionstringTitre affiché du document.
callback_urloptionstring (URL)Webhook POST appelé à la signature.
expires_in_daysoptionnumberDurée de validité du lien, en jours.
sig_pageoptionnumberPage où apposer la signature (défaut : dernière).
sig_x, sig_yoptionnumberPosition de la signature en points PDF.
Requête
curl -X POST https://votre-domaine/api/v1/documents \
  -H "Authorization: Bearer ssf_…" \
  -F "file=@contrat.pdf;type=application/pdf" \
  -F "signer_name=Jean Dupont" \
  -F "signer_email=jean@exemple.com" \
  -F "title=Contrat de prestation" \
  -F "expires_in_days=7" \
  -F "callback_url=https://mon-site.com/webhooks/ssf"
Réponse · 201 Created
{
  "id": "SSF-2026-000154",
  "status": "pending",
  "signing_url": "https://votre-domaine/sign/<token>",
  "verify_url": "https://votre-domaine/verify/SSF-2026-000154",
  "sha256_original": "8e292f…",
  "email_sent": false
}

GET

Consulter un document

GET/api/v1/documents/{id}

Renvoie le statut et les métadonnées d'audit. Une fois le document signé, le bloc certificate reprend exactement les champs du certificat joint au PDF.

Réponse · document signé
{
  "id": "SSF-2026-000154",
  "status": "signed",
  "signer": { "name": "Jean Dupont", "email_verified": true },
  "signed_at": "2026-07-03T11:42:00.000Z",
  "modified_after_signature": false,
  "certificate": {
    "Document ID": "SSF-2026-000154",
    "Signataire": "Jean Dupont",
    "Email vérifié": "Oui",
    "Date de signature": "03/07/2026 à 11:42",
    "Méthode": "lien sécurisé envoyé par email",
    "Empreinte SHA-256": "94f6a2…",
    "Adresse IP": "enregistrée",
    "Consentement explicite": "Oui",
    "Document modifié après signature": "Non"
  }
}

GET

Télécharger le PDF

GET/api/v1/documents/{id}/download

Renvoie le fichier PDF (application/pdf) — le document signé avec sa page de certificat, ou l'original si la signature est encore en attente.

POST

Annuler une demande

POST/api/v1/documents/{id}/cancel

Annule une demande en attente. Un document déjà signé ne peut pas être annulé (réponse 409 Conflict).

GET

Vérifier l'intégrité

GET/api/v1/documents/{id}/verify

Recalcule l'empreinte SHA-256 du fichier archivé et la compare à celle enregistrée à la signature. Le champ modified_after_signature vaut false si le document est intact.

Réponse
{
  "id": "SSF-2026-000154",
  "status": "signed",
  "modified_after_signature": false,
  "Document modifié après signature": "Non"
}

Notifications

Webhooks

Si vous fournissez callback_url à la création, la plateforme envoie une requête POSTà la signature du document (avec une nouvelle tentative après 5 secondes en cas d'échec).

Charge utile du webhook
{
  "event": "document.signed",
  "document": { /* mêmes champs que GET /documents/{id} */ }
}

Cryptographie

Empreintes SHA-256

Trois empreintes accompagnent chaque document, chacune avec un rôle précis :

ParamètreTypeDescription
sha256_originaloptionhexLe PDF reçu de votre système, avant signature.
sha256_signedoptionhexLe document signé, avant l'ajout de la page de certificat. C'est l'empreinte imprimée sur le certificat.
sha256_finaloptionhexLe fichier PDF complet distribué (certificat inclus). Recalculable par tous : shasum -a 256 fichier.pdf.

Référence

Codes d'erreur

Les erreurs renvoient un objet { "error": "...", "message": "..." } avec le statut HTTP correspondant.

ParamètreTypeDescription
400optionbad_requestChamp manquant, PDF invalide, ou corps mal formé.
401optionunauthorizedClé API manquante ou invalide.
404optionnot_foundDocument introuvable.
409optioninvalid_statusAction impossible dans le statut actuel du document.

Besoin d'aide pour l'intégration ?

Notre équipe accompagne la mise en place côté client.

Contacter le support