Requesting reports
Generate an ESG overview or MiFID II report as a PDF.
Report types
Set type to one of:
esg-overview: an ESG overview of the portfolio.mifid2: a MiFID II sustainability report.
Request a report
Send the holdings with POST /reports. The request needs:
name: name of the portfolio, shown in the report.snapshot_at: date of the holdings (ISO 8601). It is moved to the end of its quarter.identifier: your label for the portfolio. It is not linked to portfolios stored withPOST /portfolios.type:esg-overviewormifid2.holdings: at least one holding. Each holding needsisin,name,currency,weightandmarket_value.isinmust be a string;nullis not accepted, so leave out cash and instruments without an ISIN.
Optional fields:
benchmark_index: the name of an index from the list in the reference. It defaults toS&P 500when no benchmark is sent. A name that is not in the list fails with400. Contact customers@connect.earth if you need another index.benchmark_etf_mutual_fund: the ISIN of an ETF or mutual fund to compare with. If you send both,benchmark_etf_mutual_fundis used.methodology_id: the sustainable investments methodology, fromGET /sustainable-investments/methodologies. It applies tomifid2reports only.
curl https://eco.datia.app/reports \
--request POST \
--header "Content-Type: application/json" \
--header "x-api-key: $CE_API_KEY" \
--data @report.json{
"name": "Pension fund A",
"identifier": "pension-fund-a",
"type": "esg-overview",
"snapshot_at": "2026-06-30",
"benchmark_etf_mutual_fund": "IE00B4L5Y983",
"holdings": [
{ "name": "Apple Inc.", "isin": "US0378331005", "instrument_type": "stock", "currency": "USD", "weight": 40, "market_value": 4000000 },
{ "name": "Microsoft Corp.", "isin": "US5949181045", "instrument_type": "stock", "currency": "USD", "weight": 35, "market_value": 3500000 },
{ "name": "Bund 2.6% 2033", "isin": "DE000BU2Z015", "instrument_type": "sovereign-bond", "currency": "EUR", "weight": 25, "market_value": 2500000 }
]
}What you get back
The request is synchronous. The response (201) contains document.location_url, a link to the PDF. Download the PDF right away; the link may expire.
{
"document": {
"location_url": "https://cdn.datia.app/reports/report-0001.pdf",
"request_id": "REQUEST-ID-0001"
},
"metadata": {
"snapshot_at": "2026-06-30",
"type": "esg-overview",
"default_benchmark": "IE00B4L5Y983",
"identifier": "report-reference-0001"
}
}metadata.default_benchmark is the ISIN of the benchmark used. If you contact support about a report, quote document.request_id.
Reports are built within the request, so they are subject to the 29-second timeout described in Errors and limits. A report that times out (504) may still be generated, but it cannot be retrieved. Retry with fewer holdings.
Working with portfolios
Store holdings as dated snapshots and manage them.
Generate a sustainability report POST
Builds a PDF sustainability report for the holdings you send and returns a link to it. The report compares the portfolio with one benchmark: benchmark_etf_mutual_fund when you send it, otherwise benchmark_index, which defaults to S&P 500. A request without identifier, without type or with an empty holdings list fails with 400. A snapshot_at in a future year fails with 400 and the message Snapshot date cannot be higher than actual date. A date that cannot be read fails with 400 and the message You are not using a valid date as snapshot parameter.