Laatst bijgewerkt: 2026-03-035 min leestijd

POST /v1/send

Verstuurt een transactionele e-mail. Geeft een terminale bezorgingsstatus terug.

Request

POST https://truncus.co/api/v1/emails/send
Authorization: Bearer tr_live_...
Content-Type: application/json
Idempotency-Key: jouw-idempotency-key  (optioneel)

Body

{
  "to": "user@example.com",
  "from": "hallo@jouwdomein.nl",
  "subject": "Factuur klaar",
  "html": "<p>Je factuur is bijgevoegd.</p>",
  "text": "Je factuur is bijgevoegd.",
  "reply_to": "support@jouwdomein.nl",
  "attachments": [
    {
      "filename": "factuur.pdf",
      "content": "base64-gecodeerde-inhoud"
    }
  ],
  "headers": {
    "X-Entity-Ref-ID": "jouw-interne-id"
  }
}

Velden

VeldTypeVerplichtBeschrijving
tostring | string[]JaOntvangeradres(sen)
fromstringJaGeverifieerd verzendadres
subjectstringJaOnderwerp
htmlstringÉén van html/textHTML-inhoud
textstringÉén van html/textPlatte tekst-inhoud
reply_tostringNeeAntwoordadres
attachmentsAttachment[]NeeBestandsbijlagen
headersobjectNeeAangepaste e-mailheaders

Response

200 — delivered

{
  "status": "delivered",
  "message_id": "msg_8f21a3b4"
}

200 — bounced

{
  "status": "bounced",
  "message_id": "msg_9b44c1e2",
  "reason": "mailbox_full"
}

200 — rejected

{
  "status": "rejected",
  "message_id": "msg_a2f7e8d1",
  "reason": "suppression_list"
}

Foutresponses

StatusCodeBeschrijving
400invalid_payloadOntbrekende verplichte velden of ongeldige JSON
400invalid_addressOngeldig e-mailadres
401invalid_api_keyOntbrekende of ongeldige Authorization-header
403domain_not_verifiedVerzenddomein niet geverifieerd
429rate_limit_exceededTier-limiet bereikt. Bevat retry_after
500transient_failureTijdelijke infrastructuurfout. Veilig opnieuw proberen.

SDK-voorbeeld

import { Truncus } from '@truncus/node'

const truncus = new Truncus({ apiKey: process.env.TRUNCUS_API_KEY })

const response = await truncus.emails.send({
  to: 'user@example.com',
  from: 'facturatie@jouwdomein.nl',
  subject: 'Factuur klaar',
  html: '<p>Je factuur is klaar.</p>'
})

if (response.status === 'delivered') {
  // bezorging vastleggen
} else if (response.status === 'bounced') {
  // contactrecord bijwerken — response.reason bevat details
} else if (response.status === 'rejected') {
  // niet opnieuw proberen — onderdrukt of ongeldig adres
}
POST /v1/send