Aller au contenu

Démarrage rapide

Ce tutoriel vous mène d’un modèle publié à un PDF signé et scellé. Il utilise une clé de test : rien n’est facturé et chaque document porte le filigrane TEST.

  1. Les clés d’API se créent dans le tableau de bord, sous Paramètres › Clés d’API. Choisissez Test pour ce tutoriel : la clé commence par bf_test_. La clé complète n’est affichée qu’une seule fois; conservez-la dans une variable d’environnement.

    Fenêtre de terminal
    export BONA_FIDE_API_KEY=bf_test_…

    Chaque requête l’envoie dans l’en-tête Authorization: Bearer … (ou x-api-key: …). Consultez Authentification.

  2. Les modèles se conçoivent dans le tableau de bord (téléversez un PDF ou un document Word et placez-y des champs, ou rédigez-le en mode Document), puis se publient. Listez-les pour obtenir leur identifiant :

    Fenêtre de terminal
    curl https://api.bonafidesign.com/v1/templates \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    GET /v1/templates/{id}/versions/latest renvoie les roles et les fields de la version ainsi que le JSON Schema de ses variables. La page du modèle dans le tableau de bord comporte aussi un panneau Utiliser dans l’API avec une requête toute prête pour cette version précise.

  3. POST /v1/envelopes génère le document à partir du modèle et de vos variables, fixe la version et lance l’acheminement. Indiquez un destinataire par rôle (les rôles CC sont facultatifs). Envoyez une Idempotency-Key pour qu’une nouvelle tentative ne puisse pas provoquer un double envoi.

    Fenêtre de terminal
    curl https://api.bonafidesign.com/v1/envelopes \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: onboarding-8841" \
    -d '{
    "template": "tpl_…",
    "version": "latest",
    "variables": {
    "client": { "name": "Acme Robotics, Inc." },
    "effective_date": "2026-10-13"
    },
    "recipients": [
    { "role": "client", "name": "Jane Doe", "email": "jane@acme.dev" }
    ],
    "delivery": "embedded",
    "externalId": "user_8841",
    "dedupeOn": "external_id"
    }'

    La réponse est un 201 Created contenant l’enveloppe :

    {
    "id": "env_8Gm2kQ4rT1",
    "organization": "org_…",
    "template": "tpl_…",
    "templateVersion": 3,
    "status": "sent",
    "seal": "not_started",
    "testMode": true,
    "recipients": [
    {
    "id": "rcp_5Jw0pLs9Xe",
    "role": "client",
    "name": "Jane Doe",
    "email": "jane@acme.dev",
    "order": 1,
    "status": "sent",
    "verification": "email_otp",
    "completedAt": null
    }
    ],
    "documentHash": "9f2c…",
    "sealedDocumentHash": null,
    "externalId": "user_8841",
    "metadata": {},
    "createdAt": "2026-10-13T13:58:04.512Z",
    "completedAt": null
    }

    delivery détermine comment les destinataires sont joints : avec email (la valeur par défaut), chaque destinataire reçoit un lien de signature par courriel quand vient son tour; avec embedded et none, aucun courriel n’est envoyé et c’est vous qui ouvrez les sessions de signature (étape suivante).

  4. Créez une session de signature pour le destinataire à partir de votre back-end. Les sessions sont éphémères (ttlSeconds, de 60 à 3600, 600 par défaut) et à usage unique.

    Fenêtre de terminal
    curl https://api.bonafidesign.com/v1/envelopes/env_8Gm2kQ4rT1/sessions \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "recipient": "rcp_5Jw0pLs9Xe",
    "mode": "embedded",
    "allowedOrigins": ["https://app.example.com"]
    }'

    Transmettez le token renvoyé (bfs_…) à votre page et affichez le composant Web :

    <script type="module" src="https://js.bonafidesign.com/v1"></script>
    <bf-signing session="bfs_…"></bf-signing>
    <script>
    document.querySelector('bf-signing')
    .addEventListener('completed', (e) => console.log('signed', e.detail.envelope));
    </script>

    Adaptateurs React et Vue, événements et modèle de sécurité : Signature intégrée.

    Avec la vérification email_otp par défaut, le signataire confirme un code à six chiffres envoyé à son adresse courriel avant de soumettre. En mode test, les courriels ne sont livrés qu’aux membres de votre organisation : utilisez donc votre propre adresse pendant vos essais.

  5. Enregistrez un point de terminaison de webhook dans Paramètres › Webhooks (ou avec POST /v1/webhook-endpoints) et conservez le secret whsec_…. Quand le dernier destinataire a signé, vous recevez envelope.completed, avec toutes les variables et les valeurs saisies dans data.values. Le PDF scellé suit avec envelope.sealed.

    import express from 'express';
    import { Webhook } from 'standardwebhooks';
    const wh = new Webhook(process.env.BONA_FIDE_WEBHOOK_SECRET!);
    const app = express();
    app.post('/hooks/bona-fide', express.raw({ type: 'application/json' }), async (req, res) => {
    const event = wh.verify(req.body, req.headers as Record<string, string>) as { type: string; data: any };
    if (event.type === 'envelope.completed') await saveValues(event.data.envelope.id, event.data.values);
    if (event.type === 'envelope.sealed') await fetchSealedPdf(event.data.envelope.id);
    res.sendStatus(204);
    });

    Téléchargez le PDF scellé (le document accompagné de son certificat de finalisation, horodaté) :

    Fenêtre de terminal
    curl -o signed.pdf "https://api.bonafidesign.com/v1/envelopes/env_8Gm2kQ4rT1/document?version=sealed" \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    Liste complète des événements, nouvelles tentatives et vérification manuelle : Webhooks.

Remplacez la clé de test par une clé bf_live_. Les enveloppes en production ne portent pas de filigrane, les courriels sont envoyés à tous les destinataires et les enveloppes finalisées sont comptabilisées dans votre forfait (Forfaits et limites). Tout ce qu’une clé crée prend son mode, ses listes n’affichent que ce mode, et les enveloppes de test n’avertissent que les points de terminaison de webhook en mode test : enregistrez donc aussi un point de terminaison en production.