REST API · WEBHOOKS · v1

Bouwen met BuiltSign

Integreer juridisch geldige e-handtekeningen direct in je eigen applicatie. Upload PDFs, verstuur ondertekentransacties, plaats handtekeningvelden en ontvang webhook-events — allemaal via een eenvoudige REST API.

Base URL
url
https://builtsign.com/api/v1
API-sleutel aanmaken

Instellingen → API-sleutels

Snel starten

Een document laten ondertekenen in 4 API-aanroepen.

1. Maak een API-sleutel aan

Ga naar Instellingen → API-sleutels in je BuiltSign-dashboard en maak een sleutel aan met schrijfrechten. Sla hem veilig op — hij wordt maar één keer getoond.

Settings → API Keys

2. Upload een PDF

Upload een PDF (tot 50 MB) als multipart-formulierdata. Je ontvangt een document_id voor de volgende stap.

bash
curl -X POST https://builtsign.com/api/v1/documents/upload \
  -H "X-API-Key: bsk_live_xxxxxxxxxxxxxxxxxxxx" \
  -F "file=@contract.pdf"

3. Maak een ondertekentransactie

Maak een ondertekentransactie aan met het document_id en een lijst van ondertekenaars. Stel auto_send: false in om eerst velden te plaatsen.

bash
curl -X POST https://builtsign.com/api/v1/signing-requests \
  -H "X-API-Key: bsk_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "document_id": "doc_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "signers": [
      { "name": "Jan de Vries", "email": "jan@example.com" }
    ],
    "message": "Graag de offerte ondertekenen.",
    "expires_in_days": 7,
    "auto_send": false
  }'

4. Voeg velden toe en verstuur

Plaats handtekeningvelden met procentuele coördinaten en verstuur vervolgens om de uitnodigingsmail te sturen.

curl -X POST https://builtsign.com/api/v1/signing-requests/{request_id}/fields \
  -H "X-API-Key: bsk_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": [
      {
        "signer_id": "sgn_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "field_type": "signature",
        "page_number": 1,
        "x_percent": 60.0,
        "y_percent": 82.0,
        "width_percent": 30.0,
        "height_percent": 8.0
      }
    ]
  }'

Authenticatie

Alle v1-endpoints vereisen een API-sleutel in de X-API-Key request header.

bash
curl https://builtsign.com/api/v1/signing-requests \
  -H "X-API-Key: bsk_live_xxxxxxxxxxxxxxxxxxxx"

Rechten

ScopePermissions
readBronnen ophalen en weergeven
writeBronnen aanmaken, bijwerken en versturen
adminGereserveerd voor toekomstig gebruik

Limieten

Elke API-sleutel heeft een instelbare limiet (standaard: 60 transacties/minuut, max: 1000). Bij overschrijding volgt HTTP 429.

Documenten

Upload PDFs en bekijk eerder geüploade documenten.

Ondertekentransacties

Maak ondertekentransacties aan, beheer ze en volg de status.

Handtekeningvelden

Plaats velden op een document die ondertekenaars moeten invullen voordat zij kunnen afronden.

Positionering

Coördinaten zijn procentueel (0–100) ten opzichte van de pagina-afmetingen. Het oorsprongspunt (0, 0) is de linkerbovenhoek van de pagina.

(0, 0)(100, 0)(0, 100)(100, 100)
signature
initials

Veldtypen

field_typeDescription
signatureVolledige handtekening
initialsParaaf / initialen
dateDatum (automatisch ingevuld)
textVrije tekstinvoer
checkboxAanvinkvak
selectDropdown (geef options[] mee)

Webhooks

Ontvang real-time meldingen wanneer er iets gebeurt in BuiltSign.

Instellen

Maak een webhook aan via Instellingen → Webhooks. Kies op welke events je wilt abonneren. BuiltSign stuurt een HTTP POST naar jouw endpoint voor elk event.

Events

EventTrigger
signing_request.createdOndertekentransactie aangemaakt
signing_request.sentTransactie verzonden naar ondertekenaars
signing_request.completedAlle ondertekenaars hebben getekend
signing_request.cancelledOndertekentransactie geannuleerd
signing_request.expiredOndertekentransactie verlopen
signer.viewedOndertekenaar heeft de pagina geopend
signer.signedOndertekenaar heeft ondertekend
signer.declinedOndertekenaar heeft geweigerd
document.signedOndertekende PDF gegenereerd

Payload-formaat

Elke webhook-POST bevat deze velden:

json
{
  "event": "signer.signed",
  "timestamp": "2026-05-02T10:30:00Z",
  "webhook_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "data": {
    "signer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "signing_request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }
}

Request Headers

HeaderValue
Content-Typeapplication/json
X-Webhook-SignatureHMAC-SHA256 hex digest
X-Webhook-Eventevent type (e.g. signer.signed)
X-Webhook-IDwebhook UUID
X-Webhook-Retryattempt number (only on retries)

Handtekeningverificatie

Valideer elke inkomende webhook door de HMAC-SHA256-handtekening te verifiëren. Verifieer altijd — vertrouw de payload nooit zonder verificatie.

import crypto from "crypto";

// Express middleware example
app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
  const signature = req.headers["x-webhook-signature"];
  const secret    = process.env.BUILTSIGN_WEBHOOK_SECRET;

  const expected = crypto
    .createHmac("sha256", secret)
    .update(req.body) // raw Buffer, not parsed JSON
    .digest("hex");

  if (expected !== signature) {
    return res.status(401).send("Invalid signature");
  }

  const event = JSON.parse(req.body);
  // TODO: handle event (e.g. event.event === "document.signed")
  res.sendStatus(200);
});

Herhalingen

BuiltSign herhaalt mislukte bezorgingen tot 3 keer: na 1 minuut, 5 minuten en 15 minuten. Na 10 opeenvolgende mislukkingen wordt de webhook automatisch gepauzeerd.

Enterprise

Gebouwd voor enterprise-teams

Heb je white-label branding, SSO of een eigen omgeving nodig? BuiltSign is een SaaS-product — geen installatie vereist. Neem contact met ons op voor enterprise-onboarding, maatwerkcontracten en geavanceerde integraties.

  • White-label API & onderteken-UI
  • SSO (SAML 2.0 / OIDC)
  • Eigen domein
  • Dedicated omgeving
  • SLA + prioriteitssupport
  • Aangepaste limieten & volumeprijzen
Contact opnemen

Foutcodes

Alle fouten bevatten een JSON-body met een detail-veld dat het probleem beschrijft.

CodeDescription
400Ongeldig transactie — ongeldige invoer of schending van een beperking
401Niet geautoriseerd — ontbrekende of ongeldige API-sleutel
403Verboden — onvoldoende rechten of planbeperking
404Niet gevonden — bron bestaat niet of behoort tot een andere organisatie
409Conflict — actie niet toegestaan in de huidige status
422Onverwerkbaar — validatiefout (controleer velddetails)
429Te veel transacties — limiet overschreden
502Upstream-fout — S3 of e-mailprovider tijdelijk niet beschikbaar
Ontwikkelaars | BuiltSign | BuiltSign