Features built for enterprise reporting
Every feature was designed around one constraint: an analyst should never touch a spreadsheet to produce a board report again.
One endpoint. Unlimited report types.
POST /v1/report/generate accepts any JSON or CSV structure up to 500 rows. The API infers column types, detects anomalies, and produces a narrative calibrated to your saved template. No schema registration. No configuration steps.
- ✓Accepts JSON arrays or base64-encoded CSV
- ✓Auto-detects numeric, date, and categorical columns
- ✓Returns narrative + tokens_used + report_id in a single response
POST /v1/report/generate HTTP/1.1Authorization: Bearer rapi_live_••••••••Content-Type: application/json { "template_id": "tmpl_board_pack", "data": [ { "region": "North", "revenue": 184200, "growth": 0.12 } { "region": "South", "revenue": 97500, "growth": 0.08 } ]} HTTP/1.1 200 OK { "report_id": "rpt_01hx9z3kw2f4a", "status": "completed", "narrative": "Q2 performance was strong...", "tokens_used": 312}Write your prompt once. Use it forever.
Templates let you define tone, format, language, and structure once. Every report generated with that template inherits it exactly. Finance teams use one template for board packs. Ops teams use another for MIS reports.
- ✓Separate prompt_prefix and prompt_suffix for maximum control
- ✓Output format: text, markdown, or PDF
- ✓Scoped to your org — shared across all API keys
POST /v1/template HTTP/1.1Authorization: Bearer rapi_live_•••••••• { "name": "board_pack", "format": "markdown", "language": "en", "prompt_prefix": "You are a CFO writing a board summary.", "prompt_suffix": "End with key risks and recommendations."} HTTP/1.1 201 Created { "template_id": "tmpl_01hxabc123", "name": "board_pack", "status": "active"}Set it once. Get reports forever.
Register a cron expression, a webhook URL, and a template. ReportAPI fires the job, generates the report, and delivers a PDF to your endpoint — every week, without human involvement.
- ✓Standard cron syntax (e.g. 0 7 * * 1 for every Monday 7am)
- ✓Webhook delivery with 3 retries and exponential backoff
- ✓Empty result sets are skipped and logged — no blank reports sent
POST /v1/report/schedule HTTP/1.1Authorization: Bearer rapi_live_•••••••• { "cron": "0 7 * * 1", "webhook_url": "https://app.example.com/reports/hook", "template_id": "tmpl_board_pack", "description": "Weekly MIS report"} HTTP/1.1 201 Created { "schedule_id": "sched_01hxdef456", "next_run": "2025-01-27T07:00:00Z", "status": "active"}PII never reaches the model.
Every payload is scanned at the ingestion layer before any LLM call is made. Aadhaar, PAN, and credit card patterns are detected via regex and Luhn check. The request is blocked, the event is logged, and your data never leaves the edge.
- ✓Blocks Aadhaar (12-digit), PAN, Visa/MC/Amex patterns
- ✓Returns HTTP 451 with column_hint — not a generic error
- ✓Audit log entry created on every block — zero raw data stored
POST /v1/report/generate HTTP/1.1 { "data": [{ "aadhaar": "9876 5432 1012", "name": "Priya Sharma" }]} HTTP/1.1 451 Unavailable For Legal Reasons { "error": { "code": "pii_detected", "column_hint": "aadhaar", "message": "PII pattern detected in payload" }}Board-ready PDFs. Your logo, your format.
Growth and Enterprise plans generate a formatted PDF alongside the narrative. Upload your logo once. Every PDF carries it. White-label mode (Enterprise) removes all ReportAPI branding entirely.
- ✓Rendered via WeasyPrint — pixel-perfect HTML-to-PDF
- ✓PDF stored on Cloudflare R2 with a 7-day presigned URL
- ✓White-label mode available on Enterprise plan
HTTP/1.1 200 OKContent-Type: application/json { "report_id": "rpt_01hx9z3kw2f4a", "status": "completed", "narrative": "Q2 performance was strong...", "pdf_url": "https://r2.reportapi.io/rpt_01hx...", "pdf_expires_at": "2025-01-28T12:00:00Z", "tokens_used": 312}Full visibility into every report.
Every request carries a trace_id propagated through the LLM call and storage layer. Support can pull any report by ID. Usage counters update in real time. Cost per report is logged at the token level.
- ✓GET /v1/usage returns calls, reports, tokens, and estimated cost
- ✓GET /v1/report/{id} available for 7 days (90 days on Growth)
- ✓OpenTelemetry traces exported to Grafana Cloud
GET /v1/usage HTTP/1.1Authorization: Bearer rapi_live_•••••••• HTTP/1.1 200 OK { "period": "2025-01", "calls_used": 847, "reports_generated": 823, "tokens_used": 264511, "quota_limit": 1000, "estimated_cost_usd": 41.19}ReportAPI vs the alternatives
| Feature | ReportAPI | Build it yourself | Hire an analyst |
|---|---|---|---|
| Setup time | 5 minutes | 3–6 months | 2 weeks |
| Cost/month | From $149 | $5,000+ eng cost | $3,000+ salary |
| PII compliance | ✓ Built in | You build it | Manual process |
| Scheduled delivery | ✓ Native cron | You build it | Calendar reminder |
| PDF output | ✓ Growth+ | You build it | Manual formatting |
| Multi-language | ✓ hi, ta, en | You build it | Hire translator |
| API-first | ✓ REST | ✓ | ✗ |