Business template
Report
Magazine-style multi-page business report with cover, executive summary, metric grid, sections with quotes / lists / callouts, and page numbers.
Free on every planLanguage: en
slug: reportRendered with sample data
01
Quick start
Reference the template by its slug and pass your data. The same call works from any language; pick whichever fits your stack. Replace $KAMY_API_KEY with a key from the dashboard.
curl
curl https://kamy.dev/api/v1/render \
-H "Authorization: Bearer $KAMY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateSlug": "report",
"data": {
"reportType": "Quarterly Business Review",
"title": "Q1 2026 Performance Report",
"subtitle": "Revenue, growth, and customer metrics across all product lines.",
"organizationName": "Acme Studio",
"reportDate": "2026-04-15",
"metrics": [
{
"label": "Total Revenue",
"value": "$2.4M",
"delta": "+18% QoQ"
},
{
"label": "Active Customers",
"value": "1,284",
"delta": "+9% QoQ"
},
{
"label": "Avg. Contract Value",
"value": "$1,870",
"delta": "+8% QoQ"
},
{
"label": "Net Retention",
"value": "112%",
"delta": "+3 pts"
}
],
// …
}
}'node.js
import { Kamy } from "@kamydev/sdk";
const kamy = new Kamy({ apiKey: process.env.KAMY_API_KEY! });
const { url } = await kamy.render({
templateSlug: "report",
data: {
"reportType": "Quarterly Business Review",
"title": "Q1 2026 Performance Report",
"subtitle": "Revenue, growth, and customer metrics across all product lines.",
"organizationName": "Acme Studio",
"reportDate": "2026-04-15",
"metrics": [
{
"label": "Total Revenue",
"value": "$2.4M",
"delta": "+18% QoQ"
},
{
"label": "Active Customers",
"value": "1,284",
"delta": "+9% QoQ"
},
{
"label": "Avg. Contract Value",
"value": "$1,870",
"delta": "+8% QoQ"
},
{
"label": "Net Retention",
"value": "112%",
"delta": "+3 pts"
}
],
// …
},
});
console.log(url); // signed URL, valid for 1 hourpython
import os, requests
resp = requests.post(
"https://kamy.dev/api/v1/render",
headers={"Authorization": f"Bearer {os.environ['KAMY_API_KEY']}"},
json={
"templateSlug": "report",
"data": {
"reportType": "Quarterly Business Review",
"title": "Q1 2026 Performance Report",
"subtitle": "Revenue, growth, and customer metrics across all product lines.",
"organizationName": "Acme Studio",
"reportDate": "2026-04-15",
"metrics": [
{
"label": "Total Revenue",
"value": "$2.4M",
"delta": "+18% QoQ"
},
{
"label": "Active Customers",
"value": "1,284",
"delta": "+9% QoQ"
},
{
"label": "Avg. Contract Value",
"value": "$1,870",
"delta": "+8% QoQ"
},
{
"label": "Net Retention",
"value": "112%",
"delta": "+3 pts"
}
],
// …
},
},
)
resp.raise_for_status()
print(resp.json()["url"])02
Sample payload
The full sample data the live preview above renders from. Use it as a starting point for your own integration — every field is optional except those marked required in the schema below.
json
{
"reportType": "Quarterly Business Review",
"title": "Q1 2026 Performance Report",
"subtitle": "Revenue, growth, and customer metrics across all product lines.",
"organizationName": "Acme Studio",
"reportDate": "2026-04-15",
"metrics": [
{
"label": "Total Revenue",
"value": "$2.4M",
"delta": "+18% QoQ"
},
{
"label": "Active Customers",
"value": "1,284",
"delta": "+9% QoQ"
},
{
"label": "Avg. Contract Value",
"value": "$1,870",
"delta": "+8% QoQ"
},
{
"label": "Net Retention",
"value": "112%",
"delta": "+3 pts"
}
],
"sections": [
{
"title": "Executive Summary",
"body": "Q1 2026 delivered the strongest growth quarter on record, driven by enterprise expansion and the successful launch of the new template marketplace. Revenue grew 18% quarter-over-quarter to $2.4M."
},
{
"title": "Revenue Breakdown",
"body": "Subscription revenue contributed 78% of total revenue. Usage-based billing accounted for 19%, with the remainder from professional services. The Pro plan was the fastest-growing tier with 24% expansion."
},
{
"title": "Customer Highlights",
"body": "We added 142 net-new logos in Q1, including three Fortune 500 customers. Net retention improved to 112%, reflecting strong upsell motion in the mid-market segment."
},
{
"title": "Outlook",
"body": "We expect continued momentum into Q2 driven by the upcoming API v2 release and expansion into the European market. Sales pipeline grew 31% QoQ and is well-positioned for full-year targets."
}
]
}03
JSON Schema
The render endpoint validates your payload against this JSON Schema before queuing the render. Validation errors come back with HTTP 400 and a VALIDATION_FAILED code listing every offending path.
json
{
"type": "object",
"required": [
"title",
"sections"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"subtitle": {
"type": "string"
},
"author": {
"type": "string"
},
"date": {
"type": "string"
},
"sections": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"heading"
],
"properties": {
"heading": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}