Gå til innholdet

Hurtigstart

Denne gjennomgangen tar en publisert mal helt frem til en signert, forseglet PDF. Den bruker en testnøkkel, så ingenting faktureres, og alle dokumenter får vannmerket TEST.

  1. API-nøkler opprettes i dashbordet, under Innstillinger › API-nøkler. Velg Test for denne gjennomgangen: nøkkelen begynner med bf_test_. Hele nøkkelen vises bare én gang; lagre den som en miljøvariabel.

    Terminal window
    export BONA_FIDE_API_KEY=bf_test_…

    Hver forespørsel sender den som Authorization: Bearer … (eller x-api-key: …). Se Autentisering.

  2. Maler utformes i dashbordet (last opp en PDF eller et Word-dokument og plasser felt, eller skriv den i dokumentmodus) og publiseres deretter. List dem opp for å få ID-en:

    Terminal window
    curl https://api.bonafidesign.com/v1/templates \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    GET /v1/templates/{id}/versions/latest returnerer versjonens roles, fields og JSON Schema-et for variables. Malsiden i dashbordet har også et Bruk i API-panel med en ferdig forespørsel for akkurat den versjonen.

  3. POST /v1/envelopes rendrer malen med variablene dine, låser versjonen og starter rutingen. Oppgi én mottaker per rolle (CC-roller er valgfrie). Send en Idempotency-Key, så kan ikke et nytt forsøk sende to ganger.

    Terminal window
    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"
    }'

    Svaret er 201 Created med konvolutten:

    {
    "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 avgjør hvordan mottakerne nås: email (standard) sender hver mottaker en signeringslenke på e-post når det er deres tur; embedded og none sender ingen e-post, og du åpner signeringsøktene selv (neste steg).

  4. Opprett en signeringsøkt for mottakeren fra backenden din. Økter er kortlivede (ttlSeconds, 60 til 3600, standard 600) og kan bare brukes én gang.

    Terminal window
    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"]
    }'

    Send den returnerte token (bfs_…) til siden din og render webkomponenten:

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

    Innpakninger for React og Vue, hendelser og sikkerhetsmodellen: Innebygd signering.

    Med standardverifiseringen email_otp bekrefter signataren en sekssifret kode som sendes til e-postadressen deres, før de sender inn. I testmodus leveres e-post bare til medlemmer av organisasjonen din, så bruk din egen adresse mens du tester.

  5. Registrer et webhook-endepunkt under Innstillinger › Webhooks (eller med POST /v1/webhook-endpoints), og ta vare på whsec_…-hemmeligheten. Når den siste mottakeren signerer, mottar du envelope.completed, med alle variabler og utfylte verdier i data.values. Den forseglede PDF-en følger med 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);
    });

    Last ned den forseglede PDF-en (dokumentet med fullføringssertifikatet, tidsstemplet):

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

    Fullstendig liste over hendelser, nye forsøk og manuell verifisering: Webhooks.

Bytt ut testnøkkelen med en bf_live_-nøkkel. Konvolutter i produksjon får ikke vannmerke, e-post går til alle mottakere, og fullførte konvolutter teller mot planen din (Planer og grenser). Alt en nøkkel oppretter, får nøkkelens modus, listene viser bare den modusen, og testkonvolutter varsler bare webhook-endepunkter i testmodus, så registrer også et endepunkt for produksjon.