Generate a PDF or HTML portfolio report from the output of the /v1/portfolio/analyze endpoint. This endpoint uses async job processing.
/v1/portfolio/analyze endpoint.
/v1/portfolio/analyze and wait for completion/v1/portfolioreport/v1/jobs/{job_id} until status is completed| Field | Type | Required | Default | Description |
|---|---|---|---|---|
portfolio_data | object | Yes | — | The complete result from the /v1/portfolio/analyze endpoint |
format | string | No | pdf | Output format: pdf, html, or both |
GET /v1/jobs/{job_id} returns:
| Field | Description |
|---|---|
success | Whether the report was generated successfully |
report_id | Unique identifier for this report |
pdf_url | Download URL for the PDF report (if format is pdf or both) |
html_url | Download URL for the HTML report (if format is html or both) |
expires_at | ISO 8601 timestamp when the report URLs expire (24 hours) |
| Page | Contents |
|---|---|
| Executive Summary | Key metrics, portfolio value vs benchmark chart, factor scores, investment thesis |
| Performance Analysis | Portfolio vs benchmark comparison table, period returns (YTD, 1W, 1M, 3M, 6M, 1Y, 3Y, 5Y) |
| Charts & Visuals | Growth of $100 chart, drawdown analysis, rolling Sharpe ratio |
| Allocations | Sector allocation pie chart, market allocation pie chart, top holdings bar chart |
| Returns | Monthly returns heatmap, annual returns comparison |
API key passed as Bearer token
Job created successfully. Poll the check_url for results.
Unique job identifier
Initial job status
pending Requested output format
URL to poll for job status
Estimated processing time in seconds
Human-readable status message