Skip to main content

Finance, Explainer steps 1.0.0

TemplateFinance, tpl_1c84aa91fffa
VariantExplainer steps
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length15 seconds

Example video​

The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.

What it accepts​

Financial education in steps: a headline, two to six steps that explain how something works, each with an icon, a short text and a figure or term to remember, then the takeaway and a call to action. The clip is as long as the steps need. metaData is the post's title, descriptions and hashtags and is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the headline, the steps in order, the takeaway at the end, the call to action and the small print.
clipData.kickertextup to 32 charactersKicker: A short line above the headline, such as Money basics.
clipData.headlinetextyesup to 64 charactersHeadline: What the steps explain, as a question or a promise.
clipData.sublinetextup to 100 charactersSubline: One sentence under the headline.
clipData.stepslistyesat least 2, up to 6Steps: Two to six steps in the order they happen; the clip gets 2.4 seconds longer for each.
clipData.steps[]groupStep
clipData.steps[].iconenumcheck, circle-check, x, arrow-right, arrow-up-right, plus, star, heart, thumbs-up, sparkles, zap, clock, calendar, map-pin, info, triangle-alert, lightbulb, target, award, crown, gem, flame, timer, list-checks, clipboard-check, badge-check, hand-heart, rocket, trophy, megaphone, bell, qr-code, ticket, gift, key-round, book-open, graduation-cap, house, phone, mail, globe, users, user, piggy-bank, wallet, credit-card, landmark, trending-up, trending-down, percent, coins, hand-coins, banknote, shield-check, chart-column, chart-line, chart-pie, lock, calculator, receipt, badge-percent, briefcase, scaleIcon: A line icon for the step. Without one, the step's number stands in its place.
clipData.steps[].titletextyesup to 40 charactersTitle: The step in a few words.
clipData.steps[].bodytextup to 110 charactersText: What happens in this step, in one or two short sentences.
clipData.steps[].highlighttextup to 24 charactersHighlight: A figure or a term to remember, set on a plate, such as 3% a year.
clipData.takeawaytextup to 120 charactersTakeaway: The one thing to remember, shown at the end.
clipData.ctagroupCall to action: The button at the end and the line under it, such as a web address, a handle or a phone number.
clipData.cta.labeltextyesup to 28 charactersButton: What the button says.
clipData.cta.detailtextup to 48 charactersLine under it: An address, a handle, a phone number.
clipData.sourcetextup to 80 charactersSource or basis: Where the figures come from, or what they assume.
clipData.disclaimertextup to 140 charactersSmall print: Terms or a risk note that must be shown with the clip.
clipData.lookgroupLook: How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default.
clipData.look.themeenumbrand, light, dark, boldTheme: Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.
clipData.look.paceenumcalm, standard, punchyPace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.
clipData.look.cornersenumsquare, soft, roundCorners: The shape of cards, pictures and buttons.
clipData.look.alignenumstart, centreText alignment: Where the text lines up.
clipData.look.layoutenumpath, listLayout: Path: one step at a time on a card, with every step as a node on a path. List: all steps listed from the start, each opening in turn.
clipData.look.numbersbooleanShow step numbers: The step's number set large on its card, beside its icon.
clipData.look.logoenumauto, freeLogo: The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.
metaDatagroupMeta data: Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data.
metaData.titletextup to 100 charactersTitle: Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes.
metaData.captionTinytextup to 200 charactersTiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionShorttextup to 500 charactersShort description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionMediumtextup to 1500 charactersMedium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok): Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionLongtextup to 4000 charactersLong description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.hashtagslistup to 15Hashtags: Written without the #. Up to 15, which every platform takes.
metaData.hashtags[]textup to 60 charactersHashtag

locales carries other languages: under each language code, the parts of clipData and metaData that differ, laid over the default, so a language with no copy still renders.

A picture is always a file from your media library: media:// followed by its id or its name. Anything the table does not list is refused, and so is anything over its limit, with a 422 that names the field.

