Zakelijk · Automatiseren

Post-API: brieven versturen vanuit je eigen software

Stuur ons een PDF en een adres; wij printen, frankeren en bieden de brief aan bij de post. Gewoon of aangetekend, naar Nederland en ruim tweehonderd andere landen. Elke brief gaat van je vooraf opgewaardeerde tegoed af, tegen dezelfde prijs als op de site.

API-sleutel aanvragenLiever zonder code? Zapier, Make of n8n

Aan de slag

  1. Log in op je zakelijke account met een link per e-mail.
  2. Waardeer tegoed op onder Tegoed (iDEAL of kaart; factuur op je btw-nummer).
  3. Maak onder API en automatisering een sleutel. Je ziet hem één keer; bewaar hem als een wachtwoord.
  4. Stuur elk verzoek met de header Authorization: Bearer bv_live_… naar https://www.briefverzenden.nl/api/v1. Gebruik altijd www..

Een brief versturen

curl https://www.briefverzenden.nl/api/v1/brieven \
  -H "Authorization: Bearer bv_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: factuur-2026-114" \
  -d '{
    "ontvanger": {
      "naam": "Jansen BV",
      "tav": "Afdeling crediteuren",
      "adres": "Dorpsstraat 1",
      "postcode": "1234 AB",
      "woonplaats": "Utrecht",
      "land": "NL"
    },
    "aangetekend": true,
    "referentie": "factuur-2026-114",
    "pdfUrl": "https://voorbeeld.nl/factuur-2026-114.pdf"
  }'
HTTP/1.1 201 Created

{
  "id": "brf_3f1c0a9e5b7d2c4a6e8f0b1d",
  "status": "ingediend",
  "aangemaakt": "2026-11-09T10:00:00.000Z",
  "prijs": 11.95,
  "valuta": "EUR",
  "paginas": 2,
  "ontvanger": { "naam": "Jansen BV", "tav": "Afdeling crediteuren", … },
  "opties": { "kleur": false, "dubbelzijdig": true, "aangetekend": true },
  "referentie": "factuur-2026-114",
  "volgnummer": null,
  "volgUrl": null,
  "fout": null,
  "tegoed": { "saldo": 38.05, "valuta": "EUR" }
}

Of in JavaScript (Node 18+):

const antwoord = await fetch('https://www.briefverzenden.nl/api/v1/brieven', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.BRIEFVERZENDEN_SLEUTEL}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': `factuur-${factuur.nummer}`,
  },
  body: JSON.stringify({
    naam: factuur.klant, adres: factuur.straat, postcode: factuur.postcode,
    woonplaats: factuur.plaats, land: 'NL',
    pdfBase64: pdf.toString('base64'),
    referentie: factuur.nummer,
  }),
})
const brief = await antwoord.json()
if (!antwoord.ok) throw new Error(brief.error)

Endpoints

POST/brieven

Verstuurt een brief en boekt de prijs af van je tegoed. JSON of multipart/form-data (bestand in het veld pdf, overige velden als tekst). Antwoord 201 met de brief.
VeldVerplichtToelichting
ontvanger.naamjaNaam of bedrijfsnaam op de envelop, max. 120 tekens.
ontvanger.tavneeT.a.v.-regel.
ontvanger.adresjaStraat en huisnummer.
ontvanger.postcodeja
ontvanger.woonplaatsja
ontvanger.landneeISO-code (NL, DE, BE …) of Nederlandse landnaam. Standaard NL.
kleurneetrue of false, standaard false.
dubbelzijdigneeStandaard true.
aangetekendneeStandaard false. Niet in elk land; zie /landen.
snelheidneetraag, standaard, snel of plus; per land verschillend (zie /landen).
afzenderneeEén regel afzendertekst op het adresblad.
referentieneeJe eigen kenmerk, komt ongewijzigd terug. Max. 100 tekens.
pdfBase64of pdfUrlDe PDF als base64. Tot ongeveer 3 MB (een verzoek mag max. 4,5 MB zijn).
pdfUrlof pdfBase64Een https-link naar de PDF; wij halen hem op. Max. 10 MB.

De ontvangervelden mogen ook plat op het hoogste niveau staan (naam, adres, …). Het adres hoeft niet in de PDF: wij zetten er een adresblad voor dat in het venster van de envelop valt en niet als pagina meetelt. Maximaal 60 pagina’s, A4.

GET/brieven/{id}

Eén brief met de actuele status bij de vervoerder: ingediend, verzonden, bezorgd, of een eindstatus onbestelbaar, geannuleerd of mislukt (bedrag teruggeboekt). Zodra er een volgnummer is, staan volgnummer en volgUrl erbij. Gewone post zonder volgnummer meldt niet altijd “bezorgd”.

GET/brieven?limit=25&status=verzonden

De nieuwste brieven (max. 100), nieuwste eerst, met een optioneel filter op status.

POST/prijs

Wat een brief kost, zonder iets te versturen. Dezelfde velden als bij versturen; zonder PDF geef je paginas mee. Je ziet ook of je tegoed genoeg is.

GET/me

Test je sleutel: account, bedrijfsnaam en je huidige tegoed.

GET/landen

Alle bestemmingen met ISO-code, en per land of aangetekend kan en welke snelheden er zijn. Geen sleutel nodig.

Nooit dubbel versturen

Fysieke post kun je niet terughalen. Stuur daarom bij elke brief een header Idempotency-Key mee met iets unieks, zoals je factuurnummer (8 tot 200 tekens). Komt hetzelfde verzoek nog eens binnen, bijvoorbeeld na een time-out, dan krijg je de eerste brief terug (HTTP 200 met Idempotent-Replayed: true) en gaat er niets opnieuw op de post.

Fouten

Altijd JSON in de vorm { "error": "…", "code": "…" }, met een leesbare uitleg in het Nederlands.

Goed om te weten

Post-API: brieven en aangetekende post versturen via REST