Aller au contenu principal
Certyneo
API REST — eIDAS

L'API de signature électronique pour les développeurs

Intégrez la signature électronique eIDAS dans votre application : API REST, webhooks signés HMAC, signature intégrée en iframe et clés de test gratuites dès le compte gratuit.

Clés de test gratuites · SLA 99,9 % (Business et Enterprise) · Hébergement dans l'UE

REST + OpenAPI

Endpoints prévisibles, JSON propre, codes HTTP standard. Spécification OpenAPI téléchargeable pour générer vos propres clients.

Webhooks fiables

5 tentatives avec des délais croissants, signature HMAC SHA-256, événements en échec rejouables depuis le tableau de bord. Pas de polling à coder.

Conformité eIDAS native

Signatures simple, avancée (OTP par SMS) et qualifiée, choisies par enveloppe avec le champ signatureLevel. Piste d'audit horodatée jointe à chaque document signé.

Hébergée dans l'UE

Serveurs en Allemagne, en France et en Espagne. Limites de débit publiées par forfait et en-têtes X-RateLimit sur chaque réponse. SLA 99,9 % sur Business et Enterprise.

Démarrage en trois appels

Téléversez le PDF, créez l'enveloppe, envoyez-la : trois requêtes HTTP suffisent.

cURL — téléverser, créer, envoyer
# 1. Upload the PDF
curl https://certyneo.com/api/v1/documents \
  -H "Authorization: Bearer $CERTYNEO_API_KEY" \
  -F "file=@contrat.pdf"
# → { "id": "cm8doc...", "status": "READY", ... }

# 2. Create the envelope (draft)
curl https://certyneo.com/api/v1/envelopes \
  -H "Authorization: Bearer $CERTYNEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Contrat de prestation",
    "documentIds": ["cm8doc..."],
    "recipients": [{ "email": "client@example.com", "name": "Jane Doe" }]
  }'
# → { "id": "cm8env...", "status": "DRAFT", ... }

# 3. Send the invitations
curl -X POST https://certyneo.com/api/v1/envelopes/cm8env.../send \
  -H "Authorization: Bearer $CERTYNEO_API_KEY"

POST /documents renvoie l'identifiant du PDF, POST /envelopes crée un brouillon avec ses signataires, puis POST /envelopes/:id/send envoie les invitations. L'avancement arrive ensuite par webhook.

Node.js — fetch natif, sans dépendance
// Node 18+ — native fetch, no dependency
import { readFile } from "node:fs/promises";

const API = "https://certyneo.com/api/v1";
const auth = { Authorization: `Bearer ${process.env.CERTYNEO_API_KEY}` };

// 1. Upload the PDF
const form = new FormData();
const pdf = new Blob([await readFile("contrat.pdf")], { type: "application/pdf" });
form.append("file", pdf, "contrat.pdf");
const doc = await (await fetch(`${API}/documents`, { method: "POST", headers: auth, body: form })).json();

// 2. Create the envelope (draft)
const envelope = await (await fetch(`${API}/envelopes`, {
  method: "POST",
  headers: { ...auth, "Content-Type": "application/json" },
  body: JSON.stringify({
    subject: "Contrat de prestation",
    documentIds: [doc.id],
    recipients: [{ email: "client@example.com", name: "Jane Doe" }],
  }),
})).json();

// 3. Send the invitations
await fetch(`${API}/envelopes/${envelope.id}/send`, { method: "POST", headers: auth });

Aucun SDK n'est nécessaire : l'API se consomme avec le fetch natif de Node 18 ou n'importe quel client HTTP. La spécification OpenAPI permet aussi de générer un client typé dans votre langage.

Webhooks — réagissez en temps réel

Les événements d'enveloppe et de destinataire, signature HMAC vérifiable et relance automatique.

envelope.completed
{
  "id": "cm8f2h6a10004qr9k5p2wm3xt",
  "event": "envelope.completed",
  "data": {
    "envelopeId": "cm7x2k9p40001qz8h3f7bn2ld",
    "subject": "Contrat de prestation",
    "status": "COMPLETED",
    "completedAt": "2026-09-26T08:42:13.000Z",
    "recipientCount": 1,
    "recipients": [
      { "email": "client@example.com", "name": "Jane Doe", "role": "SIGNER", "status": "SIGNED" }
    ],
    "signedDocumentUrl": "https://storage.certyneo.com/signed/...pdf?X-Amz-Expires=604800&..."
  },
  "timestamp": "2026-09-26T08:42:13.521Z"
}
  • Signature HMAC SHA-256 de chaque payload — vérifiez l'authenticité côté serveur.
  • Retry automatique en cas d'échec temporaire : 5 tentatives sur environ 1 h 20 avec backoff exponentiel.
  • Les événements en échec sont listés dans le tableau de bord et rejouables en un clic. Après 5 échecs consécutifs, le point de terminaison est suspendu et vous êtes prévenu.
  • Jusqu'à 5 points de terminaison en Standard, 15 en Business et 50 en Business Pro, chacun abonné aux événements de votre choix.

