Skip to main content

Finance, Rate offer 1.0.0

TemplateFinance, tpl_1c84aa91fffa
VariantRate offer
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​

A product ad for a rate or a price: the product, its figure large with its unit, up to four benefits with icons, the key conditions, the call to action and the small print, which stays readable throughout. metaData is the post's title, descriptions and hashtags and is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the product, its figure, the benefits, the conditions, the call to action and the small print.
clipData.kickertextup to 32 charactersKicker: A short line above the product, such as New or Limited offer.
clipData.producttextyesup to 40 charactersProduct: The product's name, as it should be read.
clipData.sublinetextup to 90 charactersSubline: One sentence on what the product does for the customer.
clipData.figuregroupyesFigure: The rate, fee or price the ad is about, drawn large. Exactly as sent: it is never rounded up.
clipData.figure.prefixtextup to 14 charactersBefore the figure: A word or two set small before it, such as From, Up to or Only.
clipData.figure.valuenumberyes3 decimalsFigure: The figure itself, such as 3.1 for a rate of 3.10%.
clipData.figure.kindenumnumber, moneyKind of figure: A rate or any other number with its unit, or an amount of money in the currency below.
clipData.figure.decimalsintegerfrom 0, to 3Decimals shown: How many decimals to show, such as 2 for 3.10%. Left out, as many as the figure has.
clipData.figure.unittextup to 16 charactersUnit: What follows the figure, such as % AER, % APR or per month. A leading % is set beside the figure.
clipData.figure.labeltextup to 48 charactersWhat it is: The line under the figure, such as Gross rate, fixed for 12 months.
clipData.currencytextup to 3 charactersCurrency: The ISO code of an amount of money, such as EUR, GBP, USD or CHF. Used when the figure is an amount of money.
clipData.benefitslistat least 1, up to 4Benefits: One to four reasons to choose it, each with an icon.
clipData.benefits[]groupBenefit
clipData.benefits[].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 benefit.
clipData.benefits[].texttextyesup to 44 charactersBenefit: The benefit in a few words.
clipData.conditionslistat least 1, up to 4Conditions: One to four key facts, each a label and its value, shown as a table.
clipData.conditions[]groupCondition
clipData.conditions[].labeltextyesup to 28 charactersLabel: What the fact is about, such as Minimum deposit.
clipData.conditions[].valuetextyesup to 32 charactersValue: The fact itself, such as 1,000 EUR.
clipData.pictureimagemedia:// file from the media library, alt text up to 120 charactersPicture: A picture for the product, any shape: a lifestyle photo, the card, an illustration.
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.disclaimertextup to 240 charactersSmall print: The warning or terms that must go with the figure. Shown, readable, for the whole 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.figureStyleenumring, plain, badgeFigure style: How the figure is set: in a ring drawn round it, large on the page with a rule, or on a badge in the brand colour.
clipData.look.picturePositionenumpanel, backdropPicture: Where the picture goes: in a panel beside the figure, or behind everything under a veil of the page colour.
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 product, such as New or Limited offer."
},
"product": {
"type": "string",
"maxLength": 40,
"title": "Product",
"description": "The product's name, as it should be read."
},
"subline": {
"type": "string",
"maxLength": 90,
"title": "Subline",
"description": "One sentence on what the product does for the customer."
},
"figure": {
"type": "object",
"properties": {
"prefix": {
"type": "string",
"maxLength": 14,
"title": "Before the figure",
"description": "A word or two set small before it, such as From, Up to or Only."
},
"value": {
"type": "number",
"title": "Figure",
"description": "The figure itself, such as 3.1 for a rate of 3.10%."
},
"kind": {
"type": "string",
"enum": [
"number",
"money"
],
"title": "Kind of figure",
"description": "A rate or any other number with its unit, or an amount of money in the currency below.",
"enumNames": [
"A rate or a number",
"An amount of money"
]
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"title": "Decimals shown",
"description": "How many decimals to show, such as 2 for 3.10%. Left out, as many as the figure has."
},
"unit": {
"type": "string",
"maxLength": 16,
"title": "Unit",
"description": "What follows the figure, such as % AER, % APR or per month. A leading % is set beside the figure."
},
"label": {
"type": "string",
"maxLength": 48,
"title": "What it is",
"description": "The line under the figure, such as Gross rate, fixed for 12 months."
}
},
"required": [
"value"
],
"additionalProperties": false,
"title": "Figure",
"description": "The rate, fee or price the ad is about, drawn large. Exactly as sent: it is never rounded up."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The ISO code of an amount of money, such as EUR, GBP, USD or CHF. Used when the figure is an amount of money."
},
"benefits": {
"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 benefit.",
"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"
]
},
"text": {
"type": "string",
"maxLength": 44,
"title": "Benefit",
"description": "The benefit in a few words."
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Benefit"
},
"minItems": 1,
"maxItems": 4,
"title": "Benefits",
"description": "One to four reasons to choose it, each with an icon."
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Label",
"description": "What the fact is about, such as Minimum deposit."
},
"value": {
"type": "string",
"maxLength": 32,
"title": "Value",
"description": "The fact itself, such as 1,000 EUR."
}
},
"required": [
"label",
"value"
],
"additionalProperties": false,
"title": "Condition"
},
"minItems": 1,
"maxItems": 4,
"title": "Conditions",
"description": "One to four key facts, each a label and its value, shown as a table."
},
"picture": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"pattern": "^media:\\/\\/[^\\s/\\\\\\u0000-\\u001f][^/\\\\\\u0000-\\u001f]{0,254}$",
"title": "Picture",
"description": "A file from the workspace's media library, written media:// and the file's id or name. A web address is refused."
},
"alt": {
"type": "string",
"maxLength": 120,
"title": "Alt text",
"description": "What the picture shows, for anyone who cannot see it."
}
},
"required": [
"url"
],
"additionalProperties": false,
"title": "Picture",
"description": "A picture for the product, any shape: a lifestyle photo, the card, an illustration."
},
"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."
},
"disclaimer": {
"type": "string",
"maxLength": 240,
"title": "Small print",
"description": "The warning or terms that must go with the figure. Shown, readable, for the whole 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"
]
},
"figureStyle": {
"type": "string",
"enum": [
"ring",
"plain",
"badge"
],
"title": "Figure style",
"description": "How the figure is set: in a ring drawn round it, large on the page with a rule, or on a badge in the brand colour.",
"enumNames": [
"In a ring",
"Large on the page",
"On a badge"
]
},
"picturePosition": {
"type": "string",
"enum": [
"panel",
"backdrop"
],
"title": "Picture",
"description": "Where the picture goes: in a panel beside the figure, or behind everything under a veil of the page colour.",
"enumNames": [
"In a panel",
"Behind everything"
]
},
"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": [
"product",
"figure"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the product, its figure, the benefits, the conditions, 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 product, such as New or Limited offer."
},
"product": {
"type": "string",
"maxLength": 40,
"title": "Product",
"description": "The product's name, as it should be read."
},
"subline": {
"type": "string",
"maxLength": 90,
"title": "Subline",
"description": "One sentence on what the product does for the customer."
},
"figure": {
"type": "object",
"properties": {
"prefix": {
"type": "string",
"maxLength": 14,
"title": "Before the figure",
"description": "A word or two set small before it, such as From, Up to or Only."
},
"value": {
"type": "number",
"title": "Figure",
"description": "The figure itself, such as 3.1 for a rate of 3.10%."
},
"kind": {
"type": "string",
"enum": [
"number",
"money"
],
"title": "Kind of figure",
"description": "A rate or any other number with its unit, or an amount of money in the currency below.",
"enumNames": [
"A rate or a number",
"An amount of money"
]
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 3,
"title": "Decimals shown",
"description": "How many decimals to show, such as 2 for 3.10%. Left out, as many as the figure has."
},
"unit": {
"type": "string",
"maxLength": 16,
"title": "Unit",
"description": "What follows the figure, such as % AER, % APR or per month. A leading % is set beside the figure."
},
"label": {
"type": "string",
"maxLength": 48,
"title": "What it is",
"description": "The line under the figure, such as Gross rate, fixed for 12 months."
}
},
"additionalProperties": false,
"title": "Figure",
"description": "The rate, fee or price the ad is about, drawn large. Exactly as sent: it is never rounded up."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The ISO code of an amount of money, such as EUR, GBP, USD or CHF. Used when the figure is an amount of money."
},
"benefits": {
"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 benefit.",
"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"
]
},
"text": {
"type": "string",
"maxLength": 44,
"title": "Benefit",
"description": "The benefit in a few words."
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Benefit"
},
"minItems": 1,
"maxItems": 4,
"title": "Benefits",
"description": "One to four reasons to choose it, each with an icon."
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Label",
"description": "What the fact is about, such as Minimum deposit."
},
"value": {
"type": "string",
"maxLength": 32,
"title": "Value",
"description": "The fact itself, such as 1,000 EUR."
}
},
"required": [
"label",
"value"
],
"additionalProperties": false,
"title": "Condition"
},
"minItems": 1,
"maxItems": 4,
"title": "Conditions",
"description": "One to four key facts, each a label and its value, shown as a table."
},
"picture": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"pattern": "^media:\\/\\/[^\\s/\\\\\\u0000-\\u001f][^/\\\\\\u0000-\\u001f]{0,254}$",
"title": "Picture",
"description": "A file from the workspace's media library, written media:// and the file's id or name. A web address is refused."
},
"alt": {
"type": "string",
"maxLength": 120,
"title": "Alt text",
"description": "What the picture shows, for anyone who cannot see it."
}
},
"required": [
"url"
],
"additionalProperties": false,
"title": "Picture",
"description": "A picture for the product, any shape: a lifestyle photo, the card, an illustration."
},
"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."
},
"disclaimer": {
"type": "string",
"maxLength": 240,
"title": "Small print",
"description": "The warning or terms that must go with the figure. Shown, readable, for the whole 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"
]
},
"figureStyle": {
"type": "string",
"enum": [
"ring",
"plain",
"badge"
],
"title": "Figure style",
"description": "How the figure is set: in a ring drawn round it, large on the page with a rule, or on a badge in the brand colour.",
"enumNames": [
"In a ring",
"Large on the page",
"On a badge"
]
},
"picturePosition": {
"type": "string",
"enum": [
"panel",
"backdrop"
],
"title": "Picture",
"description": "Where the picture goes: in a panel beside the figure, or behind everything under a veil of the page colour.",
"enumNames": [
"In a panel",
"Behind everything"
]
},
"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 product, its figure, the benefits, the conditions, 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=Rate%20offer&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": "New fixed-rate savings account",
"product": "Northgate Fixed Saver, 12 months",
"subline": "Lock in today's rate for a full year and let your savings work while you get on with life.",
"figure": {
"kind": "number",
"unit": "% AER",
"label": "Gross rate, fixed for the full 12 months",
"value": 3.1,
"prefix": "Fixed at",
"decimals": 2
},
"currency": "EUR",
"benefits": [
{
"icon": "shield-check",
"text": "Deposits protected up to 100,000 EUR"
},
{
"icon": "lock",
"text": "Your rate stays fixed for the whole term"
},
{
"icon": "coins",
"text": "Interest paid on every anniversary"
},
{
"icon": "badge-check",
"text": "Open in minutes, no paperwork needed"
}
],
"conditions": [
{
"label": "Minimum deposit",
"value": "1,000 EUR"
},
{
"label": "Maximum deposit",
"value": "250,000 EUR"
},
{
"label": "Access during the term",
"value": "None, fixed for 12 months"
},
{
"label": "Interest paid",
"value": "Annually, or monthly at 3.05%"
}
],
"picture": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
},
"cta": {
"label": "Open a Fixed Saver",
"detail": "northgate-bank.example/fixed-saver"
},
"disclaimer": "AER stands for Annual Equivalent Rate and shows what the rate would be if interest were paid and added once a year. Rate correct at 1 October 2026 and may be withdrawn at any time.",
"look": {
"theme": "brand",
"pace": "standard",
"corners": "soft",
"align": "start",
"figureStyle": "ring",
"picturePosition": "panel",
"logo": "auto"
}
},
"metaData": {
"title": "Northgate Fixed Saver: 3.10% AER fixed for 12 months",
"captionTiny": "New: the Northgate Fixed Saver pays 3.10% AER, fixed for 12 months, from 1,000 EUR. Terms apply.",
"captionShort": "Lock in today's rate for a full year. The new Northgate Fixed Saver pays 3.10% AER gross, fixed for 12 months, on deposits from 1,000 EUR to 250,000 EUR. Deposits are protected up to 100,000 EUR, and you can open one in minutes. Rates may be withdrawn at any time. Terms apply.",
"captionMedium": "Lock in today's rate for a full year and let your savings work while you get on with life. The new Northgate Fixed Saver pays 3.10% AER gross, fixed for the full 12 months, on deposits from 1,000 EUR to 250,000 EUR. Interest is paid on every anniversary, or monthly at 3.05%. There is no access to your money during the term. Deposits are protected up to 100,000 EUR per person. AER stands for Annual Equivalent Rate. The rate is correct at 1 October 2026 and may be withdrawn at any time. Terms apply.",
"captionLong": "Lock in today's rate for a full year and let your savings work while you get on with life. The new Northgate Fixed Saver pays 3.10% AER gross, fixed for the full 12 months, on deposits from 1,000 EUR to 250,000 EUR. Interest is paid on every anniversary, or monthly at 3.05% if you prefer a regular income. There is no access to your money during the term, so choose an amount you will not need before it ends. Deposits are protected up to 100,000 EUR per person. You can open a Fixed Saver in minutes in the Northgate app or online, with no paperwork. AER stands for Annual Equivalent Rate and shows what the rate would be if interest were paid and added once a year. The rate is correct at 1 October 2026 and may be withdrawn at any time. Terms apply.",
"hashtags": [
"savings",
"fixedrate",
"northgatebank",
"personalfinance"
]
}
}
}

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.