Skip to main content

Tech and industry (Manufacturing and industry), Hiring 1.0.0

TemplateTech and industry (Manufacturing and industry), tpl_1c972308e957
VariantHiring
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length19 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 job post as a drawing: the headline and every open role on a parts list with its balloon, shift and place, apprentices welcome where sent. Each role is selected in turn, then what the company offers point by point, then how to apply, the button and the presenter. Reference and closing date stay in the title block. One to six roles, under two seconds each. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the section, the line above the headline, the headline and the line under it, the roles with their shifts, places and the words for apprentices, what you offer with its heading, how to apply, 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 Careers or Jobs.
clipData.kickertextup to 40 charactersAbove the headline: Set small above the headline, such as where you are hiring.
clipData.headlinetextyesup to 56 charactersHeadline: What you offer the people you are looking for, as a headline.
clipData.sublinetextup to 120 charactersLine under it: One sentence about the work or the company.
clipData.roleslistyesat least 1, up to 6Roles: One to six open roles, in the order they are shown, each with its shift and its place, on a parts list with a numbered balloon. All on the first frame, then selected one after another; where the frame is short of height they turn pages.
clipData.roles[]groupRole
clipData.roles[].titletextyesup to 40 charactersJob title: The role as it is advertised, such as CNC machinist (m/f/d).
clipData.roles[].shifttextup to 32 charactersShift: The shift or the hours, such as Two shifts, early and late.
clipData.roles[].placetextup to 32 charactersPlace: Where the role is, such as the plant and the department.
clipData.roles[].apprenticesbooleanApprentices welcome: On, the role shows the words for apprentices welcome (below) beside its shift and place.
clipData.apprenticeLabeltextup to 32 charactersApprentices welcome, in words: The words on a role that takes apprentices, such as Apprentices welcome or Apprenticeship possible.
clipData.offersHeadingtextup to 32 charactersOver what you offer: The heading over what you offer, such as What we offer.
clipData.offerslistup to 5What you offer: Up to five points about what you offer your people, each with its pictogram, arriving one after another after the roles. Left out, there is no such scene and the roles are read more slowly instead.
clipData.offers[]groupPoint
clipData.offers[].texttextyesup to 64 charactersPoint: One thing you offer, in a few words.
clipData.offers[].iconenumcoins, banknote, piggy-bank, wallet, hand-coins, badge-percent, shield-check, heart-pulse, hand-heart, stethoscope, sun, calendar, clock, timer, house, graduation-cap, book-open, school, award, badge-check, trophy, users, user, hard-hat, wrench, factory, gauge, cpu, bot, bike, bus, train-front, car, leaf, utensils, coffee, baby, gift, dumbbell, star, thumbs-up, circle-check, checkPictogram: The pictogram on the point's tile. Left out, the tile holds the point's number.
clipData.applytextup to 110 charactersHow to apply: How to apply, shown with the button at the end, such as what to send and how soon you answer.
clipData.postinggroupTitle block: The drawing's title block at the foot of the stage, on every frame: the post's reference, where the jobs are and the closing date, exactly as written. A field left out is not drawn; with none, there is no title block.
clipData.posting.referencetextup to 16 charactersReference: The post's reference, such as VB-HR-2026-14.
clipData.posting.locationtextup to 16 charactersLocation: Where the jobs are, such as Ulm.
clipData.posting.closestextup to 16 charactersClosing date: The last day to apply, written as it should be shown, such as 30 Nov 2026. Also on the end card, after its caption.
clipData.postingLabelsgroupTitle 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.postingLabels.referencetextup to 16 charactersOver the reference: Such as Ref.
clipData.postingLabels.locationtextup to 16 charactersOver the location: Such as Location.
clipData.postingLabels.closestextup to 16 charactersOver the closing date: Such as Apply by.
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, such as your legal entity, and anything an applicant should know, such as that every role is open to all genders. 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 Careers or Jobs."
},
"kicker": {
"type": "string",
"maxLength": 40,
"title": "Above the headline",
"description": "Set small above the headline, such as where you are hiring."
},
"headline": {
"type": "string",
"maxLength": 56,
"title": "Headline",
"description": "What you offer the people you are looking for, as a headline."
},
"subline": {
"type": "string",
"maxLength": 120,
"title": "Line under it",
"description": "One sentence about the work or the company."
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 40,
"title": "Job title",
"description": "The role as it is advertised, such as CNC machinist (m/f/d)."
},
"shift": {
"type": "string",
"maxLength": 32,
"title": "Shift",
"description": "The shift or the hours, such as Two shifts, early and late."
},
"place": {
"type": "string",
"maxLength": 32,
"title": "Place",
"description": "Where the role is, such as the plant and the department."
},
"apprentices": {
"type": "boolean",
"title": "Apprentices welcome",
"description": "On, the role shows the words for apprentices welcome (below) beside its shift and place."
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Role"
},
"minItems": 1,
"maxItems": 6,
"title": "Roles",
"description": "One to six open roles, in the order they are shown, each with its shift and its place, on a parts list with a numbered balloon. All on the first frame, then selected one after another; where the frame is short of height they turn pages."
},
"apprenticeLabel": {
"type": "string",
"maxLength": 32,
"title": "Apprentices welcome, in words",
"description": "The words on a role that takes apprentices, such as Apprentices welcome or Apprenticeship possible."
},
"offersHeading": {
"type": "string",
"maxLength": 32,
"title": "Over what you offer",
"description": "The heading over what you offer, such as What we offer."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 64,
"title": "Point",
"description": "One thing you offer, in a few words."
},
"icon": {
"type": "string",
"enum": [
"coins",
"banknote",
"piggy-bank",
"wallet",
"hand-coins",
"badge-percent",
"shield-check",
"heart-pulse",
"hand-heart",
"stethoscope",
"sun",
"calendar",
"clock",
"timer",
"house",
"graduation-cap",
"book-open",
"school",
"award",
"badge-check",
"trophy",
"users",
"user",
"hard-hat",
"wrench",
"factory",
"gauge",
"cpu",
"bot",
"bike",
"bus",
"train-front",
"car",
"leaf",
"utensils",
"coffee",
"baby",
"gift",
"dumbbell",
"star",
"thumbs-up",
"circle-check",
"check"
],
"title": "Pictogram",
"description": "The pictogram on the point's tile. Left out, the tile holds the point's number.",
"enumNames": [
"Coins",
"Banknote",
"Piggy bank",
"Wallet",
"Hand coins",
"Badge percent",
"Shield check",
"Heart pulse",
"Hand heart",
"Stethoscope",
"Sun",
"Calendar",
"Clock",
"Timer",
"House",
"Graduation cap",
"Book open",
"School",
"Award",
"Badge check",
"Trophy",
"Users",
"User",
"Hard hat",
"Wrench",
"Factory",
"Gauge",
"Cpu",
"Bot",
"Bike",
"Bus",
"Train front",
"Car",
"Leaf",
"Utensils",
"Coffee",
"Baby",
"Gift",
"Dumbbell",
"Star",
"Thumbs up",
"Circle check",
"Check"
]
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Point"
},
"maxItems": 5,
"title": "What you offer",
"description": "Up to five points about what you offer your people, each with its pictogram, arriving one after another after the roles. Left out, there is no such scene and the roles are read more slowly instead."
},
"apply": {
"type": "string",
"maxLength": 110,
"title": "How to apply",
"description": "How to apply, shown with the button at the end, such as what to send and how soon you answer."
},
"posting": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"maxLength": 16,
"title": "Reference",
"description": "The post's reference, such as VB-HR-2026-14."
},
"location": {
"type": "string",
"maxLength": 16,
"title": "Location",
"description": "Where the jobs are, such as Ulm."
},
"closes": {
"type": "string",
"maxLength": 16,
"title": "Closing date",
"description": "The last day to apply, written as it should be shown, such as 30 Nov 2026. Also on the end card, after its caption."
}
},
"additionalProperties": false,
"title": "Title block",
"description": "The drawing's title block at the foot of the stage, on every frame: the post's reference, where the jobs are and the closing date, exactly as written. A field left out is not drawn; with none, there is no title block."
},
"postingLabels": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"maxLength": 16,
"title": "Over the reference",
"description": "Such as Ref."
},
"location": {
"type": "string",
"maxLength": 16,
"title": "Over the location",
"description": "Such as Location."
},
"closes": {
"type": "string",
"maxLength": 16,
"title": "Over the closing date",
"description": "Such as Apply by."
}
},
"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, such as your legal entity, and anything an applicant should know, such as that every role is open to all genders. 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",
"roles"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the line above the headline, the headline and the line under it, the roles with their shifts, places and the words for apprentices, what you offer with its heading, how to apply, 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 Careers or Jobs."
},
"kicker": {
"type": "string",
"maxLength": 40,
"title": "Above the headline",
"description": "Set small above the headline, such as where you are hiring."
},
"headline": {
"type": "string",
"maxLength": 56,
"title": "Headline",
"description": "What you offer the people you are looking for, as a headline."
},
"subline": {
"type": "string",
"maxLength": 120,
"title": "Line under it",
"description": "One sentence about the work or the company."
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 40,
"title": "Job title",
"description": "The role as it is advertised, such as CNC machinist (m/f/d)."
},
"shift": {
"type": "string",
"maxLength": 32,
"title": "Shift",
"description": "The shift or the hours, such as Two shifts, early and late."
},
"place": {
"type": "string",
"maxLength": 32,
"title": "Place",
"description": "Where the role is, such as the plant and the department."
},
"apprentices": {
"type": "boolean",
"title": "Apprentices welcome",
"description": "On, the role shows the words for apprentices welcome (below) beside its shift and place."
}
},
"required": [
"title"
],
"additionalProperties": false,
"title": "Role"
},
"minItems": 1,
"maxItems": 6,
"title": "Roles",
"description": "One to six open roles, in the order they are shown, each with its shift and its place, on a parts list with a numbered balloon. All on the first frame, then selected one after another; where the frame is short of height they turn pages."
},
"apprenticeLabel": {
"type": "string",
"maxLength": 32,
"title": "Apprentices welcome, in words",
"description": "The words on a role that takes apprentices, such as Apprentices welcome or Apprenticeship possible."
},
"offersHeading": {
"type": "string",
"maxLength": 32,
"title": "Over what you offer",
"description": "The heading over what you offer, such as What we offer."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 64,
"title": "Point",
"description": "One thing you offer, in a few words."
},
"icon": {
"type": "string",
"enum": [
"coins",
"banknote",
"piggy-bank",
"wallet",
"hand-coins",
"badge-percent",
"shield-check",
"heart-pulse",
"hand-heart",
"stethoscope",
"sun",
"calendar",
"clock",
"timer",
"house",
"graduation-cap",
"book-open",
"school",
"award",
"badge-check",
"trophy",
"users",
"user",
"hard-hat",
"wrench",
"factory",
"gauge",
"cpu",
"bot",
"bike",
"bus",
"train-front",
"car",
"leaf",
"utensils",
"coffee",
"baby",
"gift",
"dumbbell",
"star",
"thumbs-up",
"circle-check",
"check"
],
"title": "Pictogram",
"description": "The pictogram on the point's tile. Left out, the tile holds the point's number.",
"enumNames": [
"Coins",
"Banknote",
"Piggy bank",
"Wallet",
"Hand coins",
"Badge percent",
"Shield check",
"Heart pulse",
"Hand heart",
"Stethoscope",
"Sun",
"Calendar",
"Clock",
"Timer",
"House",
"Graduation cap",
"Book open",
"School",
"Award",
"Badge check",
"Trophy",
"Users",
"User",
"Hard hat",
"Wrench",
"Factory",
"Gauge",
"Cpu",
"Bot",
"Bike",
"Bus",
"Train front",
"Car",
"Leaf",
"Utensils",
"Coffee",
"Baby",
"Gift",
"Dumbbell",
"Star",
"Thumbs up",
"Circle check",
"Check"
]
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Point"
},
"maxItems": 5,
"title": "What you offer",
"description": "Up to five points about what you offer your people, each with its pictogram, arriving one after another after the roles. Left out, there is no such scene and the roles are read more slowly instead."
},
"apply": {
"type": "string",
"maxLength": 110,
"title": "How to apply",
"description": "How to apply, shown with the button at the end, such as what to send and how soon you answer."
},
"posting": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"maxLength": 16,
"title": "Reference",
"description": "The post's reference, such as VB-HR-2026-14."
},
"location": {
"type": "string",
"maxLength": 16,
"title": "Location",
"description": "Where the jobs are, such as Ulm."
},
"closes": {
"type": "string",
"maxLength": 16,
"title": "Closing date",
"description": "The last day to apply, written as it should be shown, such as 30 Nov 2026. Also on the end card, after its caption."
}
},
"additionalProperties": false,
"title": "Title block",
"description": "The drawing's title block at the foot of the stage, on every frame: the post's reference, where the jobs are and the closing date, exactly as written. A field left out is not drawn; with none, there is no title block."
},
"postingLabels": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"maxLength": 16,
"title": "Over the reference",
"description": "Such as Ref."
},
"location": {
"type": "string",
"maxLength": 16,
"title": "Over the location",
"description": "Such as Location."
},
"closes": {
"type": "string",
"maxLength": 16,
"title": "Over the closing date",
"description": "Such as Apply by."
}
},
"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, such as your legal entity, and anything an applicant should know, such as that every role is open to all genders. 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 line above the headline, the headline and the line under it, the roles with their shifts, places and the words for apprentices, what you offer with its heading, how to apply, 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=Hiring&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": "Careers",
"kicker": "We are hiring in Ulm",
"headline": "Make the parts that keep pumps running",
"subline": "Join 240 people who machine, grind and measure to the micron, in a family company since 1968.",
"roles": [
{
"place": "Ulm plant, machining",
"shift": "Two shifts, early and late",
"title": "CNC machinist (m/f/d)",
"apprentices": true
},
{
"place": "Ulm plant, inspection",
"shift": "Day shift",
"title": "Quality inspector, CMM (m/f/d)"
},
{
"place": "Ulm plant",
"shift": "Three shifts",
"title": "Maintenance electrician (m/f/d)",
"apprentices": true
},
{
"place": "Ulm head office",
"shift": "Flexible hours, office",
"title": "Production planner (m/f/d)"
}
],
"apprenticeLabel": "Apprentices welcome",
"offersHeading": "What we offer",
"offers": [
{
"icon": "coins",
"text": "Pay to the metalworkers' agreement, plus shift allowances"
},
{
"icon": "sun",
"text": "30 days' holiday and a four-day week on rotation"
},
{
"icon": "graduation-cap",
"text": "Training on our machines, and a master's course paid"
},
{
"icon": "bike",
"text": "Company bike and a free shuttle from Ulm station"
}
],
"apply": "No cover letter needed: send us your CV and we call you back within a week.",
"posting": {
"closes": "30 Nov 2026",
"location": "Ulm",
"reference": "VB-HR-2026-14"
},
"postingLabels": {
"closes": "Apply by",
"location": "Location",
"reference": "Ref."
},
"cta": {
"label": "Apply now",
"detail": "vossberg.example/jobs"
},
"footnote": "Vossberg Precision GmbH, Ulm. Every role is open to people of all genders (m/f/d).",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Careers: four roles open at our Ulm plant",
"captionTiny": "We are hiring in Ulm: CNC machinist, CMM inspector, maintenance electrician and production planner. Apprentices welcome. Apply now.",
"captionShort": "We are hiring at our Ulm plant: a CNC machinist, a quality inspector for the CMM, a maintenance electrician and a production planner, all m/f/d, apprentices welcome for machining and maintenance. Pay to the metalworkers' agreement, 30 days' holiday and training on our machines. No cover letter needed: apply by 30 November.",
"captionMedium": "Make the parts that keep pumps running. We are hiring at our plant in Ulm: a CNC machinist for two shifts, a quality inspector for our coordinate measuring machines, a maintenance electrician for three shifts and a production planner for the head office, all m/f/d. Apprentices are welcome in machining and maintenance. We pay to the metalworkers' agreement plus shift allowances, give 30 days' holiday and a four-day week on rotation, train you on our machines and pay for a master's course. No cover letter needed: send us your CV by 30 November and we call you back within a week.",
"captionLong": "Make the parts that keep pumps running. Vossberg Precision is a family company in Ulm, machining, grinding and measuring flange couplings and gears to the micron since 1968, and we are hiring for our plant. We are looking for a CNC machinist for two shifts, early and late; a quality inspector for our coordinate measuring machines on day shift; a maintenance electrician for three shifts; and a production planner for our head office with flexible hours, all m/f/d. Apprentices are welcome in machining and maintenance, and many of our team leaders started as one. We pay to the metalworkers' agreement plus shift allowances, give 30 days' holiday and a four-day week on rotation, train you on our five-axis machines and pay for your master's course when you are ready. There is a company bike for everybody and a free shuttle from Ulm station to the plant. No cover letter needed: send us your CV at vossberg.example/jobs by 30 November, quoting VB-HR-2026-14, and we call you back within a week.",
"hashtags": [
"jobs",
"manufacturing",
"cncmachinist",
"apprenticeship",
"engineeringjobs"
]
}
}
}

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.