ReportAPI
Documentation

ReportAPI Documentation

Everything you need to integrate, deploy, and scale automated reporting.

🔍

Introduction

ReportAPI is a REST API that converts structured datasets into polished natural-language narratives. Send a JSON payload containing your tabular data, choose an output format, and receive a publication-ready report in under four seconds. The API is stateless, versioned, and designed to slot into any backend stack without friction.

All endpoints live under https://api.reportapi.io/v1. Every response is JSON. Errors follow a consistent shape with a top-level error object containing a machine-readable code and a human-readable message. The API is covered by our SOC 2 Type II audit on Growth and Enterprise plans.

Authentication

API Keys

All requests must include your API key in the Authorization header.

Authorization: Bearer YOUR_API_KEY

API keys are scoped to your organisation. All members share one key per tier. Rotate keys from your dashboard without downtime — the previous key remains valid for 60 seconds during the rotation window so in-flight requests are not interrupted.

Your first report

  1. 1Sign up and copy your API key from the dashboard.
  2. 2Send a POST request with your data.
  3. 3Read the narrative from the response.

Request

curl -X POST https://api.reportapi.io/v1/report/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "data": [
      {"month": "Jan", "revenue": 120000, "expenses": 85000},
      {"month": "Feb", "revenue": 134000, "expenses": 91000},
      {"month": "Mar", "revenue": 158000, "expenses": 94000}
    ],
    "output_format": "text"
  }'

Response

{
  "report_id": "rpt_01J2X...",
  "status": "complete",
  "narrative": "Revenue grew 31.7% over Q1, from ₹1.20L in January to
    ₹1.58L in March, while expense growth remained contained at 10.6%.
    The improving revenue-to-expense ratio signals strengthening
    operational leverage heading into Q2.",
  "tokens_used": 318
}

Error Handling

All errors return a JSON body with an error object. Use the error.code field for programmatic handling — the message field may change between releases.

Statuserror.codeMeaning
401missing_api_keyNo Authorization header
403api_key_revokedKey has been revoked
413payload_too_largeInput exceeds 500 rows or 50 columns
422empty_datasetdata array has 0 rows
429quota_exceededMonthly report limit reached
451pii_detectedRegulated identifier found in payload
500internal_errorContact support with error_id

Recent updates

v1.0 launchPOST /generate, templates, PDF export, scheduled jobs.
BetaPrivate beta with 12 design partners.
AlphaInternal testing begins.