Skip to main content

Tech and industry (Software and SaaS), Feature launch 1.0.0

TemplateTech and industry (Software and SaaS), tpl_fe11839b9ed7
VariantFeature launch
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length13 seconds

Example video​

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

What it accepts​

A feature launch in a bento of rounded tiles: the feature, what it does and where it is available on a tile of your colour, your product's screen in a browser or a phone, one to three benefits lit in turn and a measured result as a big figure with how it was measured. Then the button and your presenter. The small print stays throughout. Seven seconds, 1.8 more a benefit. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the section, the feature and what it does, the benefits, the measured result, the product's screen, the availability, the call to action and the small print.
clipData.sectiontextup to 28 charactersSection: What the post is about, on a chip at the end of the header, such as Product update or What's new.
clipData.chiptextup to 16 charactersKind of news: On a chip with a pulsing dot above the feature's name, such as New, Beta or Improved.
clipData.versiontextup to 20 charactersVersion: A version or a release, beside the chip in your monospace face (or your body face where your brand has none), such as v4.2.
clipData.featuretextyesup to 48 charactersFeature: The feature's name, the headline of the post.
clipData.summarytextup to 140 charactersWhat it does: What it does for the people who use it, in a sentence, the benefit first.
clipData.benefitslistyesat least 1, up to 3Benefits: One to three benefits, each on a tile of its own with an icon, a few words and a sentence, lit one after another. Where a frame is short of room, the tiles show their words and the one being read opens to its sentence.
clipData.benefits[]groupBenefit
clipData.benefits[].titletextyesup to 36 charactersBenefit: The benefit in a few words.
clipData.benefits[].detailtextup to 100 charactersSentence: What it means, in a sentence.
clipData.benefits[].iconenumzap, sparkles, rocket, workflow, puzzle, layers, boxes, plug-zap, code, cpu, database, server, cloud, bot, lock, key-round, shield-check, eye, gauge, timer, clock, calendar, bell, users, user, message-circle, mail, globe, smartphone, laptop, settings, wrench, chart-line, chart-column, chart-pie, trending-up, target, list-checks, clipboard-check, circle-check, file-text, credit-card, wallet, receipt, lightbulb, star, thumbs-up, share-2, palette, accessibility, leafIcon: A line icon on the benefit's small tile. Left out, the tile holds the benefit's number.
clipData.statgroupMeasured result: One result as a big figure on a tile of its own, counting up to exactly what you send, with how it was measured under it. A figure is never shown without how it was measured.
clipData.stat.valuenumberyes4 decimalsFigure: The figure, drawn exactly as sent with the decimals it was sent with.
clipData.stat.unittextup to 16 charactersUnit: After the figure, such as hours, % or x. A unit starting with % or x stays on the figure.
clipData.stat.labeltextyesup to 56 charactersWhat it is: What the figure is, in a few words.
clipData.stat.basistextyesup to 120 charactersHow it was measured: The test or the data behind the figure and its period, such as Median of 1,240 beta workspaces, July to September 2026.
clipData.screengroupProduct screen: Your product's own screen, shown in a browser window or a phone. Left out, a product drawn in shapes stands in, without words or figures.
clipData.screen.pictureimagemedia:// file from the media library, alt text up to 120 charactersScreenshot: A screenshot of the feature, filling the screen from its top. A wide one for the browser, a tall one for the phone.
clipData.screen.deviceenumbrowser, phoneDevice: What the screenshot is shown in.
clipData.screen.addresstextup to 48 charactersAddress: The address in the browser's bar, such as app.flowbase.example. Not shown on a phone.
clipData.screen.closeUpgroupClose-up: A part of the screenshot to go in on while the benefits are read, in percent of the screenshot: where it starts from the left and the top, and how wide and tall it is.
clipData.screen.closeUp.xnumberyesfrom 0, to 100, 1 decimalsFrom the left: Where the part starts, in percent of the screenshot's width.
clipData.screen.closeUp.ynumberyesfrom 0, to 100, 1 decimalsFrom the top: Where the part starts, in percent of the screenshot's height.
clipData.screen.closeUp.widthnumberyesfrom 1, to 100, 1 decimalsWidth: How wide the part is, in percent of the screenshot's width.
clipData.screen.closeUp.heightnumberyesfrom 1, to 100, 1 decimalsHeight: How tall the part is, in percent of the screenshot's height.
clipData.availabilitytextup to 64 charactersAvailability: Who can use it and from when, beside a tick under the sentence and on a chip at the end. Say what limits it here: the plans, a beta, an add-on.
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.footnotetextup to 300 charactersSmall print: What must be said with the post, shown from the first frame to the last above your brand's footer line: trademarks, whether prices include tax, the conditions of a figure. 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, standard pace, round corners, text at the start.
clipData.look.themeenumbrand, light, dark, boldTheme: Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.
clipData.look.paceenumcalm, standard, punchyPace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.
clipData.look.cornersenumsquare, soft, roundCorners: The shape of cards, pictures and buttons.
clipData.look.alignenumstart, centreText alignment: Where the text lines up.
clipData.look.logoenumauto, freeLogo: The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.
clipData.look.logoSizeenumauto, small, largeLogo size: Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.
metaDatagroupMeta data: Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data.
metaData.titletextup to 100 charactersTitle: Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes.
metaData.captionTinytextup to 200 charactersTiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionShorttextup to 500 charactersShort description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionMediumtextup to 1500 charactersMedium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok): Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionLongtextup to 4000 charactersLong description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.hashtagslistup to 15Hashtags: Written without the #. Up to 15, which every platform takes.
metaData.hashtags[]textup to 60 charactersHashtag

