Skip to main content

Tech and industry (Software and SaaS), Free trial 1.0.0

TemplateTech and industry (Software and SaaS), tpl_fe11839b9ed7
VariantFree trial
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length14 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 free trial in a bento of rounded tiles: the offer on a tile of your colour, its days as a big figure counting up, whether a card is taken and what happens when it ends, up to five things included with a tick, and your product's screen where you send one. Then the button and your presenter. The small print stays throughout. Eight seconds, 1.2 more a point. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the section, the offer and its days, the card line and what happens when the trial ends, what is included, the product's screen, 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 Free trial or Get started.
clipData.chiptextup to 16 charactersKind of news: On a chip with a pulsing dot above the headline, such as Try it free or New.
clipData.headlinetextyesup to 48 charactersHeadline: The offer, the headline of the post.
clipData.summarytextup to 140 charactersSentence: What the trial gives, in a sentence, the benefit first.
clipData.offergroupyesTrial length: How long the trial lasts, as a big figure on a tile of its own that counts up to exactly the days you send.
clipData.offer.daysintegeryesfrom 1, to 365Days: The trial's length in days, the big figure.
clipData.offer.unittextup to 20 charactersBeside the figure: The words beside the figure, such as days free or day trial. Where they do not fit beside it, they go under it.
clipData.offer.labeltextup to 56 charactersUnder the figure: What the days are of, in a few words under the figure.
clipData.cardtextyesup to 48 charactersCard: Whether a card is taken to start, said plainly, such as No credit card needed or Card needed, cancel any time. A free trial always says it, on a tile of its own and on a chip at the end.
clipData.cardNeededbooleanA card is taken: On when a card is taken to start the trial: the card is then drawn whole, else crossed through.
clipData.aftertextup to 120 charactersWhen it ends: What happens when the trial ends, under the card line, such as the price it turns into or that the workspace moves to Free.
clipData.includedTitletextup to 32 charactersAbove the list: A heading above what is included, such as Included in your trial.
clipData.includedlistyesat least 1, up to 5Included: One to five things the trial includes, each with a tick, lit one after another. Where a frame is short of room they turn pages.
clipData.included[]textup to 56 charactersPoint
clipData.screengroupProduct screen: Your product's own screen, in a browser window or a phone. Left out, the other tiles take its room.
clipData.screen.pictureimageyesmedia:// file from the media library, alt text up to 120 charactersScreenshot: A screenshot of your product, 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.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: who may take the trial, what it turns into, whether prices include tax, trademarks. 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 Free trial or Get started."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of news",
"description": "On a chip with a pulsing dot above the headline, such as Try it free or New."
},
"headline": {
"type": "string",
"maxLength": 48,
"title": "Headline",
"description": "The offer, the headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "Sentence",
"description": "What the trial gives, in a sentence, the benefit first."
},
"offer": {
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"title": "Days",
"description": "The trial's length in days, the big figure."
},
"unit": {
"type": "string",
"maxLength": 20,
"title": "Beside the figure",
"description": "The words beside the figure, such as days free or day trial. Where they do not fit beside it, they go under it."
},
"label": {
"type": "string",
"maxLength": 56,
"title": "Under the figure",
"description": "What the days are of, in a few words under the figure."
}
},
"required": [
"days"
],
"additionalProperties": false,
"title": "Trial length",
"description": "How long the trial lasts, as a big figure on a tile of its own that counts up to exactly the days you send."
},
"card": {
"type": "string",
"maxLength": 48,
"title": "Card",
"description": "Whether a card is taken to start, said plainly, such as No credit card needed or Card needed, cancel any time. A free trial always says it, on a tile of its own and on a chip at the end."
},
"cardNeeded": {
"type": "boolean",
"title": "A card is taken",
"description": "On when a card is taken to start the trial: the card is then drawn whole, else crossed through."
},
"after": {
"type": "string",
"maxLength": 120,
"title": "When it ends",
"description": "What happens when the trial ends, under the card line, such as the price it turns into or that the workspace moves to Free."
},
"includedTitle": {
"type": "string",
"maxLength": 32,
"title": "Above the list",
"description": "A heading above what is included, such as Included in your trial."
},
"included": {
"type": "array",
"items": {
"type": "string",
"maxLength": 56,
"title": "Point"
},
"minItems": 1,
"maxItems": 5,
"title": "Included",
"description": "One to five things the trial includes, each with a tick, lit one after another. Where a frame is short of room they turn pages."
},
"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 your product, 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."
}
},
"required": [
"picture"
],
"additionalProperties": false,
"title": "Product screen",
"description": "Your product's own screen, in a browser window or a phone. Left out, the other tiles take its room."
},
"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: who may take the trial, what it turns into, whether prices include tax, trademarks. 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": [
"headline",
"offer",
"card",
"included"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the offer and its days, the card line and what happens when the trial ends, what is included, the product's screen, 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 Free trial or Get started."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of news",
"description": "On a chip with a pulsing dot above the headline, such as Try it free or New."
},
"headline": {
"type": "string",
"maxLength": 48,
"title": "Headline",
"description": "The offer, the headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "Sentence",
"description": "What the trial gives, in a sentence, the benefit first."
},
"offer": {
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"title": "Days",
"description": "The trial's length in days, the big figure."
},
"unit": {
"type": "string",
"maxLength": 20,
"title": "Beside the figure",
"description": "The words beside the figure, such as days free or day trial. Where they do not fit beside it, they go under it."
},
"label": {
"type": "string",
"maxLength": 56,
"title": "Under the figure",
"description": "What the days are of, in a few words under the figure."
}
},
"additionalProperties": false,
"title": "Trial length",
"description": "How long the trial lasts, as a big figure on a tile of its own that counts up to exactly the days you send."
},
"card": {
"type": "string",
"maxLength": 48,
"title": "Card",
"description": "Whether a card is taken to start, said plainly, such as No credit card needed or Card needed, cancel any time. A free trial always says it, on a tile of its own and on a chip at the end."
},
"cardNeeded": {
"type": "boolean",
"title": "A card is taken",
"description": "On when a card is taken to start the trial: the card is then drawn whole, else crossed through."
},
"after": {
"type": "string",
"maxLength": 120,
"title": "When it ends",
"description": "What happens when the trial ends, under the card line, such as the price it turns into or that the workspace moves to Free."
},
"includedTitle": {
"type": "string",
"maxLength": 32,
"title": "Above the list",
"description": "A heading above what is included, such as Included in your trial."
},
"included": {
"type": "array",
"items": {
"type": "string",
"maxLength": 56,
"title": "Point"
},
"minItems": 1,
"maxItems": 5,
"title": "Included",
"description": "One to five things the trial includes, each with a tick, lit one after another. Where a frame is short of room they turn pages."
},
"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 your product, 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."
}
},
"additionalProperties": false,
"title": "Product screen",
"description": "Your product's own screen, in a browser window or a phone. Left out, the other tiles take its room."
},
"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: who may take the trial, what it turns into, whether prices include tax, trademarks. 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 offer and its days, the card line and what happens when the trial ends, what is included, the product's screen, 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=Free%20trial&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": "Free trial",
"chip": "Try it free",
"headline": "Try Flowbase Pro free for your whole team",
"summary": "Every Pro feature from day one, from workflow automations to timelines, for everyone you invite.",
"offer": {
"days": 30,
"unit": "days free",
"label": "of Flowbase Pro, every feature included"
},
"card": "No credit card needed",
"cardNeeded": false,
"after": "After 30 days, stay on Pro at $12 per user a month or move to Free. Nothing is charged unless you choose.",
"includedTitle": "Included in your trial",
"included": [
"Unlimited projects and tasks",
"Workflow automations",
"Timelines and dashboards",
"Guest access for clients",
"Help from our team by chat"
],
"screen": {
"device": "browser",
"address": "app.flowbase.example/projects",
"picture": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
}
},
"cta": {
"label": "Start your free trial",
"detail": "flowbase.example/trial"
},
"footnote": "The free trial is for new workspaces only. After 30 days your workspace moves to Free unless you choose a paid plan. Prices exclude VAT. Flowbase is a trademark of Flowbase Inc.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "round",
"logoSize": "auto"
}
},
"metaData": {
"title": "Try Flowbase Pro free for 30 days",
"captionTiny": "Try Flowbase Pro free for 30 days, for your whole team. No credit card needed.",
"captionShort": "Try Flowbase Pro free for 30 days, for your whole team. Unlimited projects, workflow automations, timelines and dashboards from day one, and no credit card needed. After 30 days, stay on Pro or move to Free: nothing is charged unless you choose.",
"captionMedium": "Try Flowbase Pro free for 30 days, for your whole team. Every Pro feature is yours from day one: unlimited projects and tasks, workflow automations, timelines and dashboards, guest access for clients, and help from our team by chat. No credit card needed to start. After 30 days, stay on Pro at $12 per user a month or move to Free, and nothing is charged unless you choose. Start at flowbase.example/trial.",
"captionLong": "Try Flowbase Pro free for 30 days, for your whole team. Every Pro feature is yours from day one: unlimited projects and tasks, workflow automations that take the repeated steps off your plate, timelines and dashboards for every project, guest access for clients and freelancers, and help from our team by chat whenever you need it. No credit card needed to start, and you can invite as many people as you like. After 30 days, stay on Pro at $12 per user a month or move to Free and keep your projects, and nothing is charged unless you choose. Start at flowbase.example/trial. The free trial is for new workspaces only. Prices exclude VAT. Flowbase is a trademark of Flowbase Inc.",
"hashtags": [
"freetrial",
"saas",
"productivity",
"projectmanagement",
"teamwork"
]
}
}
}

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.