/v1/blocks
Listet die für den Kunden freigeschalteten, aktiven Blöcke. Jeder Eintrag enthält die stabile id (UUID — der unveränderliche Referenzschlüssel), den slug (menschenlesbares Label) und das Parameter-Schema (name, type, required, fallback, hide_if_missing, example, description, min_chars, max_chars). Ein Parameter mit is_list nimmt ein Array von Elementen an — fields beschreibt die Form eines Elements, min_items und max_items die zugesagte Elementzahl (dokumentiert, nicht erzwungen). Diese Liste sagt einem Client, welche Blöcke er in einem Template verwenden darf und welche Werte jeder Block erwartet. tags sind die vom Admin gepflegten Kategorien des Blocks — für Logik zählt der slug, label ist nur die Anzeige. series nennt die Familie, aus der ein Block stammt (höchstens eine, sonst null): Blöcke derselben Serie sind zusammen entworfen und passen optisch zueinander — rein zum Gruppieren, ein Template darf Serien mischen. Ein Template referenziert einen Block über seine id, nicht über den slug — Slugs und Namen können sich ändern, die id bleibt stabil und schützt gespeicherte Templates vor Brüchen. Read-only, Scope reporting genügt.
Request · Next.js
const res = await fetch(`https://api.newsletterkit.ventureon.io/v1/blocks`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.NEWSLETTERKIT_API_KEY}`,
},
});
const data = await res.json();Response 200
{
"data": [
{
"id": "b1a2c3d4-5e6f-4a8b-9c0d-1e2f3a4b5c6d",
"slug": "hero-text",
"name": "Hero-Text",
"tags": [{ "slug": "content", "label": "Inhalt" }],
"series": { "slug": "journal", "label": "Journal" },
"description": "Große Überschrift mit Fließtext.",
"version": 1,
"params": [
{ "name": "headline", "label": "Überschrift", "type": "string", "required": true, "fallback": null, "hide_if_missing": false, "example": "Willkommen zum Sommer-Update" },
{ "name": "body", "label": "Fließtext", "type": "text", "required": true, "fallback": null, "hide_if_missing": false, "example": "Hier kommen die wichtigsten Neuigkeiten." }
]
}
],
"request_id": "…"
}tile_url zeigt auf die fertig gerenderte Kachel des Blocks (GET /v1/blocks/{id}/tile). Ein Template referenziert Blöcke über die unveränderliche id (UUID), nicht über den slug — so brechen gespeicherte Kompositionen nicht, wenn ein Admin Slug oder Name eines Blocks umbenennt. Welche Blöcke freigeschaltet sind, steuert ein Admin pro Kunde (customer_blocks). MJML-Templates unterstützen bedingte Abschnitte: {{#param}}…{{/param}} rendert nur, wenn param einen nicht-leeren Wert hat (optionale Elemente wie ein Logo oder ein AGB-Link verschwinden, wenn nicht gesetzt) — zusätzlich zum einfachen {{param}}. Die Detail-Doku je Block (alle Parameter + Beispielwerte) liefert die Seite „Block-Parameter“.