The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A short line above the headline, such as Money basics."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What the steps explain, as a question or a promise."
},
"subline": {
"type": "string",
"maxLength": 100,
"title": "Subline",
"description": "One sentence under the headline."
},
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"icon": {
"type": "string",
"enum": [
"check",
"circle-check",
"x",
"arrow-right",
"arrow-up-right",
"plus",
"star",
"heart",
"thumbs-up",
"sparkles",
"zap",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"lightbulb",
"target",
"award",
"crown",
"gem",
"flame",
"timer",
"list-checks",
"clipboard-check",
"badge-check",
"hand-heart",
"rocket",
"trophy",
"megaphone",
"bell",
"qr-code",
"ticket",
"gift",
"key-round",
"book-open",
"graduation-cap",
"house",
"phone",
"mail",
"globe",
"users",
"user",
"piggy-bank",
"wallet",
"credit-card",
"landmark",
"trending-up",
"trending-down",
"percent",
"coins",
"hand-coins",
"banknote",
"shield-check",
"chart-column",
"chart-line",
"chart-pie",
"lock",
"calculator",
"receipt",
"badge-percent",
"briefcase",
"scale"
],
"title": "Icon",
"description": "A line icon for the step. Without one, the step's number stands in its place.",
"enumNames": [
"Check",
"Circle check",
"X",
"Arrow right",
"Arrow up right",
"Plus",
"Star",
"Heart",
"Thumbs up",
"Sparkles",
"Zap",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Lightbulb",
"Target",
"Award",
"Crown",
"Gem",
"Flame",
"Timer",
"List checks",
"Clipboard check",
"Badge check",
"Hand heart",
"Rocket",
"Trophy",
"Megaphone",
"Bell",
"Qr code",
"Ticket",
"Gift",
"Key round",
"Book open",
"Graduation cap",
"House",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Piggy bank",
"Wallet",
"Credit card",
"Landmark",
"Trending up",
"Trending down",
"Percent",
"Coins",
"Hand coins",
"Banknote",
"Shield check",
"Chart column",
"Chart line",
"Chart pie",
"Lock",
"Calculator",
"Receipt",
"Badge percent",
"Briefcase",
"Scale"
]
},
"title": {
"type": "string",
"maxLength": 40,
"title": "Title",
"description": "The step in a few words."
},
"body": {
"type": "string",
"maxLength": 110,
"title": "Text",
"description": "What happens in this step, in one or two short sentences."
},
"highlight": {
"type": "string",
"maxLength": 24,
"title": "Highlight",
"description": "A figure or a term to remember, set on a plate, such as 3% a year."
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Step"
},
"minItems": 2,
"maxItems": 6,
"title": "Steps",
"description": "Two to six steps in the order they happen; the clip gets 2.4 seconds longer for each."
},
"takeaway": {
"type": "string",
"maxLength": 120,
"title": "Takeaway",
"description": "The one thing to remember, shown at the end."
},
"cta": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Button",
"description": "What the button says."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "An address, a handle, a phone number."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address, a handle or a phone number."
},
"source": {
"type": "string",
"maxLength": 80,
"title": "Source or basis",
"description": "Where the figures come from, or what they assume."
},
"disclaimer": {
"type": "string",
"maxLength": 140,
"title": "Small print",
"description": "Terms or a risk note that must be shown with the clip."
},
"look": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": [
"brand",
"light",
"dark",
"bold"
],
"title": "Theme",
"description": "Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.",
"enumNames": [
"Brand colours",
"Light",
"Dark",
"Bold brand colour"
]
},
"pace": {
"type": "string",
"enum": [
"calm",
"standard",
"punchy"
],
"title": "Pace",
"description": "How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.",
"enumNames": [
"Calm",
"Standard",
"Punchy"
]
},
"corners": {
"type": "string",
"enum": [
"square",
"soft",
"round"
],
"title": "Corners",
"description": "The shape of cards, pictures and buttons.",
"enumNames": [
"Square",
"Softly rounded",
"Round"
]
},
"align": {
"type": "string",
"enum": [
"start",
"centre"
],
"title": "Text alignment",
"description": "Where the text lines up.",
"enumNames": [
"At the start of the line",
"Centred"
]
},
"layout": {
"type": "string",
"enum": [
"path",
"list"
],
"title": "Layout",
"description": "Path: one step at a time on a card, with every step as a node on a path. List: all steps listed from the start, each opening in turn.",
"enumNames": [
"One step at a time, along a path",
"A list that opens step by step"
]
},
"numbers": {
"type": "boolean",
"title": "Show step numbers",
"description": "The step's number set large on its card, beside its icon."
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default."
}
},
"required": [
"headline",
"steps"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the headline, the steps in order, the takeaway at the end, the call to action and the small print."
},
"metaData": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 100,
"title": "Title",
"description": "Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes."
},
"captionTiny": {
"type": "string",
"maxLength": 200,
"title": "Tiny description (Pinterest, Threads, X)",
"description": "Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionShort": {
"type": "string",
"maxLength": 500,
"title": "Short description (Telegram, Threema, WeChat, WhatsApp)",
"description": "Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionMedium": {
"type": "string",
"maxLength": 1500,
"title": "Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok)",
"description": "Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionLong": {
"type": "string",
"maxLength": 4000,
"title": "Long description (Facebook Feed, YouTube)",
"description": "Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"title": "Hashtag"
},
"maxItems": 15,
"title": "Hashtags",
"description": "Written without the #. Up to 15, which every platform takes."
}
},
"additionalProperties": false,
"title": "Meta data",
"description": "Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data."
},
"locales": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A short line above the headline, such as Money basics."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What the steps explain, as a question or a promise."
},
"subline": {
"type": "string",
"maxLength": 100,
"title": "Subline",
"description": "One sentence under the headline."
},
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"icon": {
"type": "string",
"enum": [
"check",
"circle-check",
"x",
"arrow-right",
"arrow-up-right",
"plus",
"star",
"heart",
"thumbs-up",
"sparkles",
"zap",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"lightbulb",
"target",
"award",
"crown",
"gem",
"flame",
"timer",
"list-checks",
"clipboard-check",
"badge-check",
"hand-heart",
"rocket",
"trophy",
"megaphone",
"bell",
"qr-code",
"ticket",
"gift",
"key-round",
"book-open",
"graduation-cap",
"house",
"phone",
"mail",
"globe",
"users",
"user",
"piggy-bank",
"wallet",
"credit-card",
"landmark",
"trending-up",
"trending-down",
"percent",
"coins",
"hand-coins",
"banknote",
"shield-check",
"chart-column",
"chart-line",
"chart-pie",
"lock",
"calculator",
"receipt",
"badge-percent",
"briefcase",
"scale"
],
"title": "Icon",
"description": "A line icon for the step. Without one, the step's number stands in its place.",
"enumNames": [
"Check",
"Circle check",
"X",
"Arrow right",
"Arrow up right",
"Plus",
"Star",
"Heart",
"Thumbs up",
"Sparkles",
"Zap",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Lightbulb",
"Target",
"Award",
"Crown",
"Gem",
"Flame",
"Timer",
"List checks",
"Clipboard check",
"Badge check",
"Hand heart",
"Rocket",
"Trophy",
"Megaphone",
"Bell",
"Qr code",
"Ticket",
"Gift",
"Key round",
"Book open",
"Graduation cap",
"House",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Piggy bank",
"Wallet",
"Credit card",
"Landmark",
"Trending up",
"Trending down",
"Percent",
"Coins",
"Hand coins",
"Banknote",
"Shield check",
"Chart column",
"Chart line",
"Chart pie",
"Lock",
"Calculator",
"Receipt",
"Badge percent",
"Briefcase",
"Scale"
]
},
"title": {
"type": "string",
"maxLength": 40,
"title": "Title",
"description": "The step in a few words."
},
"body": {
"type": "string",
"maxLength": 110,
"title": "Text",
"description": "What happens in this step, in one or two short sentences."
},
"highlight": {
"type": "string",
"maxLength": 24,
"title": "Highlight",
"description": "A figure or a term to remember, set on a plate, such as 3% a year."
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Step"
},
"minItems": 2,
"maxItems": 6,
"title": "Steps",
"description": "Two to six steps in the order they happen; the clip gets 2.4 seconds longer for each."
},
"takeaway": {
"type": "string",
"maxLength": 120,
"title": "Takeaway",
"description": "The one thing to remember, shown at the end."
},
"cta": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Button",
"description": "What the button says."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "An address, a handle, a phone number."
}
},
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address, a handle or a phone number."
},
"source": {
"type": "string",
"maxLength": 80,
"title": "Source or basis",
"description": "Where the figures come from, or what they assume."
},
"disclaimer": {
"type": "string",
"maxLength": 140,
"title": "Small print",
"description": "Terms or a risk note that must be shown with the clip."
},
"look": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": [
"brand",
"light",
"dark",
"bold"
],
"title": "Theme",
"description": "Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.",
"enumNames": [
"Brand colours",
"Light",
"Dark",
"Bold brand colour"
]
},
"pace": {
"type": "string",
"enum": [
"calm",
"standard",
"punchy"
],
"title": "Pace",
"description": "How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.",
"enumNames": [
"Calm",
"Standard",
"Punchy"
]
},
"corners": {
"type": "string",
"enum": [
"square",
"soft",
"round"
],
"title": "Corners",
"description": "The shape of cards, pictures and buttons.",
"enumNames": [
"Square",
"Softly rounded",
"Round"
]
},
"align": {
"type": "string",
"enum": [
"start",
"centre"
],
"title": "Text alignment",
"description": "Where the text lines up.",
"enumNames": [
"At the start of the line",
"Centred"
]
},
"layout": {
"type": "string",
"enum": [
"path",
"list"
],
"title": "Layout",
"description": "Path: one step at a time on a card, with every step as a node on a path. List: all steps listed from the start, each opening in turn.",
"enumNames": [
"One step at a time, along a path",
"A list that opens step by step"
]
},
"numbers": {
"type": "boolean",
"title": "Show step numbers",
"description": "The step's number set large on its card, beside its icon."
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the headline, the steps in order, the takeaway at the end, the call to action and the small print."
},
"metaData": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 100,
"title": "Title",
"description": "Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes."
},
"captionTiny": {
"type": "string",
"maxLength": 200,
"title": "Tiny description (Pinterest, Threads, X)",
"description": "Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionShort": {
"type": "string",
"maxLength": 500,
"title": "Short description (Telegram, Threema, WeChat, WhatsApp)",
"description": "Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionMedium": {
"type": "string",
"maxLength": 1500,
"title": "Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok)",
"description": "Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionLong": {
"type": "string",
"maxLength": 4000,
"title": "Long description (Facebook Feed, YouTube)",
"description": "Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"title": "Hashtag"
},
"maxItems": 15,
"title": "Hashtags",
"description": "Written without the #. Up to 15, which every platform takes."
}
},
"additionalProperties": false,
"title": "Meta data",
"description": "Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data."
}
},
"additionalProperties": false
},
"propertyNames": {
"enum": [
"aa",
"ab",
"ae",
"af",
"ak",
"am",
"an",
"ar",
"as",
"av",
"ay",
"az",
"ba",
"be",
"bg",
"bi",
"bm",
"bn",
"bo",
"br",
"bs",
"ca",
"ce",
"ch",
"co",
"cr",
"cs",
"cu",
"cv",
"cy",
"da",
"de",
"dv",
"dz",
"ee",
"el",
"en",
"eo",
"es",
"et",
"eu",
"fa",
"ff",
"fi",
"fj",
"fo",
"fr",
"fy",
"ga",
"gd",
"gl",
"gn",
"gu",
"gv",
"ha",
"he",
"hi",
"ho",
"hr",
"ht",
"hu",
"hy",
"hz",
"ia",
"id",
"ie",
"ig",
"ii",
"ik",
"io",
"is",
"it",
"iu",
"ja",
"jv",
"ka",
"kg",
"ki",
"kj",
"kk",
"kl",
"km",
"kn",
"ko",
"kr",
"ks",
"ku",
"kv",
"kw",
"ky",
"la",
"lb",
"lg",
"li",
"ln",
"lo",
"lt",
"lu",
"lv",
"mg",
"mh",
"mi",
"mk",
"ml",
"mn",
"mr",
"ms",
"mt",
"my",
"na",
"nb",
"nd",
"ne",
"ng",
"nl",
"nn",
"no",
"nr",
"nv",
"ny",
"oc",
"oj",
"om",
"or",
"os",
"pa",
"pi",
"pl",
"ps",
"pt",
"qu",
"rm",
"rn",
"ro",
"ru",
"rw",
"sa",
"sc",
"sd",
"se",
"sg",
"si",
"sk",
"sl",
"sm",
"sn",
"so",
"sq",
"sr",
"ss",
"st",
"su",
"sv",
"sw",
"ta",
"te",
"tg",
"th",
"ti",
"tk",
"tl",
"tn",
"to",
"tr",
"ts",
"tt",
"tw",
"ty",
"ug",
"uk",
"ur",
"uz",
"ve",
"vi",
"vo",
"wa",
"wo",
"xh",
"yi",
"yo",
"za",
"zh",
"zu",
"zh-CN",
"zh-TW",
"pt-BR"
]
}
}
},
"required": [
"clipData"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}

