Templates tonen
Elke template op de connectie, nieuwste eerst, keyset-gepagineerd.
Voert de echte aanroep uit op je workspace, met je eigen sleutel.
GET /templates
Elke template op de connectie, nieuwste eerst, keyset-gepagineerd.
Twee engines
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"Een template is een body die één keer wordt opgeslagen en vele keren wordt verstuurd, en hij hoort bij de CONNECTIE en niet bij degene die hem schreef. Een workspace-sleutel ziet dezelfde templates als een collega, en het account van de auteur verwijderen neemt ze niet mee.
engine: "blocks" slaat een boom op waarvan de knooptypen de exports van @react-email/components zijn (Section, Row, Column, Container, Text, Heading, Button, Link, Img, Hr, Markdown, CodeBlock en CodeInline) en waarvan de props die van die componenten zelf zijn. Het wordt bij binnenkomst gevalideerd, dus een foute knoop is een 422 op de aanroep die hem schreef in plaats van een kapotte e-mail later.
engine: "html" slaat markup op die je al hebt, één keer gesaneerd wanneer de versie wordt gepubliceerd. Dit is degene om naar te grijpen wanneer je templates react-email-componenten in je eigen repo zijn: render de component met @react-email/render in je eigen build en post het resultaat. Er is geen JSX-endpoint en dat gaat er ook niet komen. De API neemt HTML omdat HTML is wat een mailclient leest, en het uitvoeren van de component van een client zou een sandbox opleveren waar niemand om zit te springen.
| Gedeclareerd als | Ingevuld door | Ontbreekt bij verzending |
|---|---|---|
| `slots` | wie de template bewerkt | de eigen default van de slot wordt gerenderd |
| `props` | wie verstuurt | missing_template_prop, een 422, en er vertrekt geen post |
Beide worden als {{key}} in de body en in het onderwerp geschreven, en beide dragen een kind (text, url of image) die bepaalt hoe de waarde bij substitutie wordt ge-escaped. Een sleutel die nergens wordt gedeclareerd faalt bij publicatie; een url-waarde waarvan het schema niet http, https of mailto is wordt geweigerd in plaats van gerenderd.
Een gepubliceerde versie ligt vast. De body van een gepubliceerde template bewerken slaat een nieuw concept in plaats van te veranderen wat live verzendingen oplossen, dus een collega die de tekst herschrijft kan niet veranderen wat jouw code al verstuurt, en version vastleggen betekent dat die dat ook niet kan wanneer ze publiceren.
Voorbeeld
Vereist templates:read. limit gaat tot 100, status versmalt tot draft, active of archived, en cursor is ondoorzichtig, dus geef de nextCursor terug die je kreeg in plaats van er zelf een te bouwen.
curl "$OE/templates?limit=25&status=active" -H "$AUTH"{ "object": "list", "data": [ { "object": "template", "id": "tpl_9c1f0a4b7e05d3862c1f0a44", "name": "Order shipped", "slug": "order-shipped", "description": null, "status": "active", "publishedVersion": 3, "latestVersion": 4, "createdAt": "2026-08-01T09:12:44.000Z", "updatedAt": "2026-08-28T16:03:10.000Z" } ], "hasMore": false, "nextCursor": null}publishedVersion is wat een verzending zonder version oplost en latestVersion is het concept dat erbovenop ligt. Dat die twee verschillen betekent dat iemand heeft bewerkt en niet gepubliceerd. Het is geen fout, en het is de moeite waard om in een deploy-log te tonen.
Een rij is metadata. De gedeclareerde slots en props komen terug uit een ophaalactie, en dat is de aanroep om te doen als je moet weten wat je moet meegeven.