Pourquoi une API dédiée à la signature électronique ?

Intégrer la signature électronique dans votre produit n'est pas anodin. Vous avez besoin de garanties sur la conformité légale (eIDAS), la fiabilité technique (webhooks qui arrivent vraiment), et la souveraineté des données (hébergement européen pour éviter le Cloud Act). L'API Certyneo couvre les trois.

Conçue par et pour des développeurs, elle suit les conventions REST : version dans l'URL (/api/v1), pagination par page et limit, erreurs JSON avec un code lisible par la machine, spécification OpenAPI pour générer vos clients. Pas de SOAP, pas de XML, pas de surprises.

Conformité eIDAS expliquée pour les développeurs

Le règlement eIDAS définit trois niveaux de signature : simple (SES), avancée (AES) et qualifiée (QES). L'API Certyneo permet de choisir le niveau de chaque enveloppe avec le champ signatureLevel : SIMPLE (par défaut), ADVANCED ou QUALIFIED. La signature simple couvre la plupart des contrats commerciaux courants ; la QES sert quand un texte ou un destinataire exige l'équivalence avec la signature manuscrite.

Côté technique, le niveau avancé active d'office l'OTP par SMS et demande un numéro de téléphone pour chaque signataire. La piste d'audit est horodatée selon la norme RFC 3161. La QES repose sur un certificat qualifié émis par un prestataire de confiance qualifié de l'UE. Tout se pilote par l'API.

Architecture d'intégration recommandée

Le pattern d'intégration le plus courant suit ce flux :

  • Votre backend téléverse le PDF (POST /api/v1/documents), crée l'enveloppe en brouillon (POST /api/v1/envelopes), puis l'envoie (POST /api/v1/envelopes/:id/send).
  • Le signataire reçoit son invitation par e-mail, ou signe directement dans votre interface grâce à la signature intégrée en iframe (POST /api/v1/envelopes/:id/embed-url, dès le plan Standard).
  • Une fois la signature complétée, Certyneo appelle votre webhook avec l'événement envelope.completed.
  • Vous mettez à jour votre base de données et notifiez l'utilisateur (e-mail, in-app, etc.).

Clés de test gratuites

Les clés sk_test_ sont disponibles sur tous les forfaits, y compris Gratuit, et les enveloppes de test ne consomment pas votre quota mensuel. Sur le forfait Gratuit, elles ne peuvent être adressées qu'à votre propre adresse e-mail et sont limitées à 20 requêtes par heure ; les forfaits payants montent de 200 à 1 000 requêtes par heure. Les données de test sont effacées au bout de 30 jours. La première clé de test d'un compte gratuit ouvre en plus un mois de forfait Standard offert.

Et si vous ne voulez pas écrire de code

Tout ce que fait cette API se pilote aussi sans écrire une ligne, depuis un flux : créer une enveloppe, l'envoyer, réagir à une signature, récupérer le PDF scellé et sa piste d'audit. Le même socle, avec un concepteur visuel à la place du client HTTP. Voir l'intégration Power Automate et Microsoft 365.

Migrer depuis DocuSign ou Yousign

Si vous avez déjà une intégration DocuSign ou Yousign, le vocabulaire est proche : envelopes → envelopes, recipients → recipients, webhooks de statut → webhooks. Le guide de migration DocuSign et Yousign vers Certyneo détaille les étapes, de l'export des modèles au basculement des webhooks.

Vous migrez depuis Adobe Acrobat Sign (anciennement EchoSign, puis Adobe Sign) ? Le mapping est tout aussi direct — agreements → envelopes, participants → recipients, webhooks → webhooks. Comparer Certyneo et Adobe Acrobat Sign →

Prix d'une API de signature électronique : où acheter un abonnement ?