Ask Reelwire for the same document yourself, without signing in:

curl "http://localhost:4000/v1/formats/template/tpl_1c84aa91fffa?variant=Explainer%20steps&version=1.0.0"

Delivery JSON​

Your own system sends this to one of your streams, POST /v1/stream, and every channel listening to that stream draws it with its template. data is the document described above; a stream with an empty field map passes it to the template unchanged. Try it first on POST /v1/stream/validate, which answers the same without publishing anything. Streams and feeds explains the rest, including how to map a document of your own shape instead.

{
"streamId": "st_your_stream_id",
"eventId": "01M2SQMKK3G1NVFXV31DCBVB95",
"occurredAt": "2026-09-23T07:00:00Z",
"locale": "en",
"data": {
"clipData": {
"kicker": "Money basics, explained",
"headline": "How compound interest quietly grows your savings over time",
"subline": "Four steps from a first deposit to money that earns money of its own.",
"steps": [
{
"body": "You pay 1,000 euros into a savings account and leave it untouched, without adding to it.",
"icon": "piggy-bank",
"title": "You put money aside",
"highlight": "€1,000 to start"
},
{
"body": "At 3% a year, the bank adds 30 euros to your balance at the end of the first year.",
"icon": "badge-percent",
"title": "Your savings earn interest",
"highlight": "3% a year"
},
{
"body": "In year two the 3% is paid on 1,030 euros rather than 1,000, so you receive 30.90 euros.",
"icon": "coins",
"title": "Interest earns interest",
"highlight": "€30.90 in year two"
},
{
"body": "After 20 years with nothing added, the first 1,000 euros have grown to about 1,806 euros.",
"icon": "chart-line",
"title": "Time does the heavy lifting",
"highlight": "€1,806 after 20 years"
}
],
"takeaway": "Start early and leave it alone: the longer your money stays saved, the harder the interest works for you.",
"cta": {
"label": "Open a savings account",
"detail": "northgate-bank.example/save"
},
"source": "Example at a fixed 3% a year, interest paid yearly, before tax.",
"disclaimer": "For illustration only. Interest rates can change and are not guaranteed. This is not personal financial advice.",
"look": {
"theme": "brand",
"pace": "standard",
"corners": "soft",
"align": "start",
"layout": "path",
"numbers": true,
"logo": "auto"
}
},
"metaData": {
"title": "How compound interest grows your savings",
"captionTiny": "How compound interest grows your savings, in four steps: save, earn, earn on what you earned, and give it time.",
"captionShort": "How does compound interest work? You save a first amount, it earns interest, the interest earns interest too, and time does the rest: 1,000 euros at 3% a year become about 1,806 euros in 20 years. For illustration only, rates can change.",
"captionMedium": "How does compound interest work? Four steps. You put 1,000 euros aside and leave them there. At 3% a year, the bank adds 30 euros after the first year. In year two, the interest is paid on 1,030 euros, so you receive 30.90 euros: your interest earns interest. After 20 years with nothing added, the first 1,000 euros have grown to about 1,806 euros. The lesson: start early and leave it alone. Example at a fixed 3% a year, interest paid yearly, before tax. For illustration only; interest rates can change and are not guaranteed.",
"captionLong": "How does compound interest work? Four steps, one example. You put 1,000 euros into a savings account and leave them untouched. At 3% a year, the bank adds 30 euros to your balance at the end of the first year. In year two, the 3% is paid on 1,030 euros rather than 1,000, so you receive 30.90 euros: the interest you earned starts earning interest of its own. Keep going for 20 years without adding anything and the first 1,000 euros have grown to about 1,806 euros. The lesson is simple: start early and leave it alone, because the longer your money stays saved, the harder the interest works for you. Example at a fixed 3% a year, interest paid yearly, before tax. For illustration only; interest rates can change and are not guaranteed, and this is not personal financial advice. Open a savings account at Northgate Bank online or in any branch.",
"hashtags": [
"compoundinterest",
"moneybasics",
"savings",
"financialeducation",
"northgatebank"
]
}
}
}

The delivery names no version: which build draws it is the channel's choice, the newest of its variant or the one it is pinned to. eventId is a ULID you make once per event: sending the same one again changes nothing. occurredAt is when the thing happened, not when you sent it. locale is the language of the text in data, and data.locales carries other languages beside it.