Skip to main content

Finance (Crypto and exchanges), New listing

A token's listing on a trading terminal: a tag and the headline, the start panel with the symbol and name, the date and time in UTC it trades from in the mono face, its source and when it was announced, the trading pairs (up to six) lit one by one, then what the project promises and what it does not side by side at the same size, then the button and the brand's analyst. The risk warning stays on screen throughout. Ten seconds, and half a second longer per pair.

TemplateFinance (Crypto and exchanges), tpl_20eb67de501a
VariantNew listing
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 variant, drawn from its own worked example. Open the video on its own.

What it accepts​

A new listing: a tag and the headline, the token's symbol and name and the date and time in UTC it starts trading, its trading pairs (up to six) lit in turn, then what the project promises and what it does not side by side, the button and your analyst. The risk warning stays on screen throughout. Ten seconds, and half a second longer per pair. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the tag, the headline, the token and its start time, the source, the trading pairs, what the project promises and does not, the call to action and the risk lines.
clipData.tagtextup to 20 charactersTag: The kind of post, in the block at the top, such as New listing.
clipData.stamptextup to 24 charactersStatus: A short status beside the light at the top, such as LIVE or 24/7.
clipData.headlinetextyesup to 72 charactersHeadline: What is listed, in a few words.
clipData.symboltextyesup to 10 charactersSymbol: The token's ticker symbol, set on the start panel, such as NOVA.
clipData.nametextup to 32 charactersName: The token's name in words, under the symbol.
clipData.startLabeltextup to 32 charactersStart caption: The caption on the start panel's header strip, such as Trading starts.
clipData.tradingFromtextyesup to 40 charactersTrading starts: The date and time trading starts, drawn exactly as sent, with its time zone: always say UTC.
clipData.sourcetextyesup to 64 charactersSource: Where the information comes from, such as the project's white paper or the listing notice, under the start time.
clipData.announcedtextup to 40 charactersAnnounced: When this was announced, with its time zone, under the source.
clipData.pairsLabeltextup to 32 charactersPairs caption: The caption on the pairs panel's header strip, such as Trading pairs.
clipData.pairslistup to 6Trading pairs: Up to six pairs the token trades against, each shown in a cell and lit in turn, such as NOVA/USDT. Each pair adds half a second.
clipData.pairs[]textup to 16 charactersPair
clipData.promisesLabeltextyesup to 40 charactersPromises caption: The caption on the panel saying what the project promises, such as What the project promises.
clipData.promisestextyesup to 200 charactersWhat it promises: What the project says it will do, in the project's own terms, from its white paper: one or two sentences. Drawn as large as the next panel.
clipData.notLabeltextyesup to 40 charactersNot-promised caption: The caption on the panel saying what the project does not promise, such as What it does not promise.
clipData.notPromisedtextyesup to 200 charactersWhat it does not promise: What the project does not promise: returns, a price, a listing elsewhere, a delivery date. One or two sentences, drawn as large as the panel before.
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.riskWarningtextyesup to 400 charactersRisk warning: The risk warning your regulator asks for, shown in the risk panel from the first frame to the last. A long warning is set smaller, never cut.
clipData.notAdvicetextup to 160 charactersNot advice: A line saying the listing is not a recommendation, under the risk warning from the first frame to the last.
clipData.disclaimertextup to 200 charactersSmall print: Any other line that must be shown, above your brand's footer line, such as MiCA's statement for a marketing communication.
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.

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_20eb67de501a?variant=New%20listing&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": {
"tag": "New listing",
"stamp": "Coming soon",
"headline": "NOVA lists on Halcyon on 24 October",
"symbol": "NOVA",
"name": "Nova Protocol",
"startLabel": "Trading starts",
"tradingFrom": "24 Oct 2026, 12:00 UTC",
"source": "Halcyon listing notice and the NOVA white paper v1.3",
"announced": "Announced 15 Oct 2026, 09:00 UTC",
"pairsLabel": "Trading pairs",
"pairs": [
"NOVA/USDT",
"NOVA/USD",
"NOVA/EUR",
"NOVA/BTC",
"NOVA/ETH",
"NOVA/GBP"
],
"promisesLabel": "What the project promises",
"promises": "A public roadmap with quarterly reports, and a fixed supply of 100 million tokens as set out in the white paper.",
"notLabel": "What it does not promise",
"notPromised": "No return, no future price and no listing on other venues. Delivery dates can slip.",
"cta": {
"label": "Read the listing notice",
"detail": "halcyon.example/nova"
},
"riskWarning": "Don't invest unless you're prepared to lose all the money you invest. This is a high-risk investment and you should not expect to be protected if something goes wrong.",
"notAdvice": "Listing a token is not a recommendation to buy it, and it says nothing about its future price.",
"disclaimer": "This crypto-asset marketing communication has not been reviewed or approved by any competent authority in any Member State of the European Union. The offeror is solely responsible for it.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "NOVA lists on Halcyon on 24 October at 12:00 UTC",
"captionTiny": "NOVA, Nova Protocol, starts trading on Halcyon on 24 Oct 2026 at 12:00 UTC. Crypto is high risk: you could lose all you invest.",
"captionShort": "Nova Protocol (NOVA) starts trading on Halcyon on 24 October 2026 at 12:00 UTC against USDT, USD, EUR, BTC, ETH and GBP. The project promises a public roadmap and a fixed supply; it promises no return and no price. Not a recommendation. Don't invest unless you're prepared to lose all the money you invest.",
"captionMedium": "New listing: Nova Protocol (NOVA) starts trading on Halcyon on 24 October 2026 at 12:00 UTC, with pairs against USDT, USD, EUR, BTC, ETH and GBP. What the project promises: a public roadmap with quarterly reports and a fixed supply of 100 million tokens, as set out in its white paper. What it does not promise: any return, any future price, a listing on other venues, or fixed delivery dates. Listing a token is not a recommendation to buy it. Don't invest unless you're prepared to lose all the money you invest. This is a high-risk investment and you should not expect to be protected if something goes wrong.",
"captionLong": "New listing: Nova Protocol (NOVA) starts trading on Halcyon on 24 October 2026 at 12:00 UTC, announced on 15 October at 09:00 UTC. It will trade against USDT, USD, EUR, BTC, ETH and GBP. What the project promises, in its own terms from the NOVA white paper v1.3: a public roadmap with quarterly reports and a fixed supply of 100 million tokens. What it does not promise: any return, any future price, a listing on other venues, or fixed delivery dates, which can slip. Read the full listing notice before you decide anything. Listing a token is not a recommendation to buy it, and it says nothing about its future price. Don't invest unless you're prepared to lose all the money you invest. This is a high-risk investment and you should not expect to be protected if something goes wrong. This crypto-asset marketing communication has not been reviewed or approved by any competent authority in any Member State of the European Union.",
"hashtags": [
"newlisting",
"crypto",
"nova",
"cryptoexchange",
"tokenlisting"
]
}
}
}

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.