Tech and industry (Software and SaaS), Webinar 1.0.0
| Template | Tech and industry (Software and SaaS), tpl_fe11839b9ed7 |
|---|---|
| Variant | Webinar |
| 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 webinar invitation in a bento of rounded tiles: the title on a tile of your colour, the date on a calendar leaf beside the time, its zone and length, up to three speakers (or your presenter) and up to four things attendees learn, lit in turn. Then the seats, the button and your presenter. The small print stays throughout. 8.5 seconds, 1.5 more a point. metaData is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the section, the title and its sentence, the date, time, time zone and length, the speakers, what attendees learn, the seats, the call to action and the small print. | |
clipData.section | text | up to 28 characters | Section: What the post is about, on a chip at the end of the header, such as Events or Webinars. | |
clipData.chip | text | up to 16 characters | Kind of event: On a chip with a pulsing dot above the title, such as Live webinar, Workshop or Product demo. | |
clipData.headline | text | yes | up to 64 characters | Title: The session's title, the headline of the post. |
clipData.summary | text | up to 140 characters | Sentence: What the session is, in a sentence. | |
clipData.starts | datetime | yes | Date and time: When the session starts. The date and the time are read as they are written here, in the time zone named below, and spelled out in the channel's language: the month, the day and the weekday on a calendar leaf, the time beside it. | |
clipData.timeZone | text | yes | up to 40 characters | Time zone: The time zone the time above is in, spelled out, under the time: such as Central European Time (CET) or Eastern Time (ET). A time is never shown without it. |
clipData.minutes | integer | from 5, to 600 | Length: How long the session lasts, in minutes, on a chip with a clock: whole hours are written as hours. | |
clipData.speakers | list | up to 3 | Speakers: Up to three people who present it, each with a portrait, a name and a role. Left out, your brand's presenter stands in. | |
clipData.speakers[] | group | Speaker | ||
clipData.speakers[].name | text | yes | up to 32 characters | Name: The speaker's name. |
clipData.speakers[].role | text | up to 48 characters | Role: What they do and where, under the name. | |
clipData.speakers[].picture | image | media:// file from the media library, alt text up to 120 characters | Portrait: A portrait of the speaker, a picture from the media library, filling a rounded square from its top. | |
clipData.learnTitle | text | up to 32 characters | Above the points: A heading above what attendees learn, such as What you will learn. | |
clipData.learn | list | yes | at least 1, up to 4 | What attendees learn: One to four things attendees take away, each with an icon (or its number), lit one after another. Where a frame is short of room they turn pages. |
clipData.learn[] | group | Point | ||
clipData.learn[].title | text | yes | up to 64 characters | Point: What attendees learn, in a few words. |
clipData.learn[].icon | enum | zap, sparkles, rocket, workflow, puzzle, layers, boxes, plug-zap, code, cpu, database, server, cloud, bot, lock, key-round, shield-check, gauge, timer, clock, calendar, bell, users, user, message-circle, mic, video, play, globe, smartphone, laptop, settings, wrench, chart-line, chart-column, chart-pie, trending-up, target, list-checks, clipboard-check, circle-check, file-text, lightbulb, book-open, graduation-cap, star, trophy, accessibility | Icon: A line icon on the point's small tile. Left out, the tile holds the point's number. | |
clipData.seats | text | up to 56 characters | Seats: How to join or what it costs, on a chip at the end, such as Free, with the recording for everyone who registers. | |
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, an app, a phone number. | |
clipData.footnote | text | up to 300 characters | Small print: What must be said with the post, shown from the first frame to the last above your brand's footer line: that it is recorded, how registrations are used, trademarks. A long one is set smaller, never cut. | |
clipData.look | group | Look: 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.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.logo | enum | auto, free | Logo: 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.logoSize | enum | auto, small, large | Logo 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. | |
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 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 Events or Webinars."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of event",
"description": "On a chip with a pulsing dot above the title, such as Live webinar, Workshop or Product demo."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Title",
"description": "The session's title, the headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "Sentence",
"description": "What the session is, in a sentence."
},
"starts": {
"type": "string",
"format": "date-time",
"title": "Date and time",
"description": "When the session starts. The date and the time are read as they are written here, in the time zone named below, and spelled out in the channel's language: the month, the day and the weekday on a calendar leaf, the time beside it."
},
"timeZone": {
"type": "string",
"maxLength": 40,
"title": "Time zone",
"description": "The time zone the time above is in, spelled out, under the time: such as Central European Time (CET) or Eastern Time (ET). A time is never shown without it."
},
"minutes": {
"type": "integer",
"minimum": 5,
"maximum": 600,
"title": "Length",
"description": "How long the session lasts, in minutes, on a chip with a clock: whole hours are written as hours."
},
"speakers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"title": "Name",
"description": "The speaker's name."
},
"role": {
"type": "string",
"maxLength": 48,
"title": "Role",
"description": "What they do and where, under the name."
},
"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": "Portrait",
"description": "A portrait of the speaker, a picture from the media library, filling a rounded square from its top."
}
},
"required": [
"name"
],
"additionalProperties": false,
"title": "Speaker"
},
"maxItems": 3,
"title": "Speakers",
"description": "Up to three people who present it, each with a portrait, a name and a role. Left out, your brand's presenter stands in."
},
"learnTitle": {
"type": "string",
"maxLength": 32,
"title": "Above the points",
"description": "A heading above what attendees learn, such as What you will learn."
},
"learn": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 64,
"title": "Point",
"description": "What attendees learn, in a few words."
},
"icon": {
"type": "string",
"enum": [
"zap",
"sparkles",
"rocket",
"workflow",
"puzzle",
"layers",
"boxes",
"plug-zap",
"code",
"cpu",
"database",
"server",
"cloud",
"bot",
"lock",
"key-round",
"shield-check",
"gauge",
"timer",
"clock",
"calendar",
"bell",
"users",
"user",
"message-circle",
"mic",
"video",
"play",
"globe",
"smartphone",
"laptop",
"settings",
"wrench",
"chart-line",
"chart-column",
"chart-pie",
"trending-up",
"target",
"list-checks",
"clipboard-check",
"circle-check",
"file-text",
"lightbulb",
"book-open",
"graduation-cap",
"star",
"trophy",
"accessibility"
],
"title": "Icon",
"description": "A line icon on the point's small tile. Left out, the tile holds the point's number.",
"enumNames": [
"Zap",
"Sparkles",
"Rocket",
"Workflow",
"Puzzle",
"Layers",
"Boxes",
"Plug zap",
"Code",
"Cpu",
"Database",
"Server",
"Cloud",
"Bot",
"Lock",
"Key round",
"Shield check",
"Gauge",
"Timer",
"Clock",
"Calendar",
"Bell",
"Users",
"User",
"Message circle",
"Mic",
"Video",
"Play",
"Globe",
"Smartphone",
"Laptop",
"Settings",
"Wrench",
"Chart line",
"Chart column",
"Chart pie",
"Trending up",
"Target",
"List checks",
"Clipboard check",
"Circle check",
"File text",
"Lightbulb",
"Book open",
"Graduation cap",
"Star",
"Trophy",
"Accessibility"
]
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Point"
},
"minItems": 1,
"maxItems": 4,
"title": "What attendees learn",
"description": "One to four things attendees take away, each with an icon (or its number), lit one after another. Where a frame is short of room they turn pages."
},
"seats": {
"type": "string",
"maxLength": 56,
"title": "Seats",
"description": "How to join or what it costs, on a chip at the end, such as Free, with the recording for everyone who registers."
},
"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: that it is recorded, how registrations are used, 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",
"starts",
"timeZone",
"learn"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the title and its sentence, the date, time, time zone and length, the speakers, what attendees learn, the seats, 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 Events or Webinars."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of event",
"description": "On a chip with a pulsing dot above the title, such as Live webinar, Workshop or Product demo."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Title",
"description": "The session's title, the headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "Sentence",
"description": "What the session is, in a sentence."
},
"starts": {
"type": "string",
"format": "date-time",
"title": "Date and time",
"description": "When the session starts. The date and the time are read as they are written here, in the time zone named below, and spelled out in the channel's language: the month, the day and the weekday on a calendar leaf, the time beside it."
},
"timeZone": {
"type": "string",
"maxLength": 40,
"title": "Time zone",
"description": "The time zone the time above is in, spelled out, under the time: such as Central European Time (CET) or Eastern Time (ET). A time is never shown without it."
},
"minutes": {
"type": "integer",
"minimum": 5,
"maximum": 600,
"title": "Length",
"description": "How long the session lasts, in minutes, on a chip with a clock: whole hours are written as hours."
},
"speakers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"title": "Name",
"description": "The speaker's name."
},
"role": {
"type": "string",
"maxLength": 48,
"title": "Role",
"description": "What they do and where, under the name."
},
"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": "Portrait",
"description": "A portrait of the speaker, a picture from the media library, filling a rounded square from its top."
}
},
"required": [
"name"
],
"additionalProperties": false,
"title": "Speaker"
},
"maxItems": 3,
"title": "Speakers",
"description": "Up to three people who present it, each with a portrait, a name and a role. Left out, your brand's presenter stands in."
},
"learnTitle": {
"type": "string",
"maxLength": 32,
"title": "Above the points",
"description": "A heading above what attendees learn, such as What you will learn."
},
"learn": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 64,
"title": "Point",
"description": "What attendees learn, in a few words."
},
"icon": {
"type": "string",
"enum": [
"zap",
"sparkles",
"rocket",
"workflow",
"puzzle",
"layers",
"boxes",
"plug-zap",
"code",
"cpu",
"database",
"server",
"cloud",
"bot",
"lock",
"key-round",
"shield-check",
"gauge",
"timer",
"clock",
"calendar",
"bell",
"users",
"user",
"message-circle",
"mic",
"video",
"play",
"globe",
"smartphone",
"laptop",
"settings",
"wrench",
"chart-line",
"chart-column",
"chart-pie",
"trending-up",
"target",
"list-checks",
"clipboard-check",
"circle-check",
"file-text",
"lightbulb",
"book-open",
"graduation-cap",
"star",
"trophy",
"accessibility"
],
"title": "Icon",
"description": "A line icon on the point's small tile. Left out, the tile holds the point's number.",
"enumNames": [
"Zap",
"Sparkles",
"Rocket",
"Workflow",
"Puzzle",
"Layers",
"Boxes",
"Plug zap",
"Code",
"Cpu",
"Database",
"Server",
"Cloud",
"Bot",
"Lock",
"Key round",
"Shield check",
"Gauge",
"Timer",
"Clock",
"Calendar",
"Bell",
"Users",
"User",
"Message circle",
"Mic",
"Video",
"Play",
"Globe",
"Smartphone",
"Laptop",
"Settings",
"Wrench",
"Chart line",
"Chart column",
"Chart pie",
"Trending up",
"Target",
"List checks",
"Clipboard check",
"Circle check",
"File text",
"Lightbulb",
"Book open",
"Graduation cap",
"Star",
"Trophy",
"Accessibility"
]
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Point"
},
"minItems": 1,
"maxItems": 4,
"title": "What attendees learn",
"description": "One to four things attendees take away, each with an icon (or its number), lit one after another. Where a frame is short of room they turn pages."
},
"seats": {
"type": "string",
"maxLength": 56,
"title": "Seats",
"description": "How to join or what it costs, on a chip at the end, such as Free, with the recording for everyone who registers."
},
"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: that it is recorded, how registrations are used, 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 title and its sentence, the date, time, time zone and length, the speakers, what attendees learn, the seats, 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=Webinar&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": "Live sessions",
"chip": "Live webinar",
"headline": "Automate your team's busywork in 30 minutes",
"summary": "A live walkthrough of workflow automations: the rules our customers use most, built from scratch, and your questions.",
"starts": "2026-11-12T17:00:00+01:00",
"timeZone": "Central European Time (CET)",
"minutes": 45,
"speakers": [
{
"name": "Maya Chen",
"role": "Head of product, Flowbase",
"picture": {
"alt": "A person's silhouette on a round green ground",
"url": "media://example-badge.png"
}
},
{
"name": "Daniel Okafor",
"role": "Solutions engineer, Flowbase",
"picture": {
"alt": "A person's silhouette on a round green ground",
"url": "media://example-badge.png"
}
}
],
"learnTitle": "What you will learn",
"learn": [
{
"icon": "zap",
"title": "Build your first rule from a trigger in two minutes"
},
{
"icon": "workflow",
"title": "The five automations our customers use most"
},
{
"icon": "plug-zap",
"title": "Connect Slack, GitHub and Jira without code"
},
{
"icon": "message-circle",
"title": "Your questions, answered live"
}
],
"seats": "Free, with the recording for everyone who registers",
"cta": {
"label": "Save your seat",
"detail": "flowbase.example/live"
},
"footnote": "Free to attend. The session is recorded and the recording is sent to everyone who registers. Flowbase is a trademark of Flowbase Inc.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "round",
"logoSize": "auto"
}
},
"metaData": {
"title": "Live webinar: automate your team's busywork in 30 minutes",
"captionTiny": "Live webinar: automate your team's busywork. Thursday 12 November, 17:00 CET, 45 minutes. Save your seat.",
"captionShort": "Live webinar: automate your team's busywork in 30 minutes. Join Maya Chen and Daniel Okafor on Thursday 12 November at 17:00 CET to build your first rule, see the five automations our customers use most and get your questions answered. Free, with the recording for everyone who registers.",
"captionMedium": "Live webinar: automate your team's busywork in 30 minutes. Join Maya Chen, our head of product, and solutions engineer Daniel Okafor on Thursday 12 November at 17:00 Central European Time for a 45-minute walkthrough of workflow automations. You will build your first rule from a trigger in two minutes, see the five automations our customers use most, connect Slack, GitHub and Jira without code, and get your questions answered live. Free to attend, with the recording for everyone who registers. Save your seat at flowbase.example/live.",
"captionLong": "Live webinar: automate your team's busywork in 30 minutes. Join Maya Chen, our head of product, and solutions engineer Daniel Okafor on Thursday 12 November at 17:00 Central European Time (11:00 Eastern Time) for a 45-minute walkthrough of workflow automations in Flowbase. You will build your first rule from a trigger in two minutes, see the five automations our customers use most (triage, escalation, hand-offs, reminders and reports), connect Slack, GitHub and Jira without writing code, and get your questions answered live. It is free to attend, whatever plan you are on, and the recording is sent to everyone who registers, so sign up even if you cannot make the time. Save your seat at flowbase.example/live. Flowbase is a trademark of Flowbase Inc.",
"hashtags": [
"webinar",
"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.