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.
https://builtsign.com/api/v1Instellingen → API-sleutels
Een document laten ondertekenen in 4 API-aanroepen.
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 KeysUpload een PDF (tot 50 MB) als multipart-formulierdata. Je ontvangt een document_id voor de volgende stap.
curl -X POST https://builtsign.com/api/v1/documents/upload \
-H "X-API-Key: bsk_live_xxxxxxxxxxxxxxxxxxxx" \
-F "file=@contract.pdf"Maak een ondertekentransactie aan met het document_id en een lijst van ondertekenaars. Stel auto_send: false in om eerst velden te plaatsen.
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
}'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
}
]
}'Alle v1-endpoints vereisen een API-sleutel in de X-API-Key request header.
curl https://builtsign.com/api/v1/signing-requests \
-H "X-API-Key: bsk_live_xxxxxxxxxxxxxxxxxxxx"| Scope | Permissions |
|---|---|
read | Bronnen ophalen en weergeven |
write | Bronnen aanmaken, bijwerken en versturen |
admin | Gereserveerd voor toekomstig gebruik |
Limieten
Elke API-sleutel heeft een instelbare limiet (standaard: 60 transacties/minuut, max: 1000). Bij overschrijding volgt HTTP 429.
Upload PDFs en bekijk eerder geüploade documenten.
Maak ondertekentransacties aan, beheer ze en volg de status.
Plaats velden op een document die ondertekenaars moeten invullen voordat zij kunnen afronden.
Coördinaten zijn procentueel (0–100) ten opzichte van de pagina-afmetingen. Het oorsprongspunt (0, 0) is de linkerbovenhoek van de pagina.
| field_type | Description |
|---|---|
signature | Volledige handtekening |
initials | Paraaf / initialen |
date | Datum (automatisch ingevuld) |
text | Vrije tekstinvoer |
checkbox | Aanvinkvak |
select | Dropdown (geef options[] mee) |
Ontvang real-time meldingen wanneer er iets gebeurt in BuiltSign.
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.
| Event | Trigger |
|---|---|
signing_request.created | Ondertekentransactie aangemaakt |
signing_request.sent | Transactie verzonden naar ondertekenaars |
signing_request.completed | Alle ondertekenaars hebben getekend |
signing_request.cancelled | Ondertekentransactie geannuleerd |
signing_request.expired | Ondertekentransactie verlopen |
signer.viewed | Ondertekenaar heeft de pagina geopend |
signer.signed | Ondertekenaar heeft ondertekend |
signer.declined | Ondertekenaar heeft geweigerd |
document.signed | Ondertekende PDF gegenereerd |
Elke webhook-POST bevat deze velden:
{
"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"
}
}| Header | Value |
|---|---|
| Content-Type | application/json |
| X-Webhook-Signature | HMAC-SHA256 hex digest |
| X-Webhook-Event | event type (e.g. signer.signed) |
| X-Webhook-ID | webhook UUID |
| X-Webhook-Retry | attempt number (only on retries) |
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.
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.
Alle fouten bevatten een JSON-body met een detail-veld dat het probleem beschrijft.
| Code | Description |
|---|---|
400 | Ongeldig transactie — ongeldige invoer of schending van een beperking |
401 | Niet geautoriseerd — ontbrekende of ongeldige API-sleutel |
403 | Verboden — onvoldoende rechten of planbeperking |
404 | Niet gevonden — bron bestaat niet of behoort tot een andere organisatie |
409 | Conflict — actie niet toegestaan in de huidige status |
422 | Onverwerkbaar — validatiefout (controleer velddetails) |
429 | Te veel transacties — limiet overschreden |
502 | Upstream-fout — S3 of e-mailprovider tijdelijk niet beschikbaar |