Pour les développeurs

L'API que vous attendiez.

REST, OpenAPI, sandbox identique à la production, webhooks signés, iframe avec validation domaine. Passez en production dans la journée — sans SDK propriétaire ni paramètre obscur.

$ curl https://app.signlift.eu/api/v1/signature_requests \
-H 'X-Api-Key: $SIGNLIFT_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"mode": "sequential",
"validity_days": 30,
"signers": [
{ "ref": "j", "first_name": "Jeanne", "email": "j@ex.com" }
],
"documents": [{
"id": 42,
"signers": [{
"signer_ref": "j",
"stamp": { "type": "magic_field", "value": { "tag": "[SIG]" }}
}]
}]
}'

API REST documentée

OpenAPI 3.0.1 publiée. Tous les schémas sont versionnés, types générables dans votre langage. Pas de SDK obligatoire — n'importe quel client HTTP suffit.

OpenAPI · JSON · idempotence

Sandbox prête pour la pré-prod

Mêmes endpoints, mêmes formats. Validez votre intégration de bout en bout — sans carte bancaire, sans engagement. Une variable d'environnement à basculer pour passer en production.

Identique à la prod · Filigrane visible · Sans CB

Webhooks signés et iframe sécurisée

Cinq événements émis, payload signé HMAC, retentatives automatiques. L'iframe valide les domaines autorisés par organisation — aucun tiers ne peut ré-incorporer la signature.

HMAC-SHA256 · frame-ancestors · 5 events

Démarrage rapide

Quatre appels.
Cinq minutes. Pas de SDK.

Récupérez une clé API

Depuis le dashboard, Paramètres → Applications externes → Nouvelle application. Choisissez sandbox pour tester, production quand vous êtes prêts. La clé brute est affichée une seule fois — stockez-la dans votre secret manager.

Terminal
export SIGNLIFT_API_KEY="a3f9b1c8...d4e2"
# 64 caractères hex
# Stockez dans Vault, AWS Secrets Manager, Doppler, etc.

Uploadez un PDF

Un simple multipart sur /api/v1/documents retourne un identifiant de document. Le SHA-256 est calculé côté serveur et restera lié au certificat de preuve.

POST /documents
curl https://app.signlift.eu/api/v1/documents \
  -H "X-Api-Key: $SIGNLIFT_API_KEY" \
  -F "file=@contract.pdf"

Créez la demande de signature

Un appel POST décrit les signataires, le mode (séquentiel ou parallèle), la durée de validité et l'emplacement de chaque signature. La réponse contient l'URL de signature de chaque signataire — prête à l'emploi (e-mail, redirect, iframe).

POST /signature_requests
curl https://app.signlift.eu/api/v1/signature_requests \
  -H "X-Api-Key: $SIGNLIFT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "sequential",
    "validity_days": 30,
    "signers": [
      { "ref": "j", "first_name": "Jeanne", "email": "j@ex.com" }
    ],
    "documents": [{
      "id": 42,
      "signers": [{
        "signer_ref": "j",
        "stamp": { "type": "magic_field", "value": { "tag": "[SIG]" } }
      }]
    }]
  }'

Recevez le webhook de fin

À la complétion (ou expiration), Signlift POSTe sur l'URL configurée. Vérifiez la signature HMAC-SHA256, puis récupérez les PDFs signés et le certificat via GET /signature_requests/:id.

POST your-webhook
def signlift_webhook
  body = request.raw_post
  signature = request.headers["X-Signlift-Signature"]
  expected = "sha256=" + OpenSSL::HMAC.hexdigest(
    "SHA256", ENV.fetch("SIGNLIFT_WEBHOOK_SECRET"), body
  )
  return head :unauthorized unless ActiveSupport::SecurityUtils
    .secure_compare(expected, signature.to_s)

  payload = JSON.parse(body)
  case payload["event"]
  when "request.completed"
    SignatureFulfillmentJob.perform_later(payload["signature_request"]["id"])
  end
  head :ok
end

Sandbox

Une sandbox prête pour la pré-prod,
identique à la production.

Validez votre intégration de bout en bout — sans carte bancaire, sans engagement, sans risque juridique.

Mêmes endpoints qu'en production

Aucun host alternatif, aucun format différent. Votre code écrit contre la sandbox part en prod sans changer une ligne — une seule variable d'environnement à basculer.

Filigrane visible sur le PDF

Tout document signé via la sandbox porte un filigrane indélébile « SANDBOX — non opposable » sur chaque page. Aucun risque de confusion avec un document de production.

Webhooks émis comme en production

Les cinq événements sont émis avec la même signature HMAC. Validez votre endpoint webhook localement avec ngrok ou Cloudflare Tunnel pendant le développement.

Validez tout, puis basculez la clé.

La sandbox est conçue pour valider votre intégration avant le go-live, pas pour tourner en boucle dans votre CI. Mockez les appels Signlift en tests unitaires ; gardez la sandbox pour les smoke tests pré-release et les démos.

Une variable SIGNLIFT_API_KEY à changer.

Checklist avant le go-live

  • Création de signature requests (POST /api/v1/signature_requests)
  • Réception et vérification HMAC des 5 événements de webhook
  • Parcours signataire complet (e-mail · OTP · signature)
  • Récupération des PDF signés + certificat de preuve
  • Gestion des erreurs quota_exceeded et rate_limited
  • Iframe embedding avec validation domaine

Quand chaque case est cochée en sandbox, votre code est prêt pour la production.

Webhooks

Cinq événements signés HMAC,
livraison fiable garantie.

  • signer.notified

    Notification d'invitation envoyée à un signataire.

  • signer.otp_sent

    OTP envoyé (e-mail ou SMS) au signataire courant.

  • signer.signed

    Un signataire a finalisé sa signature.

  • request.completed

    Tous les signataires ont signé. PDF prêts.

  • request.expired

    La demande a dépassé sa fenêtre de validité.

Signature HMAC-SHA256

Chaque payload est signé avec le webhook_secret de votre application. Le header X-Signlift-Signature porte le résultat au format sha256=<hex>. Comparez-le en temps constant côté serveur.

Livraison fiable avec retentatives

En cas d'échec (non-2xx ou timeout), Signlift retente automatiquement selon un schéma exponentiel sur plusieurs heures. Vous recevrez toujours l'événement, même si votre endpoint a un creux temporaire.

Retentatives sur ~18 h

Iframe embarquée

Faites signer dans votre app.
Pas de redirection.

L'URL de signature retournée par l'API est utilisable telle quelle comme src d'iframe. Vos utilisateurs ne quittent jamais votre produit.

  • Validation par domaine

    Chaque organisation déclare les domaines autorisés. Signlift sert dynamiquement la CSP frame-ancestors — toute autre origine est bloquée par le navigateur.

  • postMessage signés

    Les transitions de parcours sont notifiées via postMessage signé avec votre webhook_secret. Aucun forger possible depuis la console JS.

  • Aux couleurs de votre marque

    Attachez un profil graphique à la demande via le paramètre branding_profile_id de POST /signature_requests. L'iframe adopte automatiquement le profil — aucune CSS à injecter côté client.

iframe + postMessage
<iframe
  src="https://app.signlift.eu/sign/eyJhbGciOiJIUzI1NiJ9..."
  width="100%"
  height="800"
  sandbox="allow-scripts allow-same-origin allow-forms"
  title="Signature électronique Signlift"
></iframe>

Prêt à intégrer ?
Trois lignes de code suffisent.

Créez un compte sandbox sans carte bancaire, récupérez une clé, uploadez un PDF. Vous serez en production dans la journée.