Skip to main content

Tech and industry (Manufacturing and industry), Certificates 1.0.0

TemplateTech and industry (Manufacturing and industry), tpl_1c972308e957
VariantCertificates
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length13 seconds

Example video​

The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.

What it accepts​

The certificates in force, as a drawing: one shown as its document (what it covers, the standard, its number, the date it is valid until, the body that certified it, a stamp) beside the register of up to eight. Each takes the sheet in turn, its stamp pressed. The title block and the footnote stay throughout. Five seconds, and 1.4 more per certificate. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the section, the kicker, the headline and the line under it, the certificates with their standards, scope, numbers, dates and bodies, the captions, 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 Certificates or Quality.
clipData.kickertextup to 32 charactersKicker: A few words above the headline, such as Quality and compliance.
clipData.headlinetextyesup to 56 charactersHeadline: What the certificates say about you, in a sentence.
clipData.sublinetextup to 110 charactersLine under it: One sentence on how you are audited or what the certificates cover.
clipData.certificateslistyesat least 1, up to 8Certificates: One to eight certificates in force, in the order they are shown: the standard, what it covers, the certificate number and the date it is valid until (both required: a certificate is never shown without them), and the body that certified it. All are listed on the first frame, then each takes the sheet in turn.
clipData.certificates[]groupCertificate
clipData.certificates[].standardtextyesup to 24 charactersStandard: The standard and its edition, exactly as on the certificate, such as ISO 9001:2015 or IATF 16949:2016.
clipData.certificates[].scopetextup to 40 charactersWhat it covers: Such as Quality management or Environmental management, set in capitals over the standard.
clipData.certificates[].numbertextyesup to 24 charactersCertificate number: The certificate's number, exactly as on it.
clipData.certificates[].expiresdatetimeyesValid until: The day the certificate expires. Only the date is read, as it is written here, and it is spelled out in the channel's language.
clipData.certificates[].bodytextup to 40 charactersCertified by: The certification body that issued it, as it names itself.
clipData.captionsgroupCaptions: The captions of the certificate's fields and of the register's columns, in your language. A caption left out is not drawn; its field still is.
clipData.captions.standardtextup to 20 charactersOver the standards: The register's first column, such as Standard.
clipData.captions.numbertextup to 20 charactersOver the number: Such as Certificate no.
clipData.captions.expirestextup to 20 charactersOver the date: Such as Valid until.
clipData.captions.bodytextup to 20 charactersOver the body: Such as Certified by.
clipData.drawinggroupTitle block: The drawing's title block at the foot of the stage, on every frame: its number, its revision and its date, exactly as written. A field left out is not drawn; with none, there is no title block.
clipData.drawing.numbertextup to 16 charactersDocument number: The quality document's or the sheet's number.
clipData.drawing.revisiontextup to 4 charactersRevision: The revision, such as 12 or C.
clipData.drawing.datetextup to 16 charactersDate: The date of issue, written as it should be shown, such as 2026-10-01.
clipData.drawingLabelsgroupTitle 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.drawingLabels.numbertextup to 16 charactersOver the number: Such as Doc. no.
clipData.drawingLabels.revisiontextup to 12 charactersOver the revision: Such as Rev.
clipData.drawingLabels.datetextup to 12 charactersOver the date: Such as Date.
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 and where the certificates apply, such as your legal entity, the plant and where to check them. 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 Certificates or Quality."
},
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A few words above the headline, such as Quality and compliance."
},
"headline": {
"type": "string",
"maxLength": 56,
"title": "Headline",
"description": "What the certificates say about you, in a sentence."
},
"subline": {
"type": "string",
"maxLength": 110,
"title": "Line under it",
"description": "One sentence on how you are audited or what the certificates cover."
},
"certificates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"standard": {
"type": "string",
"maxLength": 24,
"title": "Standard",
"description": "The standard and its edition, exactly as on the certificate, such as ISO 9001:2015 or IATF 16949:2016."
},
"scope": {
"type": "string",
"maxLength": 40,
"title": "What it covers",
"description": "Such as Quality management or Environmental management, set in capitals over the standard."
},
"number": {
"type": "string",
"maxLength": 24,
"title": "Certificate number",
"description": "The certificate's number, exactly as on it."
},
"expires": {
"type": "string",
"format": "date-time",
"title": "Valid until",
"description": "The day the certificate expires. Only the date is read, as it is written here, and it is spelled out in the channel's language."
},
"body": {
"type": "string",
"maxLength": 40,
"title": "Certified by",
"description": "The certification body that issued it, as it names itself."
}
},
"required": [
"standard",
"number",
"expires"
],
"additionalProperties": false,
"title": "Certificate"
},
"minItems": 1,
"maxItems": 8,
"title": "Certificates",
"description": "One to eight certificates in force, in the order they are shown: the standard, what it covers, the certificate number and the date it is valid until (both required: a certificate is never shown without them), and the body that certified it. All are listed on the first frame, then each takes the sheet in turn."
},
"captions": {
"type": "object",
"properties": {
"standard": {
"type": "string",
"maxLength": 20,
"title": "Over the standards",
"description": "The register's first column, such as Standard."
},
"number": {
"type": "string",
"maxLength": 20,
"title": "Over the number",
"description": "Such as Certificate no."
},
"expires": {
"type": "string",
"maxLength": 20,
"title": "Over the date",
"description": "Such as Valid until."
},
"body": {
"type": "string",
"maxLength": 20,
"title": "Over the body",
"description": "Such as Certified by."
}
},
"additionalProperties": false,
"title": "Captions",
"description": "The captions of the certificate's fields and of the register's columns, in your language. A caption left out is not drawn; its field still is."
},
"drawing": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Document number",
"description": "The quality document's or the sheet's number."
},
"revision": {
"type": "string",
"maxLength": 4,
"title": "Revision",
"description": "The revision, such as 12 or C."
},
"date": {
"type": "string",
"maxLength": 16,
"title": "Date",
"description": "The date of issue, written as it should be shown, such as 2026-10-01."
}
},
"additionalProperties": false,
"title": "Title block",
"description": "The drawing's title block at the foot of the stage, on every frame: its number, its revision and its date, exactly as written. A field left out is not drawn; with none, there is no title block."
},
"drawingLabels": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Over the number",
"description": "Such as Doc. no."
},
"revision": {
"type": "string",
"maxLength": 12,
"title": "Over the revision",
"description": "Such as Rev."
},
"date": {
"type": "string",
"maxLength": 12,
"title": "Over the date",
"description": "Such as Date."
}
},
"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 and where the certificates apply, such as your legal entity, the plant and where to check them. 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",
"certificates"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the kicker, the headline and the line under it, the certificates with their standards, scope, numbers, dates and bodies, the captions, 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 Certificates or Quality."
},
"kicker": {
"type": "string",
"maxLength": 32,
"title": "Kicker",
"description": "A few words above the headline, such as Quality and compliance."
},
"headline": {
"type": "string",
"maxLength": 56,
"title": "Headline",
"description": "What the certificates say about you, in a sentence."
},
"subline": {
"type": "string",
"maxLength": 110,
"title": "Line under it",
"description": "One sentence on how you are audited or what the certificates cover."
},
"certificates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"standard": {
"type": "string",
"maxLength": 24,
"title": "Standard",
"description": "The standard and its edition, exactly as on the certificate, such as ISO 9001:2015 or IATF 16949:2016."
},
"scope": {
"type": "string",
"maxLength": 40,
"title": "What it covers",
"description": "Such as Quality management or Environmental management, set in capitals over the standard."
},
"number": {
"type": "string",
"maxLength": 24,
"title": "Certificate number",
"description": "The certificate's number, exactly as on it."
},
"expires": {
"type": "string",
"format": "date-time",
"title": "Valid until",
"description": "The day the certificate expires. Only the date is read, as it is written here, and it is spelled out in the channel's language."
},
"body": {
"type": "string",
"maxLength": 40,
"title": "Certified by",
"description": "The certification body that issued it, as it names itself."
}
},
"required": [
"standard",
"number",
"expires"
],
"additionalProperties": false,
"title": "Certificate"
},
"minItems": 1,
"maxItems": 8,
"title": "Certificates",
"description": "One to eight certificates in force, in the order they are shown: the standard, what it covers, the certificate number and the date it is valid until (both required: a certificate is never shown without them), and the body that certified it. All are listed on the first frame, then each takes the sheet in turn."
},
"captions": {
"type": "object",
"properties": {
"standard": {
"type": "string",
"maxLength": 20,
"title": "Over the standards",
"description": "The register's first column, such as Standard."
},
"number": {
"type": "string",
"maxLength": 20,
"title": "Over the number",
"description": "Such as Certificate no."
},
"expires": {
"type": "string",
"maxLength": 20,
"title": "Over the date",
"description": "Such as Valid until."
},
"body": {
"type": "string",
"maxLength": 20,
"title": "Over the body",
"description": "Such as Certified by."
}
},
"additionalProperties": false,
"title": "Captions",
"description": "The captions of the certificate's fields and of the register's columns, in your language. A caption left out is not drawn; its field still is."
},
"drawing": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Document number",
"description": "The quality document's or the sheet's number."
},
"revision": {
"type": "string",
"maxLength": 4,
"title": "Revision",
"description": "The revision, such as 12 or C."
},
"date": {
"type": "string",
"maxLength": 16,
"title": "Date",
"description": "The date of issue, written as it should be shown, such as 2026-10-01."
}
},
"additionalProperties": false,
"title": "Title block",
"description": "The drawing's title block at the foot of the stage, on every frame: its number, its revision and its date, exactly as written. A field left out is not drawn; with none, there is no title block."
},
"drawingLabels": {
"type": "object",
"properties": {
"number": {
"type": "string",
"maxLength": 16,
"title": "Over the number",
"description": "Such as Doc. no."
},
"revision": {
"type": "string",
"maxLength": 12,
"title": "Over the revision",
"description": "Such as Rev."
},
"date": {
"type": "string",
"maxLength": 12,
"title": "Over the date",
"description": "Such as Date."
}
},
"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 and where the certificates apply, such as your legal entity, the plant and where to check them. 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 kicker, the headline and the line under it, the certificates with their standards, scope, numbers, dates and bodies, the captions, 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=Certificates&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": "Certificates",
"kicker": "Quality and compliance",
"headline": "Certified to the standards you work to",
"subline": "Audited every year by independent certification bodies at our plant in Ulm.",
"certificates": [
{
"body": "Alpcert Management Services GmbH",
"scope": "Quality management",
"number": "12 100 45678 QM",
"expires": "2028-03-14T00:00:00+01:00",
"standard": "ISO 9001:2015"
},
{
"body": "Nordcert Automotive GmbH",
"scope": "Automotive quality",
"number": "0451287",
"expires": "2027-09-30T00:00:00+02:00",
"standard": "IATF 16949:2016"
},
{
"body": "Alpcert Management Services GmbH",
"scope": "Environmental management",
"number": "12 104 45679 UM",
"expires": "2028-03-14T00:00:00+01:00",
"standard": "ISO 14001:2015"
},
{
"body": "Alpcert Management Services GmbH",
"scope": "Occupational health and safety",
"number": "12 117 45680 AS",
"expires": "2028-03-14T00:00:00+01:00",
"standard": "ISO 45001:2018"
},
{
"body": "Alpcert Management Services GmbH",
"scope": "Energy management",
"number": "12 310 45681 EM",
"expires": "2027-06-20T00:00:00+02:00",
"standard": "ISO 50001:2018"
},
{
"body": "Q-Assur Aerospace Certification",
"scope": "Aerospace quality",
"number": "DE-AS-2025-0318",
"expires": "2028-11-05T00:00:00+01:00",
"standard": "EN 9100:2018"
}
],
"captions": {
"body": "Certified by",
"number": "Certificate no.",
"expires": "Valid until",
"standard": "Standard"
},
"drawing": {
"date": "2026-10-01",
"number": "VB-QM-0007",
"revision": "12"
},
"drawingLabels": {
"date": "Date",
"number": "Doc. no.",
"revision": "Rev."
},
"cta": {
"label": "Download the certificates",
"detail": "vossberg.example/quality"
},
"footnote": "Vossberg Precision GmbH, Ulm. Certificates for the Ulm plant; scope and validity can be checked with each certification body.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Our certificates: ISO 9001, IATF 16949, ISO 14001, ISO 45001, ISO 50001 and EN 9100",
"captionTiny": "Certified to ISO 9001, IATF 16949, ISO 14001, ISO 45001, ISO 50001 and EN 9100. Download the certificates.",
"captionShort": "Six certificates, one plant: ISO 9001 and IATF 16949 for quality, EN 9100 for aerospace, ISO 14001 for the environment, ISO 45001 for health and safety and ISO 50001 for energy. Audited every year at our plant in Ulm. Download the certificates for your supplier file.",
"captionMedium": "Certified to the standards you work to. Our plant in Ulm holds six certificates: ISO 9001:2015 for quality management, IATF 16949:2016 for automotive quality, EN 9100:2018 for aerospace, ISO 14001:2015 for environmental management, ISO 45001:2018 for occupational health and safety and ISO 50001:2018 for energy management. Each is audited every year by an independent certification body. Download the certificates with their numbers and validity for your supplier file, or ask our quality team for an audit date.",
"captionLong": "Certified to the standards you work to. Our plant in Ulm holds six certificates, each audited every year by an independent certification body: ISO 9001:2015 for quality management, valid until March 2028; IATF 16949:2016 for automotive quality, valid until September 2027; EN 9100:2018 for aerospace, valid until November 2028; ISO 14001:2015 for environmental management and ISO 45001:2018 for occupational health and safety, both valid until March 2028; and ISO 50001:2018 for energy management, valid until June 2027. For our customers that means one supplier audit less: the certificates, their numbers and their scope are ready for your supplier file. Download them from our quality page, or ask our quality team for the next audit date and the full audit report. Vossberg Precision GmbH, Ulm.",
"hashtags": [
"manufacturing",
"quality",
"iso9001",
"iatf16949",
"certification"
]
}
}
}

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.