/v1/send-jobs
Legt einen Job als Entwurf an. Das Template muss dem Kunden gehören, aktiv und ein Newsletter sein; params sind die Werte seiner Template-Parameter (nur bekannte). Absender: Standard ist die Newsletter-Adresse des Kunden oder die Ausnahme des Templates; from.email darf den Teil vor dem @ ändern. scheduled_at plant den Start. Scope full, idempotent.
Body-Parameter
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| template_id | string (UUID) | erforderlich | Ein Newsletter-Template des Kunden. z. B. 00000000-0000-4000-8000-0000000000f4 |
| params | object | optional | Werte der Template-Parameter. {{platzhalter}} in festen Texten werden aus params und den Daten des Empfängers gefüllt — der Empfänger gewinnt. z. B. {"titel":"Sommerprogramm"} |
| from | object | optional | Absender-Ausnahme { email, name } auf einer Domain des Kunden. z. B. {"email":"lena.berger@kunde.de","name":"Lena Berger"} |
| reply_to | string (E-Mail) | optional | Antwort-Adresse; leer = wie Absender. z. B. redaktion@kunde.de |
| scheduled_at | string (ISO 8601) | optional | Startzeitpunkt; leer = sofort beim Start. z. B. 2026-09-05T08:00:00Z |
Request · Next.js
const res = await fetch(`https://api.newsletterkit.ventureon.io/v1/send-jobs`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NEWSLETTERKIT_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
template_id: 00000000-0000-4000-8000-0000000000f4,
params: {"titel":"Sommerprogramm"},
from: {"email":"lena.berger@kunde.de","name":"Lena Berger"},
reply_to: "redaktion@kunde.de",
scheduled_at: 2026-09-05T08:00:00Z,
}),
});
const data = await res.json();Response 200
{
"data": {
"id": "f90c0326-4a19-4b9f-bf81-37145e6371ab",
"status": "draft",
"mode": "live",
"template_id": "00000000-0000-4000-8000-0000000000f4",
"params": { "titel": "Sommerprogramm" },
"from": { "email": "news@kunde.de", "name": "Kunde" },
"reply_to": null,
"scheduled_at": "2026-09-05T08:00:00Z",
"recipients": { "total": 0, "accepted": 0, "suppressed": 0, "invalid": 0, "failed": 0, "pending": 0 },
"batches": null,
"created_at": "2026-09-03T16:00:00Z"
},
"request_id": "…"
}Status: draft → scheduled | running → completed | cancelled | paused | failed. Ein Job im Sandbox-Modus des Kunden wird von Postmark angenommen, aber nicht zugestellt und nicht gezählt.