Skip to main content

Finance (Real estate), Open house 1.0.0

TemplateFinance (Real estate), tpl_abd904ec6309
VariantOpen house
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length21 seconds

Example video​

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

What it accepts​

An invitation to a viewing: the photo with the status ribbon, the date and time large on a card, the headline, the price, the address and the facts, complete on the first frame. Then each photo in turn, then the date again with the address, the directions, the agent and the button. The brokerage and the disclosure stay throughout. About three seconds longer per photo. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the status ribbon, the date and time, the headline, the price, the address, the facts, the photos, the directions, the call to action, the brokerage and the disclosure.
clipData.statustextup to 24 charactersStatus ribbon: The occasion, on the ribbon over the photos, such as Open house, Open day or Viewing day.
clipData.headlinetextup to 64 charactersHeadline: What makes the home worth the visit, in a few words, under the date.
clipData.addresstextyesup to 80 charactersAddress: Where it is: the street and the town, or only the area if you prefer.
clipData.datetextup to 32 charactersDate: The day of the open house, written the way you want it shown, such as Saturday 18 October.
clipData.timetextup to 24 charactersTime: When the doors are open, written the way you want it shown, such as 11:00 to 13:00.
clipData.pricenumberfrom 0, 2 decimalsPrice: The asking price as a number, set the way your language writes it, in the currency below. Leave it out to show the price in words instead.
clipData.currencytextup to 3 charactersCurrency: The price's currency as a three-letter code, such as EUR, GBP or USD.
clipData.priceTexttextup to 32 charactersPrice in words: Shown as written where no price is sent, such as Price on application or Offers over 950,000.
clipData.factsgroupFacts: The figures of the facts row, each with its icon. A figure left out is not drawn.
clipData.facts.bedroomsintegerfrom 0, to 999Bedrooms: How many bedrooms.
clipData.facts.bathroomsnumberfrom 0, 1 decimalsBathrooms: How many bathrooms, halves allowed, such as 2.5.
clipData.facts.areanumberfrom 0, 2 decimalsArea: The living area, as a number.
clipData.facts.areaUnittextup to 8 charactersArea unit: The unit after the area, such as m² or sq ft.
clipData.facts.parkingintegerfrom 0, to 999Parking: How many parking spaces or garages.
clipData.factLabelsgroupFact labels: The word under each figure of the facts row, in your language. A label left out is not drawn; the icon still says which is which.
clipData.factLabels.bedroomstextup to 16 charactersBedrooms: Under the bedrooms.
clipData.factLabels.bathroomstextup to 16 charactersBathrooms: Under the bathrooms.
clipData.factLabels.areatextup to 16 charactersArea: Under the area.
clipData.factLabels.parkingtextup to 16 charactersParking: Under the parking.
clipData.photoslistyesat least 1, up to 6Photos: The home's photos in the order they are shown, the first the cover. One to six, each adding about three seconds.
clipData.photos[]imagemedia:// file from the media library, alt text up to 120 charactersPhoto: A photo of the home, any shape, with its description as alt text.
clipData.directionstextup to 80 charactersDirections: How to find it or where to park, shown under the address at the end, such as Parking on Elm Road, signs from the station.
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.brokeragetextyesup to 60 charactersBrokerage: Your licensed brokerage name, set prominently in the header on every frame.
clipData.disclosuretextup to 300 charactersDisclosure: The licence and the statements the law asks for, shown above your footer line 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, softly rounded, 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": {
"status": {
"type": "string",
"maxLength": 24,
"title": "Status ribbon",
"description": "The occasion, on the ribbon over the photos, such as Open house, Open day or Viewing day."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What makes the home worth the visit, in a few words, under the date."
},
"address": {
"type": "string",
"maxLength": 80,
"title": "Address",
"description": "Where it is: the street and the town, or only the area if you prefer."
},
"date": {
"type": "string",
"maxLength": 32,
"title": "Date",
"description": "The day of the open house, written the way you want it shown, such as Saturday 18 October."
},
"time": {
"type": "string",
"maxLength": 24,
"title": "Time",
"description": "When the doors are open, written the way you want it shown, such as 11:00 to 13:00."
},
"price": {
"type": "number",
"minimum": 0,
"title": "Price",
"description": "The asking price as a number, set the way your language writes it, in the currency below. Leave it out to show the price in words instead."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The price's currency as a three-letter code, such as EUR, GBP or USD."
},
"priceText": {
"type": "string",
"maxLength": 32,
"title": "Price in words",
"description": "Shown as written where no price is sent, such as Price on application or Offers over 950,000."
},
"facts": {
"type": "object",
"properties": {
"bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 999,
"title": "Bedrooms",
"description": "How many bedrooms."
},
"bathrooms": {
"type": "number",
"minimum": 0,
"title": "Bathrooms",
"description": "How many bathrooms, halves allowed, such as 2.5."
},
"area": {
"type": "number",
"minimum": 0,
"title": "Area",
"description": "The living area, as a number."
},
"areaUnit": {
"type": "string",
"maxLength": 8,
"title": "Area unit",
"description": "The unit after the area, such as m² or sq ft."
},
"parking": {
"type": "integer",
"minimum": 0,
"maximum": 999,
"title": "Parking",
"description": "How many parking spaces or garages."
}
},
"additionalProperties": false,
"title": "Facts",
"description": "The figures of the facts row, each with its icon. A figure left out is not drawn."
},
"factLabels": {
"type": "object",
"properties": {
"bedrooms": {
"type": "string",
"maxLength": 16,
"title": "Bedrooms",
"description": "Under the bedrooms."
},
"bathrooms": {
"type": "string",
"maxLength": 16,
"title": "Bathrooms",
"description": "Under the bathrooms."
},
"area": {
"type": "string",
"maxLength": 16,
"title": "Area",
"description": "Under the area."
},
"parking": {
"type": "string",
"maxLength": 16,
"title": "Parking",
"description": "Under the parking."
}
},
"additionalProperties": false,
"title": "Fact labels",
"description": "The word under each figure of the facts row, in your language. A label left out is not drawn; the icon still says which is which."
},
"photos": {
"type": "array",
"items": {
"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."
},
"minItems": 1,
"maxItems": 6,
"title": "Photos",
"description": "The home's photos in the order they are shown, the first the cover. One to six, each adding about three seconds."
},
"directions": {
"type": "string",
"maxLength": 80,
"title": "Directions",
"description": "How to find it or where to park, shown under the address at the end, such as Parking on Elm Road, signs from the station."
},
"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."
},
"brokerage": {
"type": "string",
"maxLength": 60,
"title": "Brokerage",
"description": "Your licensed brokerage name, set prominently in the header on every frame."
},
"disclosure": {
"type": "string",
"maxLength": 300,
"title": "Disclosure",
"description": "The licence and the statements the law asks for, shown above your footer line 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, softly rounded, text at the start."
}
},
"required": [
"address",
"photos",
"brokerage"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the status ribbon, the date and time, the headline, the price, the address, the facts, the photos, the directions, the call to action, the brokerage 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": {
"status": {
"type": "string",
"maxLength": 24,
"title": "Status ribbon",
"description": "The occasion, on the ribbon over the photos, such as Open house, Open day or Viewing day."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What makes the home worth the visit, in a few words, under the date."
},
"address": {
"type": "string",
"maxLength": 80,
"title": "Address",
"description": "Where it is: the street and the town, or only the area if you prefer."
},
"date": {
"type": "string",
"maxLength": 32,
"title": "Date",
"description": "The day of the open house, written the way you want it shown, such as Saturday 18 October."
},
"time": {
"type": "string",
"maxLength": 24,
"title": "Time",
"description": "When the doors are open, written the way you want it shown, such as 11:00 to 13:00."
},
"price": {
"type": "number",
"minimum": 0,
"title": "Price",
"description": "The asking price as a number, set the way your language writes it, in the currency below. Leave it out to show the price in words instead."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The price's currency as a three-letter code, such as EUR, GBP or USD."
},
"priceText": {
"type": "string",
"maxLength": 32,
"title": "Price in words",
"description": "Shown as written where no price is sent, such as Price on application or Offers over 950,000."
},
"facts": {
"type": "object",
"properties": {
"bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 999,
"title": "Bedrooms",
"description": "How many bedrooms."
},
"bathrooms": {
"type": "number",
"minimum": 0,
"title": "Bathrooms",
"description": "How many bathrooms, halves allowed, such as 2.5."
},
"area": {
"type": "number",
"minimum": 0,
"title": "Area",
"description": "The living area, as a number."
},
"areaUnit": {
"type": "string",
"maxLength": 8,
"title": "Area unit",
"description": "The unit after the area, such as m² or sq ft."
},
"parking": {
"type": "integer",
"minimum": 0,
"maximum": 999,
"title": "Parking",
"description": "How many parking spaces or garages."
}
},
"additionalProperties": false,
"title": "Facts",
"description": "The figures of the facts row, each with its icon. A figure left out is not drawn."
},
"factLabels": {
"type": "object",
"properties": {
"bedrooms": {
"type": "string",
"maxLength": 16,
"title": "Bedrooms",
"description": "Under the bedrooms."
},
"bathrooms": {
"type": "string",
"maxLength": 16,
"title": "Bathrooms",
"description": "Under the bathrooms."
},
"area": {
"type": "string",
"maxLength": 16,
"title": "Area",
"description": "Under the area."
},
"parking": {
"type": "string",
"maxLength": 16,
"title": "Parking",
"description": "Under the parking."
}
},
"additionalProperties": false,
"title": "Fact labels",
"description": "The word under each figure of the facts row, in your language. A label left out is not drawn; the icon still says which is which."
},
"photos": {
"type": "array",
"items": {
"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."
},
"minItems": 1,
"maxItems": 6,
"title": "Photos",
"description": "The home's photos in the order they are shown, the first the cover. One to six, each adding about three seconds."
},
"directions": {
"type": "string",
"maxLength": 80,
"title": "Directions",
"description": "How to find it or where to park, shown under the address at the end, such as Parking on Elm Road, signs from the station."
},
"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."
},
"brokerage": {
"type": "string",
"maxLength": 60,
"title": "Brokerage",
"description": "Your licensed brokerage name, set prominently in the header on every frame."
},
"disclosure": {
"type": "string",
"maxLength": 300,
"title": "Disclosure",
"description": "The licence and the statements the law asks for, shown above your footer line 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, softly rounded, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the status ribbon, the date and time, the headline, the price, the address, the facts, the photos, the directions, the call to action, the brokerage 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_abd904ec6309?variant=Open%20house&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": {
"status": "Open house",
"headline": "Step inside a sunny family home by the park",
"address": "12 Parkside Avenue, Larkspur Hill",
"date": "Saturday 18 October",
"time": "11:00 to 13:00",
"price": 1250000,
"currency": "EUR",
"priceText": "",
"facts": {
"area": 185,
"parking": 2,
"areaUnit": "m²",
"bedrooms": 4,
"bathrooms": 2.5
},
"factLabels": {
"area": "Living area",
"parking": "Parking",
"bedrooms": "Bedrooms",
"bathrooms": "Bathrooms"
},
"photos": [
{
"alt": "Hills and a lake under a changing sky",
"url": "media://example-image-with-animation.svg"
},
{
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
}
],
"directions": "Parking on Elm Road, signs from the station",
"cta": {
"label": "Register to attend",
"detail": "+44 20 7946 0321"
},
"brokerage": "Larkspur Realty Ltd",
"disclosure": "Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "soft",
"logoSize": "auto"
}
},
"metaData": {
"title": "Open house on Saturday 18 October: 12 Parkside Avenue, Larkspur Hill",
"captionTiny": "Open house this Saturday, 11:00 to 13:00: 4 bedrooms, 2.5 bathrooms, 185 m² by the park in Larkspur Hill. Register to attend.",
"captionShort": "Open house this Saturday 18 October, 11:00 to 13:00, at 12 Parkside Avenue, Larkspur Hill. Come and see a light-filled family home by the park: four bedrooms, two and a half bathrooms, 185 m² and a south-facing garden. Asking 1,250,000 euros. Parking on Elm Road. Register to attend.",
"captionMedium": "Open house this Saturday 18 October, 11:00 to 13:00, at 12 Parkside Avenue, Larkspur Hill. Step inside a light-filled family home by the park: four bedrooms, two and a half bathrooms and 185 m² of living space over two floors, with an open-plan kitchen and living room that opens onto a south-facing garden and terrace. Asking 1,250,000 euros. Parking is on Elm Road, with signs from the station. Register to attend and Sophie Laurent will meet you at the door. Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"captionLong": "Open house this Saturday 18 October, 11:00 to 13:00, at 12 Parkside Avenue, Larkspur Hill. Step inside a light-filled family home by the park: four bedrooms, two and a half bathrooms and 185 m² of living space over two floors. The open-plan kitchen and living room run the full depth of the house and open through a wall of glass onto a south-facing garden and terrace. Upstairs, the main bedroom has its own bathroom and a view over the park. Asking 1,250,000 euros. There is no need to book, but registering helps us keep the house calm for everybody: register to attend and Sophie Laurent, our listing agent, will meet you at the door with the floor plan. Parking is on Elm Road, with signs from the station, a six-minute walk away. Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"hashtags": [
"openhouse",
"realestate",
"househunting",
"familyhome",
"openhome"
]
}
}
}

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.