Skip to main content

Real estate (Mortgage brokers), Representative example 1.0.0

TemplateReal estate (Mortgage brokers), tpl_f10c6ae64146
VariantRepresentative example
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length13 seconds

Example video​

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

What it accepts​

The representative example as a chat: a buyer's question, the broker's answer and a card that is the example itself, up to six figures (borrowed, term, rate and APR at the same size, payment, total payable) counting to what was sent, lit in turn. The example in words and the legal line stay at the foot. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the section, the date chip, the buyer's question, your answer, the example card and its figures, your closing message, the call to action, the representative example and the legal line.
clipData.sectiontextup to 32 charactersSection: A few words under your name in the bar at the top, such as Representative example or What it costs.
clipData.asOftextyesup to 48 charactersRates as of: The date the example is as of, written as it should be shown, on the date chip over the thread. Required: a rate is only true on its day.
clipData.questiongroupBuyer's question: The question the post answers, as a buyer's message on the end side in your brand colour. Leave it out to start with your answer.
clipData.question.texttextup to 100 charactersQuestion: The buyer's words, short as a message is.
clipData.question.nametextup to 32 charactersWho asks: Shown over the question, such as Sam, first-time buyer. Never a real client's name without their consent.
clipData.question.timetextup to 12 charactersTime: The time beside the message, written as it should be shown, such as 09:41.
clipData.question.readbooleanRead tick: Shows a tick beside the time, the question read.
clipData.answergroupYour answer: Your reply before the card, on the start side beside your presenter's picture, under their name and role. Leave it out to share the card alone.
clipData.answer.texttextup to 140 charactersAnswer: Your words, short as a message is. Never promise a rate: the example shows one loan, not what a buyer will get.
clipData.answer.timetextup to 12 charactersTime: The time beside your message, such as 09:42.
clipData.cardgroupyesExample card: The card you share in the thread: its title and the currency of its amounts.
clipData.card.titletextup to 40 charactersTitle: The card's title in its header strip, such as Representative example.
clipData.card.currencytextyesup to 3 charactersCurrency: The currency of every amount, as a three-letter code, such as GBP, EUR or USD.
clipData.lineslistyesat least 4, up to 6Figures: Four to six figures in order, each lit in turn and counting to exactly the value you send: what is borrowed, the term, the rate, the APR, the monthly payment, the total payable. A rate straight after a rate (the interest rate and its APR) share a row at the same size. Always include the APR. You work the figures out.
clipData.lines[]groupFigure
clipData.lines[].labeltextyesup to 28 charactersLabel: What the figure is, such as Amount borrowed, Term, Rate, APRC, Monthly payment or Total amount payable.
clipData.lines[].kindenumyesmoney, rate, numberShown as: How the value is written: an amount in the currency above, a rate with a percent sign, or a plain number followed by its unit.
clipData.lines[].valuenumberyesfrom 0, 3 decimalsValue: The figure, as a number: 250000 for an amount, 4.29 for a rate of 4.29%, 25 for a term of 25 years. Shown exactly as sent, written your channel's way.
clipData.lines[].unittextup to 12 charactersUnit: After a plain number, such as years or payments. Not used for amounts and rates.
clipData.lines[].notetextup to 48 charactersNote: A short line under the label, such as Fixed for 5 years, then 7.49% variable.
clipData.lines[].emphasisbooleanEmphasis: Sets this amount or number larger on the tint, as the figure the example builds to, such as the total amount payable. Rates are never set larger or smaller than each other.
clipData.closingtextup to 100 charactersClosing message: Your last message, over the button, such as Want me to run yours?
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, an app, a phone number.
clipData.representativetextyesup to 320 charactersRepresentative example: The representative example in words, as the rules where you advertise ask for it with any rate: the amount borrowed, the term, the rate and for how long, what follows, the monthly payment, the total amount payable and the APR. Shown at the foot of every frame in the strong weight, set smaller rather than cut. Required.
clipData.legaltextyesup to 300 charactersLegal line: Who you are and who regulates you, with your number, and the risk warning your market asks for, such as Your home may be repossessed if you do not keep up repayments on your mortgage. Shown at the foot of every frame, set smaller rather than cut. Required.
clipData.lookgroupLook: How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, round corners, text at the start.
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.logoenumauto, freeLogo: The style's own: the logo on a small plate 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.
clipData.look.logoSizeenumauto, small, largeLogo size: Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.
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 400 schema_validation error that names the field.

