Voor ontwikkelaars

Renderen gebeurt via de API. Dat is geen beperking, dat is het ontwerp.

Iemand anders bouwde de template. Jij stuurt JSON naar een endpoint en krijgt een renderresultaat terug (de status per document, een ondertekende downloadlink en de PDF-bytes zelf als je erom vraagt), synchroon voor één document, of als job in de wachtrij met een ondertekende webhook voor een batch. Er zijn zes native SDK’s beschikbaar, plus een gewone REST-API.

Lees de documentatie →

Snel starten

Render je eerste PDF in een handvol regels

Elke SDK volgt dezelfde vorm, dus het voorbeeld hieronder is de volledige integratie in elk van hen. Kies je stack:

Getypeerde clients, idiomatisch in elke taal
Reads proberen opnieuw met backoff; writes renderen nooit dubbel
Templateversie per call vastgezet, zodat de output niet kan wijzigen
C#POST /v1/render/{templateId}
var pagr = new PagrClient(
    Environment.GetEnvironmentVariable("PAGR_KEY"));

var result = await pagr.RenderAsync(templateId, new[] {
    new {
        customer = "Acme Inc.",
        total = 1240.00m,
        lines = order.Lines
    }
});
// result.Status, result.Documents[0].ViewUrl

De overdracht

Je krijgt de volledige markdown-specificatie van de template

Elk gebonden veld, het type, of het altijd verplicht of voorwaardelijk is, een voorbeeldwaarde en de opmaak die de template toepast: het staat er allemaal in. Geef het aan je AI-assistent om de datamapping te schrijven, of lees het gewoon en wees in tien minuten klaar.

epc-certificate-v1-data-model.mdgegenereerd uit de template
# epc certificate — data model  ·  v1 (draft)

## Root object

| Field               | Type   | Required    | Example      |
|---------------------|--------|-------------|--------------|
| `certificateNumber` | string | Always      | "20240117-1" |
| `postalCode`        | string | Always      | "9000"       |
| `buildingPhoto`     | image  | Always      | "https://…"  |
| `energyScore`       | number | Always      | 148          |
| `expiryDate`        | date   | Always      | "2035-01-17" |
| `remarks`           | string | Conditional | null         |

`energyScore` prints as "148 kWh/m²", `expiryDate` as
"17 January 2035" — send raw values, the template formats.

… 4 more fields omitted.

Gegenereerd uit de template, niet uit het geheugen

Het wordt uitgelezen uit de template die rendert, dus het kan niet verouderen. Verandert het document, genereer de specificatie opnieuw en leg ze naast de vorige om precies te zien welke velden verschoven zijn.

Verplicht of voorwaardelijk, expliciet vermeld

„Altijd” betekent dat het veld buiten elke voorwaarde gebonden is. „Voorwaardelijk” betekent dat het binnen een voorwaardelijk element of een ternaire tak zit en terecht kan ontbreken.

Stuur ruwe waarden

Een getal is een getal en een datum is een ISO-datum. De template bepaalt de opmaak, dus jij bouwt geen strings aan jouw kant.

Afbeeldingen via URL

Stuur een URL voor foto’s en logo’s. Barcodes en QR-codes stuur je helemaal niet mee — de template genereert ze uit de waarde in je JSON.

SDK’s

Zes clients, één gedrag

Elke SDK is geschreven om native aan te voelen in zijn taal en wordt gelijk gehouden. Elke SDK staat op GitHub — kies een taal om de repository te openen.

Bulkgeneratie

Volume loopt via code, niet via de interface

Bulk renderen betekent JSON naar de API — een documents-array in één call, of een asynchrone job over een grotere set. Het is de versie van bulk die zich nog steeds gedraagt wanneer één record om 2 uur ’s nachts verkeerd gevormd is.

SYNC

Eén document, nu meteen

Roep render aan en het resultaat zit in dezelfde response: status, paginatelling en een ondertekende downloadlink, met de PDF-bytes erbij als je erom vraagt. Gebruik het in een request-pad: een gebruiker klikt op „factuur downloaden” en het document komt binnen.

ASYNC

Fire and forget, op schaal

Zet een job in de wachtrij en ga verder. Als hij klaar is, krijg je een ondertekende webhook met tijdstempel — HMAC-SHA256, rotatiebestendig — in plaats van dat je een response moet vertrouwen.

STREAM

Rechtstreeks naar de gebruiker

Vraag de ruwe PDF en render zonder persistentie: de bytes gaan rechtstreeks door naar je response. Niets op te ruimen, niets dat in een bucket ligt te wachten om een compliancevraag te worden.

Let op

Pagr verzend geen documenten naar eindklanten. De PDF (of signed link) wordt binnen de API call teruggegeven, het versturen naar een klant, een portaal of een archief blijft in jouw systeem, waar het audittraject al leeft. Opslag bepaal je zelf: houd de gerenderde bestanden in Pagr met een bewaartermijn die jij instelt, of render zonder persistentie en er blijft niets achter.

Platform

Gebouwd om ónder een product te zitten, niet ernaast

Multi-tenancy is hier geen abonnementsniveau. Organisaties, projecten, geversioneerde templates, afgebakende sleutels en verbruiksregistratie zijn hoe het platform in elkaar zit.

Objectmodel
Pagr organisation
billing project
invoice v4 published
credit-note v2 published
onboarding project
welcome-letter v5 draft

Organisaties en projecten

Organiseer je templates per project, gebruik een test- of productie-API-sleutel die tot elk daarvan beperkt zijn.

Geversioneerde templates

Zet een versie vast per call. Draai een slechte bewerking terug zonder een deployment aan te raken.

Verbruik en audittrajecten

Weet wat er gerenderd is, vanuit welke templateversie en met welke sleutel.

Pak een API-key en render iets.

Een gratis werkruimte, een testsleutel en 100 renders per maand. Geen kredietkaart nodig.

Lees de documentatie