Public bodies (City councils), Service change 1.0.0
| Template | Public bodies (City councils), tpl_edafad905b0f |
|---|---|
| Variant | Service change |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 20 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 change to a city service: the notice on a coloured banner, the headline, the service, what changes, from and until and why, complete on the first frame; each fact is then read in turn, then what you need to do, up to four points of what it means for you, the dates and the button. Who issued it stays on screen throughout. 13.5 seconds, 1.5 more per point. 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, its status and pictogram, the headline, the service, what changes, from and until, why, what you need to do, what it means for you, 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 notice this is, on the coloured banner under your logo on every frame, such as Service change or Opening hours. |
clipData.status | text | up to 32 characters | Status: How it stands, beside the kind of notice on the banner, such as Christmas and New Year, Temporary or From 5 January. | |
clipData.icon | enum | bus, train-front, bike, car, truck, footprints, accessibility, house, store, school, stethoscope, building, landmark, trees, leaf, recycle, trash, droplets, plug-zap, wifi, wrench, hard-hat, clock, calendar, map-pin, info, triangle-alert, phone, mail, globe, users, user, baby, bell, megaphone, file-text, lock, hand-helping, heart-pulse, sun, moon, book-open, smartphone, credit-card, key-round, dumbbell, roadworks, barrier, road-closed, diversion, route, parking, map, siren | Pictogram: The service's pictogram, on the banner and beside the service: a bin, a bus, a book for a library. Left out, the banner shows an information sign. | |
clipData.headline | text | yes | up to 72 characters | Headline: What changes, in plain words and one message, such as Bins are collected a day later over Christmas. Facts only: a notice informs and never campaigns. |
clipData.service | text | yes | up to 80 characters | Service: The service that changes, spelled out, such as Household bins, recycling and food waste, or the Central Library. |
clipData.change | text | yes | up to 140 characters | What changes: What changes for the people who use it, in a sentence or two. |
clipData.from | datetime | yes | From: The day the change starts. Only the date is read, as it is written here, and it is spelled out in the channel's language with its weekday. | |
clipData.until | datetime | Until: The last day of a change that ends, read and spelled out the same way. Left out for a change that stays. | ||
clipData.fromText | text | up to 48 characters | From, as written: The start in your own words, shown instead of the date, such as From the week of 22 December. Left out, it is written from the date. | |
clipData.untilText | text | up to 48 characters | Until, as written: The end in your own words, shown instead of the date, such as Until the library reopens in spring. Left out, it is written from the date. | |
clipData.why | text | up to 100 characters | Why: Why it changes, in one line, such as Because of the bank holidays on Christmas Day and New Year's Day. | |
clipData.action | text | up to 160 characters | What you need to do: What the people who use the service should do, spelled out. Shown large on a scene of its own. Left out, there is no such scene. | |
clipData.impacts | list | up to 4 | What it means for you: Up to four short points for the people who use the service, each with its pictogram. Each is read in turn, about one and a half seconds each; on a short frame they turn pages. | |
clipData.impacts[] | group | Point | ||
clipData.impacts[].text | text | yes | up to 72 characters | Point: What it means, in a few words. |
clipData.impacts[].icon | enum | bus, train-front, bike, car, truck, footprints, accessibility, house, store, school, stethoscope, building, landmark, trees, leaf, recycle, trash, droplets, plug-zap, wifi, wrench, hard-hat, clock, calendar, map-pin, info, triangle-alert, phone, mail, globe, users, user, baby, bell, megaphone, file-text, lock, hand-helping, heart-pulse, sun, moon, book-open, smartphone, credit-card, key-round, dumbbell, roadworks, barrier, road-closed, diversion, route, parking, map, siren | Pictogram: The pictogram on the point's tile. Left out, the tile holds the point's number. | |
clipData.labels | group | Labels: The words beside the facts, over the dates and over the scenes, in your language. A label left out is not drawn; the pictogram still says which is which. | ||
clipData.labels.service | text | up to 24 characters | Service: Beside the service. | |
clipData.labels.change | text | up to 24 characters | What changes: Beside what changes. | |
clipData.labels.from | text | up to 24 characters | From: Beside the start, and over its date at the end. | |
clipData.labels.until | text | up to 24 characters | Until: Beside the end, and over its date at the end. | |
clipData.labels.why | text | up to 24 characters | Why: Beside why. | |
clipData.labels.action | text | up to 32 characters | What you need to do: Over what to do. | |
clipData.labels.impacts | text | up to 32 characters | What it means: Over the points. | |
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 Waste and Recycling. 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 notice's file number, as you write it, such as Ref. WR/2026/88. Left out, none is shown. | |
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 notice this is, on the coloured banner under your logo on every frame, such as Service change or Opening hours."
},
"status": {
"type": "string",
"maxLength": 32,
"title": "Status",
"description": "How it stands, beside the kind of notice on the banner, such as Christmas and New Year, Temporary or From 5 January."
},
"icon": {
"type": "string",
"enum": [
"bus",
"train-front",
"bike",
"car",
"truck",
"footprints",
"accessibility",
"house",
"store",
"school",
"stethoscope",
"building",
"landmark",
"trees",
"leaf",
"recycle",
"trash",
"droplets",
"plug-zap",
"wifi",
"wrench",
"hard-hat",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"phone",
"mail",
"globe",
"users",
"user",
"baby",
"bell",
"megaphone",
"file-text",
"lock",
"hand-helping",
"heart-pulse",
"sun",
"moon",
"book-open",
"smartphone",
"credit-card",
"key-round",
"dumbbell",
"roadworks",
"barrier",
"road-closed",
"diversion",
"route",
"parking",
"map",
"siren"
],
"title": "Pictogram",
"description": "The service's pictogram, on the banner and beside the service: a bin, a bus, a book for a library. Left out, the banner shows an information sign.",
"enumNames": [
"Bus",
"Train front",
"Bike",
"Car",
"Truck",
"Footprints",
"Accessibility",
"House",
"Store",
"School",
"Stethoscope",
"Building",
"Landmark",
"Trees",
"Leaf",
"Recycle",
"Trash",
"Droplets",
"Plug zap",
"Wifi",
"Wrench",
"Hard hat",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Baby",
"Bell",
"Megaphone",
"File text",
"Lock",
"Hand helping",
"Heart pulse",
"Sun",
"Moon",
"Book open",
"Smartphone",
"Credit card",
"Key round",
"Dumbbell",
"Roadworks (a cone)",
"Barrier",
"Road closed",
"Diversion",
"Route",
"Parking",
"Map",
"Siren"
]
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "What changes, in plain words and one message, such as Bins are collected a day later over Christmas. Facts only: a notice informs and never campaigns."
},
"service": {
"type": "string",
"maxLength": 80,
"title": "Service",
"description": "The service that changes, spelled out, such as Household bins, recycling and food waste, or the Central Library."
},
"change": {
"type": "string",
"maxLength": 140,
"title": "What changes",
"description": "What changes for the people who use it, in a sentence or two."
},
"from": {
"type": "string",
"format": "date-time",
"title": "From",
"description": "The day the change starts. Only the date is read, as it is written here, and it is spelled out in the channel's language with its weekday."
},
"until": {
"type": "string",
"format": "date-time",
"title": "Until",
"description": "The last day of a change that ends, read and spelled out the same way. Left out for a change that stays."
},
"fromText": {
"type": "string",
"maxLength": 48,
"title": "From, as written",
"description": "The start in your own words, shown instead of the date, such as From the week of 22 December. Left out, it is written from the date."
},
"untilText": {
"type": "string",
"maxLength": 48,
"title": "Until, as written",
"description": "The end in your own words, shown instead of the date, such as Until the library reopens in spring. Left out, it is written from the date."
},
"why": {
"type": "string",
"maxLength": 100,
"title": "Why",
"description": "Why it changes, in one line, such as Because of the bank holidays on Christmas Day and New Year's Day."
},
"action": {
"type": "string",
"maxLength": 160,
"title": "What you need to do",
"description": "What the people who use the service should do, spelled out. Shown large on a scene of its own. Left out, there is no such scene."
},
"impacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 72,
"title": "Point",
"description": "What it means, in a few words."
},
"icon": {
"type": "string",
"enum": [
"bus",
"train-front",
"bike",
"car",
"truck",
"footprints",
"accessibility",
"house",
"store",
"school",
"stethoscope",
"building",
"landmark",
"trees",
"leaf",
"recycle",
"trash",
"droplets",
"plug-zap",
"wifi",
"wrench",
"hard-hat",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"phone",
"mail",
"globe",
"users",
"user",
"baby",
"bell",
"megaphone",
"file-text",
"lock",
"hand-helping",
"heart-pulse",
"sun",
"moon",
"book-open",
"smartphone",
"credit-card",
"key-round",
"dumbbell",
"roadworks",
"barrier",
"road-closed",
"diversion",
"route",
"parking",
"map",
"siren"
],
"title": "Pictogram",
"description": "The pictogram on the point's tile. Left out, the tile holds the point's number.",
"enumNames": [
"Bus",
"Train front",
"Bike",
"Car",
"Truck",
"Footprints",
"Accessibility",
"House",
"Store",
"School",
"Stethoscope",
"Building",
"Landmark",
"Trees",
"Leaf",
"Recycle",
"Trash",
"Droplets",
"Plug zap",
"Wifi",
"Wrench",
"Hard hat",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Baby",
"Bell",
"Megaphone",
"File text",
"Lock",
"Hand helping",
"Heart pulse",
"Sun",
"Moon",
"Book open",
"Smartphone",
"Credit card",
"Key round",
"Dumbbell",
"Roadworks (a cone)",
"Barrier",
"Road closed",
"Diversion",
"Route",
"Parking",
"Map",
"Siren"
]
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Point"
},
"maxItems": 4,
"title": "What it means for you",
"description": "Up to four short points for the people who use the service, each with its pictogram. Each is read in turn, about one and a half seconds each; on a short frame they turn pages."
},
"labels": {
"type": "object",
"properties": {
"service": {
"type": "string",
"maxLength": 24,
"title": "Service",
"description": "Beside the service."
},
"change": {
"type": "string",
"maxLength": 24,
"title": "What changes",
"description": "Beside what changes."
},
"from": {
"type": "string",
"maxLength": 24,
"title": "From",
"description": "Beside the start, and over its date at the end."
},
"until": {
"type": "string",
"maxLength": 24,
"title": "Until",
"description": "Beside the end, and over its date at the end."
},
"why": {
"type": "string",
"maxLength": 24,
"title": "Why",
"description": "Beside why."
},
"action": {
"type": "string",
"maxLength": 32,
"title": "What you need to do",
"description": "Over what to do."
},
"impacts": {
"type": "string",
"maxLength": 32,
"title": "What it means",
"description": "Over the points."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words beside the facts, over the dates 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 Waste and Recycling. 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 notice's file number, as you write it, such as Ref. WR/2026/88. Left out, none is shown."
},
"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",
"service",
"change",
"from",
"issuedBy"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the kind of notice, its status and pictogram, the headline, the service, what changes, from and until, why, what you need to do, what it means for you, 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 notice this is, on the coloured banner under your logo on every frame, such as Service change or Opening hours."
},
"status": {
"type": "string",
"maxLength": 32,
"title": "Status",
"description": "How it stands, beside the kind of notice on the banner, such as Christmas and New Year, Temporary or From 5 January."
},
"icon": {
"type": "string",
"enum": [
"bus",
"train-front",
"bike",
"car",
"truck",
"footprints",
"accessibility",
"house",
"store",
"school",
"stethoscope",
"building",
"landmark",
"trees",
"leaf",
"recycle",
"trash",
"droplets",
"plug-zap",
"wifi",
"wrench",
"hard-hat",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"phone",
"mail",
"globe",
"users",
"user",
"baby",
"bell",
"megaphone",
"file-text",
"lock",
"hand-helping",
"heart-pulse",
"sun",
"moon",
"book-open",
"smartphone",
"credit-card",
"key-round",
"dumbbell",
"roadworks",
"barrier",
"road-closed",
"diversion",
"route",
"parking",
"map",
"siren"
],
"title": "Pictogram",
"description": "The service's pictogram, on the banner and beside the service: a bin, a bus, a book for a library. Left out, the banner shows an information sign.",
"enumNames": [
"Bus",
"Train front",
"Bike",
"Car",
"Truck",
"Footprints",
"Accessibility",
"House",
"Store",
"School",
"Stethoscope",
"Building",
"Landmark",
"Trees",
"Leaf",
"Recycle",
"Trash",
"Droplets",
"Plug zap",
"Wifi",
"Wrench",
"Hard hat",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Baby",
"Bell",
"Megaphone",
"File text",
"Lock",
"Hand helping",
"Heart pulse",
"Sun",
"Moon",
"Book open",
"Smartphone",
"Credit card",
"Key round",
"Dumbbell",
"Roadworks (a cone)",
"Barrier",
"Road closed",
"Diversion",
"Route",
"Parking",
"Map",
"Siren"
]
},
"headline": {
"type": "string",
"maxLength": 72,
"title": "Headline",
"description": "What changes, in plain words and one message, such as Bins are collected a day later over Christmas. Facts only: a notice informs and never campaigns."
},
"service": {
"type": "string",
"maxLength": 80,
"title": "Service",
"description": "The service that changes, spelled out, such as Household bins, recycling and food waste, or the Central Library."
},
"change": {
"type": "string",
"maxLength": 140,
"title": "What changes",
"description": "What changes for the people who use it, in a sentence or two."
},
"from": {
"type": "string",
"format": "date-time",
"title": "From",
"description": "The day the change starts. Only the date is read, as it is written here, and it is spelled out in the channel's language with its weekday."
},
"until": {
"type": "string",
"format": "date-time",
"title": "Until",
"description": "The last day of a change that ends, read and spelled out the same way. Left out for a change that stays."
},
"fromText": {
"type": "string",
"maxLength": 48,
"title": "From, as written",
"description": "The start in your own words, shown instead of the date, such as From the week of 22 December. Left out, it is written from the date."
},
"untilText": {
"type": "string",
"maxLength": 48,
"title": "Until, as written",
"description": "The end in your own words, shown instead of the date, such as Until the library reopens in spring. Left out, it is written from the date."
},
"why": {
"type": "string",
"maxLength": 100,
"title": "Why",
"description": "Why it changes, in one line, such as Because of the bank holidays on Christmas Day and New Year's Day."
},
"action": {
"type": "string",
"maxLength": 160,
"title": "What you need to do",
"description": "What the people who use the service should do, spelled out. Shown large on a scene of its own. Left out, there is no such scene."
},
"impacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"maxLength": 72,
"title": "Point",
"description": "What it means, in a few words."
},
"icon": {
"type": "string",
"enum": [
"bus",
"train-front",
"bike",
"car",
"truck",
"footprints",
"accessibility",
"house",
"store",
"school",
"stethoscope",
"building",
"landmark",
"trees",
"leaf",
"recycle",
"trash",
"droplets",
"plug-zap",
"wifi",
"wrench",
"hard-hat",
"clock",
"calendar",
"map-pin",
"info",
"triangle-alert",
"phone",
"mail",
"globe",
"users",
"user",
"baby",
"bell",
"megaphone",
"file-text",
"lock",
"hand-helping",
"heart-pulse",
"sun",
"moon",
"book-open",
"smartphone",
"credit-card",
"key-round",
"dumbbell",
"roadworks",
"barrier",
"road-closed",
"diversion",
"route",
"parking",
"map",
"siren"
],
"title": "Pictogram",
"description": "The pictogram on the point's tile. Left out, the tile holds the point's number.",
"enumNames": [
"Bus",
"Train front",
"Bike",
"Car",
"Truck",
"Footprints",
"Accessibility",
"House",
"Store",
"School",
"Stethoscope",
"Building",
"Landmark",
"Trees",
"Leaf",
"Recycle",
"Trash",
"Droplets",
"Plug zap",
"Wifi",
"Wrench",
"Hard hat",
"Clock",
"Calendar",
"Map pin",
"Info",
"Triangle alert",
"Phone",
"Mail",
"Globe",
"Users",
"User",
"Baby",
"Bell",
"Megaphone",
"File text",
"Lock",
"Hand helping",
"Heart pulse",
"Sun",
"Moon",
"Book open",
"Smartphone",
"Credit card",
"Key round",
"Dumbbell",
"Roadworks (a cone)",
"Barrier",
"Road closed",
"Diversion",
"Route",
"Parking",
"Map",
"Siren"
]
}
},
"required": [
"text"
],
"additionalProperties": false,
"title": "Point"
},
"maxItems": 4,
"title": "What it means for you",
"description": "Up to four short points for the people who use the service, each with its pictogram. Each is read in turn, about one and a half seconds each; on a short frame they turn pages."
},
"labels": {
"type": "object",
"properties": {
"service": {
"type": "string",
"maxLength": 24,
"title": "Service",
"description": "Beside the service."
},
"change": {
"type": "string",
"maxLength": 24,
"title": "What changes",
"description": "Beside what changes."
},
"from": {
"type": "string",
"maxLength": 24,
"title": "From",
"description": "Beside the start, and over its date at the end."
},
"until": {
"type": "string",
"maxLength": 24,
"title": "Until",
"description": "Beside the end, and over its date at the end."
},
"why": {
"type": "string",
"maxLength": 24,
"title": "Why",
"description": "Beside why."
},
"action": {
"type": "string",
"maxLength": 32,
"title": "What you need to do",
"description": "Over what to do."
},
"impacts": {
"type": "string",
"maxLength": 32,
"title": "What it means",
"description": "Over the points."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words beside the facts, over the dates 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 Waste and Recycling. 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 notice's file number, as you write it, such as Ref. WR/2026/88. Left out, none is shown."
},
"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, its status and pictogram, the headline, the service, what changes, from and until, why, what you need to do, what it means for you, 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=Service%20change&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": "Service change",
"status": "Christmas and New Year",
"icon": "trash",
"headline": "Bins are collected a day later over Christmas and New Year",
"service": "Household bins, recycling and food waste",
"change": "Every collection moves one day later than usual, so Friday's bins are collected on Saturday.",
"from": "2026-12-25T00:00:00+00:00",
"until": "2027-01-02T00:00:00+00:00",
"fromText": "",
"untilText": "",
"why": "Because of the bank holidays on Christmas Day and New Year's Day.",
"action": "Put your bins out by 7 am on your new collection day, and leave them out until they are emptied.",
"impacts": [
{
"icon": "trees",
"text": "Real Christmas trees are collected on 9 and 10 January"
},
{
"icon": "recycle",
"text": "Extra recycling can go in a clear bag beside your bin"
},
{
"icon": "building",
"text": "The recycling centre is closed on 25 and 26 December"
},
{
"icon": "leaf",
"text": "Garden waste collections start again on 4 January"
}
],
"labels": {
"why": "Why",
"from": "From",
"until": "Until",
"action": "What you need to do",
"change": "What changes",
"impacts": "Good to know",
"service": "Service"
},
"cta": {
"label": "Check your collection day",
"detail": "westbrook.example/bins"
},
"issuedBy": "Issued by Waste and Recycling, City of Westbrook",
"reference": "",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "soft",
"logoSize": "auto"
}
},
"metaData": {
"title": "Bin collections a day later over Christmas and New Year",
"captionTiny": "Over Christmas and New Year your bins are collected one day later than usual, from 25 December to 2 January. Put them out by 7 am on your new day.",
"captionShort": "Bin collections over Christmas and New Year: from Friday 25 December to Saturday 2 January, every collection moves one day later than usual, so Friday's bins are collected on Saturday. Put your bins out by 7 am on your new collection day and leave them out until they are emptied. Real Christmas trees are collected on 9 and 10 January. Check your day at westbrook.example/bins.",
"captionMedium": "Bin collections over Christmas and New Year. Because of the bank holidays on Christmas Day and New Year's Day, every household collection, recycling and food waste included, moves one day later than usual from Friday 25 December to Saturday 2 January. So if your bins are usually collected on a Friday, they will be collected on the Saturday. What you need to do: put your bins out by 7 am on your new collection day, and leave them out until they are emptied. Good to know: real Christmas trees are collected on 9 and 10 January; extra recycling can go in a clear bag beside your bin; the recycling centre is closed on 25 and 26 December; and garden waste collections start again on 4 January. Check your collection day at westbrook.example/bins. Issued by Waste and Recycling, City of Westbrook.",
"captionLong": "Bin collections over Christmas and New Year. Because of the bank holidays on Christmas Day and New Year's Day, every household collection in Westbrook moves one day later than usual from Friday 25 December to Saturday 2 January. This covers your general waste, your recycling and your food waste. So if your bins are usually collected on a Friday, they will be collected on the Saturday; if they are usually collected on a Thursday, they will be collected on the Friday, and so on. Normal collection days return from Monday 4 January. What you need to do: put your bins out by 7 am on your new collection day, and leave them out until they are emptied, because the crews may come later in the day than usual while the rounds are busier. Good to know: real Christmas trees are collected on 9 and 10 January, so please take off the lights, the decorations and the stand and leave the tree beside your bin, cut in half if it is taller than two metres; extra recycling, such as boxes and wrapping paper without glitter, can go in a clear bag beside your recycling bin; the recycling centre on Station Road is closed on 25 and 26 December and on 1 January, and open as usual on the other days; and garden waste collections start again in the week of 4 January. If your bin is missed, please wait until the end of the next working day before you tell us, as crews may still be on their way. Check your collection day, and download the full holiday calendar, at westbrook.example/bins, or call us on 0300 123 4567. Thank you for helping our crews over the holidays. Issued by Waste and Recycling, City of Westbrook.",
"hashtags": [
"bins",
"recycling",
"westbrook",
"christmas",
"localservices"
]
}
}
}
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.