Partner-API
Met de API maak je een geboortepagina bij een bestelling, haal je de QR voor de drukker op en volg je de status. Volledige specificatie: OpenAPI (JSON). Een API-key en webhook-secret ontvang je na het kennismaken via de partnerpagina.
Authenticatie
Stuur je key mee als Authorization: Bearer dgk_live_…. Limiet: 120 verzoeken per minuut per key.
1. Pagina aanmaken bij een bestelling
curl -X POST https://app.digitaalgeboortekaartje.nl/api/v1/pages \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"firstName":"Luca","plan":"jaar"}'Je krijgt het definitieve adres (url), links naar de QR (SVG, PNG, PDF) en een activationCode. De QR werkt meteen: tot de klant de code gebruikt, toont het adres een vriendelijk “nog niet geactiveerd”-scherm. Je drukt de code dus nooit opnieuw.
2. QR voor de drukker
GET /api/v1/pages/{id}/qr?format=pdf&size=3 (svg | png | pdf met size 2, 3 of 4 cm)3. Status en verlenging
GET /api/v1/pages/{id} → status: concept | online | verlopen, expiresAt
POST /api/v1/pages/{id}/activate {"plan":"jaar"} (alleen na claimen door de klant)4. Bulk activatiecodes
POST /api/v1/vouchers {"plan":"jaar","count":100}De klant vult de code in op app.digitaalgeboortekaartje.nl/claim en richt daarna zelf zijn pagina in.
Webhooks
Events: page.created, page.paid, page.expired. Elke melding is een POST met JSON en de header X-Webhook-Signature: sha256=…, de HMAC-SHA256 van de ruwe body met je webhook-secret. Controleer die altijd:
const sig = crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const ok = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(header.replace("sha256=", "")));