Investment Details Feed API

Get detailed profile data for up to 250 investments in a single request, drawing on Morningstar's fundamental, reference, and historical data..

Request Delta Load

A delta load is an ordinary investment details request with one extra property, deltaStartTime. The API returns only the data that has changed since that time. This page explains how to run a delta load and merge the results. For background, see Delta Loads.

Delta loads currently apply to the equity-financials view only.

Before You Start

  • Run a full load first, so that you have data to update. A full load is the same request with no deltaStartTime.
  • Record the time of your last load. You use it as the deltaStartTime.
  • Use the same investments, view and parameters as your full load, so that the changes can be merged. The equity-financials view must be the only view in the request. See Equity: Financials.

1: Add the Delta Properties

Send the request as you would a full load, and add the following properties to the body.

PropertyRequiredDescription
deltaStartTimeYes, for a delta loadThe time to retrieve changes from, in UTC, as yyyy-MM-ddTHH:mm:ssZ. If you leave it out, the API returns the full load.
includeUnchangedDataNotrue returns each changed row complete, with all its fields. false (the default) returns each changed row with only the fields that changed.

The API returns all updates from deltaStartTime until the current time.

2: Choose How Much of Each Row to Return

Set includeUnchangedData to match how you update your data.

ValueEach Changed Row ContainsUse When
trueAll of its fields, including those that haven't changed.You replace the whole stored row with the new one.
falseOnly the fields that changed.You update individual fields of the stored row, and want smaller results.

3: Send the Request

The following request retrieves the changes to the financials of three investments since 2 July 2026. Send the Prefer: respond-async header, as with any investment details request.

curl --request POST \
  --url "https://www.us-api.morningstar.com/direct-web-services/v1/investments" \
  --header "Authorization: Bearer {token}" \
  --header "Content-Type: application/json" \
  --header "Prefer: respond-async" \
  --data '{
    "investments": [
      { "id": "0P0000004Y" },
      { "id": "0P00000046" },
      { "id": "0P00000056" }
    ],
    "views": [
      {
        "viewId": "equity-financials",
        "parameters": {
          "reportType": ["a"],
          "period": ["q2"],
          "numberOfMonths": ["3"],
          "segmentType": ["Business"]
        }
      }
    ],
    "deltaStartTime": "2026-07-02T14:30:00Z",
    "includeUnchangedData": true
  }'

The API responds with 202 Accepted and a jobId, as for any request.

4: Retrieve and Merge the Results

Check the job and retrieve the results in the usual way. See Retrieve Investment Details.

The results contain only the rows that changed since deltaStartTime. Merge them into the data you already hold.

  • Match each changed row to the stored row for the same investment, data group and keys.
  • If includeUnchangedData was true, replace the stored row. If it was false, update only the fields in the changed row.
  • Add rows that you don't have yet.

If an investment has no changes, it has no data in the results. Check metadata.messages for investments that couldn't be matched.

5: Record the Time for the Next Load

Keep the time of this load, and use it as the deltaStartTime of the next one.

Request Limits

Delta loads have the same limits as other requests.

LimitValue
Investments per request1 to 250
Views per requestequity-financials must be the only view
Time series date rangeUp to 60 months

Errors

Error CodeMessage
400.investmentDetailsAsync.033Invalid delta date format. Dates must be ISO 8601 UTC format, e.g. 2025-02-07T19:06:55Z.

For the full list, see Error Messages.

Next Steps