How do I generate a PDF or HTML factsheet from an ISIN?
POST /api/v1/factsheets with an ISIN returns a one-page factsheet as HTML or PDF, or keyless share and embed links, with your title, theme and accent colour. Every plan, Free included; white label on Pro. Code and options.Published September 12, 2026 · Updated October 13, 2026 · by FundFacts APIShort answer
POST https://fundfactsapi.com/api/v1/factsheets with { "isin": "…", "format": "pdf" } returns a one-page factsheet rendered from the fund's current payload (key facts, fees and the KID's cost lines, risk scale, growth chart, holdings, sector and country charts, returns tables, as-of date). Ask for "html" for a web page, or add "deliver": "link" to get keyless share, PDF and embed URLs you can mail or iframe. Every plan, the Free one included (a PDF counts 2 of the 5 free lookups, a web page 1); Pro adds your logo, removes the FundFacts line and licenses the sheets for clients. No code: the dashboard's Factsheets tab makes the same sheet in one click.
See it on a real fund page: the IE00B4L5Y983 page shows the figures this answer describes, with their as-of date.
One call
bashcurl -s -X POST https://fundfactsapi.com/api/v1/factsheets \-H "Authorization: Bearer $FUNDFACTS_API_KEY" -H "Content-Type: application/json" \-d '{"isin":"IE00B4L5Y983","format":"pdf","title":"Prepared for J. Doe","accent":"#1F5EFF","theme":"light"}' \-o factsheet.pdf
The response is the document (application/pdf or text/html); the headers X-Factsheet-Url and X-Factsheet-Pdf-Url carry keyless links to the same render.
Links instead of bytes
bashcurl -s -X POST https://fundfactsapi.com/api/v1/factsheets -H "Authorization: Bearer $FUNDFACTS_API_KEY" -H "Content-Type: application/json" \-d '{"isin":"IE00B4L5Y983","format":"html","deliver":"link"}'
json{ "id": "fs_…", "isin": "IE00B4L5Y983", "name": "iShares Core MSCI World UCITS ETF", "format": "html", "dataAsOf": "2026-09-01","urls": { "html": "https://fundfactsapi.com/f/…", "pdf": "https://fundfactsapi.com/f/….pdf", "embed": "<iframe src=\"https://fundfactsapi.com/f/…\" title=\"Fund factsheet\" width=\"100%\" height=\"1100\"></iframe>" } }
The URLs need no key: mail the PDF link to a client, put the HTML link in a CRM, paste the embed snippet in your page. GET /factsheets lists your renders, GET /factsheets/{id}?format=pdf re-renders, PATCH marks favourites, DELETE removes.
Options
| Field | Values |
|---|---|
format | "html" (1 request) or "pdf" (2) |
deliver | "file" (default, the document) or "link" (JSON with URLs) |
title | Up to 80 characters, printed in the header in place of the FundFacts wordmark (every plan) |
theme, accent | "light" / "dark", and a hex colour such as #1F5EFF |
branding | Pro and above may set false to drop the "Powered by FundFacts API" line |
logo | Pro and above: https URL of your logo (PNG, JPEG, WebP, GIF or SVG), printed in the header |
No code
The dashboard's Factsheets tab (https://fundfactsapi.com/dashboard?tab=factsheets, free account) makes the same sheet without code: search the fund by name or paste its ISIN, pick PDF or web page, the theme, an accent colour and the name in the header, then generate. Every public fund page under /funds/{isin} has a button that opens the generator on that fund.
In your own layout
The factsheet is rendered with the open-source React components in @fundfactsapi/widgets (growth chart, donut, weight bars, key-fact tiles, risk scale, returns tables and a composite FundFactsheet), so you can also build the page yourself from the JSON and print it with your own stack. Generate PDF factsheets from JSON and the client reporting use case show both routes.
Verify it yourself
The demo endpoint returns the live payload for a fund that is already in the store, without a key. Everything on this page can be checked against it.bashcurl -s https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 | jq '{name, asOf: .data.dataAsOf, ter: .data.headlineMetrics.ter, risk: .data.riskRating, top: .data.topHoldings[:3]}'