The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"section": {
"type": "string",
"maxLength": 32,
"title": "Section",
"description": "A few words under your name in the bar at the top, such as Representative example or What it costs."
},
"asOf": {
"type": "string",
"maxLength": 48,
"title": "Rates as of",
"description": "The date the example is as of, written as it should be shown, on the date chip over the thread. Required: a rate is only true on its day."
},
"question": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 100,
"title": "Question",
"description": "The buyer's words, short as a message is."
},
"name": {
"type": "string",
"maxLength": 32,
"title": "Who asks",
"description": "Shown over the question, such as Sam, first-time buyer. Never a real client's name without their consent."
},
"time": {
"type": "string",
"maxLength": 12,
"title": "Time",
"description": "The time beside the message, written as it should be shown, such as 09:41."
},
"read": {
"type": "boolean",
"title": "Read tick",
"description": "Shows a tick beside the time, the question read."
}
},
"additionalProperties": false,
"title": "Buyer's question",
"description": "The question the post answers, as a buyer's message on the end side in your brand colour. Leave it out to start with your answer."
},
"answer": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 140,
"title": "Answer",
"description": "Your words, short as a message is. Never promise a rate: the example shows one loan, not what a buyer will get."
},
"time": {
"type": "string",
"maxLength": 12,
"title": "Time",
"description": "The time beside your message, such as 09:42."
}
},
"additionalProperties": false,
"title": "Your answer",
"description": "Your reply before the card, on the start side beside your presenter's picture, under their name and role. Leave it out to share the card alone."
},
"card": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 40,
"title": "Title",
"description": "The card's title in its header strip, such as Representative example."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The currency of every amount, as a three-letter code, such as GBP, EUR or USD."
}
},
"required": [
"currency"
],
"additionalProperties": false,
"title": "Example card",
"description": "The card you share in the thread: its title and the currency of its amounts."
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Label",
"description": "What the figure is, such as Amount borrowed, Term, Rate, APRC, Monthly payment or Total amount payable."
},
"kind": {
"type": "string",
"enum": [
"money",
"rate",
"number"
],
"title": "Shown as",
"description": "How the value is written: an amount in the currency above, a rate with a percent sign, or a plain number followed by its unit.",
"enumNames": [
"An amount of money",
"A rate (the interest rate, the APR)",
"A plain number with its unit"
]
},
"value": {
"type": "number",
"minimum": 0,
"title": "Value",
"description": "The figure, as a number: 250000 for an amount, 4.29 for a rate of 4.29%, 25 for a term of 25 years. Shown exactly as sent, written your channel's way."
},
"unit": {
"type": "string",
"maxLength": 12,
"title": "Unit",
"description": "After a plain number, such as years or payments. Not used for amounts and rates."
},
"note": {
"type": "string",
"maxLength": 48,
"title": "Note",
"description": "A short line under the label, such as Fixed for 5 years, then 7.49% variable."
},
"emphasis": {
"type": "boolean",
"title": "Emphasis",
"description": "Sets this amount or number larger on the tint, as the figure the example builds to, such as the total amount payable. Rates are never set larger or smaller than each other."
}
},
"required": [
"label",
"kind",
"value"
],
"additionalProperties": false,
"title": "Figure"
},
"minItems": 4,
"maxItems": 6,
"title": "Figures",
"description": "Four to six figures in order, each lit in turn and counting to exactly the value you send: what is borrowed, the term, the rate, the APR, the monthly payment, the total payable. A rate straight after a rate (the interest rate and its APR) share a row at the same size. Always include the APR. You work the figures out."
},
"closing": {
"type": "string",
"maxLength": 100,
"title": "Closing message",
"description": "Your last message, over the button, such as Want me to run yours?"
},
"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, an app, 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."
},
"representative": {
"type": "string",
"maxLength": 320,
"title": "Representative example",
"description": "The representative example in words, as the rules where you advertise ask for it with any rate: the amount borrowed, the term, the rate and for how long, what follows, the monthly payment, the total amount payable and the APR. Shown at the foot of every frame in the strong weight, set smaller rather than cut. Required."
},
"legal": {
"type": "string",
"maxLength": 300,
"title": "Legal line",
"description": "Who you are and who regulates you, with your number, and the risk warning your market asks for, such as Your home may be repossessed if you do not keep up repayments on your mortgage. Shown at the foot of every frame, set smaller rather than cut. Required."
},
"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"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on a small plate 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"
]
},
"logoSize": {
"type": "string",
"enum": [
"auto",
"small",
"large"
],
"title": "Logo size",
"description": "Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.",
"enumNames": [
"Standard",
"Small",
"Large"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, round corners, text at the start."
}
},
"required": [
"asOf",
"card",
"lines",
"representative",
"legal"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the date chip, the buyer's question, your answer, the example card and its figures, your closing message, the call to action, the representative example and the legal line."
},
"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": {
"section": {
"type": "string",
"maxLength": 32,
"title": "Section",
"description": "A few words under your name in the bar at the top, such as Representative example or What it costs."
},
"asOf": {
"type": "string",
"maxLength": 48,
"title": "Rates as of",
"description": "The date the example is as of, written as it should be shown, on the date chip over the thread. Required: a rate is only true on its day."
},
"question": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 100,
"title": "Question",
"description": "The buyer's words, short as a message is."
},
"name": {
"type": "string",
"maxLength": 32,
"title": "Who asks",
"description": "Shown over the question, such as Sam, first-time buyer. Never a real client's name without their consent."
},
"time": {
"type": "string",
"maxLength": 12,
"title": "Time",
"description": "The time beside the message, written as it should be shown, such as 09:41."
},
"read": {
"type": "boolean",
"title": "Read tick",
"description": "Shows a tick beside the time, the question read."
}
},
"additionalProperties": false,
"title": "Buyer's question",
"description": "The question the post answers, as a buyer's message on the end side in your brand colour. Leave it out to start with your answer."
},
"answer": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 140,
"title": "Answer",
"description": "Your words, short as a message is. Never promise a rate: the example shows one loan, not what a buyer will get."
},
"time": {
"type": "string",
"maxLength": 12,
"title": "Time",
"description": "The time beside your message, such as 09:42."
}
},
"additionalProperties": false,
"title": "Your answer",
"description": "Your reply before the card, on the start side beside your presenter's picture, under their name and role. Leave it out to share the card alone."
},
"card": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 40,
"title": "Title",
"description": "The card's title in its header strip, such as Representative example."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The currency of every amount, as a three-letter code, such as GBP, EUR or USD."
}
},
"additionalProperties": false,
"title": "Example card",
"description": "The card you share in the thread: its title and the currency of its amounts."
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Label",
"description": "What the figure is, such as Amount borrowed, Term, Rate, APRC, Monthly payment or Total amount payable."
},
"kind": {
"type": "string",
"enum": [
"money",
"rate",
"number"
],
"title": "Shown as",
"description": "How the value is written: an amount in the currency above, a rate with a percent sign, or a plain number followed by its unit.",
"enumNames": [
"An amount of money",
"A rate (the interest rate, the APR)",
"A plain number with its unit"
]
},
"value": {
"type": "number",
"minimum": 0,
"title": "Value",
"description": "The figure, as a number: 250000 for an amount, 4.29 for a rate of 4.29%, 25 for a term of 25 years. Shown exactly as sent, written your channel's way."
},
"unit": {
"type": "string",
"maxLength": 12,
"title": "Unit",
"description": "After a plain number, such as years or payments. Not used for amounts and rates."
},
"note": {
"type": "string",
"maxLength": 48,
"title": "Note",
"description": "A short line under the label, such as Fixed for 5 years, then 7.49% variable."
},
"emphasis": {
"type": "boolean",
"title": "Emphasis",
"description": "Sets this amount or number larger on the tint, as the figure the example builds to, such as the total amount payable. Rates are never set larger or smaller than each other."
}
},
"required": [
"label",
"kind",
"value"
],
"additionalProperties": false,
"title": "Figure"
},
"minItems": 4,
"maxItems": 6,
"title": "Figures",
"description": "Four to six figures in order, each lit in turn and counting to exactly the value you send: what is borrowed, the term, the rate, the APR, the monthly payment, the total payable. A rate straight after a rate (the interest rate and its APR) share a row at the same size. Always include the APR. You work the figures out."
},
"closing": {
"type": "string",
"maxLength": 100,
"title": "Closing message",
"description": "Your last message, over the button, such as Want me to run yours?"
},
"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, an app, 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."
},
"representative": {
"type": "string",
"maxLength": 320,
"title": "Representative example",
"description": "The representative example in words, as the rules where you advertise ask for it with any rate: the amount borrowed, the term, the rate and for how long, what follows, the monthly payment, the total amount payable and the APR. Shown at the foot of every frame in the strong weight, set smaller rather than cut. Required."
},
"legal": {
"type": "string",
"maxLength": 300,
"title": "Legal line",
"description": "Who you are and who regulates you, with your number, and the risk warning your market asks for, such as Your home may be repossessed if you do not keep up repayments on your mortgage. Shown at the foot of every frame, set smaller rather than cut. Required."
},
"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"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on a small plate 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"
]
},
"logoSize": {
"type": "string",
"enum": [
"auto",
"small",
"large"
],
"title": "Logo size",
"description": "Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.",
"enumNames": [
"Standard",
"Small",
"Large"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, round corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the date chip, the buyer's question, your answer, the example card and its figures, your closing message, the call to action, the representative example and the legal line."
},
"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_f10c6ae64146?variant=Representative%20example&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": {
"section": "What it costs, in full",
"asOf": "Rates as of 16 October 2026",
"question": {
"name": "Sam, first-time buyer",
"read": true,
"text": "What does a mortgage really cost once everything is added up?",
"time": "09:41"
},
"answer": {
"text": "Fair question. This is the full picture for one loan, the way the rules make us show it.",
"time": "09:42"
},
"card": {
"title": "Representative example",
"currency": "GBP"
},
"lines": [
{
"kind": "money",
"note": "A repayment mortgage",
"label": "Amount borrowed",
"value": 250000
},
{
"kind": "number",
"note": "300 monthly payments",
"unit": "years",
"label": "Term",
"value": 25
},
{
"kind": "rate",
"note": "Fixed for 5 years, then 7.49% variable",
"label": "Rate",
"value": 4.29
},
{
"kind": "rate",
"note": "Overall cost for comparison",
"label": "APRC",
"value": 6.1
},
{
"kind": "money",
"note": "60 payments, then 240 of 1,761",
"label": "Monthly payment",
"value": 1360
},
{
"kind": "money",
"note": "Including a fee of 999",
"label": "Total amount payable",
"value": 505239,
"emphasis": true
}
],
"closing": "Want me to run the same for your own figures?",
"cta": {
"label": "Book a free call",
"detail": "keystone.example/book or 020 7946 0321"
},
"representative": "Representative example: borrowing 250,000 over 25 years at 4.29% fixed for 5 years, then 7.49% variable for 20 years: 60 payments of 1,360 then 240 of 1,761; total amount payable 505,239 including a fee of 999. Overall cost for comparison 6.1% APRC.",
"legal": "Keystone Mortgages Ltd is authorised and regulated by the Financial Conduct Authority, FRN 123456. Your home may be repossessed if you do not keep up repayments on your mortgage.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "round",
"logoSize": "auto"
}
},
"metaData": {
"title": "What a mortgage really costs: the representative example",
"captionTiny": "Representative example: 250,000 over 25 years at 4.29% fixed for 5 years, 6.1% APRC, total payable 505,239. Your home may be repossessed if you do not keep up repayments.",
"captionShort": "What does a mortgage really cost? Representative example: borrowing 250,000 over 25 years at 4.29% fixed for 5 years, then 7.49% variable; 1,360 a month, then 1,761; total amount payable 505,239; 6.1% APRC. Your home may be repossessed if you do not keep up repayments on your mortgage.",
"captionMedium": "What does a mortgage really cost once everything is added up? Here is the full picture for one loan, the way the rules make us show it, as of 16 October 2026. Representative example: borrowing 250,000 over 25 years at 4.29% fixed for 5 years, then 7.49% variable for 20 years: 60 payments of 1,360 then 240 of 1,761; total amount payable 505,239 including a fee of 999; overall cost for comparison 6.1% APRC. Your own rate depends on your circumstances: book a free call and we will run your figures. Your home may be repossessed if you do not keep up repayments on your mortgage.",
"captionLong": "What does a mortgage really cost once everything is added up? Every advert that shows a rate has to show a representative example, so here it is in full, as of 16 October 2026: borrowing 250,000 over 25 years on a repayment basis, at 4.29% fixed for 5 years, then 7.49% variable for 20 years. That is 60 payments of 1,360, then 240 of 1,761, a total amount payable of 505,239 including a fee of 999, and an overall cost for comparison of 6.1% APRC. It shows one loan, not what you will be offered: your own rate depends on your income, your deposit and the lender's checks. Book a free call and we will run the same for your own figures. Keystone Mortgages Ltd is authorised and regulated by the Financial Conduct Authority, FRN 123456. Your home may be repossessed if you do not keep up repayments on your mortgage.",
"hashtags": [
"representativeexample",
"mortgage",
"apr",
"homebuying",
"mortgagebroker"
]
}
}
}

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.