Real estate (Estate agents and realtors), Energy certificate 1.0.0
| Template | Real estate (Estate agents and realtors), tpl_7b86c0b39c0e |
|---|---|
| Variant | Energy certificate |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 23 seconds |
Example video
The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.
What it accepts
What a home's energy class means, as a magazine page: the headline and the scale with the home's class marked, complete on the first frame; then the home's page (photo, class, energy figure, certificate, energy source, year built); then up to three numbered tips, the agent's byline and the button. The licence stays on screen. Three seconds longer per tip. metaData is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the issue line, the home, the headline and standfirst, the scale with its ranges and note, the home's class and figures, the photo, the tips, the call to action, the licence and the disclosure. | |
clipData.issue | group | Issue 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.section | text | up to 28 characters | Section: The name of the feature, set in your brand colour, such as Energy explained. | |
clipData.issue.date | text | up to 32 characters | Date: The date or the week, written as you want it read, such as 15 October 2026. | |
clipData.issue.agency | text | up to 44 characters | Office: The agency or the office, such as Albrecht Immobilien, Schwabing. | |
clipData.home | text | up to 40 characters | Home: Which home the certificate belongs to, such as The loft in Haidhausen, set over the headline. | |
clipData.headline | text | yes | up to 72 characters | Headline: The feature's headline, such as What energy class B means for this home. |
clipData.standfirst | text | up to 160 characters | Standfirst: A line or two under the headline, the way a magazine introduces a feature. | |
clipData.photo | image | media:// file from the media library, alt text up to 120 characters | Photo: A photo of the home, any shape, with its description as alt text. Left out, its figures take the whole page. | |
clipData.energyClass | text | yes | up to 3 characters | Energy class: The home's class or rating from its energy certificate, such as B or A+ (EPC rating in the United Kingdom), written as on the scale below so it can be marked there, up to three characters. |
clipData.energyScale | list | yes | at least 2, up to 12 | Energy scale: Your market's energy classes from best to worst, such as A+ to H in Germany or A to G in the United Kingdom, each with its range if you like. They are drawn as an energy label draws them, coloured from your brand's up colour to its down colour, the home's class marked. |
clipData.energyScale[] | group | Class | ||
clipData.energyScale[].class | text | yes | up to 3 characters | Class: The class as the certificate writes it, such as A+ or C, up to three characters. |
clipData.energyScale[].range | text | up to 16 characters | Range: The figures the class stands for, such as under 30 or 30 to 50, in the unit below. | |
clipData.scaleNote | text | up to 90 characters | About the scale: A line under the scale, such as what its figures measure and in which unit. | |
clipData.certificate | text | yes | up to 32 characters | Certificate: The kind of energy certificate, such as Demand certificate or Consumption certificate. Required in German adverts. |
clipData.energyValue | number | yes | from 0, 1 decimals | Energy figure: The energy demand or consumption from the certificate, in the unit below. Required in German adverts. |
clipData.energyUnit | text | yes | up to 16 characters | Energy unit: The unit after the energy figure, such as kWh/(m²·a). |
clipData.energySource | text | yes | up to 32 characters | Energy source: The main energy source for heating, such as Gas, Heat pump or District heating. Required in German adverts. |
clipData.built | integer | yes | from 1000, to 2100 | Year built: The year of construction. Required in German adverts. |
clipData.labels | group | Labels: The words beside the figures, in your language. A label left out is not drawn. | ||
clipData.labels.energy | text | up to 24 characters | Energy class: Over the class, such as Energy class or EPC rating. | |
clipData.labels.value | text | up to 24 characters | Energy figure: Over the figure, such as Energy demand or Energy consumption. | |
clipData.labels.certificate | text | up to 24 characters | Certificate: Beside the kind of certificate, such as Certificate. | |
clipData.labels.source | text | up to 24 characters | Energy source: Beside the energy source, such as Heating. | |
clipData.labels.built | text | up to 24 characters | Year built: Beside the year of construction, such as Year built. | |
clipData.facts | list | up to 3 | Tips and facts: Up to three tips or facts about the certificate or the home's energy, each numbered on a page of its own. Write only what is true of the home and of the law where you advertise. | |
clipData.facts[] | group | Tip or fact | ||
clipData.facts[].title | text | yes | up to 40 characters | Title: A few words, such as What the figure measures. |
clipData.facts[].text | text | yes | up to 160 characters | Text: The tip or the fact in a sentence or two. |
clipData.cta | group | Call 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.label | text | yes | up to 28 characters | Button: What the button says. |
clipData.cta.detail | text | up to 48 characters | Line under it: An address, a handle, an app, a phone number. | |
clipData.licence | text | yes | up to 200 characters | Licence: The agency's licence or registration line, as the law where you advertise asks for it, set in the imprint on every frame. |
clipData.disclosure | text | up to 300 characters | Disclosure: Any further statements, shown under the licence from the first frame to the last. A long one is set smaller, never cut. | |
clipData.look | group | Look: 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.theme | enum | brand, light, dark, bold | Theme: 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.pace | enum | calm, standard, punchy | Pace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts. | |
clipData.look.corners | enum | square, soft, round | Corners: The shape of cards, pictures and buttons. | |
clipData.look.align | enum | start, centre | Text alignment: Where the text lines up. | |
clipData.look.logo | enum | auto, free | Logo: 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.logoSize | enum | auto, small, large | Logo 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. | |
metaData | group | Meta 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.title | text | up to 100 characters | Title: 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.captionTiny | text | up to 200 characters | Tiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionShort | text | up to 500 characters | Short description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionMedium | text | up to 1500 characters | Medium 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.captionLong | text | up to 4000 characters | Long description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.hashtags | list | up to 15 | Hashtags: Written without the #. Up to 15, which every platform takes. | |
metaData.hashtags[] | text | up to 60 characters | Hashtag |
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 Energy explained."
},
"date": {
"type": "string",
"maxLength": 32,
"title": "Date",
"description": "The date or the week, written as you want it read, such as 15 October 2026."
},
"agency": {
"type": "string",
"maxLength": 44,
"title": "Office",
"description": "The agency or the office, such as Albrecht Immobilien, Schwabing."
}
},
"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."
},
"home": {
"type": "string",
"maxLength": 40,
"title": "Home",
"description": "Which home the certificate belongs to, such as The loft in Haidhausen, set over the headline."
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "The feature's headline, such as What energy class B means for this home."
},
"standfirst": {
"type": "string",
"maxLength": 160,
"title": "Standfirst",
"description": "A line or two under the headline, the way a magazine introduces a feature."
},
"photo": {
"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": "Photo",
"description": "A photo of the home, any shape, with its description as alt text. Left out, its figures take the whole page."
},
"energyClass": {
"type": "string",
"maxLength": 3,
"title": "Energy class",
"description": "The home's class or rating from its energy certificate, such as B or A+ (EPC rating in the United Kingdom), written as on the scale below so it can be marked there, up to three characters."
},
"energyScale": {
"type": "array",
"items": {
"type": "object",
"properties": {
"class": {
"type": "string",
"maxLength": 3,
"title": "Class",
"description": "The class as the certificate writes it, such as A+ or C, up to three characters."
},
"range": {
"type": "string",
"maxLength": 16,
"title": "Range",
"description": "The figures the class stands for, such as under 30 or 30 to 50, in the unit below."
}
},
"required": [
"class"
],
"additionalProperties": false,
"title": "Class"
},
"minItems": 2,
"maxItems": 12,
"title": "Energy scale",
"description": "Your market's energy classes from best to worst, such as A+ to H in Germany or A to G in the United Kingdom, each with its range if you like. They are drawn as an energy label draws them, coloured from your brand's up colour to its down colour, the home's class marked."
},
"scaleNote": {
"type": "string",
"maxLength": 90,
"title": "About the scale",
"description": "A line under the scale, such as what its figures measure and in which unit."
},
"certificate": {
"type": "string",
"maxLength": 32,
"title": "Certificate",
"description": "The kind of energy certificate, such as Demand certificate or Consumption certificate. Required in German adverts."
},
"energyValue": {
"type": "number",
"minimum": 0,
"title": "Energy figure",
"description": "The energy demand or consumption from the certificate, in the unit below. Required in German adverts."
},
"energyUnit": {
"type": "string",
"maxLength": 16,
"title": "Energy unit",
"description": "The unit after the energy figure, such as kWh/(m²·a)."
},
"energySource": {
"type": "string",
"maxLength": 32,
"title": "Energy source",
"description": "The main energy source for heating, such as Gas, Heat pump or District heating. Required in German adverts."
},
"built": {
"type": "integer",
"minimum": 1000,
"maximum": 2100,
"title": "Year built",
"description": "The year of construction. Required in German adverts."
},
"labels": {
"type": "object",
"properties": {
"energy": {
"type": "string",
"maxLength": 24,
"title": "Energy class",
"description": "Over the class, such as Energy class or EPC rating."
},
"value": {
"type": "string",
"maxLength": 24,
"title": "Energy figure",
"description": "Over the figure, such as Energy demand or Energy consumption."
},
"certificate": {
"type": "string",
"maxLength": 24,
"title": "Certificate",
"description": "Beside the kind of certificate, such as Certificate."
},
"source": {
"type": "string",
"maxLength": 24,
"title": "Energy source",
"description": "Beside the energy source, such as Heating."
},
"built": {
"type": "string",
"maxLength": 24,
"title": "Year built",
"description": "Beside the year of construction, such as Year built."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words beside the figures, in your language. A label left out is not drawn."
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 40,
"title": "Title",
"description": "A few words, such as What the figure measures."
},
"text": {
"type": "string",
"maxLength": 160,
"title": "Text",
"description": "The tip or the fact in a sentence or two."
}
},
"required": [
"title",
"text"
],
"additionalProperties": false,
"title": "Tip or fact"
},
"maxItems": 3,
"title": "Tips and facts",
"description": "Up to three tips or facts about the certificate or the home's energy, each numbered on a page of its own. Write only what is true of the home and of the law where you advertise."
},
"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": [
"headline",
"energyClass",
"energyScale",
"certificate",
"energyValue",
"energyUnit",
"energySource",
"built",
"licence"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the issue line, the home, the headline and standfirst, the scale with its ranges and note, the home's class and figures, the photo, the tips, 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 Energy explained."
},
"date": {
"type": "string",
"maxLength": 32,
"title": "Date",
"description": "The date or the week, written as you want it read, such as 15 October 2026."
},
"agency": {
"type": "string",
"maxLength": 44,
"title": "Office",
"description": "The agency or the office, such as Albrecht Immobilien, Schwabing."
}
},
"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."
},
"home": {
"type": "string",
"maxLength": 40,
"title": "Home",
"description": "Which home the certificate belongs to, such as The loft in Haidhausen, set over the headline."
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "The feature's headline, such as What energy class B means for this home."
},
"standfirst": {
"type": "string",
"maxLength": 160,
"title": "Standfirst",
"description": "A line or two under the headline, the way a magazine introduces a feature."
},
"photo": {
"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": "Photo",
"description": "A photo of the home, any shape, with its description as alt text. Left out, its figures take the whole page."
},
"energyClass": {
"type": "string",
"maxLength": 3,
"title": "Energy class",
"description": "The home's class or rating from its energy certificate, such as B or A+ (EPC rating in the United Kingdom), written as on the scale below so it can be marked there, up to three characters."
},
"energyScale": {
"type": "array",
"items": {
"type": "object",
"properties": {
"class": {
"type": "string",
"maxLength": 3,
"title": "Class",
"description": "The class as the certificate writes it, such as A+ or C, up to three characters."
},
"range": {
"type": "string",
"maxLength": 16,
"title": "Range",
"description": "The figures the class stands for, such as under 30 or 30 to 50, in the unit below."
}
},
"required": [
"class"
],
"additionalProperties": false,
"title": "Class"
},
"minItems": 2,
"maxItems": 12,
"title": "Energy scale",
"description": "Your market's energy classes from best to worst, such as A+ to H in Germany or A to G in the United Kingdom, each with its range if you like. They are drawn as an energy label draws them, coloured from your brand's up colour to its down colour, the home's class marked."
},
"scaleNote": {
"type": "string",
"maxLength": 90,
"title": "About the scale",
"description": "A line under the scale, such as what its figures measure and in which unit."
},
"certificate": {
"type": "string",
"maxLength": 32,
"title": "Certificate",
"description": "The kind of energy certificate, such as Demand certificate or Consumption certificate. Required in German adverts."
},
"energyValue": {
"type": "number",
"minimum": 0,
"title": "Energy figure",
"description": "The energy demand or consumption from the certificate, in the unit below. Required in German adverts."
},
"energyUnit": {
"type": "string",
"maxLength": 16,
"title": "Energy unit",
"description": "The unit after the energy figure, such as kWh/(m²·a)."
},
"energySource": {
"type": "string",
"maxLength": 32,
"title": "Energy source",
"description": "The main energy source for heating, such as Gas, Heat pump or District heating. Required in German adverts."
},
"built": {
"type": "integer",
"minimum": 1000,
"maximum": 2100,
"title": "Year built",
"description": "The year of construction. Required in German adverts."
},
"labels": {
"type": "object",
"properties": {
"energy": {
"type": "string",
"maxLength": 24,
"title": "Energy class",
"description": "Over the class, such as Energy class or EPC rating."
},
"value": {
"type": "string",
"maxLength": 24,
"title": "Energy figure",
"description": "Over the figure, such as Energy demand or Energy consumption."
},
"certificate": {
"type": "string",
"maxLength": 24,
"title": "Certificate",
"description": "Beside the kind of certificate, such as Certificate."
},
"source": {
"type": "string",
"maxLength": 24,
"title": "Energy source",
"description": "Beside the energy source, such as Heating."
},
"built": {
"type": "string",
"maxLength": 24,
"title": "Year built",
"description": "Beside the year of construction, such as Year built."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words beside the figures, in your language. A label left out is not drawn."
},
"facts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 40,
"title": "Title",
"description": "A few words, such as What the figure measures."
},
"text": {
"type": "string",
"maxLength": 160,
"title": "Text",
"description": "The tip or the fact in a sentence or two."
}
},
"required": [
"title",
"text"
],
"additionalProperties": false,
"title": "Tip or fact"
},
"maxItems": 3,
"title": "Tips and facts",
"description": "Up to three tips or facts about the certificate or the home's energy, each numbered on a page of its own. Write only what is true of the home and of the law where you advertise."
},
"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 home, the headline and standfirst, the scale with its ranges and note, the home's class and figures, the photo, the tips, 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=Energy%20certificate&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": "15 October 2026",
"agency": "Albrecht Immobilien, Schwabing",
"section": "Energy explained"
},
"home": "The loft in Haidhausen",
"headline": "What energy class B means for this home",
"standfirst": "Every advert for this home carries its energy certificate. Here is what its class and its figures tell you before you view it.",
"photo": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
},
"energyClass": "B",
"energyScale": [
{
"class": "A+",
"range": "under 30"
},
{
"class": "A",
"range": "30 to 50"
},
{
"class": "B",
"range": "50 to 75"
},
{
"class": "C",
"range": "75 to 100"
},
{
"class": "D",
"range": "100 to 130"
},
{
"class": "E",
"range": "130 to 160"
},
{
"class": "F",
"range": "160 to 200"
},
{
"class": "G",
"range": "200 to 250"
},
{
"class": "H",
"range": "over 250"
}
],
"scaleNote": "Final energy demand in kWh per square metre and year, from the best class to the worst.",
"certificate": "Demand certificate",
"energyValue": 58,
"energyUnit": "kWh/(m²·a)",
"energySource": "Gas",
"built": 2014,
"labels": {
"built": "Year built",
"value": "Energy demand",
"energy": "Energy class",
"source": "Energy source",
"certificate": "Certificate"
},
"facts": [
{
"text": "The energy the home needs for heating and hot water in a year, for every square metre of living space. The lower, the better.",
"title": "What the figure measures"
},
{
"text": "A demand certificate is calculated from the building itself; a consumption certificate from three years of the residents' bills.",
"title": "Demand or consumption"
},
{
"text": "A home in class B needs at most 75 kWh per square metre a year. One in class F needs between 160 and 200.",
"title": "Where class B stands"
}
],
"cta": {
"label": "Book a viewing",
"detail": "+49 89 5550 1234"
},
"licence": "Albrecht Immobilien GmbH, licensed under section 34c GewO by the City of Munich.",
"disclosure": "Figures from the home's energy certificate, valid until 2034. Ranges as in the Buildings Energy Act.",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Energy class B: what this home's certificate tells you",
"captionTiny": "Energy class B: what the loft in Haidhausen's certificate tells you, from the scale to its 58 kWh/(m²·a). Book a viewing.",
"captionShort": "What does energy class B mean? The loft in Haidhausen needs 58 kWh per square metre a year (demand certificate, gas, built 2014). Here is where that stands on the scale from A+ to H, and what the figures mean before you view it.",
"captionMedium": "Every advert for a home in Germany carries its energy certificate, and the figures tell you more than the letter. The loft in Haidhausen is class B: a demand certificate puts it at 58 kWh per square metre and year, heated by gas, built in 2014. On the scale from A+ to H that is near the top: class B is anything up to 75 kWh, class F between 160 and 200. Three things to know about the certificate are in the clip. Call us to book a viewing.",
"captionLong": "Every advert for a home in Germany carries its energy certificate: the kind of certificate, the energy demand or consumption, the main energy source, the year of construction and the energy class. The loft in Haidhausen is class B. Its demand certificate, calculated from the building itself, puts it at 58 kWh per square metre and year, heated by gas, built in 2014. On the scale from A+ to H that is near the top: class B is anything up to 75 kWh, class F between 160 and 200. A consumption certificate would have been worked out from three years of the residents' bills instead. Questions about the certificate or the loft? Call us to book a viewing. Albrecht Immobilien GmbH, licensed under section 34c GewO.",
"hashtags": [
"energycertificate",
"realestate",
"munich",
"energyefficiency",
"property"
]
}
}
}
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.