Menu

Render blocks to email HTML

POST/v1/templates/render

Requires an API key with the templates:read scope. About keys and scopes

Renders a block tree and theme to the HTML and plain text a recipient would get, without saving anything: the builder preview, plain-text view and HTML export. Merge tags show their defaults, or pass contactId to render them as that contact would see them (not from an embed session). warnings flags problems such as a missing unsubscribe link or an oversized message.

Request body

schemaVersionintegeroptional

The block format version.

min > 0 · max 1000

blocksEmailBlockInput[]required

At most 200 blocks across the entire tree and five levels including the root. Footer blocks must remain at root. Known child fields are validated recursively.

at least 1 item · at most 200 items

7 child attributes
idstringrequired

Identifies the block within the template; unique among its blocks.

1–128 characters

typestringrequired

The block type: header, heading, text, image, button, divider, spacer, columns, columns3, imagetext, imagegroup, boxed, quote, list, product, video, social, menu, html, section, footer, repeat, shared. Each type reads its own fields next to type; an unknown type is kept but not validated.

1–64 characters

styleEmailBlockStyleInputoptional

Visual overrides for this block, such as colours, font and spacing.

17 child attributes
backgroundColorstringoptional

Fill behind the block.

fontFamilystringoptional

A font every client has (Arial, Verdana, Georgia, Tahoma, Times New Roman, Courier New), or a web font, which shows where the client loads it and falls back to a safe font elsewhere.

one of Arial, Verdana, Georgia, Tahoma, Times New Roman, Courier New, Inter, Roboto, Open Sans, Lato, Montserrat, Poppins, DM Sans, Nunito, Work Sans, Oswald, Playfair Display, Merriweather, Lora, Libre Baskerville, EB Garamond

fontSizeintegeroptional

Text size in px, 12 to 72.

min 12 · max 72

mobileFontSizeintegeroptional

Text size in px on phones (screens up to 620px), 12 to 72.

min 12 · max 72

paddingobjectoptional

Space inside the block in px, 0 to 100 per side; omitted sides keep their default.

4 child attributes
topintegeroptional

min 0 · max 100

rightintegeroptional

min 0 · max 100

bottomintegeroptional

min 0 · max 100

leftintegeroptional

min 0 · max 100

borderWidthintegeroptional

Border thickness in px; 0 for none.

min 0 · max 10

borderStylestringoptional

Border line style.

one of solid, dashed, dotted

borderColorstringoptional

Border colour.

borderRadiusintegeroptional

Corner rounding in px, 0 to 100.

min 0 · max 100

textColorstringoptional

Text colour.

linkColorstringoptional

Colour of links in the text.

letterSpacingnumberoptional

Space between letters in px, such as 3 for a spaced-out eyebrow line.

min -2 · max 20

textTransformstringoptional

Set to uppercase to capitalise all text.

one of none, uppercase

lineHeightnumberoptional

A multiple of the font size.

min 1 · max 3

fontWeightstringoptional

Text weight.

one of regular, bold

fontStylestringoptional

Text style.

one of normal, italic

insetbooleanoptional

Draw the background and border as a box within the content width, not across the whole row.

visibleIfobjectoptional

Show the block only to contacts these segment rules match, checked as each message is rendered. Omit to show it to everyone. Not allowed on the footer.

One of 2 shapes
Match all
1 child attribute
allobject[]required

Every rule or nested group must match.

at least 1 item · at most 20 items

Match any
1 child attribute
anyobject[]required

At least one rule or nested group must match.

at least 1 item · at most 20 items

showOnstringoptional

Show the block only on phones (screens up to 620px) or only on wider screens. Clients that ignore screen size show the desktop version, and so does plain text. Omit to show it everywhere. Not allowed on the footer.

one of mobile, desktop

columnsobject[][]optional

Nested child block arrays: exactly two for columns, three for columns3. Each child follows this block contract. Omit to retain legacy text columns.

at most 3 items

blocksobject[]optional

A section's child blocks, drawn inside its box; or a repeat block's, written out once per item of its list, where {{ item.<field> }} reads that item. Repeats do not nest.

at most 200 items

themeEmailThemeInputrequired

Theme values this email overrides.

11 child attributes
fontstringoptional

Body font stack, such as Inter, sans-serif.

up to 200 characters

hfontstringoptional

Heading font stack.

up to 200 characters

bgstringoptional

Background of the email card, as hex.

canvasstringoptional

Background behind the card, as hex.

textstringoptional

Default text colour, as hex.

accentstringoptional

Brand colour for buttons and highlights, as hex.

linkstringoptional

Link colour, as hex.

widthstringoptional

Width of the email card on wide screens.

one of 560px, 600px, 680px

radiusstringoptional

Corner rounding of the email's card.

one of 0px, 6px, 12px, 16px, 24px, 999px

btnRadiusstringoptional

Button corners; radius rounds the email's card and, when this is unset, buttons.

one of 0px, 6px, 12px, 16px, 24px, 999px

btnstringoptional

Button style.

one of solid, outline

plainTextOverridestring | nulloptional

Plain text used instead of the version generated from the blocks.

up to 100000 characters

contactIdstringoptional

A contact whose values fill the merge tags and decide each block's visibleIf.

uuid

subjectstringoptional

The subject line, returned rendered.

1–998 characters

dataobjectoptional

Sample data for {{ event.properties.* }} tags and repeat lists: what a transactional send's data or a journey's event would carry. Without it, a repeat shows once with its item tags as written.

Returns

Returns 200 OK with a TemplateRender in data. Otherwise returns an error; Errors lists every code and which to retry.

htmlstringrequired

The rendered HTML.

plainTextstringrequired

The rendered plain-text version.

subjectstringoptional

The subject with merge tags filled in.

sizeBytesintegerrequired

Size of the HTML in bytes.

min 0 · max 9007199254740991

warningsobject[]required

Problems that do not stop rendering, such as a size that risks clipping.

3 child attributes
codestringrequired

A stable code for the kind of problem.

titlestringrequired

A short summary.

detailstringrequired

What is wrong and how to fix it.