Tech, Spec sheet 1.0.0
| Template | Tech, tpl_46549cf45b15 |
|---|---|
| Variant | Spec sheet |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 13 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 product's specifications: its name and picture, then one to nine specs (label, value, unit, icon) filling a grid or a table that adapts to their number, and a footnote. The clip gets a little under a second longer per spec. metaData is the post's title, descriptions and hashtags and is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the product, its picture, its specifications, the footnote and an optional call to action. | |
clipData.kicker | text | up to 32 characters | Kicker: A short line above the name, such as Technical data. | |
clipData.headline | text | yes | up to 40 characters | Product name: The product the specs belong to. |
clipData.subline | text | up to 80 characters | Tagline: What it is, in one line. | |
clipData.picture | image | media:// file from the media library, alt text up to 120 characters | Picture: The product: a cut-out stands whole on a stage, a photo can fill a frame instead (see Look). Any shape. | |
clipData.specs | list | yes | at least 1, up to 9 | Specifications: One to nine specs, laid out in a grid or table that adapts to how many there are. |
clipData.specs[] | group | Spec | ||
clipData.specs[].label | text | yes | up to 28 characters | Label: What is measured, such as Power draw. |
clipData.specs[].value | text | yes | up to 16 characters | Value: The value as it should be read, such as 40, 2x 2.5 or -20 to 60. |
clipData.specs[].unit | text | up to 12 characters | Unit: Such as W, GB, mm or °C. | |
clipData.specs[].icon | enum | check, circle-check, x, arrow-right, arrow-up-right, plus, star, heart, thumbs-up, sparkles, zap, clock, calendar, map-pin, info, triangle-alert, lightbulb, target, award, crown, gem, flame, timer, list-checks, clipboard-check, badge-check, hand-heart, rocket, trophy, megaphone, bell, qr-code, ticket, gift, key-round, book-open, graduation-cap, house, phone, mail, globe, users, user, cpu, cloud, code, settings, smartphone, laptop, database, bot, factory, gauge, wrench, wifi, battery-charging, plug-zap, server, layers, puzzle, workflow, boxes, hard-hat | Icon: A line icon for the spec. | |
clipData.specs[].highlight | boolean | Highlight: Set this spec in the brand colour, for the one that sells. | ||
clipData.disclaimer | text | up to 140 characters | Footnote: How the values were measured, or that they may change. | |
clipData.cta | group | Call to action: The button at the end and the line under it, such as a web address, a handle or a phone number. | ||
clipData.cta.label | text | yes | up to 28 characters | Button: What the button says. |
clipData.cta.detail | text | up to 48 characters | Line under it: An address, a handle, a phone number. | |
clipData.look | group | Look: How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default. | ||
clipData.look.theme | enum | brand, light, dark, bold | Theme: Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page. | |
clipData.look.pace | enum | calm, standard, punchy | Pace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts. | |
clipData.look.corners | enum | square, soft, round | Corners: The shape of cards, pictures and buttons. | |
clipData.look.align | enum | start, centre | Text alignment: Where the text lines up. | |
clipData.look.layout | enum | tiles, table | Layout: Tiles: each spec on its own card in a grid. Table: a datasheet of ruled rows. | |
clipData.look.picture | enum | product, photo | Picture: Product: the picture shown whole on a lit stage, best for a cut-out. Photo: the picture fills a frame, best for a photo with a background. | |
clipData.look.logo | enum | auto, free | Logo: The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose. | |
metaData | group | Meta data: Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data. | ||
metaData.title | text | up to 100 characters | Title: Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes. | |
metaData.captionTiny | text | up to 200 characters | Tiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionShort | text | up to 500 characters | Short description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionMedium | text | up to 1500 characters | Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok): Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionLong | text | up to 4000 characters | Long description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.hashtags | list | up to 15 | Hashtags: Written without the #. Up to 15, which every platform takes. | |
metaData.hashtags[] | text | up to 60 characters | Hashtag |
locales carries other languages: under each language code, the parts of clipData and metaData that differ, laid over the default, so a language with no copy still renders.
A picture is always a file from your media library: media:// followed by its id or its name.
Anything the table does not list is refused, and so is anything over its limit, with a 422 that
names the field.
The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A short line above the name, such as Technical data."
},
"headline": {
"type": "string",
"maxLength": 40,
"title": "Product name",
"description": "The product the specs belong to."
},
"subline": {
"type": "string",
"maxLength": 80,
"title": "Tagline",
"description": "What it is, in one line."
},
"picture": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"pattern": "^media:\\/\\/[^\\s/\\\\\\u0000-\\u001f][^/\\\\\\u0000-\\u001f]{0,254}$",
"title": "Picture",
"description": "A file from the workspace's media library, written media:// and the file's id or name. A web address is refused."
},
"alt": {
"type": "string",
"maxLength": 120,
"title": "Alt text",
"description": "What the picture shows, for anyone who cannot see it."
}
},
"required": [
"url"
],
"additionalProperties": false,
"title": "Picture",
"description": "The product: a cut-out stands whole on a stage, a photo can fill a frame instead (see Look). Any shape."
},
"specs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Label",
"description": "What is measured, such as Power draw."
},
"value": {
"type": "string",
"maxLength": 16,
"title": "Value",
"description": "The value as it should be read, such as 40, 2x 2.5 or -20 to 60."
},
"unit": {
"type": "string",
"maxLength": 12,
"title": "Unit",
"description": "Such as W, GB, mm or °C."
},
"icon": {
"type": "string",
"enum": [
"check",
"circle-check",
"x",
"arrow-right",
"arrow-up-right",
"plus",
"star",
"heart",
"thumbs-up",
"sparkles",
"zap",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"lightbulb",
"target",
"award",
"crown",
"gem",
"flame",
"timer",
"list-checks",
"clipboard-check",
"badge-check",
"hand-heart",
"rocket",
"trophy",
"megaphone",
"bell",
"qr-code",
"ticket",
"gift",
"key-round",
"book-open",
"graduation-cap",
"house",
"phone",
"mail",
"globe",
"users",
"user",
"cpu",
"cloud",
"code",
"settings",
"smartphone",
"laptop",
"database",
"bot",
"factory",
"gauge",
"wrench",
"wifi",
"battery-charging",
"plug-zap",
"server",
"layers",
"puzzle",
"workflow",
"boxes",
"hard-hat"
],
"title": "Icon",
"description": "A line icon for the spec.",
"enumNames": [
"Check",
"Circle check",
"X",
"Arrow right",
"Arrow up right",
"Plus",
"Star",
"Heart",
"Thumbs up",
"Sparkles",
"Zap",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Lightbulb",
"Target",
"Award",
"Crown",
"Gem",
"Flame",
"Timer",
"List checks",
"Clipboard check",
"Badge check",
"Hand heart",
"Rocket",
"Trophy",
"Megaphone",
"Bell",
"Qr code",
"Ticket",
"Gift",
"Key round",
"Book open",
"Graduation cap",
"House",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Cpu",
"Cloud",
"Code",
"Settings",
"Smartphone",
"Laptop",
"Database",
"Bot",
"Factory",
"Gauge",
"Wrench",
"Wifi",
"Battery charging",
"Plug zap",
"Server",
"Layers",
"Puzzle",
"Workflow",
"Boxes",
"Hard hat"
]
},
"highlight": {
"type": "boolean",
"title": "Highlight",
"description": "Set this spec in the brand colour, for the one that sells."
}
},
"required": [
"label",
"value"
],
"additionalProperties": false,
"title": "Spec"
},
"minItems": 1,
"maxItems": 9,
"title": "Specifications",
"description": "One to nine specs, laid out in a grid or table that adapts to how many there are."
},
"disclaimer": {
"type": "string",
"maxLength": 140,
"title": "Footnote",
"description": "How the values were measured, or that they may change."
},
"cta": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Button",
"description": "What the button says."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "An address, a handle, a phone number."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address, a handle or a phone number."
},
"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"
]
},
"layout": {
"type": "string",
"enum": [
"tiles",
"table"
],
"title": "Layout",
"description": "Tiles: each spec on its own card in a grid. Table: a datasheet of ruled rows.",
"enumNames": [
"Tiles",
"Table"
]
},
"picture": {
"type": "string",
"enum": [
"product",
"photo"
],
"title": "Picture",
"description": "Product: the picture shown whole on a lit stage, best for a cut-out. Photo: the picture fills a frame, best for a photo with a background.",
"enumNames": [
"Product on a stage",
"Photo filling the frame"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default."
}
},
"required": [
"headline",
"specs"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the product, its picture, its specifications, the footnote and an optional call to action."
},
"metaData": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 100,
"title": "Title",
"description": "Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes."
},
"captionTiny": {
"type": "string",
"maxLength": 200,
"title": "Tiny description (Pinterest, Threads, X)",
"description": "Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionShort": {
"type": "string",
"maxLength": 500,
"title": "Short description (Telegram, Threema, WeChat, WhatsApp)",
"description": "Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionMedium": {
"type": "string",
"maxLength": 1500,
"title": "Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok)",
"description": "Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionLong": {
"type": "string",
"maxLength": 4000,
"title": "Long description (Facebook Feed, YouTube)",
"description": "Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"title": "Hashtag"
},
"maxItems": 15,
"title": "Hashtags",
"description": "Written without the #. Up to 15, which every platform takes."
}
},
"additionalProperties": false,
"title": "Meta data",
"description": "Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data."
},
"locales": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A short line above the name, such as Technical data."
},
"headline": {
"type": "string",
"maxLength": 40,
"title": "Product name",
"description": "The product the specs belong to."
},
"subline": {
"type": "string",
"maxLength": 80,
"title": "Tagline",
"description": "What it is, in one line."
},
"picture": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"pattern": "^media:\\/\\/[^\\s/\\\\\\u0000-\\u001f][^/\\\\\\u0000-\\u001f]{0,254}$",
"title": "Picture",
"description": "A file from the workspace's media library, written media:// and the file's id or name. A web address is refused."
},
"alt": {
"type": "string",
"maxLength": 120,
"title": "Alt text",
"description": "What the picture shows, for anyone who cannot see it."
}
},
"required": [
"url"
],
"additionalProperties": false,
"title": "Picture",
"description": "The product: a cut-out stands whole on a stage, a photo can fill a frame instead (see Look). Any shape."
},
"specs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Label",
"description": "What is measured, such as Power draw."
},
"value": {
"type": "string",
"maxLength": 16,
"title": "Value",
"description": "The value as it should be read, such as 40, 2x 2.5 or -20 to 60."
},
"unit": {
"type": "string",
"maxLength": 12,
"title": "Unit",
"description": "Such as W, GB, mm or °C."
},
"icon": {
"type": "string",
"enum": [
"check",
"circle-check",
"x",
"arrow-right",
"arrow-up-right",
"plus",
"star",
"heart",
"thumbs-up",
"sparkles",
"zap",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"lightbulb",
"target",
"award",
"crown",
"gem",
"flame",
"timer",
"list-checks",
"clipboard-check",
"badge-check",
"hand-heart",
"rocket",
"trophy",
"megaphone",
"bell",
"qr-code",
"ticket",
"gift",
"key-round",
"book-open",
"graduation-cap",
"house",
"phone",
"mail",
"globe",
"users",
"user",
"cpu",
"cloud",
"code",
"settings",
"smartphone",
"laptop",
"database",
"bot",
"factory",
"gauge",
"wrench",
"wifi",
"battery-charging",
"plug-zap",
"server",
"layers",
"puzzle",
"workflow",
"boxes",
"hard-hat"
],
"title": "Icon",
"description": "A line icon for the spec.",
"enumNames": [
"Check",
"Circle check",
"X",
"Arrow right",
"Arrow up right",
"Plus",
"Star",
"Heart",
"Thumbs up",
"Sparkles",
"Zap",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Lightbulb",
"Target",
"Award",
"Crown",
"Gem",
"Flame",
"Timer",
"List checks",
"Clipboard check",
"Badge check",
"Hand heart",
"Rocket",
"Trophy",
"Megaphone",
"Bell",
"Qr code",
"Ticket",
"Gift",
"Key round",
"Book open",
"Graduation cap",
"House",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Cpu",
"Cloud",
"Code",
"Settings",
"Smartphone",
"Laptop",
"Database",
"Bot",
"Factory",
"Gauge",
"Wrench",
"Wifi",
"Battery charging",
"Plug zap",
"Server",
"Layers",
"Puzzle",
"Workflow",
"Boxes",
"Hard hat"
]
},
"highlight": {
"type": "boolean",
"title": "Highlight",
"description": "Set this spec in the brand colour, for the one that sells."
}
},
"required": [
"label",
"value"
],
"additionalProperties": false,
"title": "Spec"
},
"minItems": 1,
"maxItems": 9,
"title": "Specifications",
"description": "One to nine specs, laid out in a grid or table that adapts to how many there are."
},
"disclaimer": {
"type": "string",
"maxLength": 140,
"title": "Footnote",
"description": "How the values were measured, or that they may change."
},
"cta": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Button",
"description": "What the button says."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "An address, a handle, a phone number."
}
},
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address, a handle or a phone number."
},
"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"
]
},
"layout": {
"type": "string",
"enum": [
"tiles",
"table"
],
"title": "Layout",
"description": "Tiles: each spec on its own card in a grid. Table: a datasheet of ruled rows.",
"enumNames": [
"Tiles",
"Table"
]
},
"picture": {
"type": "string",
"enum": [
"product",
"photo"
],
"title": "Picture",
"description": "Product: the picture shown whole on a lit stage, best for a cut-out. Photo: the picture fills a frame, best for a photo with a background.",
"enumNames": [
"Product on a stage",
"Photo filling the frame"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same five switches in every format (theme, pace, corners, alignment, logo), plus this format's own. Leave any out for the format's default."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the product, its picture, its specifications, the footnote and an optional call to action."
},
"metaData": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 100,
"title": "Title",
"description": "Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes."
},
"captionTiny": {
"type": "string",
"maxLength": 200,
"title": "Tiny description (Pinterest, Threads, X)",
"description": "Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionShort": {
"type": "string",
"maxLength": 500,
"title": "Short description (Telegram, Threema, WeChat, WhatsApp)",
"description": "Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionMedium": {
"type": "string",
"maxLength": 1500,
"title": "Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok)",
"description": "Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionLong": {
"type": "string",
"maxLength": 4000,
"title": "Long description (Facebook Feed, YouTube)",
"description": "Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"title": "Hashtag"
},
"maxItems": 15,
"title": "Hashtags",
"description": "Written without the #. Up to 15, which every platform takes."
}
},
"additionalProperties": false,
"title": "Meta data",
"description": "Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data."
}
},
"additionalProperties": false
},
"propertyNames": {
"enum": [
"aa",
"ab",
"ae",
"af",
"ak",
"am",
"an",
"ar",
"as",
"av",
"ay",
"az",
"ba",
"be",
"bg",
"bi",
"bm",
"bn",
"bo",
"br",
"bs",
"ca",
"ce",
"ch",
"co",
"cr",
"cs",
"cu",
"cv",
"cy",
"da",
"de",
"dv",
"dz",
"ee",
"el",
"en",
"eo",
"es",
"et",
"eu",
"fa",
"ff",
"fi",
"fj",
"fo",
"fr",
"fy",
"ga",
"gd",
"gl",
"gn",
"gu",
"gv",
"ha",
"he",
"hi",
"ho",
"hr",
"ht",
"hu",
"hy",
"hz",
"ia",
"id",
"ie",
"ig",
"ii",
"ik",
"io",
"is",
"it",
"iu",
"ja",
"jv",
"ka",
"kg",
"ki",
"kj",
"kk",
"kl",
"km",
"kn",
"ko",
"kr",
"ks",
"ku",
"kv",
"kw",
"ky",
"la",
"lb",
"lg",
"li",
"ln",
"lo",
"lt",
"lu",
"lv",
"mg",
"mh",
"mi",
"mk",
"ml",
"mn",
"mr",
"ms",
"mt",
"my",
"na",
"nb",
"nd",
"ne",
"ng",
"nl",
"nn",
"no",
"nr",
"nv",
"ny",
"oc",
"oj",
"om",
"or",
"os",
"pa",
"pi",
"pl",
"ps",
"pt",
"qu",
"rm",
"rn",
"ro",
"ru",
"rw",
"sa",
"sc",
"sd",
"se",
"sg",
"si",
"sk",
"sl",
"sm",
"sn",
"so",
"sq",
"sr",
"ss",
"st",
"su",
"sv",
"sw",
"ta",
"te",
"tg",
"th",
"ti",
"tk",
"tl",
"tn",
"to",
"tr",
"ts",
"tt",
"tw",
"ty",
"ug",
"uk",
"ur",
"uz",
"ve",
"vi",
"vo",
"wa",
"wo",
"xh",
"yi",
"yo",
"za",
"zh",
"zu",
"zh-CN",
"zh-TW",
"pt-BR"
]
}
}
},
"required": [
"clipData"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
Ask Reelwire for the same document yourself, without signing in:
curl "http://localhost:4000/v1/formats/template/tpl_46549cf45b15?variant=Spec%20sheet&version=1.0.0"
Delivery JSON
Your own system sends this to one of your streams, POST /v1/stream, and every channel listening to
that stream draws it with its template. data is the document described above; a stream with an
empty field map passes it to the template unchanged. Try it first on POST /v1/stream/validate,
which answers the same without publishing anything. Streams and feeds
explains the rest, including how to map a document of your own shape instead.
{
"streamId": "st_your_stream_id",
"eventId": "01M2SQMKK3G1NVFXV31DCBVB95",
"occurredAt": "2026-09-23T07:00:00Z",
"locale": "en",
"data": {
"clipData": {
"kicker": "Technical data",
"headline": "Lumen Node S2",
"subline": "Fanless edge AI computer for vision on the line",
"picture": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
},
"specs": [
{
"icon": "cpu",
"unit": "TOPS",
"label": "AI performance",
"value": "40",
"highlight": true
},
{
"icon": "plug-zap",
"unit": "W",
"label": "Power draw",
"value": "15"
},
{
"icon": "server",
"unit": "GB",
"label": "Memory",
"value": "16"
},
{
"icon": "database",
"unit": "GB NVMe",
"label": "Storage",
"value": "256"
},
{
"icon": "wifi",
"unit": "GbE",
"label": "Network",
"value": "2x 2.5"
},
{
"icon": "gauge",
"unit": "°C",
"label": "Operating range",
"value": "-20 to 60"
},
{
"icon": "boxes",
"unit": "kg",
"label": "Weight",
"value": "1.2"
},
{
"icon": "layers",
"unit": "mm",
"label": "Size",
"value": "180 x 120 x 48"
}
],
"disclaimer": "Typical values at 25 °C ambient. Specifications subject to change.",
"cta": {
"label": "Get the datasheet",
"detail": "lumenlabs.example/node-s2"
},
"look": {
"theme": "brand",
"pace": "standard",
"corners": "soft",
"align": "start",
"layout": "tiles",
"picture": "product",
"logo": "auto"
}
},
"metaData": {
"title": "Lumen Node S2: the technical data",
"captionTiny": "Lumen Node S2 in numbers: 40 TOPS, 15 W, 16 GB, two 2.5 GbE ports, -20 to 60 °C, 1.2 kg.",
"captionShort": "The Lumen Node S2 in numbers: 40 TOPS of AI performance at 15 W, 16 GB of memory, 256 GB NVMe storage, two 2.5 GbE ports and an operating range from -20 to 60 °C, in 1.2 kg.",
"captionMedium": "The technical data of the Lumen Node S2, our fanless edge AI computer for vision on the line: 40 TOPS of AI performance at a power draw of 15 W, 16 GB of memory and 256 GB of NVMe storage, two 2.5 GbE network ports, an operating range from -20 to 60 °C, a weight of 1.2 kg and a footprint of 180 by 120 by 48 mm. Typical values at 25 °C ambient. Get the full datasheet at lumenlabs.example/node-s2.",
"captionLong": "The technical data of the Lumen Node S2, our fanless edge AI computer for vision on the line. It delivers 40 TOPS of AI performance at a power draw of 15 W, with 16 GB of memory and 256 GB of NVMe storage for models and logs. Two 2.5 GbE ports connect cameras and controllers, and the sealed body runs from -20 to 60 °C without a fan. It weighs 1.2 kg and measures 180 by 120 by 48 mm, small enough to mount beside the line it watches. All values are typical at 25 °C ambient and may change. Get the full datasheet, drawings and mounting guide at lumenlabs.example/node-s2.",
"hashtags": [
"edgeai",
"datasheet",
"industrialpc",
"lumenlabs"
]
}
}
}
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.