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
Pour les développeurs
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]" }} }] }] }'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
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
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
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.
export SIGNLIFT_API_KEY="a3f9b1c8...d4e2"
# 64 caractères hex
# Stockez dans Vault, AWS Secrets Manager, Doppler, etc.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.
curl https://app.signlift.eu/api/v1/documents \
-H "X-Api-Key: $SIGNLIFT_API_KEY" \
-F "file=@contract.pdf"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).
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]" } }
}]
}]
}'À 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.
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
endSandbox
Validez votre intégration de bout en bout — sans carte bancaire, sans engagement, sans risque juridique.
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.
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.
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.
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.
SIGNLIFT_API_KEY à changer.Checklist avant le go-live
quota_exceeded et rate_limitedQuand chaque case est cochée en sandbox, votre code est prêt pour la production.
Webhooks
signer.notifiedNotification d'invitation envoyée à un signataire.
signer.otp_sentOTP envoyé (e-mail ou SMS) au signataire courant.
signer.signedUn signataire a finalisé sa signature.
request.completedTous les signataires ont signé. PDF prêts.
request.expiredLa demande a dépassé sa fenêtre de validité.
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.
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
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
src="https://app.signlift.eu/sign/eyJhbGciOiJIUzI1NiJ9..."
width="100%"
height="800"
sandbox="allow-scripts allow-same-origin allow-forms"
title="Signature électronique Signlift"
></iframe>Créez un compte sandbox sans carte bancaire, récupérez une clé, uploadez un PDF. Vous serez en production dans la journée.