---
title: "Retrieve Results"
description: "Collect the results of a Feed request: check the job, retrieve the data, read the response and handle warnings and errors."
url: "https://developer-beta.morningstar.com/investment-details-feed-api/retrieve-results"
image: "https://developer-beta.morningstar.com/_og/d/c_Ocean.takumi,title_~UmV0cmlldmUgUmVzdWx0cyB8IEludmVzdG1lbnQgRGV0YWlscyBGZWVkIEFQSQ,description_~Q29sbGVjdCB0aGUgcmVzdWx0cyBvZiBhIEZlZWQgcmVxdWVzdDogY2hlY2sgdGhlIGpvYiwgcmV0cmlldmUgdGhlIGRhdGEsIHJlYWQgdGhlIHJlc3BvbnNlIGFuZCBoYW5kbGUgd2FybmluZ3MgYW5kIGVycm9ycy4,props_eyJ0aGVtZSI6eyJtb2RlIjoibGlnaHQiLCJjb2xvcnMiOnsicHJpbWFyeSI6IiMwMDAwMDAifX19,p_Ii9pbnZlc3RtZW50LWRldGFpbHMtZmVlZC1hcGkvcmV0cmlldmUtcmVzdWx0cyI,s_bPHcjoW6JCgJO_Od.png"
---