locales carries other languages: under each language code, the parts of clipData and metaData that differ, laid over the default, so a language with no copy still renders.

A picture is always a file from your media library: media:// followed by its id or its name. Anything the table does not list is refused, and so is anything over its limit, with a 400 schema_validation error that names the field.

The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"section": {
"type": "string",
"maxLength": 28,
"title": "Section",
"description": "What the post is about, on a chip at the end of the header, such as Product update or What's new."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of news",
"description": "On a chip with a pulsing dot above the feature's name, such as New, Beta or Improved."
},
"version": {
"type": "string",
"maxLength": 20,
"title": "Version",
"description": "A version or a release, beside the chip in your monospace face (or your body face where your brand has none), such as v4.2."
},
"feature": {
"type": "string",
"maxLength": 48,
"title": "Feature",
"description": "The feature's name, the headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "What it does",
"description": "What it does for the people who use it, in a sentence, the benefit first."
},
"benefits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 36,
"title": "Benefit",
"description": "The benefit in a few words."
},
"detail": {
"type": "string",
"maxLength": 100,
"title": "Sentence",
"description": "What it means, in a sentence."
},
"icon": {
"type": "string",
"enum": [
"zap",
"sparkles",
"rocket",
"workflow",
"puzzle",
"layers",
"boxes",
"plug-zap",
"code",
"cpu",
"database",
"server",
"cloud",
"bot",
"lock",
"key-round",
"shield-check",
"eye",
"gauge",
"timer",
"clock",
"calendar",
"bell",
"users",
"user",
"message-circle",
"mail",
"globe",
"smartphone",
"laptop",
"settings",
"wrench",
"chart-line",
"chart-column",
"chart-pie",
"trending-up",
"target",
"list-checks",
"clipboard-check",
"circle-check",
"file-text",
"credit-card",
"wallet",
"receipt",
"lightbulb",
"star",
"thumbs-up",
"share-2",
"palette",
"accessibility",
"leaf"
],
"title": "Icon",
"description": "A line icon on the benefit's small tile. Left out, the tile holds the benefit's number.",
"enumNames": [
"Zap",
"Sparkles",
"Rocket",
"Workflow",
"Puzzle",
"Layers",
"Boxes",
"Plug zap",
"Code",
"Cpu",
"Database",
"Server",
"Cloud",
"Bot",
"Lock",
"Key round",
"Shield check",
"Eye",
"Gauge",
"Timer",
"Clock",
"Calendar",
"Bell",
"Users",
"User",
"Message circle",
"Mail",
"Globe",
"Smartphone",
"Laptop",
"Settings",
"Wrench",
"Chart line",
"Chart column",
"Chart pie",
"Trending up",
"Target",
"List checks",
"Clipboard check",
"Circle check",
"File text",
"Credit card",
"Wallet",
"Receipt",
"Lightbulb",
"Star",
"Thumbs up",
"Share 2",
"Palette",
"Accessibility",
"Leaf"
]
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Benefit"
},
"minItems": 1,
"maxItems": 3,
"title": "Benefits",
"description": "One to three benefits, each on a tile of its own with an icon, a few words and a sentence, lit one after another. Where a frame is short of room, the tiles show their words and the one being read opens to its sentence."
},
"stat": {
"type": "object",
"properties": {
"value": {
"type": "number",
"title": "Figure",
"description": "The figure, drawn exactly as sent with the decimals it was sent with."
},
"unit": {
"type": "string",
"maxLength": 16,
"title": "Unit",
"description": "After the figure, such as hours, % or x. A unit starting with % or x stays on the figure."
},
"label": {
"type": "string",
"maxLength": 56,
"title": "What it is",
"description": "What the figure is, in a few words."
},
"basis": {
"type": "string",
"maxLength": 120,
"title": "How it was measured",
"description": "The test or the data behind the figure and its period, such as Median of 1,240 beta workspaces, July to September 2026."
}
},
"required": [
"value",
"label",
"basis"
],
"additionalProperties": false,
"title": "Measured result",
"description": "One result as a big figure on a tile of its own, counting up to exactly what you send, with how it was measured under it. A figure is never shown without how it was measured."
},
"screen": {
"type": "object",
"properties": {
"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": "Screenshot",
"description": "A screenshot of the feature, filling the screen from its top. A wide one for the browser, a tall one for the phone."
},
"device": {
"type": "string",
"enum": [
"browser",
"phone"
],
"title": "Device",
"description": "What the screenshot is shown in.",
"enumNames": [
"Browser window",
"Phone"
]
},
"address": {
"type": "string",
"maxLength": 48,
"title": "Address",
"description": "The address in the browser's bar, such as app.flowbase.example. Not shown on a phone."
},
"closeUp": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "From the left",
"description": "Where the part starts, in percent of the screenshot's width."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "From the top",
"description": "Where the part starts, in percent of the screenshot's height."
},
"width": {
"type": "number",
"minimum": 1,
"maximum": 100,
"title": "Width",
"description": "How wide the part is, in percent of the screenshot's width."
},
"height": {
"type": "number",
"minimum": 1,
"maximum": 100,
"title": "Height",
"description": "How tall the part is, in percent of the screenshot's height."
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"title": "Close-up",
"description": "A part of the screenshot to go in on while the benefits are read, in percent of the screenshot: where it starts from the left and the top, and how wide and tall it is."
}
},
"additionalProperties": false,
"title": "Product screen",
"description": "Your product's own screen, shown in a browser window or a phone. Left out, a product drawn in shapes stands in, without words or figures."
},
"availability": {
"type": "string",
"maxLength": 64,
"title": "Availability",
"description": "Who can use it and from when, beside a tick under the sentence and on a chip at the end. Say what limits it here: the plans, a beta, an add-on."
},
"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."
},
"footnote": {
"type": "string",
"maxLength": 300,
"title": "Small print",
"description": "What must be said with the post, shown from the first frame to the last above your brand's footer line: trademarks, whether prices include tax, the conditions of a figure. 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, standard pace, round corners, text at the start."
}
},
"required": [
"feature",
"benefits"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the feature and what it does, the benefits, the measured result, the product's screen, the availability, the call to action and the small print."
},
"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": {
"section": {
"type": "string",
"maxLength": 28,
"title": "Section",
"description": "What the post is about, on a chip at the end of the header, such as Product update or What's new."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of news",
"description": "On a chip with a pulsing dot above the feature's name, such as New, Beta or Improved."
},
"version": {
"type": "string",
"maxLength": 20,
"title": "Version",
"description": "A version or a release, beside the chip in your monospace face (or your body face where your brand has none), such as v4.2."
},
"feature": {
"type": "string",
"maxLength": 48,
"title": "Feature",
"description": "The feature's name, the headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "What it does",
"description": "What it does for the people who use it, in a sentence, the benefit first."
},
"benefits": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 36,
"title": "Benefit",
"description": "The benefit in a few words."
},
"detail": {
"type": "string",
"maxLength": 100,
"title": "Sentence",
"description": "What it means, in a sentence."
},
"icon": {
"type": "string",
"enum": [
"zap",
"sparkles",
"rocket",
"workflow",
"puzzle",
"layers",
"boxes",
"plug-zap",
"code",
"cpu",
"database",
"server",
"cloud",
"bot",
"lock",
"key-round",
"shield-check",
"eye",
"gauge",
"timer",
"clock",
"calendar",
"bell",
"users",
"user",
"message-circle",
"mail",
"globe",
"smartphone",
"laptop",
"settings",
"wrench",
"chart-line",
"chart-column",
"chart-pie",
"trending-up",
"target",
"list-checks",
"clipboard-check",
"circle-check",
"file-text",
"credit-card",
"wallet",
"receipt",
"lightbulb",
"star",
"thumbs-up",
"share-2",
"palette",
"accessibility",
"leaf"
],
"title": "Icon",
"description": "A line icon on the benefit's small tile. Left out, the tile holds the benefit's number.",
"enumNames": [
"Zap",
"Sparkles",
"Rocket",
"Workflow",
"Puzzle",
"Layers",
"Boxes",
"Plug zap",
"Code",
"Cpu",
"Database",
"Server",
"Cloud",
"Bot",
"Lock",
"Key round",
"Shield check",
"Eye",
"Gauge",
"Timer",
"Clock",
"Calendar",
"Bell",
"Users",
"User",
"Message circle",
"Mail",
"Globe",
"Smartphone",
"Laptop",
"Settings",
"Wrench",
"Chart line",
"Chart column",
"Chart pie",
"Trending up",
"Target",
"List checks",
"Clipboard check",
"Circle check",
"File text",
"Credit card",
"Wallet",
"Receipt",
"Lightbulb",
"Star",
"Thumbs up",
"Share 2",
"Palette",
"Accessibility",
"Leaf"
]
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Benefit"
},
"minItems": 1,
"maxItems": 3,
"title": "Benefits",
"description": "One to three benefits, each on a tile of its own with an icon, a few words and a sentence, lit one after another. Where a frame is short of room, the tiles show their words and the one being read opens to its sentence."
},
"stat": {
"type": "object",
"properties": {
"value": {
"type": "number",
"title": "Figure",
"description": "The figure, drawn exactly as sent with the decimals it was sent with."
},
"unit": {
"type": "string",
"maxLength": 16,
"title": "Unit",
"description": "After the figure, such as hours, % or x. A unit starting with % or x stays on the figure."
},
"label": {
"type": "string",
"maxLength": 56,
"title": "What it is",
"description": "What the figure is, in a few words."
},
"basis": {
"type": "string",
"maxLength": 120,
"title": "How it was measured",
"description": "The test or the data behind the figure and its period, such as Median of 1,240 beta workspaces, July to September 2026."
}
},
"additionalProperties": false,
"title": "Measured result",
"description": "One result as a big figure on a tile of its own, counting up to exactly what you send, with how it was measured under it. A figure is never shown without how it was measured."
},
"screen": {
"type": "object",
"properties": {
"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": "Screenshot",
"description": "A screenshot of the feature, filling the screen from its top. A wide one for the browser, a tall one for the phone."
},
"device": {
"type": "string",
"enum": [
"browser",
"phone"
],
"title": "Device",
"description": "What the screenshot is shown in.",
"enumNames": [
"Browser window",
"Phone"
]
},
"address": {
"type": "string",
"maxLength": 48,
"title": "Address",
"description": "The address in the browser's bar, such as app.flowbase.example. Not shown on a phone."
},
"closeUp": {
"type": "object",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "From the left",
"description": "Where the part starts, in percent of the screenshot's width."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "From the top",
"description": "Where the part starts, in percent of the screenshot's height."
},
"width": {
"type": "number",
"minimum": 1,
"maximum": 100,
"title": "Width",
"description": "How wide the part is, in percent of the screenshot's width."
},
"height": {
"type": "number",
"minimum": 1,
"maximum": 100,
"title": "Height",
"description": "How tall the part is, in percent of the screenshot's height."
}
},
"additionalProperties": false,
"title": "Close-up",
"description": "A part of the screenshot to go in on while the benefits are read, in percent of the screenshot: where it starts from the left and the top, and how wide and tall it is."
}
},
"additionalProperties": false,
"title": "Product screen",
"description": "Your product's own screen, shown in a browser window or a phone. Left out, a product drawn in shapes stands in, without words or figures."
},
"availability": {
"type": "string",
"maxLength": 64,
"title": "Availability",
"description": "Who can use it and from when, beside a tick under the sentence and on a chip at the end. Say what limits it here: the plans, a beta, an add-on."
},
"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."
},
"footnote": {
"type": "string",
"maxLength": 300,
"title": "Small print",
"description": "What must be said with the post, shown from the first frame to the last above your brand's footer line: trademarks, whether prices include tax, the conditions of a figure. 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, standard pace, round corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the feature and what it does, the benefits, the measured result, the product's screen, the availability, the call to action and the small print."
},
"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_fe11839b9ed7?variant=Feature%20launch&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": {
"section": "Product update",
"chip": "New",
"version": "v4.2",
"feature": "Workflow automations",
"summary": "Turn the steps your team repeats every day into rules that run on their own, in every project.",
"benefits": [
{
"icon": "zap",
"title": "Set up in minutes",
"detail": "Pick a trigger, add conditions and choose what happens. No code needed."
},
{
"icon": "workflow",
"title": "Works across your tools",
"detail": "Start a rule from email, chat or a form, and act in Slack, GitHub or Jira."
},
{
"icon": "shield-check",
"title": "Safe by default",
"detail": "Every run is logged, and admins decide who can build and switch on rules."
}
],
"stat": {
"unit": "hours",
"basis": "Median across 1,240 beta workspaces, July to September 2026",
"label": "saved per person every week",
"value": 6
},
"screen": {
"device": "browser",
"address": "app.flowbase.example/automations",
"picture": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
}
},
"availability": "Available today on the Pro and Business plans",
"cta": {
"label": "Try automations",
"detail": "flowbase.example/automations"
},
"footnote": "Flowbase is a trademark of Flowbase Inc. Automations are included in the Pro and Business plans. Prices exclude VAT.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "round",
"logoSize": "auto"
}
},
"metaData": {
"title": "New in Flowbase: workflow automations",
"captionTiny": "New in Flowbase v4.2: workflow automations. Turn the steps your team repeats into rules that run on their own.",
"captionShort": "New in Flowbase v4.2: workflow automations. Pick a trigger, add conditions and choose what happens, with no code. Rules start from email, chat or a form and act in Slack, GitHub or Jira, and every run is logged. Available today on the Pro and Business plans.",
"captionMedium": "New in Flowbase v4.2: workflow automations. Turn the steps your team repeats every day into rules that run on their own, in every project. Pick a trigger, add conditions and choose what happens, with no code needed. Rules start from email, chat or a form and act in the tools you already use, such as Slack, GitHub or Jira. Every run is logged, and admins decide who can build and switch on rules. In our beta, people saved a median of 6 hours a week (1,240 workspaces, July to September 2026). Available today on the Pro and Business plans.",
"captionLong": "New in Flowbase v4.2: workflow automations. Turn the steps your team repeats every day into rules that run on their own, in every project. Pick a trigger, add conditions and choose what happens, with no code needed: triage new tickets, escalate the ones that wait too long, or thank a customer who left five stars. Rules start from email, chat or a form and act in the tools you already use, such as Slack, GitHub or Jira. Every run is logged, so you can see what a rule did and why, and admins decide who can build and switch on rules. In our beta, people saved a median of 6 hours a week (1,240 workspaces, July to September 2026). Automations are available today on the Pro and Business plans; open Automations in the sidebar to build your first rule, or start from one of the templates. Prices exclude VAT.",
"hashtags": [
"productupdate",
"automation",
"saas",
"nocode",
"productivity"
]
}
}
}

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.