REST · JSON · gratis in beta

API-documentatie

Leg webpagina's programmatisch vast als onafhankelijk verifieerbaar bewijs. Eén token, POST een URL, download een bewijspakket.zip — te integreren in je dossier-, DMS- of compliance-workflow.

Authenticatie · Vastleggen · Bladwijzer · Status · Bestand verzegelen · Downloaden · Delen · Webhook · Verifiëren · Limieten

Authenticatie

Alle /api/*-endpoints gebruiken een Bearer-token. Je token krijg je bij het aanmaken van een gratis account (of in je dashboard). Verstuur het als header:

Authorization: Bearer <jouw-token>
Basis-URL: https://vault.bewijskluis.nl. Alle bodies en antwoorden zijn JSON.

Een pagina vastleggen

POST /api/captures

Zet een capture in de wachtrij. De worker legt de pagina vast (HTML, DOM, screenshot, netwerkverkeer), berekent een SHA-256-manifest, vraagt een RFC-3161-tijdstempel aan en verankert de hash in Bitcoin.

VeldTypeOmschrijving
urlstringPublieke http(s)-URL. Privé/interne adressen worden geweigerd (SSRF-bescherming).
labelstring?Optioneel — bijv. een zaaknummer.
curl -X POST https://vault.bewijskluis.nl/api/captures \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://voorbeeld.nl/voorwaarden","label":"zaak-2026-012"}'

# → {"id":"01KWM…","status":"queued"}

Snel vastleggen (bladwijzer)

Sleep deze knop naar je bladwijzerbalk. Klik hem op elke pagina die je wilt vastleggen — je dashboard opent met de URL al ingevuld; één klik op Vastleggen en het bewijs staat vast.

Leg vast met Bewijskluis

Werkt in elke browser: sleep de knop naar je bladwijzer-/favorietenbalk. (Je moet ingelogd zijn in de Vault.)

Status opvragen

GET /api/captures/:id

Geeft de status en metadata. Poll tot status = completed (of failed).

curl https://vault.bewijskluis.nl/api/captures/01KWM… \
  -H "Authorization: Bearer $TOKEN"

# → {"id":"01KWM…","status":"completed","manifest_sha256":"…",
#    "tsa_status":"ok","ots_status":"bitcoin","completed_at":"…"}

Lijst van al je captures: GET /api/captures?limit=100.

Een bestand verzegelen

POST /api/seals

Verzegel een bestand (PDF, afbeelding, document) in plaats van een URL — hetzelfde verifieerbare pakket, alleen de SHA-256 + RFC-3161-tijdstempel + Bitcoin-anker (het bestand wordt nooit geopend of uitgevoerd, alleen gehasht). Stuur de ruwe bytes als application/octet-stream, met de bestandsnaam in de X-Filename-header. Max 25 MB.

curl -X POST https://vault.bewijskluis.nl/api/seals \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -H "X-Filename: contract.pdf" \
  --data-binary @contract.pdf

# → {"id":"01KWT…","status":"queued","kind":"seal","filename":"contract.pdf"}

Daarna identiek aan een capture: poll GET /api/captures/:id, download het pakket en verifieer het offline. Verzegelde bestanden zijn privé — een publieke deel-link wordt ervoor geweigerd (403).

Bewijs downloaden

EndpointLevert
GET /api/captures/:id/packageHet bewijspakket.zip (bundle + timestamp.tsr + bundle.zip.ots + verklaring).
GET /api/captures/:id/court-pdfCourt-ready PDF met alle feiten, hashes en verificatie-instructies.
GET /api/captures/:id/screenshotDe full-page screenshot (PNG).
curl -OJ https://vault.bewijskluis.nl/api/captures/01KWM…/package \
  -H "Authorization: Bearer $TOKEN"

Publiek delen

POST /api/captures/:id/share

Maakt een opt-in publieke deel-link (/p/:token) waarmee een ontvanger het bewijs zelf kan bekijken en verifiëren — zonder account. Intrekken: DELETE /api/captures/:id/share.

curl -X POST https://vault.bewijskluis.nl/api/captures/01KWM…/share \
  -H "Authorization: Bearer $TOKEN"

# → {"shareUrl":"https://vault.bewijskluis.nl/p/…","token":"…"}

Webhook (capture voltooid)

Stel in je dashboard → Account een Webhook-URL in (moet https:// en publiek bereikbaar zijn — privé/interne adressen worden geweigerd). Zodra een vastlegging klaar is, POSTen we een ondertekende JSON-melding naar die URL:

POST https://jouw-systeem.nl/webhook
X-Bewijskluis-Event: capture.completed
X-Bewijskluis-Signature: sha256=<hex>
Content-Type: application/json

{"event":"capture.completed","captureId":"01KWM…","status":"completed",
 "sourceUrl":"https://voorbeeld.nl/…","manifestSha256":"…","bundleSha256":"…",
 "tsaStatus":"ok","otsStatus":"pending","completedAt":"…"}

Verifieer de handtekening met je API-token als sleutel: HMAC-SHA256(token, rawBody) moet gelijk zijn aan de hex-waarde in X-Bewijskluis-Signature. Levering is best-effort met een time-out van 10 s; je kunt de status altijd ook opvragen via GET /api/captures/:id.

Verifiëren (zonder ons)

Elk bewijspakket is onafhankelijk te controleren — de verificatie vertrouwt onze servers niet:

Limieten & fair-use

Gratis tijdens de beta. Een ruime fair-use daglimiet per gebruiker en per IP beschermt de dienst tegen misbruik (geen betaalmuur). Antwoordcodes: 400 (ongeldige/privé-URL), 401 (token ontbreekt/ongeldig), 429 (limiet bereikt). Zie ook Vertrouwen & beveiliging.