Skip to main content

Tech and industry (Manufacturing and industry), Machine uptime 1.0.0

TemplateTech and industry (Manufacturing and industry), tpl_1c972308e957
VariantMachine uptime
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length12 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 plant's uptime board: the week or month it covers, the plant's overall figure against its target, and one to eight lines or machines, each a bar to its uptime with a mark at its target and the figure, a line below target in the brand's down colour. The overall figure and each line are selected in turn. Seven seconds, and one more per line. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the section, the site, the headline, the period and the line under it, the unit and the common target, the overall figure, the lines, the column captions, the title block, the call to action and the footnote.
clipData.sectiontextup to 24 charactersSection: What the post is, on the type plate at the end of the header, such as Performance or Shopfloor.
clipData.kickertextup to 36 charactersSite: The plant, the hall or the area the figures are for, set small above the headline.
clipData.headlinetextyesup to 56 charactersHeadline: What the board shows, as a headline, such as Machine uptime this week.
clipData.periodtextyesup to 40 charactersPeriod: The week or the month the figures cover, written as it should be shown, such as Week 41, 6 to 12 October 2026. Required: a figure always names its period.
clipData.sublinetextup to 110 charactersLine under it: One sentence on what happened, such as why a line is below target.
clipData.unittextup to 8 charactersUnit: The unit after every figure and target, such as %. A percent sign stays on the figure.
clipData.targetnumberTarget: The target of every line that has none of its own, a number in the same unit. Left out, a line without its own target has no mark.
clipData.overallgroupOverall figure: The plant's or the hall's figure for the whole period, set large with a bar against its own target. Left out, none is shown.
clipData.overall.labeltextup to 28 charactersCaption: Such as Plant overall.
clipData.overall.valuenumberyesValue: The overall figure, shown exactly as sent with its decimals.
clipData.overall.targetnumberTarget: Its target, in the same unit. Left out, the bar has no mark.
clipData.lineslistyesat least 1, up to 8Lines or machines: One to eight lines or machines, in the order they are read: the name, the uptime as a number (shown exactly as sent) and, where it differs from the common target, its own target. All on the first frame, then selected one after another; where the frame is short of height they turn pages.
clipData.lines[]groupLine
clipData.lines[].nametextyesup to 28 charactersName: Such as Line 1, five-axis cells or Press 4.
clipData.lines[].valuenumberyes4 decimalsUptime: The figure itself, in the unit above.
clipData.lines[].targetnumberOwn target: This line's target, where it differs from the common one.
clipData.columnsgroupColumn captions: The captions over the board's columns, in your language; the target's also stands beside the overall figure's target. A caption left out is not drawn.
clipData.columns.linetextup to 24 charactersOver the lines: Such as Line or machine.
clipData.columns.valuetextup to 16 charactersOver the figures: Such as Uptime.
clipData.columns.targettextup to 12 charactersOver the targets: Such as Target.
clipData.drawinggroupTitle block: The title block at the foot of the stage, on every frame, as on a drawing: the report's number, the area it covers and the date, exactly as written. A field left out is not drawn; with none, there is no title block.
clipData.drawing.numbertextup to 16 charactersNumber: The report's number.
clipData.drawing.areatextup to 20 charactersArea: The plant, the hall or the area it covers.
clipData.drawing.datetextup to 16 charactersDate: The date of issue, written as it should be shown, such as 2026-10-13.
clipData.drawingLabelsgroupTitle block captions: The small caption over each field of the title block, in your language. A caption left out is not drawn; the field still is.
clipData.drawingLabels.numbertextup to 16 charactersOver the number: Such as Report no.
clipData.drawingLabels.areatextup to 12 charactersOver the area: Such as Area.
clipData.drawingLabels.datetextup to 12 charactersOver the date: Such as Issued.
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 charactersFootnote: Who stands behind the post and how the figures are measured, such as your legal entity and what counts as uptime. Shown above your footer line from the first frame to the last; a long one is set smaller, never cut.
clipData.lookgroupLook: How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, square 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": 24,
"title": "Section",
"description": "What the post is, on the type plate at the end of the header, such as Performance or Shopfloor."
},
"kicker": {
"type": "string",
"maxLength": 36,
"title": "Site",
"description": "The plant, the hall or the area the figures are for, set small above the headline."
},
"headline": {
"type": "string",
"maxLength": 56,
"title": "Headline",
"description": "What the board shows, as a headline, such as Machine uptime this week."
},
"period": {
"type": "string",
"maxLength": 40,
"title": "Period",
"description": "The week or the month the figures cover, written as it should be shown, such as Week 41, 6 to 12 October 2026. Required: a figure always names its period."
},
"subline": {
"type": "string",
"maxLength": 110,
"title": "Line under it",
"description": "One sentence on what happened, such as why a line is below target."
},
"unit": {
"type": "string",
"maxLength": 8,
"title": "Unit",
"description": "The unit after every figure and target, such as %. A percent sign stays on the figure."
},
"target": {
"type": "number",
"title": "Target",
"description": "The target of every line that has none of its own, a number in the same unit. Left out, a line without its own target has no mark."
},
"overall": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Caption",
"description": "Such as Plant overall."
},
"value": {
"type": "number",
"title": "Value",
"description": "The overall figure, shown exactly as sent with its decimals."
},
"target": {
"type": "number",
"title": "Target",
"description": "Its target, in the same unit. Left out, the bar has no mark."
}
},
"required": [
"value"
],
"additionalProperties": false,
"title": "Overall figure",
"description": "The plant's or the hall's figure for the whole period, set large with a bar against its own target. Left out, none is shown."
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 28,
"title": "Name",
"description": "Such as Line 1, five-axis cells or Press 4."
},
"value": {
"type": "number",
"title": "Uptime",
"description": "The figure itself, in the unit above."
},
"target": {
"type": "number",
"title": "Own target",
"description": "This line's target, where it differs from the common one."
}
},
"required": [
"name",
"value"
],
"additionalProperties": false,
"title": "Line"
},
"minItems": 1,
"maxItems": 8,
"title": "Lines or machines",
"description": "One to eight lines or machines, in the order they are read: the name, the uptime as a number (shown exactly as sent) and, where it differs from the common target, its own target. All on the first frame, then selected one after another; where the frame is short of height they turn pages."
},
"columns": {
"type": "object",
"properties": {
"line": {
"type": "string",
"maxLength": 24,
"title": "Over the lines",
"description": "Such as Line or machine."
},
"value": {
"type": "string",
"maxLength": 16,
"title": "Over the figures",
"description": "Such as Uptime."
},
"target": {
"type": "string",
"maxLength": 12,
"title": "Over the targets",
"description": "Such as Target."
}
},
"additionalProperties": false,
"title": "Column captions",
"description": "The captions over the board's columns, in your language; the target's also stands beside the overall figure's target. A caption left out is not drawn."
},
"drawing": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Number",
"description": "The report's number."
},
"area": {
"type": "string",
"maxLength": 20,
"title": "Area",
"description": "The plant, the hall or the area it covers."
},
"date": {
"type": "string",
"maxLength": 16,
"title": "Date",
"description": "The date of issue, written as it should be shown, such as 2026-10-13."
}
},
"additionalProperties": false,
"title": "Title block",
"description": "The title block at the foot of the stage, on every frame, as on a drawing: the report's number, the area it covers and the date, exactly as written. A field left out is not drawn; with none, there is no title block."
},
"drawingLabels": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Over the number",
"description": "Such as Report no."
},
"area": {
"type": "string",
"maxLength": 12,
"title": "Over the area",
"description": "Such as Area."
},
"date": {
"type": "string",
"maxLength": 12,
"title": "Over the date",
"description": "Such as Issued."
}
},
"additionalProperties": false,
"title": "Title block captions",
"description": "The small caption over each field of the title block, in your language. A caption left out is not drawn; the field still is."
},
"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": "Footnote",
"description": "Who stands behind the post and how the figures are measured, such as your legal entity and what counts as uptime. Shown above your footer line from the first frame to the last; a long one is set smaller, never cut."
},
"look": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": [
"brand",
"light",
"dark",
"bold"
],
"title": "Theme",
"description": "Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.",
"enumNames": [
"Brand colours",
"Light",
"Dark",
"Bold brand colour"
]
},
"pace": {
"type": "string",
"enum": [
"calm",
"standard",
"punchy"
],
"title": "Pace",
"description": "How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.",
"enumNames": [
"Calm",
"Standard",
"Punchy"
]
},
"corners": {
"type": "string",
"enum": [
"square",
"soft",
"round"
],
"title": "Corners",
"description": "The shape of cards, pictures and buttons.",
"enumNames": [
"Square",
"Softly rounded",
"Round"
]
},
"align": {
"type": "string",
"enum": [
"start",
"centre"
],
"title": "Text alignment",
"description": "Where the text lines up.",
"enumNames": [
"At the start of the line",
"Centred"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
},
"logoSize": {
"type": "string",
"enum": [
"auto",
"small",
"large"
],
"title": "Logo size",
"description": "Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.",
"enumNames": [
"Standard",
"Small",
"Large"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, square corners, text at the start."
}
},
"required": [
"headline",
"period",
"lines"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the site, the headline, the period and the line under it, the unit and the common target, the overall figure, the lines, the column captions, the title block, the call to action and the footnote."
},
"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": 24,
"title": "Section",
"description": "What the post is, on the type plate at the end of the header, such as Performance or Shopfloor."
},
"kicker": {
"type": "string",
"maxLength": 36,
"title": "Site",
"description": "The plant, the hall or the area the figures are for, set small above the headline."
},
"headline": {
"type": "string",
"maxLength": 56,
"title": "Headline",
"description": "What the board shows, as a headline, such as Machine uptime this week."
},
"period": {
"type": "string",
"maxLength": 40,
"title": "Period",
"description": "The week or the month the figures cover, written as it should be shown, such as Week 41, 6 to 12 October 2026. Required: a figure always names its period."
},
"subline": {
"type": "string",
"maxLength": 110,
"title": "Line under it",
"description": "One sentence on what happened, such as why a line is below target."
},
"unit": {
"type": "string",
"maxLength": 8,
"title": "Unit",
"description": "The unit after every figure and target, such as %. A percent sign stays on the figure."
},
"target": {
"type": "number",
"title": "Target",
"description": "The target of every line that has none of its own, a number in the same unit. Left out, a line without its own target has no mark."
},
"overall": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Caption",
"description": "Such as Plant overall."
},
"value": {
"type": "number",
"title": "Value",
"description": "The overall figure, shown exactly as sent with its decimals."
},
"target": {
"type": "number",
"title": "Target",
"description": "Its target, in the same unit. Left out, the bar has no mark."
}
},
"additionalProperties": false,
"title": "Overall figure",
"description": "The plant's or the hall's figure for the whole period, set large with a bar against its own target. Left out, none is shown."
},
"lines": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 28,
"title": "Name",
"description": "Such as Line 1, five-axis cells or Press 4."
},
"value": {
"type": "number",
"title": "Uptime",
"description": "The figure itself, in the unit above."
},
"target": {
"type": "number",
"title": "Own target",
"description": "This line's target, where it differs from the common one."
}
},
"required": [
"name",
"value"
],
"additionalProperties": false,
"title": "Line"
},
"minItems": 1,
"maxItems": 8,
"title": "Lines or machines",
"description": "One to eight lines or machines, in the order they are read: the name, the uptime as a number (shown exactly as sent) and, where it differs from the common target, its own target. All on the first frame, then selected one after another; where the frame is short of height they turn pages."
},
"columns": {
"type": "object",
"properties": {
"line": {
"type": "string",
"maxLength": 24,
"title": "Over the lines",
"description": "Such as Line or machine."
},
"value": {
"type": "string",
"maxLength": 16,
"title": "Over the figures",
"description": "Such as Uptime."
},
"target": {
"type": "string",
"maxLength": 12,
"title": "Over the targets",
"description": "Such as Target."
}
},
"additionalProperties": false,
"title": "Column captions",
"description": "The captions over the board's columns, in your language; the target's also stands beside the overall figure's target. A caption left out is not drawn."
},
"drawing": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Number",
"description": "The report's number."
},
"area": {
"type": "string",
"maxLength": 20,
"title": "Area",
"description": "The plant, the hall or the area it covers."
},
"date": {
"type": "string",
"maxLength": 16,
"title": "Date",
"description": "The date of issue, written as it should be shown, such as 2026-10-13."
}
},
"additionalProperties": false,
"title": "Title block",
"description": "The title block at the foot of the stage, on every frame, as on a drawing: the report's number, the area it covers and the date, exactly as written. A field left out is not drawn; with none, there is no title block."
},
"drawingLabels": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Over the number",
"description": "Such as Report no."
},
"area": {
"type": "string",
"maxLength": 12,
"title": "Over the area",
"description": "Such as Area."
},
"date": {
"type": "string",
"maxLength": 12,
"title": "Over the date",
"description": "Such as Issued."
}
},
"additionalProperties": false,
"title": "Title block captions",
"description": "The small caption over each field of the title block, in your language. A caption left out is not drawn; the field still is."
},
"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": "Footnote",
"description": "Who stands behind the post and how the figures are measured, such as your legal entity and what counts as uptime. Shown above your footer line from the first frame to the last; a long one is set smaller, never cut."
},
"look": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": [
"brand",
"light",
"dark",
"bold"
],
"title": "Theme",
"description": "Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.",
"enumNames": [
"Brand colours",
"Light",
"Dark",
"Bold brand colour"
]
},
"pace": {
"type": "string",
"enum": [
"calm",
"standard",
"punchy"
],
"title": "Pace",
"description": "How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.",
"enumNames": [
"Calm",
"Standard",
"Punchy"
]
},
"corners": {
"type": "string",
"enum": [
"square",
"soft",
"round"
],
"title": "Corners",
"description": "The shape of cards, pictures and buttons.",
"enumNames": [
"Square",
"Softly rounded",
"Round"
]
},
"align": {
"type": "string",
"enum": [
"start",
"centre"
],
"title": "Text alignment",
"description": "Where the text lines up.",
"enumNames": [
"At the start of the line",
"Centred"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
},
"logoSize": {
"type": "string",
"enum": [
"auto",
"small",
"large"
],
"title": "Logo size",
"description": "Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.",
"enumNames": [
"Standard",
"Small",
"Large"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, square corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the site, the headline, the period and the line under it, the unit and the common target, the overall figure, the lines, the column captions, the title block, the call to action and the footnote."
},
"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_1c972308e957?variant=Machine%20uptime&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": "Performance",
"kicker": "Plant Ulm-Donautal, machining",
"headline": "Machine uptime this week",
"period": "Week 41, 6 to 12 October 2026",
"subline": "Line 4 lost a shift to a hydraulic fault and has run since Thursday.",
"unit": "%",
"target": 90,
"overall": {
"label": "Plant overall",
"value": 93.6,
"target": 90
},
"lines": [
{
"name": "Line 1, five-axis cells",
"value": 96.4
},
{
"name": "Line 2, turning",
"value": 94.1
},
{
"name": "Line 3, grinding",
"value": 91.2
},
{
"name": "Line 4, gear hobbing",
"value": 86.9
},
{
"name": "Line 5, heat treatment",
"value": 97.8,
"target": 95
},
{
"name": "Line 6, assembly",
"value": 95.3
}
],
"columns": {
"line": "Line or machine",
"value": "Uptime",
"target": "Target"
},
"drawing": {
"area": "Machining",
"date": "2026-10-13",
"number": "UPT-2026-41"
},
"drawingLabels": {
"area": "Area",
"date": "Issued",
"number": "Report no."
},
"cta": {
"label": "Book capacity with us",
"detail": "vossberg.example/capacity"
},
"footnote": "Vossberg Precision GmbH, Ulm. Uptime is run time over planned production time; planned maintenance is not counted as downtime.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Machine uptime, week 41: 93.6% across the plant",
"captionTiny": "Week 41 at Plant Ulm: 93.6% uptime across six machining lines, against a target of 90%. Heat treatment led at 97.8%.",
"captionShort": "Machine uptime in week 41 at Plant Ulm-Donautal: 93.6% across the plant, against a target of 90%. Five of six lines ran at or above target, with heat treatment leading at 97.8%. Line 4, gear hobbing, lost a shift to a hydraulic fault and has run without a stop since Thursday. Capacity you can plan on.",
"captionMedium": "Machine uptime in week 41, 6 to 12 October, at Plant Ulm-Donautal: 93.6% across the plant, against a target of 90%. Five of our six machining lines ran at or above target: five-axis cells 96.4%, turning 94.1%, grinding 91.2%, heat treatment 97.8% against its own 95% and assembly 95.3%. Line 4, gear hobbing, came in at 86.9% after a hydraulic fault cost it a shift; the pump was replaced and the line has run without a stop since Thursday. We publish these figures every week, because the capacity you book with us is capacity that runs.",
"captionLong": "Machine uptime in week 41, 6 to 12 October, at Plant Ulm-Donautal: 93.6% across the plant, against a target of 90%. Five of our six machining lines ran at or above target: the five-axis cells at 96.4%, turning at 94.1%, grinding at 91.2%, heat treatment at 97.8% against its own target of 95% and assembly at 95.3%. Line 4, gear hobbing, came in at 86.9% after a hydraulic fault cost it most of a shift on Tuesday; our maintenance team replaced the pump overnight and the line has run without a stop since Thursday. We count uptime as run time over planned production time, with planned maintenance not counted as downtime, and we publish the figures every week whatever they say, because the capacity you book with us is capacity that runs. Planning a series for next quarter? Talk to us about free spindle hours. Vossberg Precision GmbH, Ulm.",
"hashtags": [
"manufacturing",
"oee",
"leanmanufacturing",
"cncmachining",
"smartfactory"
]
}
}
}

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.