Przejdź do głównej zawartości

Szybki start

Ten przewodnik prowadzi od opublikowanego szablonu do podpisanego, zapieczętowanego pliku PDF. Korzysta z klucza testowego, więc nic nie jest rozliczane, a każdy dokument ma znak wodny TEST.

  1. Klucze API tworzy się w panelu, w sekcji Ustawienia › Klucze API. Na potrzeby tego przewodnika wybierz Test: klucz zaczyna się od bf_test_. Pełny klucz jest wyświetlany tylko raz; zapisz go jako zmienną środowiskową.

    Okno terminala
    export BONA_FIDE_API_KEY=bf_test_…

    Każde żądanie przesyła go jako Authorization: Bearer … (lub x-api-key: …). Zobacz Uwierzytelnianie.

  2. Szablony projektuje się w panelu (prześlij dokument PDF lub Word i rozmieść pola albo napisz go w trybie Document), a następnie publikuje. Pobierz ich listę, aby uzyskać identyfikator:

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

    GET /v1/templates/{id}/versions/latest zwraca roles i fields danej wersji oraz JSON Schema jej variables. Strona szablonu w panelu ma też panel Użyj w API z gotowym żądaniem dla dokładnie tej wersji.

  3. POST /v1/envelopes renderuje szablon z Twoimi zmiennymi, przypina wersję i rozpoczyna kierowanie do odbiorców. Podaj jednego odbiorcę na każdą rolę (role CC są opcjonalne). Wyślij Idempotency-Key, aby ponowienie nie mogło wysłać koperty dwa razy.

    Okno terminala
    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"
    }'

    Odpowiedź to 201 Created z kopertą:

    {
    "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 określa, jak docierasz do odbiorców: email (domyślnie) wysyła każdemu odbiorcy link do podpisu, gdy nadejdzie jego kolej; embedded i none nie wysyłają wiadomości e-mail, a sesje podpisywania otwierasz samodzielnie (następny krok).

  4. Utwórz dla odbiorcy sesję podpisywania w swoim backendzie. Sesje są krótkotrwałe (ttlSeconds, od 60 do 3600, domyślnie 600) i jednorazowe.

    Okno terminala
    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"]
    }'

    Przekaż zwrócony token (bfs_…) do swojej strony i wyrenderuj komponent webowy:

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

    Nakładki dla React i Vue, zdarzenia i model bezpieczeństwa: Osadzone podpisywanie.

    Przy domyślnej weryfikacji email_otp osoba podpisująca przed wysłaniem potwierdza sześciocyfrowy kod wysłany na jej adres e-mail. W trybie testowym wiadomości e-mail są dostarczane tylko członkom Twojej organizacji, więc podczas testów używaj własnego adresu.

  5. Zarejestruj punkt końcowy webhooka w sekcji Ustawienia › Webhooki (lub za pomocą POST /v1/webhook-endpoints) i zachowaj sekret whsec_…. Gdy podpisze ostatni odbiorca, otrzymasz envelope.completed ze wszystkimi zmiennymi i wpisanymi wartościami w data.values. Zapieczętowany PDF pojawi się wraz ze zdarzeniem 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);
    });

    Pobierz zapieczętowany PDF (dokument z certyfikatem ukończenia, opatrzony znacznikiem czasu):

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

    Pełna lista zdarzeń, ponawianie i ręczna weryfikacja: Webhooki.

Zamień klucz testowy na klucz bf_live_. Koperty produkcyjne nie mają znaku wodnego, wiadomości e-mail trafiają do każdego odbiorcy, a zakończone koperty wliczają się do Twojego planu (Plany i limity). Wszystko, co tworzy klucz, przejmuje jego tryb, jego listy pokazują tylko ten tryb, a koperty testowe powiadamiają wyłącznie punkty końcowe webhooków w trybie testowym, więc zarejestruj też punkt końcowy produkcyjny.