Gå til indhold

Kom hurtigt i gang

Denne gennemgang fører en udgivet skabelon hele vejen til en underskrevet, forseglet PDF. Den bruger en testnøgle, så intet faktureres, og alle dokumenter får vandmærket TEST.

  1. API-nøgler oprettes i dashboardet under Indstillinger › API-nøgler. Vælg Test til denne gennemgang: nøglen begynder med bf_test_. Den fulde nøgle vises kun én gang; gem den som en miljøvariabel.

    Terminal window
    export BONA_FIDE_API_KEY=bf_test_…

    Hver anmodning sender den som Authorization: Bearer … (eller x-api-key: …). Se Godkendelse.

  2. Skabeloner designes i dashboardet (upload et PDF- eller Word-dokument og placer felter, eller skriv det i dokumenttilstand) og udgives derefter. Vis dem for at få id’et:

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

    GET /v1/templates/{id}/versions/latest returnerer versionens roles, fields og JSON Schema for dens variables. Skabelonens side i dashboardet har også et panel, Brug i API, med en færdig anmodning til netop den version.

  3. POST /v1/envelopes renderer skabelonen med dine variabler, fastlåser versionen og begynder at sende kuverten videre. Angiv én modtager pr. rolle (CC-roller er valgfrie). Send en Idempotency-Key, så et genforsøg ikke kan sende to gange.

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

    {
    "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 bestemmer, hvordan modtagerne nås: email (standard) sender hver modtager et underskriftslink pr. e-mail, når det er deres tur; embedded og none sender ingen e-mails, og du åbner selv signeringssessionerne (næste trin).

  4. Opret en signeringssession til modtageren fra din backend. Sessioner er kortlivede (ttlSeconds, 60 til 3600, standard 600) og kan kun bruges é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 det returnerede token (bfs_…) til din side, 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>

    Wrappers til React og Vue, hændelser og sikkerhedsmodellen: Indlejret underskrift.

    Med standardverificeringen email_otp bekræfter underskriveren en sekscifret kode, der sendes til vedkommendes e-mail, før der indsendes. I testtilstand leveres e-mails kun til medlemmer af din organisation, så brug din egen adresse, mens du tester.

  5. Registrer et webhook-slutpunkt under Indstillinger › Webhooks (eller med POST /v1/webhook-endpoints), og gem hemmeligheden whsec_…. Når den sidste modtager har underskrevet, modtager du envelope.completed med alle variabler og udfyldte værdier i data.values. Den forseglede PDF 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);
    });

    Download den forseglede PDF (dokumentet med fuldførelsescertifikatet, 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"

    Fuld liste over hændelser, genforsøg og manuel verificering: Webhooks.

Skift testnøglen ud med en bf_live_-nøgle. Kuverter i live-tilstand får intet vandmærke, e-mails går til alle modtagere, og fuldførte kuverter tæller med i din plan (Planer og grænser). Alt, hvad en nøgle opretter, får nøglens tilstand, nøglens lister viser kun den tilstand, og testkuverter giver kun besked til webhook-slutpunkter i testtilstand, så registrer også et slutpunkt til live-tilstand.