Get Started with
ReportForge

Turn CSV or JSON data into polished HTML reports. Follow these steps to make your first API call in under 2 minutes.

Avg. time to first report: 90 seconds
📦 Download Postman Collection
Your API Key — save it now
This key will not be shown again after you leave this page.

Your first report in 4 steps

1

Get your free API key

Sign up with just your email — no credit card required. Free tier includes 5 reports per day.

Shell
curl -X POST https://reportforge-api.vercel.app/api/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'

Or visit your dashboard to manage keys in your browser.

2

Make your first API call

POST CSV or JSON data to the matching endpoint. Pass your API key in the Authorization header using Bearer scheme.

CSV to Report
curl -X POST https://reportforge-api.vercel.app/api/csv-to-report \
  -H "Authorization: Bearer rf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "csv": "item,quantity,price\nWidget A,10,29.99\nWidget B,5,49.99",
    "template": "sales-summary",
    "title": "Q1 Sales"
  }'
JSON to Report
curl -X POST https://reportforge-api.vercel.app/api/json-to-report \
  -H "Authorization: Bearer rf_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "data": [
      {"item": "Widget A", "quantity": 10, "price": 29.99},
      {"item": "Widget B", "quantity": 5,  "price": 49.99}
    ],
    "template": "sales-summary",
    "title": "Q1 Sales"
  }'
3

Check the response

The API returns a JSON object with an html field you can render directly, save to disk, or convert to PDF.

Response — 200 OK
{
  "html": "<!DOCTYPE html>...", // complete, self-contained HTML report
  "meta": {
    "template": "sales-summary",
    "rowCount": 2,
    "columns": ["item", "quantity", "price"],
    "generatedAt": "2026-02-28T12:00:00Z"
  }
}
4

Try it in your language

Use ReportForge from any language. Here are ready-to-use examples for JavaScript and Python.

Node.js / Browser
const response = await fetch("https://reportforge-api.vercel.app/api/csv-to-report", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer rf_live_YOUR_KEY",
  },
  body: JSON.stringify({
    csv: "item,quantity,price\nWidget A,10,29.99\nWidget B,5,49.99",
    template: "sales-summary",
    title: "Q1 Sales",
  }),
});

const { html, meta } = await response.json();
console.log(`Report generated: ${meta.rowCount} rows, ${meta.template} template`);

// Option 1: Open in browser
document.getElementById("report").srcdoc = html;

// Option 2: Save to file (Node.js)
// fs.writeFileSync("report.html", html);
Python
import requests

response = requests.post(
    "https://reportforge-api.vercel.app/api/csv-to-report",
    json={
        "csv": "item,quantity,price\nWidget A,10,29.99\nWidget B,5,49.99",
        "template": "sales-summary",
        "title": "Q1 Sales",
    },
    headers={"Authorization": "Bearer rf_live_YOUR_KEY"},
)

data = response.json()
print(f"Report generated: {data['meta']['rowCount']} rows")

# Save to file
with open("report.html", "w") as f:
    f.write(data["html"])

SDK Packages Coming Soon

Install
# JavaScript / TypeScript
npm install reportforge-sdk

# Python
pip install reportforge
+

Choose a report template

ReportForge includes four built-in templates. Pass the template name in your request body.

Sales Summary

sales-summary

Revenue totals, top items, trend highlights

Expense Report

expense-report

Cost breakdown by category with totals

Inventory Status

inventory-status

Stock levels, low-inventory alerts

Invoice

invoice

Line-item invoice with subtotals and tax

+

Available endpoints

Method Endpoint Description
POST /api/csv-to-report CSV string + template name → HTML report
POST /api/json-to-report JSON array + template name → HTML report
GET /api/templates List available templates and required columns
POST /api/signup Create a free API key by email

Rate limits by tier

Tier Reports / day Max input size
Free 5 100 KB
Starter ($19/mo) 100 2 MB
Business ($49/mo) Unlimited 10 MB
!

Common errors

If something goes wrong, check these common issues first.

Status Meaning How to Fix
401 Unauthorized Your API key is missing or invalid. Check that your Authorization: Bearer header includes a valid rf_ key.
429 Too Many Requests You've exceeded your daily rate limit. Wait for the reset or upgrade your plan for higher limits.
400 Bad Request Check your request body format. Ensure you're sending valid JSON with the required fields ("csv" or "data", plus "template").

Ready to generate reports?

Free tier is ready now. Upgrade any time when you need more volume.