Lewati ke konten

Mulai cepat

Panduan ini membawa template yang sudah dipublikasikan hingga menjadi PDF yang ditandatangani dan disegel. Panduan ini memakai kunci uji, sehingga tidak ada yang ditagih dan setiap dokumen diberi tanda air TEST.

  1. Kunci API dibuat di dasbor, di Pengaturan › Kunci API. Pilih Test untuk panduan ini: kuncinya diawali bf_test_. Kunci lengkap hanya ditampilkan sekali; simpan sebagai variabel lingkungan.

    Terminal window
    export BONA_FIDE_API_KEY=bf_test_…

    Setiap permintaan mengirimkannya sebagai Authorization: Bearer … (atau x-api-key: …). Lihat Autentikasi.

  2. Template dirancang di dasbor (unggah dokumen PDF atau Word lalu tempatkan kolom, atau tulis dalam mode Dokumen), lalu dipublikasikan. Tampilkan daftarnya untuk mendapatkan id:

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

    GET /v1/templates/{id}/versions/latest mengembalikan roles, fields versi tersebut, dan JSON Schema dari variables-nya. Halaman template di dasbor juga memiliki panel Gunakan di API berisi permintaan siap pakai untuk versi tersebut.

  3. POST /v1/envelopes merender template dengan variabel Anda, menyematkan versinya, dan mulai merutekan. Berikan satu penerima per peran (peran CC bersifat opsional). Kirim Idempotency-Key agar percobaan ulang tidak mengirim dua kali.

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

    Responsnya adalah 201 Created dengan amplop:

    {
    "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 menentukan cara menjangkau penerima: email (default) mengirim email berisi tautan penandatanganan kepada setiap penerima saat tiba gilirannya; embedded dan none tidak mengirim email, dan Anda sendiri yang membuka sesi penandatanganan (langkah berikutnya).

  4. Buat sesi penandatanganan untuk penerima dari backend Anda. Sesi berumur pendek (ttlSeconds, 60 hingga 3600, default 600) dan sekali pakai.

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

    Teruskan token yang dikembalikan (bfs_…) ke halaman Anda dan render web component-nya:

    <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 dan Vue, event, dan model keamanan: Penandatanganan tersemat.

    Dengan verifikasi default email_otp, penanda tangan mengonfirmasi kode enam digit yang dikirim ke emailnya sebelum mengirimkan. Dalam mode uji, email hanya dikirim ke anggota organisasi Anda, jadi gunakan alamat Anda sendiri saat menguji.

  5. Daftarkan endpoint webhook di Pengaturan › Webhook (atau dengan POST /v1/webhook-endpoints) dan simpan secret whsec_…. Saat penerima terakhir menandatangani, Anda menerima envelope.completed, dengan setiap variabel dan nilai yang diisi di data.values. PDF yang disegel menyusul dengan 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);
    });

    Unduh PDF yang disegel (dokumen beserta sertifikat penyelesaiannya, dengan stempel waktu):

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

    Daftar event lengkap, percobaan ulang, dan verifikasi manual: Webhook.

Ganti kunci uji dengan kunci bf_live_. Amplop live tidak diberi tanda air, email dikirim ke penerima mana pun, dan amplop yang selesai dihitung dalam kuota paket Anda (Paket & batas). Semua yang dibuat oleh sebuah kunci mengikuti mode kunci tersebut, daftarnya hanya menampilkan mode itu, dan amplop uji hanya memberi notifikasi ke endpoint webhook mode uji, jadi daftarkan juga endpoint live.