Skip to main content

Real estate (Estate agents and realtors), House price index 1.0.0

TemplateReal estate (Estate agents and realtors), tpl_7b86c0b39c0e
VariantHouse price index
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​

A house price index as a magazine's chart page: the area, the headline, up to 24 periods drawn on as a line while the latest value counts to exactly what was sent, the change, the period and the source; then the agent's comment, byline and button. The licence stays on screen throughout. A sixth of a second longer per period. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the issue line, the area, the headline, what the figures measure, every period with its value, the change, the period and the source, the comment, the call to action, the licence and the disclosure.
clipData.issuegroupIssue line: The line under the masthead, in small capitals: the section, the date and the office. A part left out is not drawn.
clipData.issue.sectiontextup to 28 charactersSection: The name of the feature, set in your brand colour, such as Market report.
clipData.issue.datetextup to 32 charactersDate: The date, the month or the quarter, written as you want it read, such as Third quarter 2026.
clipData.issue.agencytextup to 44 charactersOffice: The agency or the office the report is from, such as Albrecht Immobilien, Munich.
clipData.areatextyesup to 40 charactersArea: The city, region or country the figures are for, set over the headline as the page's kicker.
clipData.headlinetextyesup to 72 charactersHeadline: The page's headline, such as Munich house prices are climbing again.
clipData.measuretextyesup to 48 charactersWhat it measures: What the figures are, over the latest value, such as House price index, 2015 = 100 or Average price of a flat.
clipData.currencytextup to 3 charactersCurrency: Where the values are prices: their currency as a three-letter code, such as EUR. Leave it out for an index.
clipData.unittextup to 16 charactersUnit: After the latest value, such as per m². Leave it out for an index or a price.
clipData.pointslistyesat least 2, up to 24Periods: Two to twenty-four months or quarters, oldest first, each with its value as your source gives it. They are drawn as one line, the latest value written large; the scale has no figures of its own.
clipData.points[]groupPeriod
clipData.points[].labeltextyesup to 16 charactersLabel: The month or the quarter, such as Q3 2026 or Sep 2026.
clipData.points[].valuenumberyes2 decimalsValue: The index or the price for that period, with the decimals your source gives.
clipData.changenumberyes2 decimalsChange: The change over the whole period in percent, as your source gives it, such as 10.4 or -2.1. Drawn in your brand's up or down colour.
clipData.changeLabeltextup to 32 charactersChange label: What the change spans, beside it, such as since Q4 2023 or over two years.
clipData.periodtextyesup to 80 charactersPeriod: What the figures are and the period they cover, under the chart on every frame, such as Quarterly, Q4 2023 to Q3 2026.
clipData.sourcetextyesup to 120 charactersSource: Where the figures come from, under the period on every frame, written as you want it read, with its label if you want one, such as Source: ...
clipData.commenttextup to 140 charactersComment: One line from the agent on what the figures mean, set as a pull quote at the end and signed by your presenter.
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.licencetextyesup to 200 charactersLicence: The agency's licence or registration line, as the law where you advertise asks for it, set in the imprint on every frame.
clipData.disclosuretextup to 300 charactersDisclosure: Any further statements, shown under the licence from the first frame to the last. A long one is set smaller, never cut.
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, calm, square 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": {
"issue": {
"type": "object",
"properties": {
"section": {
"type": "string",
"maxLength": 28,
"title": "Section",
"description": "The name of the feature, set in your brand colour, such as Market report."
},
"date": {
"type": "string",
"maxLength": 32,
"title": "Date",
"description": "The date, the month or the quarter, written as you want it read, such as Third quarter 2026."
},
"agency": {
"type": "string",
"maxLength": 44,
"title": "Office",
"description": "The agency or the office the report is from, such as Albrecht Immobilien, Munich."
}
},
"additionalProperties": false,
"title": "Issue line",
"description": "The line under the masthead, in small capitals: the section, the date and the office. A part left out is not drawn."
},
"area": {
"type": "string",
"maxLength": 40,
"title": "Area",
"description": "The city, region or country the figures are for, set over the headline as the page's kicker."
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "The page's headline, such as Munich house prices are climbing again."
},
"measure": {
"type": "string",
"maxLength": 48,
"title": "What it measures",
"description": "What the figures are, over the latest value, such as House price index, 2015 = 100 or Average price of a flat."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "Where the values are prices: their currency as a three-letter code, such as EUR. Leave it out for an index."
},
"unit": {
"type": "string",
"maxLength": 16,
"title": "Unit",
"description": "After the latest value, such as per m². Leave it out for an index or a price."
},
"points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 16,
"title": "Label",
"description": "The month or the quarter, such as Q3 2026 or Sep 2026."
},
"value": {
"type": "number",
"title": "Value",
"description": "The index or the price for that period, with the decimals your source gives."
}
},
"required": [
"label",
"value"
],
"additionalProperties": false,
"title": "Period"
},
"minItems": 2,
"maxItems": 24,
"title": "Periods",
"description": "Two to twenty-four months or quarters, oldest first, each with its value as your source gives it. They are drawn as one line, the latest value written large; the scale has no figures of its own."
},
"change": {
"type": "number",
"title": "Change",
"description": "The change over the whole period in percent, as your source gives it, such as 10.4 or -2.1. Drawn in your brand's up or down colour."
},
"changeLabel": {
"type": "string",
"maxLength": 32,
"title": "Change label",
"description": "What the change spans, beside it, such as since Q4 2023 or over two years."
},
"period": {
"type": "string",
"maxLength": 80,
"title": "Period",
"description": "What the figures are and the period they cover, under the chart on every frame, such as Quarterly, Q4 2023 to Q3 2026."
},
"source": {
"type": "string",
"maxLength": 120,
"title": "Source",
"description": "Where the figures come from, under the period on every frame, written as you want it read, with its label if you want one, such as Source: ..."
},
"comment": {
"type": "string",
"maxLength": 140,
"title": "Comment",
"description": "One line from the agent on what the figures mean, set as a pull quote at the end and signed by your presenter."
},
"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."
},
"licence": {
"type": "string",
"maxLength": 200,
"title": "Licence",
"description": "The agency's licence or registration line, as the law where you advertise asks for it, set in the imprint on every frame."
},
"disclosure": {
"type": "string",
"maxLength": 300,
"title": "Disclosure",
"description": "Any further statements, shown under the licence from the first frame to the last. A long one is set smaller, never cut."
},
"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, calm, square corners, text at the start."
}
},
"required": [
"area",
"headline",
"measure",
"points",
"change",
"period",
"source",
"licence"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the issue line, the area, the headline, what the figures measure, every period with its value, the change, the period and the source, the comment, the call to action, the licence and the disclosure."
},
"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": {
"issue": {
"type": "object",
"properties": {
"section": {
"type": "string",
"maxLength": 28,
"title": "Section",
"description": "The name of the feature, set in your brand colour, such as Market report."
},
"date": {
"type": "string",
"maxLength": 32,
"title": "Date",
"description": "The date, the month or the quarter, written as you want it read, such as Third quarter 2026."
},
"agency": {
"type": "string",
"maxLength": 44,
"title": "Office",
"description": "The agency or the office the report is from, such as Albrecht Immobilien, Munich."
}
},
"additionalProperties": false,
"title": "Issue line",
"description": "The line under the masthead, in small capitals: the section, the date and the office. A part left out is not drawn."
},
"area": {
"type": "string",
"maxLength": 40,
"title": "Area",
"description": "The city, region or country the figures are for, set over the headline as the page's kicker."
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "The page's headline, such as Munich house prices are climbing again."
},
"measure": {
"type": "string",
"maxLength": 48,
"title": "What it measures",
"description": "What the figures are, over the latest value, such as House price index, 2015 = 100 or Average price of a flat."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "Where the values are prices: their currency as a three-letter code, such as EUR. Leave it out for an index."
},
"unit": {
"type": "string",
"maxLength": 16,
"title": "Unit",
"description": "After the latest value, such as per m². Leave it out for an index or a price."
},
"points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 16,
"title": "Label",
"description": "The month or the quarter, such as Q3 2026 or Sep 2026."
},
"value": {
"type": "number",
"title": "Value",
"description": "The index or the price for that period, with the decimals your source gives."
}
},
"required": [
"label",
"value"
],
"additionalProperties": false,
"title": "Period"
},
"minItems": 2,
"maxItems": 24,
"title": "Periods",
"description": "Two to twenty-four months or quarters, oldest first, each with its value as your source gives it. They are drawn as one line, the latest value written large; the scale has no figures of its own."
},
"change": {
"type": "number",
"title": "Change",
"description": "The change over the whole period in percent, as your source gives it, such as 10.4 or -2.1. Drawn in your brand's up or down colour."
},
"changeLabel": {
"type": "string",
"maxLength": 32,
"title": "Change label",
"description": "What the change spans, beside it, such as since Q4 2023 or over two years."
},
"period": {
"type": "string",
"maxLength": 80,
"title": "Period",
"description": "What the figures are and the period they cover, under the chart on every frame, such as Quarterly, Q4 2023 to Q3 2026."
},
"source": {
"type": "string",
"maxLength": 120,
"title": "Source",
"description": "Where the figures come from, under the period on every frame, written as you want it read, with its label if you want one, such as Source: ..."
},
"comment": {
"type": "string",
"maxLength": 140,
"title": "Comment",
"description": "One line from the agent on what the figures mean, set as a pull quote at the end and signed by your presenter."
},
"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."
},
"licence": {
"type": "string",
"maxLength": 200,
"title": "Licence",
"description": "The agency's licence or registration line, as the law where you advertise asks for it, set in the imprint on every frame."
},
"disclosure": {
"type": "string",
"maxLength": 300,
"title": "Disclosure",
"description": "Any further statements, shown under the licence from the first frame to the last. A long one is set smaller, never cut."
},
"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, calm, square corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the issue line, the area, the headline, what the figures measure, every period with its value, the change, the period and the source, the comment, the call to action, the licence and the disclosure."
},
"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_7b86c0b39c0e?variant=House%20price%20index&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": {
"issue": {
"date": "Third quarter 2026",
"agency": "Albrecht Immobilien, Munich",
"section": "Market report"
},
"area": "Munich",
"headline": "Munich house prices are climbing again",
"measure": "House price index, 2015 = 100",
"currency": "",
"unit": "",
"points": [
{
"label": "Q4 2023",
"value": 158.2
},
{
"label": "Q1 2024",
"value": 156.9
},
{
"label": "Q2 2024",
"value": 157.6
},
{
"label": "Q3 2024",
"value": 159.8
},
{
"label": "Q4 2024",
"value": 161.3
},
{
"label": "Q1 2025",
"value": 163
},
{
"label": "Q2 2025",
"value": 165.4
},
{
"label": "Q3 2025",
"value": 166.1
},
{
"label": "Q4 2025",
"value": 168.7
},
{
"label": "Q1 2026",
"value": 170.2
},
{
"label": "Q2 2026",
"value": 172.9
},
{
"label": "Q3 2026",
"value": 174.6
}
],
"change": 10.4,
"changeLabel": "since Q4 2023",
"period": "Quarterly, Q4 2023 to Q3 2026, from homes sold in the city",
"source": "Source: Albrecht Immobilien house price index, from the city's recorded sales.",
"comment": "Ten quarters of steady growth: a good moment to find out what your home is worth today.",
"cta": {
"label": "Ask for a free valuation",
"detail": "+49 89 5550 1234"
},
"licence": "Albrecht Immobilien GmbH, licensed under section 34c GewO by the City of Munich.",
"disclosure": "Past price movements are no guide to future prices. The index covers the city as a whole.",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Munich house prices are climbing again",
"captionTiny": "Munich house prices are up 10.4% since Q4 2023: our index stands at 174.6, ten quarters of growth in a row.",
"captionShort": "Munich house prices are climbing again. Our house price index (2015 = 100) reached 174.6 in the third quarter of 2026, up 10.4% since the end of 2023 and rising for ten quarters in a row. Curious what your home is worth today? Ask us for a free valuation.",
"captionMedium": "Our quarterly market report: the Albrecht Immobilien house price index for Munich (2015 = 100) stands at 174.6 in the third quarter of 2026. After a dip at the start of 2024, when it fell to 156.9, prices have risen every quarter since, 10.4% in all since the fourth quarter of 2023. Demand for well-kept homes in good locations remains strong, and buyers are back. Thinking about selling, or simply curious what your home is worth today? Ask us for a free valuation.",
"captionLong": "Munich house prices are climbing again. The Albrecht Immobilien house price index, built from the homes sold in the city each quarter (2015 = 100), stands at 174.6 in the third quarter of 2026. It began the chart at 158.2 in the fourth quarter of 2023, dipped to 156.9 at the start of 2024 and has risen in every quarter since: 159.8 a year later, 166.1 in the third quarter of 2025 and now 174.6, up 10.4% over the period. Ten quarters of steady growth tell us buyers have adjusted to the new rates and that good homes in good locations sell quickly again. Past price movements are no guide to future prices, and any one home may differ from the city as a whole. If you are thinking about selling, now is a good moment to find out what your home is worth: ask us for a free valuation. Albrecht Immobilien GmbH, licensed under section 34c GewO.",
"hashtags": [
"marketreport",
"munich",
"housepriceindex",
"realestate",
"propertyprices"
]
}
}
}

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.