Essentials
Elements
Elements supported in Bannerify
Bannerify templates combine visual design with data-bound automation. Every element you drop on the canvas can be targeted through the API or SDK using the modifications array defined in the Create Image endpoint.
💡 Layer names matter. Set a descriptive
namefor each layer in the editor—API calls reference the layer via thenameproperty.
Core elements
Text
- Typography inherits all styling you configure in the editor (fonts, weight, alignment, line height).
- Override copy or color at render time with:
text: replace the layer content.color: update the text fill color.visible: toggle the layer on or off for a specific render.
Image
- Supports uploaded assets, signed URLs, or remote images. Bannerify fetches and caches external sources at render time.
- Override imagery with:
src: supply a new image URL.visible: hide/show variant artwork without duplicating templates.
Frame
- Frames act as layout containers. Group related layers, control padding, and apply shared transforms.
- Use frames to organize complex automations (e.g., entire product cards or invoice headers) and to simplify show/hide logic through the
visibleflag.
Data-bound elements
Table
- Render tabular data inside images or PDFs without stitching screenshots.
- Override the data via:
columns: array of column names displayed in order.rows: array of records whose keys match the columns.
- The variant, the stripe, the row size and the footer stay as you set them in the editor.
import { Bannerify } from "bannerify-js"
const bannerify = new Bannerify(process.env.BANNERIFY_API_KEY!)
const { result, error } = await bannerify.createImage("tpl_catalog", {
modifications: [
{
name: "sales-table",
columns: ["Region", "Orders", "Revenue"],
rows: [
{ Region: "North America", Orders: 120, Revenue: "$45k" },
{ Region: "EMEA", Orders: 96, Revenue: "$38k" },
{ Region: "APAC", Orders: 142, Revenue: "$51k" },
],
},
],
})
if (error) throw new Error(error.message)
// `result` is an ArrayBuffer containing the rendered asset
// Persist result (ArrayBuffer) to storage or attach to downstream requests
Chart
- Visualize data with charts rendered in the same engine as every other layer, so the output matches the editor exactly.
- Override the points through
rows. Each record holds alabeland avalue:
const { result, error } = await bannerify.createImage("tpl_metrics", {
modifications: [
{
name: "growth-chart",
rows: [
{ label: "Q1", value: 120 },
{ label: "Q2", value: 180 },
{ label: "Q3", value: 260 },
{ label: "Q4", value: 410 },
],
},
],
})
if (error) throw new Error(error.message)
// Use Buffer.from(result) (Node) or new Blob([result]) (browser) to deliver the asset
Set the chart variant, axis labels and legend inside the editor; API overrides update the points and respect your configured options.
Key value
- Print label and value pairs, such as an invoice number, a due date or a total.
- Override the entries through
rows. Each record holds akeyand avalue, and the order in the array is the order on the canvas:
const { result, error } = await bannerify.createImage("tpl_invoice", {
modifications: [
{
name: "invoice-totals",
rows: [
{ key: "Subtotal", value: "$120.00" },
{ key: "Tax", value: "$12.00" },
{ key: "Total", value: "$132.00" },
],
},
],
})
Direction, size and dividers stay as you set them in the editor.
Signature
- Print a signer block with a name, a job title and a date.
- Override the three fields:
const { result, error } = await bannerify.createImage("tpl_contract", {
modifications: [
{
name: "signature",
text: "An Nguyen",
title: "Director",
date: "2026-02-02",
},
],
})
text sets the signer name, because name already identifies the layer.
Alert
- Print a callout, such as a payment deadline or a shipping notice.
- Override the heading and the body:
const { result, error } = await bannerify.createImage("tpl_notice", {
modifications: [
{
name: "notice",
title: "Payment terms",
text: "Pay before 31 Jan 2026.",
},
],
})
title sets the heading and text sets the body. The variant, the icon and the border stay as you set them in the editor.
Star rating
- Display review or quality scores. Bannerify renders one star per integer value supplied.
- Override with the numeric
starfield (e.g.,star: 5). Combine withvisibleto show ratings only for qualifying products.
Automation-friendly codes
QR Code
- Encode URLs, coupon codes, or app deep links. Override with the
qrcodefield.
Barcode
- Generate Code128 barcodes for inventory, tickets, and logistics. Override with the
barcodefield.
Icon
- Drop vector icons sourced from the Iconoir set. Icons inherit tint, size, and rotation from the editor.
- Use them for visual cues alongside text and metrics; toggle visibility per render when needed.
Layer visibility & fallbacks
visibleapplies to every element type and is useful for AB tests or conditional disclosures.- When modifications omit a property, Bannerify falls back to the template defaults configured in the editor.