-   [APIs](https://developer-beta.morningstar.com/apis)
-   [API Catalog](https://developer-beta.morningstar.com/api-catalog)
-   [API Assistant MCP Server](https://developer-beta.morningstar.com/api-assistant-mcp)
-   [Guides](https://developer-beta.morningstar.com/api-guides)
-   [Trial Access](https://developer-beta.morningstar.com/trial-access)

# 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..

# Retrieve Results

[View Markdown](https://developer-beta.morningstar.com/investment-details-feed-api/retrieve-results.md)[Download Markdown](https://developer-beta.morningstar.com/investment-details-feed-api/retrieve-results.md)

When you submit a request, the API processes it as a job. This page explains how to check the job, retrieve the results when they are ready, and read the response.

## [Check the Job](#check-the-job)

The `202` response to your request contains a link for checking the job.

```json
"_links": {
  "href": "https://www.us-api.morningstar.com/dynamic-services-apis/jobs/16bf1a7a-c883-4424-8810-2f4e9d244d40",
  "rel": "status",
  "method": "GET"
}
```

Call the link with your access token until the job is complete.

```bash
curl --request GET \
  --url "https://www.us-api.morningstar.com/dynamic-services-apis/jobs/16bf1a7a-c883-4424-8810-2f4e9d244d40" \
  --header "Authorization: Bearer {token}"
```

Don't call the link continuously. Wait between calls, and stop when the job is complete.

## [Retrieve the Results](#retrieve-the-results)

When the job is complete, use its result ID to retrieve the results.

```text
GET /direct-web-services/v1/investments/result/{resultId}
```

The following request retrieves the results.

```bash
curl --request GET \
  --url "https://www.us-api.morningstar.com/direct-web-services/v1/investments/result/{resultId}" \
  --header "accept: application/json" \
  --header "Authorization: Bearer {token}"
```

Use the base URL for your region, as described in [Getting Started](https://developer-beta.morningstar.com/investment-details-feed-api/getting-started). The request takes no query parameters or body.

## [Read the Response](#read-the-response)

The response has two top-level properties.

| Property    | Description                                                                 |
| :---------- | :-------------------------------------------------------------------------- |
| investments | An array with one object for each investment that returned data.            |
| metadata    | Information about the response: the request ID, the time, and any messages. |

The following response is for a request for the enterprise value and profitability data of one investment.

```json
{
  "investments": [
    {
      "identifiers": {
        "performanceId": "0P00000046"
      },
      "enterpriseValueCalculations": [
        {
          "asOfDate": "2025-09-03",
          "analystNormalizedEnterpriseValueToEbitdaRatio": 21.70188,
          "analystNormalizedEnterpriseValueToEbitRatio": 61.69785
        }
      ],
      "profitability": [
        {
          "reportPeriodEndDate": "2025-03-31",
          "analystNormalizedEbit": 10914000,
          "analystNormalizedEbitda": 50354000,
          "currencyCode": {
            "value": "US Dollar",
            "code": "USD"
          }
        }
      ]
    }
  ],
  "metadata": {
    "requestId": "7ccd91c0-6146-4256-8aba-3a1f2e5d0203",
    "time": "2025-11-08T13:18:30.5777168Z"
  }
}
```

The example is shortened. A real response has all the data points in the views you requested.

### [Investments](#investments)

Each object in `investments` is one investment. It has the following characteristics.

-   **Identifiers.** The `identifiers` object holds the investment's performance ID. Use it to match the data to the investments in your request.
-   **Data groups.** The remaining properties are data groups, named for the data they hold, such as `profitability` and `trailingReturn`. The groups depend on the views you requested.
-   **Objects and arrays.** A group is an object when there is one record, and an array when there can be several, such as time series values or several reporting periods. In the example above, `profitability` is an array.
-   **Coded values.** Some values are returned as an object with a `value` and a `code`, for example `{ "value": "US Dollar", "code": "USD" }`.
-   **Language and country.** Data that depends on language or country uses the `languageId` and `countryId` from your request.

### [Check Metadata and Warnings](#check-metadata-and-warnings)

The `metadata` object has the following properties.

| Property          | Description                                                                      |
| :---------------- | :------------------------------------------------------------------------------- |
| requestId         | The unique identifier of the request. Include it if you contact support.         |
| time              | The time of the response.                                                        |
| messages          | Messages about investments or data points that couldn't be returned. Present only when there are messages. |
| portfolioDate     | The portfolio date, for the portfolio holdings views.                            |
| portfolioCurrency | The portfolio currency, for the portfolio holdings views.                        |

A successful response doesn't guarantee that every investment returned data. Check `messages` in every response. Each message has the following properties.

| Property    | Description                             |
| :---------- | :-------------------------------------- |
| type        | The type of message.                    |
| code        | The message code.                       |
| message     | A description of the issue.             |
| investments | The investments the message applies to. |

Each object in `investments` can have the following properties.

| Property                                            | Description                                                                |
| :-------------------------------------------------- | :------------------------------------------------------------------------- |
| id and idType                                       | The identifier and identifier type from your request.                      |
| status                                              | A description of what couldn't be returned for the investment.             |
| datapointId                                         | The data points that couldn't be returned.                                 |
| errorCode                                           | The error code for the message.                                            |
| performanceId and companyId                         | The performance ID and company ID, if you didn't pass them in the request. |
| baseCurrency, domicile, exchangeCountry, exchangeId | The lookup details from your request.                                      |

If an identifier couldn't be matched, check it for typos, check that `idType` matches it, and check the lookup details. If you aren't entitled to a data point, contact your Morningstar account manager.

## [Handle Errors](#handle-errors)

A request that fails returns an error response instead of results.

| Property   | Description                           |
| :--------- | :------------------------------------ |
| statusCode | The HTTP status code.                 |
| errorCode  | A unique identifier for the error.    |
| message    | A description of the problem.         |
| requestId  | The unique identifier of the request. |

| Status | Description                                                                      |
| :----- | :------------------------------------------------------------------------------- |
| 200    | The results are returned. Check metadata.messages.                               |
| 400    | The request is invalid. Read the message to find the problem.                    |
| 413    | The response payload is too large (413.investmentDetailsAsync.005).              |
| 500    | An internal server error occurred. Retry the request, and contact support if it persists. |
| 503    | An upstream service is temporarily unavailable (503.investmentDetailsAsync.040). Retry later. |

If the response payload is too large, split the request into smaller requests, with fewer investments or a shorter date range.

For the meaning of each error code, see [Error Messages](https://developer-beta.morningstar.com/investment-details-feed-api/error-messages). For help with common problems, see [Troubleshooting](https://developer-beta.morningstar.com/investment-details-feed-api/troubleshooting).

## [Next Steps](#next-steps)

-   [Delta Loads](https://developer-beta.morningstar.com/investment-details-feed-api/delta-loads) to keep your data current without reloading everything.
-   [Troubleshooting](https://developer-beta.morningstar.com/investment-details-feed-api/troubleshooting) helps when results aren't what you expected.