Skip to main content

Finance (Real estate), Property tour 1.0.0

TemplateFinance (Real estate), tpl_abd904ec6309
VariantProperty tour
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length23 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 walk through a home, room by room: the first room's photo with the status ribbon, the headline, the price, the address and the numbered rooms, complete on the first frame. Then each room fills the stage with its name, size and note on a caption, then the facts, the agent and the button. The brokerage and the disclosure stay on screen. Three seconds longer per room. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the status ribbon, the headline, the price, the address, the rooms with their photos, names, notes and sizes, the facts, the call to action, the brokerage and the disclosure.
clipData.statustextup to 24 charactersStatus ribbon: The words on the ribbon over the photos, such as Take the tour, Step inside or Just listed.
clipData.headlinetextup to 64 charactersHeadline: What the home is, in a few words, above the price on the first frame.
clipData.addresstextyesup to 80 charactersAddress: Where it is: the street and the town, or only the area if you prefer.
clipData.pricenumberfrom 0, 2 decimalsPrice: The asking price as a number, set large 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.roomslistyesat least 2, up to 8Rooms: The rooms of the tour in the order they are shown, the first one's photo the cover. Two to eight, each adding three seconds; each is numbered by its place in the list.
clipData.rooms[]groupRoom
clipData.rooms[].photoimageyesmedia:// file from the media library, alt text up to 120 charactersPhoto: A photo of the room, any shape, with its description as alt text. It fills the stage, cropped from its middle.
clipData.rooms[].nametextyesup to 32 charactersName: The room's name, such as Living room or Main bedroom.
clipData.rooms[].notetextup to 72 charactersNote: One line on what makes the room, under its name.
clipData.rooms[].sizetextup to 16 charactersSize: The room's size exactly as it should be shown, such as 28 m² or 14 x 16 ft.
clipData.factsgroupFacts: The figures of the facts row on the end card, 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.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 words on the ribbon over the photos, such as Take the tour, Step inside or Just listed."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What the home is, in a few words, above the price on the first frame."
},
"address": {
"type": "string",
"maxLength": 80,
"title": "Address",
"description": "Where it is: the street and the town, or only the area if you prefer."
},
"price": {
"type": "number",
"minimum": 0,
"title": "Price",
"description": "The asking price as a number, set large 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."
},
"rooms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"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 room, any shape, with its description as alt text. It fills the stage, cropped from its middle."
},
"name": {
"type": "string",
"maxLength": 32,
"title": "Name",
"description": "The room's name, such as Living room or Main bedroom."
},
"note": {
"type": "string",
"maxLength": 72,
"title": "Note",
"description": "One line on what makes the room, under its name."
},
"size": {
"type": "string",
"maxLength": 16,
"title": "Size",
"description": "The room's size exactly as it should be shown, such as 28 m² or 14 x 16 ft."
}
},
"required": [
"photo",
"name"
],
"additionalProperties": false,
"title": "Room"
},
"minItems": 2,
"maxItems": 8,
"title": "Rooms",
"description": "The rooms of the tour in the order they are shown, the first one's photo the cover. Two to eight, each adding three seconds; each is numbered by its place in the list."
},
"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 on the end card, 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."
},
"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",
"rooms",
"brokerage"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the status ribbon, the headline, the price, the address, the rooms with their photos, names, notes and sizes, the facts, 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 words on the ribbon over the photos, such as Take the tour, Step inside or Just listed."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What the home is, in a few words, above the price on the first frame."
},
"address": {
"type": "string",
"maxLength": 80,
"title": "Address",
"description": "Where it is: the street and the town, or only the area if you prefer."
},
"price": {
"type": "number",
"minimum": 0,
"title": "Price",
"description": "The asking price as a number, set large 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."
},
"rooms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"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 room, any shape, with its description as alt text. It fills the stage, cropped from its middle."
},
"name": {
"type": "string",
"maxLength": 32,
"title": "Name",
"description": "The room's name, such as Living room or Main bedroom."
},
"note": {
"type": "string",
"maxLength": 72,
"title": "Note",
"description": "One line on what makes the room, under its name."
},
"size": {
"type": "string",
"maxLength": 16,
"title": "Size",
"description": "The room's size exactly as it should be shown, such as 28 m² or 14 x 16 ft."
}
},
"required": [
"photo",
"name"
],
"additionalProperties": false,
"title": "Room"
},
"minItems": 2,
"maxItems": 8,
"title": "Rooms",
"description": "The rooms of the tour in the order they are shown, the first one's photo the cover. Two to eight, each adding three seconds; each is numbered by its place in the list."
},
"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 on the end card, 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."
},
"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 headline, the price, the address, the rooms with their photos, names, notes and sizes, the facts, 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=Property%20tour&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": "Take the tour",
"headline": "Inside a light-filled family home by the park",
"address": "12 Parkside Avenue, Larkspur Hill",
"price": 1250000,
"currency": "EUR",
"priceText": "",
"rooms": [
{
"name": "Living room",
"note": "A wall of glass onto the south-facing garden",
"size": "38 m²",
"photo": {
"alt": "Hills and a lake under a changing sky",
"url": "media://example-image-with-animation.svg"
}
},
{
"name": "Kitchen",
"note": "Built around an oak island under three pendant lights",
"size": "24 m²",
"photo": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
}
}
],
"facts": {
"area": 185,
"parking": 2,
"areaUnit": "m²",
"bedrooms": 4,
"bathrooms": 2.5
},
"factLabels": {
"area": "Living area",
"parking": "Parking",
"bedrooms": "Bedrooms",
"bathrooms": "Bathrooms"
},
"cta": {
"label": "Book a viewing",
"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": "Take the tour: inside a light-filled family home by the park",
"captionTiny": "Take the tour: living room, kitchen, main bedroom and garden at 12 Parkside Avenue, Larkspur Hill. Book a viewing.",
"captionShort": "Take the tour of 12 Parkside Avenue in Larkspur Hill, room by room: a living room with a wall of glass onto the garden, a kitchen built around an oak island and a main bedroom with its own bathroom. Four bedrooms, 185 m², asking 1,250,000 euros. Book your viewing today.",
"captionMedium": "Take the tour of 12 Parkside Avenue in Larkspur Hill, room by room. The living room opens through a wall of glass onto the south-facing garden, the kitchen is built around an oak island under three pendant lights, and the main bedroom has its own bathroom and a view over the park. Four bedrooms, two and a half bathrooms, 185 m² of living space and parking for two. Asking 1,250,000 euros. Like what you see? Message Sophie Laurent to book a viewing. Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"captionLong": "Take the tour of 12 Parkside Avenue in Larkspur Hill, room by room, before you visit. Step into the living room, 38 m² with a wall of glass that opens onto the south-facing garden and terrace. The kitchen is built around a solid oak island under three pendant lights, with room for the whole family at breakfast. Upstairs, the main bedroom has its own bathroom with a freestanding bath and a view over the park, and three more bedrooms share a family bathroom. Outside, the garden runs down to a timber terrace made for summer evenings. Four bedrooms, two and a half bathrooms, 185 m² of living space and parking for two, a short walk to the park, the schools and the station. Asking 1,250,000 euros. Viewings are by appointment: message Sophie Laurent, our listing agent, to book yours or to ask for the floor plan. Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"hashtags": [
"propertytour",
"hometour",
"realestate",
"justlisted",
"househunting"
]
}
}
}

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.