---
title: "Generate Live Report"
method: POST
path: "/api/report/generate"
tags: ["Report"]
---

# Generate Live Report

`POST /api/report/generate`

## Request

- Base URL: `https://api.xfinlab.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xfinlab.com/api/report/generate`
- Auth: none declared

## Query parameters

- `token` string

## Request body

- LiveReportRequest: 2026-07-31 (task #600): mirrors exactly the fields js/decision- footer.js's renderDecisionFooter() already accepts and renders on ai-analysis.html/chart-analysis.html -- the frontend just forwards the SAME object it already built for the on-screen Decision Report, so the PDF can never disagree with what's on screen. See ReportGenerator .generate_from_live_data()'s docstring for why this is a separate, simpler path from the older /report/{ticker} LLM-narrative endpoint below.
  - `ticker` string, required
  - `decisionScore` number, nullable
  - `confidencePct` number, nullable
  - `riskLabel` string, nullable
  - `keyReasons` string[], nullable
  - `suggestedAction` string, nullable
  - `invalidation` string, nullable
  - `stopLoss` number, nullable
  - `takeProfits` number[], nullable
  - `riskPct` number, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/xfinlab/apis/xfinlab-api.md) · [All operations](https://skmtc.dev/xfinlab/apis/xfinlab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/xfinlab/apis/xfinlab-api/revisions/205f85614bc6?raw)