Pas besoin de devis ni de bon de commande pour acheter un abonnement API de signature : les clés de test sont gratuites, la clé API se génère depuis le tableau de bord, et l'accès à l'API REST de production est inclus dès le plan Standard à 19 €/mois — webhooks compris, sans frais par signature simple.

  • Standard — 19 €/mois : 100 enveloppes/mois, API REST + webhooks, 10 utilisateurs
  • Business — 39 €/mois : 300 enveloppes/mois, envoi groupé, formulaires web
  • Business Pro — 99 €/mois : 1 000 enveloppes/mois, API haute fréquence (300 req/min), utilisateurs illimités

La signature qualifiée (QES) est facturée à l'acte et réglée à l'envoi : 9,90 € par signature avec un abonnement, débités sur la carte enregistrée une fois épuisées les QES incluses en Business et Business Pro, et 14,90 € sans abonnement.

Pour les volumes importants ou un besoin d'engagement contractuel (SLA, DPA dédié, facturation annuelle), le plan Enterprise se souscrit auprès de l'équipe commerciale. Dans tous les cas, les prix sont publics — comparez-les avant de vous engager.

Pour aller plus loin

Guides pour choisir et intégrer une API de signature électronique

Sur le blog : guide développeur de l'API REST de signature électronique et Make ou Zapier pour automatiser vos signatures.

Foire aux questions — API

Quel est le rate limit de l'API ?

La limite s'applique à chaque clé, par minute, selon le forfait : 60 requêtes en Standard, 120 en Business, 300 en Business Pro et 1 000 en Enterprise. Chaque réponse porte les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset ; au-delà, l'API renvoie 429 avec un en-tête Retry-After.

Combien coûte l'API ?

Les clés de test (sk_test_) sont gratuites sur tous les forfaits. L'accès à l'API REST de production est inclus dès le plan Standard à 19 €/mois (100 enveloppes/mois), puis Business à 39 €/mois et Business Pro à 99 €/mois avec des quotas croissants ; la signature qualifiée (QES) est facturée à l'acte, 9,90 € avec un abonnement. Pour les volumes supérieurs, le plan Enterprise se souscrit auprès de l'équipe commerciale.

Y a-t-il un SLA ?

Oui : 99,9 % de disponibilité mensuelle sur les plans Business et Enterprise, avec un crédit sur facture de 10 à 50 % selon l'écart constaté. L'état du service est publié en continu sur la page de statut de Certyneo.

Quelle authentification utilisez-vous ?

Une clé API dans l'en-tête Authorization (Bearer sk_live_… ou sk_test_…). Les clés se créent et se révoquent depuis le tableau de bord, avec effet immédiat. Pour une application tierce qui agit au nom de vos utilisateurs, OAuth 2.0 est disponible avec le flux authorization code et PKCE.

Comment vérifier la signature HMAC d'un webhook ?

Chaque webhook porte un en-tête X-Certyneo-Signature : le HMAC SHA-256, en hexadécimal, du corps brut de la requête, calculé avec le secret de votre point de terminaison. Recalculez-le côté serveur sur le corps non modifié et comparez en temps constant (crypto.timingSafeEqual en Node, hmac.compare_digest en Python).

Existe-t-il un SDK officiel ?

Pas encore publié. L'API s'appelle directement en HTTP depuis n'importe quel langage, et la spécification OpenAPI permet de générer un client typé avec openapi-generator ou un outil équivalent. Sans code, Certyneo est aussi disponible sur Make, n8n, Postman et RapidAPI.

Puis-je tester sans payer ?

Oui : créez un compte gratuit et générez une clé sk_test_ depuis le tableau de bord. La première clé de test d'un compte gratuit ouvre aussi un mois de forfait Standard offert. La collection Postman permet d'enchaîner les premiers appels sans écrire de code.

Combien coûte l'API EchoSign (devenue Adobe Acrobat Sign) ?

EchoSign a été racheté par Adobe en 2011, renommé Adobe Sign puis Adobe Acrobat Sign : l'API existe toujours, mais son tarif n'est pas public et passe par un devis entreprise auprès de l'équipe commerciale d'Adobe, généralement par tranches de transactions annuelles. À l'inverse, Certyneo affiche ses prix : l'accès API de production est inclus dès le plan Standard à 19 €/mois, souscrit en ligne sans devis, avec des clés de test gratuites pour évaluer l'API avant de payer.

Prêt à intégrer la signature électronique ?

Clés de test gratuites, spécification OpenAPI, webhooks signés. Démarrez maintenant.