Retail, Store information 1.0.0
| Template | Retail, tpl_5bbd0ae3e79a |
|---|---|
| Variant | Store information |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 15 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 store's information: a headline, the opening hours in one to seven rows, up to four holiday exceptions, the address and how to get there, up to eight services with icons, a storefront picture and a call to action such as directions. metaData is the post's title, descriptions and hashtags and is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the store, its opening hours and holiday exceptions, its services, where it is and the call to action. | |
clipData.kicker | text | up to 32 characters | Kicker: A short line above the headline, such as the store's name or town. | |
clipData.headline | text | yes | up to 60 characters | Headline: What to know about the store, in a sentence. |
clipData.picture | image | media:// file from the media library, alt text up to 120 characters | Picture: The storefront, or the store inside; any shape. Without one, the hours lead. | |
clipData.hoursTitle | text | up to 32 characters | Hours title: A heading over the opening hours, such as Opening hours. | |
clipData.hours | list | yes | at least 1, up to 7 | Opening hours: One to seven rows, each a day or a run of days and the hours as they should be read; write Closed where it is. |
clipData.hours[] | group | Row | ||
clipData.hours[].days | text | yes | up to 24 characters | Days: A day or a run of days, such as Monday to Friday. |
clipData.hours[].hours | text | yes | up to 24 characters | Hours: The hours, such as 7:00 to 22:00, or Closed. |
clipData.hours[].note | text | up to 16 characters | Note: A short tag on the row, such as Late night. | |
clipData.exceptionsTitle | text | up to 32 characters | Exceptions title: A heading over the exceptions, such as Holiday opening. | |
clipData.exceptions | list | at least 0, up to 4 | Exceptions: Up to four days that differ, such as public holidays. Left out, the clip goes from the hours to the services. | |
clipData.exceptions[] | group | Exception | ||
clipData.exceptions[].date | text | yes | up to 28 characters | Date: The day, as it should be read. |
clipData.exceptions[].hours | text | yes | up to 24 characters | Hours: The hours that day, or Closed. |
clipData.place | text | up to 80 characters | Address: The store's address. | |
clipData.placeNote | text | up to 70 characters | Getting there: How to get there, such as parking or the bus stop. | |
clipData.phone | text | up to 24 characters | Phone: A phone number, as it should be read. | |
clipData.servicesTitle | text | up to 32 characters | Services title: A heading over the services, such as In store. | |
clipData.services | list | at least 0, up to 8 | Services: Up to eight services, each an icon and a few words. | |
clipData.services[] | group | Service | ||
clipData.services[].icon | enum | check, circle-check, x, arrow-right, arrow-up-right, plus, star, heart, thumbs-up, sparkles, zap, clock, calendar, map-pin, info, triangle-alert, lightbulb, target, award, crown, gem, flame, timer, list-checks, clipboard-check, badge-check, hand-heart, rocket, trophy, megaphone, bell, qr-code, ticket, gift, key-round, book-open, graduation-cap, house, phone, mail, globe, users, user, shopping-cart, shopping-bag, tag, truck, store, apple, coffee, croissant, carrot, fish, wine, pizza, utensils, baby, shirt, scissors, package, circle-percent, sprout, cake-slice | Icon: A line icon for the service. | |
clipData.services[].label | text | yes | up to 28 characters | Service: The service, in a few words. |
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, a phone number. | |
clipData.disclaimer | text | up to 120 characters | Small print: A note that must be shown with the information. | |
clipData.look | group | Look: How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default. | ||
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.hero | enum | framed, full | Picture: Framed: the picture in a frame beside or above the words. Full: the picture fills the clip behind them. | |
clipData.look.showMap | boolean | Show the map: A drawn street plan at the end with a pin dropping on the store; off, the address and the call to action alone. | ||
clipData.look.logo | enum | auto, free | Logo: The style's own: the logo on the style's plate (a card, a disc, a badge) 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. | |
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 422 that
names the field.
The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A short line above the headline, such as the store's name or town."
},
"headline": {
"type": "string",
"maxLength": 60,
"title": "Headline",
"description": "What to know about the store, in a sentence."
},
"picture": {
"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": "Picture",
"description": "The storefront, or the store inside; any shape. Without one, the hours lead."
},
"hoursTitle": {
"type": "string",
"maxLength": 32,
"title": "Hours title",
"description": "A heading over the opening hours, such as Opening hours."
},
"hours": {
"type": "array",
"items": {
"type": "object",
"properties": {
"days": {
"type": "string",
"maxLength": 24,
"title": "Days",
"description": "A day or a run of days, such as Monday to Friday."
},
"hours": {
"type": "string",
"maxLength": 24,
"title": "Hours",
"description": "The hours, such as 7:00 to 22:00, or Closed."
},
"note": {
"type": "string",
"maxLength": 16,
"title": "Note",
"description": "A short tag on the row, such as Late night."
}
},
"required": [
"days",
"hours"
],
"additionalProperties": false,
"title": "Row"
},
"minItems": 1,
"maxItems": 7,
"title": "Opening hours",
"description": "One to seven rows, each a day or a run of days and the hours as they should be read; write Closed where it is."
},
"exceptionsTitle": {
"type": "string",
"maxLength": 32,
"title": "Exceptions title",
"description": "A heading over the exceptions, such as Holiday opening."
},
"exceptions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 28,
"title": "Date",
"description": "The day, as it should be read."
},
"hours": {
"type": "string",
"maxLength": 24,
"title": "Hours",
"description": "The hours that day, or Closed."
}
},
"required": [
"date",
"hours"
],
"additionalProperties": false,
"title": "Exception"
},
"minItems": 0,
"maxItems": 4,
"title": "Exceptions",
"description": "Up to four days that differ, such as public holidays. Left out, the clip goes from the hours to the services."
},
"place": {
"type": "string",
"maxLength": 80,
"title": "Address",
"description": "The store's address."
},
"placeNote": {
"type": "string",
"maxLength": 70,
"title": "Getting there",
"description": "How to get there, such as parking or the bus stop."
},
"phone": {
"type": "string",
"maxLength": 24,
"title": "Phone",
"description": "A phone number, as it should be read."
},
"servicesTitle": {
"type": "string",
"maxLength": 32,
"title": "Services title",
"description": "A heading over the services, such as In store."
},
"services": {
"type": "array",
"items": {
"type": "object",
"properties": {
"icon": {
"type": "string",
"enum": [
"check",
"circle-check",
"x",
"arrow-right",
"arrow-up-right",
"plus",
"star",
"heart",
"thumbs-up",
"sparkles",
"zap",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"lightbulb",
"target",
"award",
"crown",
"gem",
"flame",
"timer",
"list-checks",
"clipboard-check",
"badge-check",
"hand-heart",
"rocket",
"trophy",
"megaphone",
"bell",
"qr-code",
"ticket",
"gift",
"key-round",
"book-open",
"graduation-cap",
"house",
"phone",
"mail",
"globe",
"users",
"user",
"shopping-cart",
"shopping-bag",
"tag",
"truck",
"store",
"apple",
"coffee",
"croissant",
"carrot",
"fish",
"wine",
"pizza",
"utensils",
"baby",
"shirt",
"scissors",
"package",
"circle-percent",
"sprout",
"cake-slice"
],
"title": "Icon",
"description": "A line icon for the service.",
"enumNames": [
"Check",
"Circle check",
"X",
"Arrow right",
"Arrow up right",
"Plus",
"Star",
"Heart",
"Thumbs up",
"Sparkles",
"Zap",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Lightbulb",
"Target",
"Award",
"Crown",
"Gem",
"Flame",
"Timer",
"List checks",
"Clipboard check",
"Badge check",
"Hand heart",
"Rocket",
"Trophy",
"Megaphone",
"Bell",
"Qr code",
"Ticket",
"Gift",
"Key round",
"Book open",
"Graduation cap",
"House",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Shopping cart",
"Shopping bag",
"Tag",
"Truck",
"Store",
"Apple",
"Coffee",
"Croissant",
"Carrot",
"Fish",
"Wine",
"Pizza",
"Utensils",
"Baby",
"Shirt",
"Scissors",
"Package",
"Circle percent",
"Sprout",
"Cake slice"
]
},
"label": {
"type": "string",
"maxLength": 28,
"title": "Service",
"description": "The service, in a few words."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Service"
},
"minItems": 0,
"maxItems": 8,
"title": "Services",
"description": "Up to eight services, each an icon and a few words."
},
"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, 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."
},
"disclaimer": {
"type": "string",
"maxLength": 120,
"title": "Small print",
"description": "A note that must be shown with the information."
},
"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"
]
},
"hero": {
"type": "string",
"enum": [
"framed",
"full"
],
"title": "Picture",
"description": "Framed: the picture in a frame beside or above the words. Full: the picture fills the clip behind them.",
"enumNames": [
"In a frame",
"Filling the clip"
]
},
"showMap": {
"type": "boolean",
"title": "Show the map",
"description": "A drawn street plan at the end with a pin dropping on the store; off, the address and the call to action alone."
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on the style's plate (a card, a disc, a badge) 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"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default."
}
},
"required": [
"headline",
"hours"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the store, its opening hours and holiday exceptions, its services, where it is and the call to action."
},
"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": {
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A short line above the headline, such as the store's name or town."
},
"headline": {
"type": "string",
"maxLength": 60,
"title": "Headline",
"description": "What to know about the store, in a sentence."
},
"picture": {
"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": "Picture",
"description": "The storefront, or the store inside; any shape. Without one, the hours lead."
},
"hoursTitle": {
"type": "string",
"maxLength": 32,
"title": "Hours title",
"description": "A heading over the opening hours, such as Opening hours."
},
"hours": {
"type": "array",
"items": {
"type": "object",
"properties": {
"days": {
"type": "string",
"maxLength": 24,
"title": "Days",
"description": "A day or a run of days, such as Monday to Friday."
},
"hours": {
"type": "string",
"maxLength": 24,
"title": "Hours",
"description": "The hours, such as 7:00 to 22:00, or Closed."
},
"note": {
"type": "string",
"maxLength": 16,
"title": "Note",
"description": "A short tag on the row, such as Late night."
}
},
"required": [
"days",
"hours"
],
"additionalProperties": false,
"title": "Row"
},
"minItems": 1,
"maxItems": 7,
"title": "Opening hours",
"description": "One to seven rows, each a day or a run of days and the hours as they should be read; write Closed where it is."
},
"exceptionsTitle": {
"type": "string",
"maxLength": 32,
"title": "Exceptions title",
"description": "A heading over the exceptions, such as Holiday opening."
},
"exceptions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 28,
"title": "Date",
"description": "The day, as it should be read."
},
"hours": {
"type": "string",
"maxLength": 24,
"title": "Hours",
"description": "The hours that day, or Closed."
}
},
"required": [
"date",
"hours"
],
"additionalProperties": false,
"title": "Exception"
},
"minItems": 0,
"maxItems": 4,
"title": "Exceptions",
"description": "Up to four days that differ, such as public holidays. Left out, the clip goes from the hours to the services."
},
"place": {
"type": "string",
"maxLength": 80,
"title": "Address",
"description": "The store's address."
},
"placeNote": {
"type": "string",
"maxLength": 70,
"title": "Getting there",
"description": "How to get there, such as parking or the bus stop."
},
"phone": {
"type": "string",
"maxLength": 24,
"title": "Phone",
"description": "A phone number, as it should be read."
},
"servicesTitle": {
"type": "string",
"maxLength": 32,
"title": "Services title",
"description": "A heading over the services, such as In store."
},
"services": {
"type": "array",
"items": {
"type": "object",
"properties": {
"icon": {
"type": "string",
"enum": [
"check",
"circle-check",
"x",
"arrow-right",
"arrow-up-right",
"plus",
"star",
"heart",
"thumbs-up",
"sparkles",
"zap",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"lightbulb",
"target",
"award",
"crown",
"gem",
"flame",
"timer",
"list-checks",
"clipboard-check",
"badge-check",
"hand-heart",
"rocket",
"trophy",
"megaphone",
"bell",
"qr-code",
"ticket",
"gift",
"key-round",
"book-open",
"graduation-cap",
"house",
"phone",
"mail",
"globe",
"users",
"user",
"shopping-cart",
"shopping-bag",
"tag",
"truck",
"store",
"apple",
"coffee",
"croissant",
"carrot",
"fish",
"wine",
"pizza",
"utensils",
"baby",
"shirt",
"scissors",
"package",
"circle-percent",
"sprout",
"cake-slice"
],
"title": "Icon",
"description": "A line icon for the service.",
"enumNames": [
"Check",
"Circle check",
"X",
"Arrow right",
"Arrow up right",
"Plus",
"Star",
"Heart",
"Thumbs up",
"Sparkles",
"Zap",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Lightbulb",
"Target",
"Award",
"Crown",
"Gem",
"Flame",
"Timer",
"List checks",
"Clipboard check",
"Badge check",
"Hand heart",
"Rocket",
"Trophy",
"Megaphone",
"Bell",
"Qr code",
"Ticket",
"Gift",
"Key round",
"Book open",
"Graduation cap",
"House",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Shopping cart",
"Shopping bag",
"Tag",
"Truck",
"Store",
"Apple",
"Coffee",
"Croissant",
"Carrot",
"Fish",
"Wine",
"Pizza",
"Utensils",
"Baby",
"Shirt",
"Scissors",
"Package",
"Circle percent",
"Sprout",
"Cake slice"
]
},
"label": {
"type": "string",
"maxLength": 28,
"title": "Service",
"description": "The service, in a few words."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Service"
},
"minItems": 0,
"maxItems": 8,
"title": "Services",
"description": "Up to eight services, each an icon and a few words."
},
"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, 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."
},
"disclaimer": {
"type": "string",
"maxLength": 120,
"title": "Small print",
"description": "A note that must be shown with the information."
},
"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"
]
},
"hero": {
"type": "string",
"enum": [
"framed",
"full"
],
"title": "Picture",
"description": "Framed: the picture in a frame beside or above the words. Full: the picture fills the clip behind them.",
"enumNames": [
"In a frame",
"Filling the clip"
]
},
"showMap": {
"type": "boolean",
"title": "Show the map",
"description": "A drawn street plan at the end with a pin dropping on the store; off, the address and the call to action alone."
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on the style's plate (a card, a disc, a badge) 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"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the store, its opening hours and holiday exceptions, its services, where it is and the call to action."
},
"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_5bbd0ae3e79a?variant=Store%20information&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": {
"kicker": "Greenleaf Riverside",
"headline": "Open seven days a week, right by the harbour",
"picture": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
},
"hoursTitle": "Opening hours",
"hours": [
{
"days": "Monday to Thursday",
"hours": "7:00 to 21:00"
},
{
"days": "Friday",
"note": "Late night",
"hours": "7:00 to 23:00"
},
{
"days": "Saturday",
"hours": "8:00 to 21:00"
},
{
"days": "Sunday",
"note": "Bakery from 8",
"hours": "9:00 to 18:00"
}
],
"exceptionsTitle": "Over the holidays",
"exceptions": [
{
"date": "Wednesday 24 December",
"hours": "7:00 to 14:00"
},
{
"date": "25 and 26 December",
"hours": "Closed"
},
{
"date": "Wednesday 31 December",
"hours": "7:00 to 16:00"
}
],
"place": "Harbour Street 24, 4021 Riverside",
"placeNote": "200 free parking spaces, bus 12 to Harbour Square",
"phone": "0161 496 0123",
"servicesTitle": "In store for you",
"services": [
{
"icon": "croissant",
"label": "Bakery baking all day"
},
{
"icon": "package",
"label": "Click and collect"
},
{
"icon": "coffee",
"label": "Coffee bar"
},
{
"icon": "truck",
"label": "Home delivery"
},
{
"icon": "hand-heart",
"label": "Accessible store and toilets"
},
{
"icon": "gift",
"label": "Gift cards"
}
],
"cta": {
"label": "Get directions",
"detail": "greenleaf.example/riverside"
},
"disclaimer": "Hours may change on public holidays; the store page always has the latest.",
"look": {
"theme": "brand",
"pace": "standard",
"corners": "round",
"align": "start",
"hero": "framed",
"showMap": true,
"logo": "auto"
}
},
"metaData": {
"title": "Greenleaf Riverside: opening hours, holidays and services",
"captionTiny": "Greenleaf Riverside is open seven days a week, late on Fridays. Holiday hours, services and directions in the clip.",
"captionShort": "Open seven days a week, right by the harbour: Greenleaf Riverside opens at 7 on weekdays, until 23:00 on Fridays, and from 9 on Sundays. Over the holidays we close early on the 24th and 31st and stay closed on the 25th and 26th. 200 free parking spaces.",
"captionMedium": "Open seven days a week, right by the harbour. Greenleaf Riverside is open Monday to Thursday from 7:00 to 21:00, late on Fridays until 23:00, Saturdays from 8:00 to 21:00 and Sundays from 9:00 to 18:00, with the bakery from 8. Over the holidays we close at 14:00 on 24 December, stay closed on 25 and 26 December and close at 16:00 on New Year's Eve. In store: a bakery baking all day, click and collect, a coffee bar, home delivery and gift cards. Find us on Harbour Street 24, with 200 free parking spaces.",
"captionLong": "Open seven days a week, right by the harbour. Greenleaf Riverside is open Monday to Thursday from 7:00 to 21:00, late on Fridays until 23:00, on Saturdays from 8:00 to 21:00 and on Sundays from 9:00 to 18:00, when the bakery opens at 8. Over the holidays we close at 14:00 on Wednesday 24 December, stay closed on 25 and 26 December so our team can celebrate too, and close at 16:00 on New Year's Eve. In store you will find a bakery baking all day, click and collect, a coffee bar, home delivery, gift cards and an accessible store with accessible toilets. Find us on Harbour Street 24 in Riverside, with 200 free parking spaces, or take bus 12 to Harbour Square. Hours may change on public holidays; the store page always has the latest.",
"hashtags": [
"greenleafmarket",
"riverside",
"openinghours",
"shoplocal"
]
}
}
}
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.