Public bodies (City councils), Jobs at the council 1.0.0
| Template | Public bodies (City councils), tpl_edafad905b0f |
|---|---|
| Variant | Jobs at the council |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 21 seconds |
Example video
The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.
What it accepts
Jobs at a city council: the notice on a coloured banner, the headline and up to six roles, each with its department, hours, grade or pay and closing date spelled out, complete on the first frame; each role is read in turn, then what the council offers point by point, how to apply and the button. Who issued it stays on screen throughout. 10.5 seconds, 2.5 more per role. metaData is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the kind of notice and its status, the headline and the line under it, the roles with their department, hours, grade or pay and closing date, what the council offers, how to apply, the labels, the call to action, who issued it and the reference. | |
clipData.notice | text | yes | up to 24 characters | Kind of notice: What kind of post this is, on the coloured banner under your logo on every frame, such as Jobs at the council. |
clipData.status | text | up to 32 characters | Status: Beside the kind of notice on the banner, such as Closing dates from 7 November. | |
clipData.headline | text | yes | up to 72 characters | Headline: What the post is about, in plain words and one message, such as Come and work for your city. |
clipData.intro | text | up to 140 characters | Line under the headline: One sentence about the work, such as what the council's people do. | |
clipData.roles | list | yes | at least 1, up to 6 | Roles: One to six roles open now, in the order they are shown, each with its department, its hours and its grade or pay and its closing date, read in turn, two and a half seconds each. On a short frame they turn pages. |
clipData.roles[] | group | Role | ||
clipData.roles[].title | text | yes | up to 56 characters | Job title: The role's title, as it is advertised. |
clipData.roles[].department | text | yes | up to 56 characters | Department: The department or service the role is in. |
clipData.roles[].hours | text | up to 48 characters | Hours: Full or part time and the hours, such as Full time, 37 hours a week. | |
clipData.roles[].pay | text | up to 56 characters | Grade and pay: The grade or the pay, as it is advertised, such as Grade 7, £33,366 to £36,124. | |
clipData.roles[].closes | datetime | yes | Closing date: The last day to apply. Only the date is read, as it is written here, and it is spelled out in the channel's language with its weekday. | |
clipData.offers | list | up to 4 | What we offer: Up to four points about what the council offers its people, each with its pictogram, on a scene of their own. Left out, there is no such scene and the roles are read more slowly instead. | |
clipData.offers[] | group | Point | ||
clipData.offers[].text | text | yes | up to 72 characters | Point: One thing the council offers, in a few words. |
clipData.offers[].icon | enum | piggy-bank, coins, banknote, wallet, shield-check, heart-pulse, stethoscope, hand-heart, hand-helping, sun, calendar, clock, timer, house, laptop, smartphone, graduation-cap, book-open, school, award, badge-check, users, user, baby, bike, bus, train-front, car, footprints, dumbbell, leaf, trees, accessibility, gift, ticket, coffee, star, thumbs-up, circle-check, check | Pictogram: The pictogram on the point's tile. Left out, the tile holds the point's number. | |
clipData.apply | text | up to 180 characters | How to apply: How to apply, in one or two sentences, shown at the end with the button, such as Apply online by the closing date. | |
clipData.labels | group | Labels: The words beside the facts and over the scenes, in your language. A label left out is not drawn; the pictogram still says which is which. | ||
clipData.labels.closes | text | up to 24 characters | Closing date: Before each role's closing date. | |
clipData.labels.offers | text | up to 32 characters | What we offer: Over the points of what the council offers. | |
clipData.labels.apply | text | up to 32 characters | How to apply: Over how to apply, at the end. | |
clipData.cta | group | Call to action: The button at the end and the line under it, such as a web address 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: A web address, a phone number, an office. | |
clipData.issuedBy | text | yes | up to 120 characters | Issued by: The department or office that issues the notice, in your own words, such as Issued by Human Resources. Shown with your reference above your footer line from the first frame to the last, set smaller rather than cut. |
clipData.reference | text | up to 40 characters | Reference: The vacancy bulletin's or the advert's number, as you write it, such as Vacancy bulletin 44. | |
clipData.look | group | Look: How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, calm, softly rounded, text at the start. | ||
clipData.look.theme | enum | brand, light, dark, bold | Theme: Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page. | |
clipData.look.pace | enum | calm, standard, punchy | Pace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts. | |
clipData.look.corners | enum | square, soft, round | Corners: The shape of cards, pictures and buttons. | |
clipData.look.align | enum | start, centre | Text alignment: Where the text lines up. | |
clipData.look.logo | enum | auto, free | Logo: The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose. | |
clipData.look.logoSize | enum | auto, small, large | Logo size: Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none. | |
metaData | group | Meta data: Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data. | ||
metaData.title | text | up to 100 characters | Title: Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes. | |
metaData.captionTiny | text | up to 200 characters | Tiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionShort | text | up to 500 characters | Short description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionMedium | text | up to 1500 characters | Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok): Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionLong | text | up to 4000 characters | Long description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.hashtags | list | up to 15 | Hashtags: Written without the #. Up to 15, which every platform takes. | |
metaData.hashtags[] | text | up to 60 characters | Hashtag |
locales carries other languages: under each language code, the parts of clipData and metaData that differ, laid over the default, so a language with no copy still renders.
A picture is always a file from your media library: media:// followed by its id or its name.
Anything the table does not list is refused, and so is anything over its limit, with a 400
schema_validation error that names the field.
The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"notice": {
"type": "string",
"maxLength": 24,
"title": "Kind of notice",
"description": "What kind of post this is, on the coloured banner under your logo on every frame, such as Jobs at the council."
},
"status": {
"type": "string",
"maxLength": 32,
"title": "Status",
"description": "Beside the kind of notice on the banner, such as Closing dates from 7 November."
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "What the post is about, in plain words and one message, such as Come and work for your city."
},
"intro": {
"type": "string",
"maxLength": 140,
"title": "Line under the headline",
"description": "One sentence about the work, such as what the council's people do."
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 56,
"title": "Job title",
"description": "The role's title, as it is advertised."
},
"department": {
"type": "string",
"maxLength": 56,
"title": "Department",
"description": "The department or service the role is in."
},
"hours": {
"type": "string",
"maxLength": 48,
"title": "Hours",
"description": "Full or part time and the hours, such as Full time, 37 hours a week."
},
"pay": {
"type": "string",
"maxLength": 56,
"title": "Grade and pay",
"description": "The grade or the pay, as it is advertised, such as Grade 7, £33,366 to £36,124."
},
"closes": {
"type": "string",
"format": "date-time",
"title": "Closing date",
"description": "The last day to apply. Only the date is read, as it is written here, and it is spelled out in the channel's language with its weekday."
}
},
"required": [
"title",
"department",
"closes"
],
"additionalProperties": false,
"title": "Role"
},
"minItems": 1,
"maxItems": 6,
"title": "Roles",
"description": "One to six roles open now, in the order they are shown, each with its department, its hours and its grade or pay and its closing date, read in turn, two and a half seconds each. On a short frame they turn pages."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 72,
"title": "Point",
"description": "One thing the council offers, in a few words."
},
"icon": {
"type": "string",
"enum": [
"piggy-bank",
"coins",
"banknote",
"wallet",
"shield-check",
"heart-pulse",
"stethoscope",
"hand-heart",
"hand-helping",
"sun",
"calendar",
"clock",
"timer",
"house",
"laptop",
"smartphone",
"graduation-cap",
"book-open",
"school",
"award",
"badge-check",
"users",
"user",
"baby",
"bike",
"bus",
"train-front",
"car",
"footprints",
"dumbbell",
"leaf",
"trees",
"accessibility",
"gift",
"ticket",
"coffee",
"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": [
"Piggy bank",
"Coins",
"Banknote",
"Wallet",
"Shield check",
"Heart pulse",
"Stethoscope",
"Hand heart",
"Hand helping",
"Sun",
"Calendar",
"Clock",
"Timer",
"House",
"Laptop",
"Smartphone",
"Graduation cap",
"Book open",
"School",
"Award",
"Badge check",
"Users",
"User",
"Baby",
"Bike",
"Bus",
"Train front",
"Car",
"Footprints",
"Dumbbell",
"Leaf",
"Trees",
"Accessibility",
"Gift",
"Ticket",
"Coffee",
"Star",
"Thumbs up",
"Circle check",
"Check"
]
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Point"
},
"maxItems": 4,
"title": "What we offer",
"description": "Up to four points about what the council offers its people, each with its pictogram, on a scene of their own. Left out, there is no such scene and the roles are read more slowly instead."
},
"apply": {
"type": "string",
"maxLength": 180,
"title": "How to apply",
"description": "How to apply, in one or two sentences, shown at the end with the button, such as Apply online by the closing date."
},
"labels": {
"type": "object",
"properties": {
"closes": {
"type": "string",
"maxLength": 24,
"title": "Closing date",
"description": "Before each role's closing date."
},
"offers": {
"type": "string",
"maxLength": 32,
"title": "What we offer",
"description": "Over the points of what the council offers."
},
"apply": {
"type": "string",
"maxLength": 32,
"title": "How to apply",
"description": "Over how to apply, at the end."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words beside the facts and over the scenes, in your language. A label left out is not drawn; the pictogram still says which is which."
},
"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": "A web address, a phone number, an office."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address or a phone number."
},
"issuedBy": {
"type": "string",
"maxLength": 120,
"title": "Issued by",
"description": "The department or office that issues the notice, in your own words, such as Issued by Human Resources. Shown with your reference above your footer line from the first frame to the last, set smaller rather than cut."
},
"reference": {
"type": "string",
"maxLength": 40,
"title": "Reference",
"description": "The vacancy bulletin's or the advert's number, as you write it, such as Vacancy bulletin 44."
},
"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, calm, softly rounded, text at the start."
}
},
"required": [
"notice",
"headline",
"roles",
"issuedBy"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the kind of notice and its status, the headline and the line under it, the roles with their department, hours, grade or pay and closing date, what the council offers, how to apply, the labels, the call to action, who issued it and the reference."
},
"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": {
"notice": {
"type": "string",
"maxLength": 24,
"title": "Kind of notice",
"description": "What kind of post this is, on the coloured banner under your logo on every frame, such as Jobs at the council."
},
"status": {
"type": "string",
"maxLength": 32,
"title": "Status",
"description": "Beside the kind of notice on the banner, such as Closing dates from 7 November."
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "What the post is about, in plain words and one message, such as Come and work for your city."
},
"intro": {
"type": "string",
"maxLength": 140,
"title": "Line under the headline",
"description": "One sentence about the work, such as what the council's people do."
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 56,
"title": "Job title",
"description": "The role's title, as it is advertised."
},
"department": {
"type": "string",
"maxLength": 56,
"title": "Department",
"description": "The department or service the role is in."
},
"hours": {
"type": "string",
"maxLength": 48,
"title": "Hours",
"description": "Full or part time and the hours, such as Full time, 37 hours a week."
},
"pay": {
"type": "string",
"maxLength": 56,
"title": "Grade and pay",
"description": "The grade or the pay, as it is advertised, such as Grade 7, £33,366 to £36,124."
},
"closes": {
"type": "string",
"format": "date-time",
"title": "Closing date",
"description": "The last day to apply. Only the date is read, as it is written here, and it is spelled out in the channel's language with its weekday."
}
},
"required": [
"title",
"department",
"closes"
],
"additionalProperties": false,
"title": "Role"
},
"minItems": 1,
"maxItems": 6,
"title": "Roles",
"description": "One to six roles open now, in the order they are shown, each with its department, its hours and its grade or pay and its closing date, read in turn, two and a half seconds each. On a short frame they turn pages."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 72,
"title": "Point",
"description": "One thing the council offers, in a few words."
},
"icon": {
"type": "string",
"enum": [
"piggy-bank",
"coins",
"banknote",
"wallet",
"shield-check",
"heart-pulse",
"stethoscope",
"hand-heart",
"hand-helping",
"sun",
"calendar",
"clock",
"timer",
"house",
"laptop",
"smartphone",
"graduation-cap",
"book-open",
"school",
"award",
"badge-check",
"users",
"user",
"baby",
"bike",
"bus",
"train-front",
"car",
"footprints",
"dumbbell",
"leaf",
"trees",
"accessibility",
"gift",
"ticket",
"coffee",
"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": [
"Piggy bank",
"Coins",
"Banknote",
"Wallet",
"Shield check",
"Heart pulse",
"Stethoscope",
"Hand heart",
"Hand helping",
"Sun",
"Calendar",
"Clock",
"Timer",
"House",
"Laptop",
"Smartphone",
"Graduation cap",
"Book open",
"School",
"Award",
"Badge check",
"Users",
"User",
"Baby",
"Bike",
"Bus",
"Train front",
"Car",
"Footprints",
"Dumbbell",
"Leaf",
"Trees",
"Accessibility",
"Gift",
"Ticket",
"Coffee",
"Star",
"Thumbs up",
"Circle check",
"Check"
]
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Point"
},
"maxItems": 4,
"title": "What we offer",
"description": "Up to four points about what the council offers its people, each with its pictogram, on a scene of their own. Left out, there is no such scene and the roles are read more slowly instead."
},
"apply": {
"type": "string",
"maxLength": 180,
"title": "How to apply",
"description": "How to apply, in one or two sentences, shown at the end with the button, such as Apply online by the closing date."
},
"labels": {
"type": "object",
"properties": {
"closes": {
"type": "string",
"maxLength": 24,
"title": "Closing date",
"description": "Before each role's closing date."
},
"offers": {
"type": "string",
"maxLength": 32,
"title": "What we offer",
"description": "Over the points of what the council offers."
},
"apply": {
"type": "string",
"maxLength": 32,
"title": "How to apply",
"description": "Over how to apply, at the end."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words beside the facts and over the scenes, in your language. A label left out is not drawn; the pictogram still says which is which."
},
"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": "A web address, a phone number, an office."
}
},
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address or a phone number."
},
"issuedBy": {
"type": "string",
"maxLength": 120,
"title": "Issued by",
"description": "The department or office that issues the notice, in your own words, such as Issued by Human Resources. Shown with your reference above your footer line from the first frame to the last, set smaller rather than cut."
},
"reference": {
"type": "string",
"maxLength": 40,
"title": "Reference",
"description": "The vacancy bulletin's or the advert's number, as you write it, such as Vacancy bulletin 44."
},
"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, calm, softly rounded, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the kind of notice and its status, the headline and the line under it, the roles with their department, hours, grade or pay and closing date, what the council offers, how to apply, the labels, the call to action, who issued it and the reference."
},
"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_edafad905b0f?variant=Jobs%20at%20the%20council&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": {
"notice": "Jobs at the council",
"status": "Apply by the closing date",
"headline": "Come and work for the City of Westbrook",
"intro": "Help run the services everybody in Westbrook relies on, from parks to planning.",
"roles": [
{
"pay": "Grade 7, £33,366 to £36,124",
"hours": "Full time, 37 hours a week",
"title": "Tree officer",
"closes": "2026-11-14T23:59:00+00:00",
"department": "Parks and Open Spaces"
},
{
"pay": "Grade 4, £25,584 to £26,409",
"hours": "Part time, 22.5 hours a week",
"title": "Customer adviser",
"closes": "2026-11-07T23:59:00+00:00",
"department": "Customer Services"
},
{
"pay": "Grade 8, £37,035 to £39,513",
"hours": "Full time, hybrid working",
"title": "Planning officer",
"closes": "2026-11-21T23:59:00+00:00",
"department": "Planning and Building Control"
},
{
"pay": "Grade 3, £24,404 to £25,183",
"hours": "Full time, early starts",
"title": "Refuse and recycling loader",
"closes": "2026-11-07T23:59:00+00:00",
"department": "Waste and Recycling"
}
],
"offers": [
{
"icon": "piggy-bank",
"text": "A pension the council pays into"
},
{
"icon": "sun",
"text": "27 days' holiday plus bank holidays, rising with service"
},
{
"icon": "clock",
"text": "Flexible and hybrid working where the role allows"
},
{
"icon": "graduation-cap",
"text": "Paid training and professional qualifications"
}
],
"apply": "Apply online by the closing date. We guarantee an interview to disabled applicants who meet the essential criteria for the role.",
"labels": {
"apply": "How to apply",
"closes": "Closing date",
"offers": "What we offer"
},
"cta": {
"label": "See the jobs and apply",
"detail": "westbrook.example/jobs"
},
"issuedBy": "Issued by Human Resources, City of Westbrook",
"reference": "Vacancy bulletin 44",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "soft",
"logoSize": "auto"
}
},
"metaData": {
"title": "Jobs at the City of Westbrook: four roles open now",
"captionTiny": "We're recruiting: tree officer, customer adviser, planning officer and refuse loader. Closing dates from 7 November. Apply at westbrook.example/jobs.",
"captionShort": "Come and work for the City of Westbrook. Four roles are open now: tree officer in Parks and Open Spaces, customer adviser in Customer Services, planning officer in Planning and Building Control, and refuse and recycling loader in Waste and Recycling. Closing dates from Saturday 7 November. We offer a pension the council pays into, 27 days' holiday and paid training. Apply at westbrook.example/jobs.",
"captionMedium": "Come and work for the City of Westbrook. We are recruiting for four roles. Tree officer, Parks and Open Spaces: full time, Grade 7, £33,366 to £36,124, closing 14 November. Customer adviser, Customer Services: part time, 22.5 hours a week, Grade 4, closing 7 November. Planning officer, Planning and Building Control: full time with hybrid working, Grade 8, £37,035 to £39,513, closing 21 November. Refuse and recycling loader, Waste and Recycling: full time, early starts, Grade 3, closing 7 November. We offer a pension the council pays into, 27 days' holiday plus bank holidays, flexible working where the role allows and paid training. Apply online at westbrook.example/jobs by the closing date. We guarantee an interview to disabled applicants who meet the essential criteria.",
"captionLong": "Come and work for the City of Westbrook. The council's people keep the city running, from the parks and the bin rounds to planning and the help desk, and we are recruiting for four roles. Tree officer, in Parks and Open Spaces: full time, 37 hours a week, Grade 7, £33,366 to £36,124, looking after the city's 40,000 street and park trees; closing date Saturday 14 November. Customer adviser, in Customer Services: part time, 22.5 hours a week, Grade 4, £25,584 to £26,409, answering residents' questions by phone, online and at the Civic Centre; closing date Saturday 7 November. Planning officer, in Planning and Building Control: full time with hybrid working, Grade 8, £37,035 to £39,513, deciding planning applications for homes and businesses; closing date Saturday 21 November. Refuse and recycling loader, in Waste and Recycling: full time with early starts, Grade 3, £24,404 to £25,183, on the rounds that collect from every home in the city; closing date Saturday 7 November. What we offer: a pension the council pays into, 27 days' holiday plus bank holidays, rising with service, flexible and hybrid working where the role allows, and paid training and professional qualifications. Every role has a full job description and person specification on our website. Apply online at westbrook.example/jobs by the closing date. We guarantee an interview to disabled applicants who meet the essential criteria for the role, and we welcome applications from everybody in our community. If you need the application in another format, call 0300 123 4567. Issued by Human Resources, City of Westbrook.",
"hashtags": [
"westbrookjobs",
"localgovernmentjobs",
"jobs",
"hiring",
"westbrook"
]
}
}
}
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.