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-financialsview 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.
| Property | Required | Description |
|---|---|---|
deltaStartTime | Yes, for a delta load | The time to retrieve changes from, in UTC, as yyyy-MM-ddTHH:mm:ssZ. If you leave it out, the API returns the full load. |
includeUnchangedData | No | true 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.
| Value | Each Changed Row Contains | Use When |
|---|---|---|
true | All of its fields, including those that haven't changed. | You replace the whole stored row with the new one. |
false | Only 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
includeUnchangedDatawastrue, replace the stored row. If it wasfalse, 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.
| Limit | Value |
|---|---|
| Investments per request | 1 to 250 |
| Views per request | equity-financials must be the only view |
| Time series date range | Up to 60 months |
Errors
| Error Code | Message |
|---|---|
400.investmentDetailsAsync.033 | Invalid 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
- Retrieve Delta Dates to check what changed before you load.
- Troubleshooting helps when results aren't what you expected.