Data Report API
Your numbers, as a report people read.
Weekly KPIs, client reports, and dashboards as a file. Send your numbers and get back an on-brand PDF or image.
Quarterly revenue
growth-chart
- Revenue
- $970k
- Growth
- +242%
- New customers
- 1,284
summary
How it works.
- 01
Design a report
Lay out charts, tables, key-value blocks, and text in the editor. Keep it on brand.
- 02
Bind your numbers
Send chart points, table rows, and figures as JSON from your database or a workflow.
- 03
Send it out
Render a PDF for email or an image for Slack, every week, without touching a slide.
Features
Reports that build themselves.
Charts, tables, and figures in one template, filled from one request.
Charts from rows
Each point is a label and a value. Variant, axis labels, and legend stay as you set them.
Learn more about Charts from rowsTables and key-value blocks
Put the detail next to the chart: per-region tables, totals, and dates.
Learn more about Tables and key-value blocksMatches the editor exactly
Charts render in the same engine as every other layer, so the output looks like the preview.
Developers
From query to PDF.
Each chart and block is a named layer. Send its rows in the modifications.
curl -X POST https://api.bannerify.co/v1/templates/createPdf \
-H "Content-Type: application/json" \
-d '{
"apiKey": "bnfy_xxx",
"templateId": "tpl_metrics",
"modifications": [
{
"name": "growth-chart",
"rows": [
{ "label": "Q1", "value": 120 },
{ "label": "Q2", "value": 180 },
{ "label": "Q3", "value": 260 },
{ "label": "Q4", "value": 410 }
]
},
{
"name": "summary",
"rows": [
{ "key": "Revenue", "value": "$970k" },
{ "key": "Growth", "value": "+242%" },
{ "key": "New customers", "value": "1,284" }
]
}
]
}' --output document.pdfimport { Bannerify } from "bannerify-js"
const bannerify = new Bannerify("bnfy_xxx")
const { result, error } = await bannerify.createPdf("tpl_metrics", {
modifications: [
{
name: "growth-chart",
rows: [
{ label: "Q1", value: 120 },
{ label: "Q2", value: 180 },
{ label: "Q3", value: 260 },
{ label: "Q4", value: 410 }
]
},
{
name: "summary",
rows: [
{ key: "Revenue", value: "$970k" },
{ key: "Growth", value: "+242%" },
{ key: "New customers", value: "1,284" }
]
}
],
})from bannerify import BannerifyClient
client = BannerifyClient("bnfy_xxx")
result = client.create_pdf(
"tpl_metrics",
modifications=[
{
"name": "growth-chart",
"rows": [
{ "label": "Q1", "value": 120 },
{ "label": "Q2", "value": 180 },
{ "label": "Q3", "value": 260 },
{ "label": "Q4", "value": 410 }
]
},
{
"name": "summary",
"rows": [
{ "key": "Revenue", "value": "$970k" },
{ "key": "Growth", "value": "+242%" },
{ "key": "New customers", "value": "1,284" }
]
}
],
)<?php
use Bannerify\Bannerify\BannerifyClient;
$client = new BannerifyClient('bnfy_xxx');
$result = $client->createPdf('tpl_metrics', [
'modifications' => [
[
'name' => "growth-chart",
'rows' => [
[ 'label' => "Q1", 'value' => 120 ],
[ 'label' => "Q2", 'value' => 180 ],
[ 'label' => "Q3", 'value' => 260 ],
[ 'label' => "Q4", 'value' => 410 ]
]
],
[
'name' => "summary",
'rows' => [
[ 'key' => "Revenue", 'value' => "$970k" ],
[ 'key' => "Growth", 'value' => "+242%" ],
[ 'key' => "New customers", 'value' => "1,284" ]
]
]
],
]);Questions, answered.
Can't find what you need? Email an@bannerify.co and you'll hear back from the founder.
Which data does a chart layer take?
Send rows, where each record has a label and a value. The chart variant, axis labels, and legend come from the editor.
Can a report have charts and tables together?
Yes. A template can mix charts, tables, key-value blocks, text, and images. Send a modification for each layer you want to fill.
Can I schedule reports without code?
Yes. Use a scheduled Zapier or n8n workflow to pull your numbers and call the Render PDF or Render Image action.
Stop copying numbers into slides.
Design the report once. Fill it with fresh numbers every time.