Salta ai contenuti

Guida rapida

Questa procedura guidata porta un modello pubblicato fino a un PDF firmato e sigillato. Usa una chiave di prova, quindi nulla viene fatturato e ogni documento riporta la filigrana TEST.

  1. Le chiavi API si creano nella dashboard, in Impostazioni › Chiavi API. Per questa procedura scelga Test: la chiave inizia con bf_test_. La chiave completa viene mostrata una sola volta; la salvi in una variabile d’ambiente.

    Finestra del terminale
    export BONA_FIDE_API_KEY=bf_test_…

    Ogni richiesta la invia come Authorization: Bearer … (o x-api-key: …). Veda Autenticazione.

  2. I modelli si progettano nella dashboard (caricando un PDF o un documento Word e posizionando i campi, oppure scrivendoli in modalità Documento) e poi si pubblicano. Li elenchi per ottenere l’id:

    Finestra del terminale
    curl https://api.bonafidesign.com/v1/templates \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    GET /v1/templates/{id}/versions/latest restituisce i roles e i fields della versione e il JSON Schema delle sue variables. La pagina del modello nella dashboard ha anche un pannello Usa nell’API con una richiesta già pronta per quella versione specifica.

  3. POST /v1/envelopes compone il modello con le Sue variabili, fissa la versione e avvia l’instradamento. Indichi un destinatario per ruolo (i ruoli in CC sono facoltativi). Invii una Idempotency-Key, così un nuovo tentativo non può inviare la busta due volte.

    Finestra del terminale
    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 risposta è 201 Created con la busta:

    {
    "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 stabilisce come vengono raggiunti i destinatari: con email (il valore predefinito) ogni destinatario riceve via e-mail un link di firma quando è il suo turno; con embedded e none non viene inviata alcuna e-mail e le sessioni di firma le apre Lei (passo successivo).

  4. Crei dal Suo backend una sessione di firma per il destinatario. Le sessioni hanno una breve durata (ttlSeconds, da 60 a 3600, predefinito 600) e sono monouso.

    Finestra del terminale
    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"]
    }'

    Passi alla Sua pagina il token restituito (bfs_…) e visualizzi il web component:

    <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>

    Wrapper React e Vue, eventi e modello di sicurezza: Firma integrata.

    Con la verifica predefinita email_otp, prima di inviare il firmatario conferma un codice di sei cifre ricevuto via e-mail. In modalità di prova le e-mail vengono recapitate solo ai membri della Sua organizzazione, quindi durante i test usi il Suo indirizzo.

  5. Registri un endpoint webhook in Impostazioni › Webhook (o con POST /v1/webhook-endpoints) e conservi il segreto whsec_…. Quando l’ultimo destinatario firma, riceve envelope.completed, con tutte le variabili e tutti i valori inseriti in data.values. Il PDF sigillato segue con 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);
    });

    Scarichi il PDF sigillato (il documento con il suo certificato di completamento, con marca temporale):

    Finestra del terminale
    curl -o signed.pdf "https://api.bonafidesign.com/v1/envelopes/env_8Gm2kQ4rT1/document?version=sealed" \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    Elenco completo degli eventi, nuovi tentativi e verifica manuale: Webhook.

Sostituisca la chiave di prova con una chiave bf_live_. Le buste di produzione non hanno filigrana, le e-mail raggiungono qualsiasi destinatario e le buste completate vengono conteggiate nel Suo piano (Piani e limiti). Tutto ciò che una chiave crea assume la sua modalità, i suoi elenchi mostrano solo quella modalità e le buste di prova notificano solo gli endpoint webhook in modalità di prova: registri quindi anche un endpoint di produzione.