Tech and industry (Automotive and mobility), Charging map
Chargers on a route or in an area: up to eight stations along a schematic route line, never a real map, each with its power in kW, its price per kWh with its date and whether it is free as sent at the time given. Each station is lit in turn, a charging picture pushing in slowly behind the title, then the button and the presenter. About one second longer per station.
| Template | Tech and industry (Automotive and mobility), tpl_7f3dd9501cd9 |
|---|---|
| Variant | Charging map |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 11 seconds |
Example video
The 1x1 cut of this variant, drawn from its own worked example. Open the video on its own.
What it accepts
Chargers on a route or in an area: up to eight stations on a schematic route line, never a real map, each with its power, its price per kWh with its date and whether it is free at the time given. Each is lit in turn and long lists page, a charging picture pushing in slowly, then the dealer's or network's button. The legal line stays throughout. A second more per station. metaData is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the route or area, each station with its power, its price per kWh and its date, whether it is free at the time given, the call to action and your legal line. | |
clipData.section | text | up to 32 characters | Section: The section in the header, beside your title line, such as Charging or Network. | |
clipData.kicker | text | up to 40 characters | Kicker: A short line above the headline, such as Charging map. | |
clipData.headline | text | yes | up to 56 characters | Headline: The route or the area, set large in wide capitals, such as Fast chargers on the road to Cornwall. A long one takes more lines. |
clipData.tagline | text | up to 90 characters | Line under the headline: One line under it, set in italics, such as how the stations were chosen. | |
clipData.picture | image | media:// file from the media library, alt text up to 120 characters | Picture: A picture from the media library, such as a charging station or the road, landscape with the subject in the middle and low in the frame. It fills the film window and pushes in slowly. Optional: without one the route carries the clip. | |
clipData.currency | text | yes | up to 3 characters | Currency: The currency of every price as a three-letter code, such as GBP, EUR or USD. |
clipData.powerUnit | text | yes | up to 8 characters | Power unit: The unit of every station's power, set small after it, such as kW. |
clipData.priceUnit | text | yes | up to 16 characters | Price unit: The unit of every price, set small after it, such as per kWh. A price is never shown without its unit. |
clipData.statusLead | text | yes | up to 28 characters | Before the status time: The words before the time the availability was read, such as Availability at. |
clipData.statusAt | datetime | yes | Availability read at: When each station's availability was read. Drawn with the words before it, over the list, so nobody takes a status for live that is not. | |
clipData.freeLabel | text | yes | up to 16 characters | Word for free: The word beside a station that is free at that time, such as Free now. |
clipData.busyLabel | text | yes | up to 16 characters | Word for not free: The word beside a station that is not free at that time, such as In use. |
clipData.stations | list | yes | up to 8 | Stations: Up to eight stations, in the order of the route: the line between them is a diagram spaced evenly, not a map and not to scale. Each is lit in turn and the list pages where it is long. Each adds a second. |
clipData.stations[] | group | Station | ||
clipData.stations[].name | text | yes | up to 40 characters | Name: The station's name, such as Bristol Gateway. |
clipData.stations[].place | text | up to 40 characters | Place: A short line under it, such as the town, the road or the services. | |
clipData.stations[].power | number | yes | from 0, 1 decimals | Power: The station's top charging power as a number, in the unit above. |
clipData.stations[].price | number | yes | from 0, 3 decimals | Price: The price of a kilowatt-hour as a number, in the currency above, with as many decimals as it is sold at. |
clipData.stations[].priceDate | datetime | yes | Price date: The day the price was set or last checked. Only the date is read, as written, and shown beside the price. | |
clipData.stations[].free | boolean | yes | Free at that time: Whether a charger is free at the time given above. Drawn as a light and the word you chose. | |
clipData.cta | group | Call to action: The button at the end and the line under it, such as a web address, a handle or a phone number. | ||
clipData.cta.label | text | yes | up to 28 characters | Button: What the button says. |
clipData.cta.detail | text | up to 48 characters | Line under it: An address, a handle, an app, a phone number. | |
clipData.legal | text | yes | up to 300 characters | Legal line: Who runs the network or advertises it, its address and any line the law asks for, such as that prices include VAT and the date they apply. Shown in the bottom bar throughout; never cut. |
clipData.footnote | text | up to 200 characters | Small print: Any other line that must be shown, such as that a station's power depends on the car. | |
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 dark theme, calm, square corners, centred. | ||
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.
Ask Reelwire for the whole JSON Schema, the document your content is checked against, without signing in:
curl "https://app.reelwire.io/v1/formats/template/tpl_7f3dd9501cd9?variant=Charging%20map&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": "Charging",
"kicker": "Charging map",
"headline": "Fast chargers on the road to Cornwall",
"tagline": "Eight stations between Bristol and Truro.",
"picture": {
"alt": "Soft waves of blue, violet and orange",
"url": "media://example-image.jpg"
},
"currency": "GBP",
"powerUnit": "kW",
"priceUnit": "per kWh",
"statusLead": "Availability at",
"statusAt": "2026-10-12T14:05:00+01:00",
"freeLabel": "Free now",
"busyLabel": "In use",
"stations": [
{
"free": true,
"name": "Bristol Gateway",
"place": "M5 junction 17",
"power": 150,
"price": 0.59,
"priceDate": "2026-10-12T09:00:00+01:00"
},
{
"free": false,
"name": "Cullompton Services",
"place": "M5 junction 28",
"power": 150,
"price": 0.59,
"priceDate": "2026-10-12T09:00:00+01:00"
},
{
"free": true,
"name": "Exeter Park and Ride",
"place": "Sowton",
"power": 100,
"price": 0.55,
"priceDate": "2026-10-10T09:00:00+01:00"
},
{
"free": true,
"name": "Okehampton",
"place": "Fore Street car park",
"power": 50,
"price": 0.49,
"priceDate": "2026-10-10T09:00:00+01:00"
},
{
"free": false,
"name": "Bodmin Hub",
"place": "A30",
"power": 350,
"price": 0.67,
"priceDate": "2026-10-12T09:00:00+01:00"
}
],
"cta": {
"label": "Plan your route",
"detail": "voltway.example/map"
},
"legal": "Voltway Charging Ltd, 2 Harbour Road, Bristol BS1 5TT. Prices include VAT and are correct on the date shown beside each; they can change without notice. Availability is shown as at the time given.",
"footnote": "Charging speed depends on your car and the battery's temperature.",
"look": {
"logo": "auto",
"pace": "calm",
"align": "centre",
"theme": "dark",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Fast chargers on the road to Cornwall",
"captionTiny": "Five fast chargers between Bristol and Cornwall, from 49p per kWh, with the price date and availability shown.",
"captionShort": "Planning a trip to Cornwall? Five fast chargers on the way: Bristol Gateway, Cullompton Services, Exeter Park and Ride, Okehampton and Bodmin Hub, from 50 to 350 kW and from 49p to 67p per kWh, prices correct on the dates shown. See which are free right now in our app.",
"captionMedium": "Planning a trip to Cornwall? Here are five fast chargers on the way, in order: Bristol Gateway on the M5 at junction 17 (150 kW, 59p per kWh), Cullompton Services (150 kW, 59p), Exeter Park and Ride (100 kW, 55p), Okehampton (50 kW, 49p) and Bodmin Hub on the A30 (350 kW, 67p). Prices include VAT and are correct on the dates shown beside each; availability was read at 14:05 on 12 October and changes all the time. Plan your route at voltway.example/map. Charging speed depends on your car and the battery's temperature.",
"captionLong": "Planning a trip to Cornwall? Here are five fast chargers on the way, in order of the route: Bristol Gateway on the M5 at junction 17 (up to 150 kW, 59p per kWh), Cullompton Services at junction 28 (150 kW, 59p per kWh), Exeter Park and Ride at Sowton (100 kW, 55p per kWh), Okehampton in the Fore Street car park (50 kW, 49p per kWh) and Bodmin Hub on the A30 (up to 350 kW, 67p per kWh). Prices include VAT and are correct on the date shown beside each; they can change without notice. Availability was read at 14:05 on 12 October and changes all the time, so check the app before you set off. Plan your route at voltway.example/map. Charging speed depends on your car and the battery's temperature. Voltway Charging Ltd, 2 Harbour Road, Bristol BS1 5TT.",
"hashtags": [
"evcharging",
"electriccar",
"roadtrip",
"cornwall",
"fastcharging"
]
}
}
}
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.