Pikaopas
Tämä opas vie julkaistun mallin allekirjoitetuksi ja sinetöidyksi PDF:ksi. Se käyttää testiavainta, joten mitään
ei laskuteta ja jokaiseen asiakirjaan tulee vesileima TEST.
-
Luo API-avain
Osio nimeltä “Luo API-avain”API-avaimet luodaan hallintapaneelissa kohdassa Asetukset › API-avaimet. Valitse tätä opasta varten Test: avain alkaa merkkijonolla
bf_test_. Koko avain näytetään vain kerran; tallenna se ympäristömuuttujaan.Terminal window export BONA_FIDE_API_KEY=bf_test_…Jokainen pyyntö lähettää sen muodossa
Authorization: Bearer …(taix-api-key: …). Katso Todennus. -
Etsi mallisi
Osio nimeltä “Etsi mallisi”Mallit suunnitellaan hallintapaneelissa (lataa PDF- tai Word-asiakirja ja sijoita kentät tai kirjoita malli asiakirjatilassa) ja julkaistaan sitten. Hae niiden luettelo saadaksesi tunnuksen:
Terminal window curl https://api.bonafidesign.com/v1/templates \-H "Authorization: Bearer $BONA_FIDE_API_KEY"const res = await fetch('https://api.bonafidesign.com/v1/templates', {headers: { Authorization: `Bearer ${process.env.BONA_FIDE_API_KEY}` },});const { data } = await res.json(); // [{ id: 'tpl_…', name: 'Mutual NDA', latestVersion: 3, … }]import os, requestsAPI = "https://api.bonafidesign.com"headers = {"Authorization": f"Bearer {os.environ['BONA_FIDE_API_KEY']}"}templates = requests.get(f"{API}/v1/templates", headers=headers).json()["data"]GET /v1/templates/{id}/versions/latestpalauttaa versionroles- jafields-tiedot sekä senvariables-kentän JSON Scheman. Hallintapaneelin mallisivulla on myös Käytä API:ssa -paneeli, jossa on valmis pyyntö juuri sille versiolle. -
Luo kirjekuori
Osio nimeltä “Luo kirjekuori”POST /v1/envelopesrenderöi mallin muuttujillasi, lukitsee version ja aloittaa reitityksen. Anna yksi vastaanottaja roolia kohden (CC-roolit ovat valinnaisia). LähetäIdempotency-Key, jotta uudelleenyritys ei voi lähettää kahdesti.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"}'const res = await fetch('https://api.bonafidesign.com/v1/envelopes', {method: 'POST',headers: {Authorization: `Bearer ${process.env.BONA_FIDE_API_KEY}`,'Content-Type': 'application/json','Idempotency-Key': 'onboarding-8841',},body: JSON.stringify({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',}),});if (res.status === 422) {// RFC 9457 problem: one entry per error, each with a JSON Pointer such as /variables/client/nameconsole.error((await res.json()).errors);}const envelope = await res.json(); // { id: 'env_…', status: 'sent', recipients: [{ id: 'rcp_…', … }] }res = requests.post(f"{API}/v1/envelopes",headers={**headers, "Idempotency-Key": "onboarding-8841"},json={"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",},)if res.status_code == 422:print(res.json()["errors"]) # [{"pointer": "/variables/client/name", "message": "…"}]envelope = res.json()Vastaus on
201 Created, ja siinä on kirjekuori:{"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}deliverymäärää, miten vastaanottajat tavoitetaan:email(oletus) lähettää jokaiselle vastaanottajalle allekirjoituslinkin sähköpostitse, kun on hänen vuoronsa;embeddedjanoneeivät lähetä sähköpostia, vaan avaat allekirjoitusistunnot itse (seuraava vaihe). -
Anna vastaanottajan allekirjoittaa
Osio nimeltä “Anna vastaanottajan allekirjoittaa”Luo vastaanottajalle allekirjoitusistunto taustajärjestelmästäsi. Istunnot ovat lyhytikäisiä (
ttlSeconds, 60–3600, oletus 600) ja kertakäyttöisiä.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"]}'Välitä palautettu
token(bfs_…) sivullesi ja renderöi verkkokomponentti:<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>React- ja Vue-kääreet, tapahtumat ja tietoturvamalli: Upotettu allekirjoitus.
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": "hosted", "returnUrl": "https://app.example.com/done" }'Ohjaa allekirjoittaja palautettuun
url-osoitteeseen (https://sign.bonafidesign.com/s/bfs_…). Isännöity sivu on suunniteltu ensisijaisesti mobiilille, eikä se vaadi tiliä.Oletusarvoisella
email_otp-vahvistuksella allekirjoittaja vahvistaa sähköpostiinsa lähetetyn kuusinumeroisen koodin ennen lähettämistä. Testitilassa sähköposti toimitetaan vain organisaatiosi jäsenille, joten käytä omaa osoitettasi testatessasi. -
Saa ilmoitus valmistumisesta
Osio nimeltä “Saa ilmoitus valmistumisesta”Rekisteröi webhook-päätepiste kohdassa Asetukset › Webhookit (tai kutsulla
POST /v1/webhook-endpoints) ja säilytäwhsec_…-salaisuus. Kun viimeinen vastaanottaja allekirjoittaa, saat tapahtumanenvelope.completed, jonkadata.valuessisältää kaikki muuttujat ja syötetyt arvot. Sinetöity PDF seuraa tapahtumallaenvelope.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);});Lataa sinetöity PDF (asiakirja valmistumistodistuksineen, aikaleimattuna):
Terminal window curl -o signed.pdf "https://api.bonafidesign.com/v1/envelopes/env_8Gm2kQ4rT1/document?version=sealed" \-H "Authorization: Bearer $BONA_FIDE_API_KEY"Täydellinen tapahtumaluettelo, uudelleenyritykset ja manuaalinen tarkistus: Webhookit.
Tuotantoon siirtyminen
Osio nimeltä “Tuotantoon siirtyminen”Vaihda testiavain bf_live_-avaimeen. Tuotantotilan kirjekuorissa ei ole vesileimaa, sähköposti lähtee kaikille
vastaanottajille ja valmiit kirjekuoret lasketaan pakettisi kiintiöön (Paketit ja rajat).
Kaikki, mitä avain luo, saa sen tilan, sen luettelot näyttävät vain sen tilan, ja testikirjekuoret ilmoittavat vain
testitilan webhook-päätepisteille, joten rekisteröi myös tuotantotilan päätepiste.