Connect EarthCompliance API

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 with POST /portfolios.
  • type: esg-overview or mifid2.
  • holdings: at least one holding. Each holding needs isin, name, currency, weight and market_value. isin must be a string; null is 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 to S&P 500 when no benchmark is sent. A name that is not in the list fails with 400. 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_fund is used.
  • methodology_id: the sustainable investments methodology, from GET /sustainable-investments/methodologies. It applies to mifid2 reports only.
curl https://eco.datia.app/reports \
  --request POST \
  --header "Content-Type: application/json" \
  --header "x-api-key: $CE_API_KEY" \
  --data @report.json
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.

On this page