---
title: "Specify Investments"
description: "Identify the investments in a Time Series API request using IDs, identifier types and lookup filters, and handle category IDs and unmatched results."
url: "https://developer-beta.morningstar.com/time-series-api/specify-investments"
image: "https://developer-beta.morningstar.com/_og/d/c_Ocean.takumi,title_~U3BlY2lmeSBJbnZlc3RtZW50cyB8IFRpbWUgU2VyaWVzIEFQSQ,description_~SWRlbnRpZnkgdGhlIGludmVzdG1lbnRzIGluIGEgVGltZSBTZXJpZXMgQVBJIHJlcXVlc3QgdXNpbmcgSURzLCBpZGVudGlmaWVyIHR5cGVzIGFuZCBsb29rdXAgZmlsdGVycywgYW5kIGhhbmRsZSBjYXRlZ29yeSBJRHMgYW5kIHVubWF0Y2hlZCByZXN1bHRzLg,props_eyJ0aGVtZSI6eyJtb2RlIjoibGlnaHQiLCJjb2xvcnMiOnsicHJpbWFyeSI6IiMwMDAwMDAifX19,p_Ii90aW1lLXNlcmllcy1hcGkvc3BlY2lmeS1pbnZlc3RtZW50cyI,s_qElh6z9P_Nf-3OUF.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)

# Time Series API

Build Time Series APIs into your digital experience for quick investment and earnings summaries.

# Specify Investments

[View Markdown](https://developer-beta.morningstar.com/time-series-api/specify-investments.md)[Download Markdown](https://developer-beta.morningstar.com/time-series-api/specify-investments.md)

The `ids` path parameter identifies the investments you want data for. You can pass Morningstar Performance IDs directly, or pass other identifiers and let the API look up the matching investment. This page explains how to do both.

## [Pass Investments in the Path](#pass-investments-in-the-path)

Pass identifiers in the path as a comma-separated list. A request can include a maximum of **25 investments**.

```text
GET /direct-web-services/time-series/v1/performance/daily-price/0P00000CSY,0P00002Y8D
```

The Morningstar Performance ID is the default identifier type. When every value is a Performance ID, you don't need any other parameter to identify the investments.

## [Identifier Types](#identifier-types)

The API accepts the following identifier types. Use the `idTypes` parameter to tell the API which type each value is.

| Identifier                 | idTypes Value           |
| :------------------------- | :---------------------- |
| Morningstar Performance ID | performanceId (default) |
| Morningstar Security ID    | securityId              |
| Morningstar ID (MSID)      | msid                    |
| ISIN                       | isin                    |
| CUSIP                      | cusip                   |
| Trading symbol             | tradingSymbol           |

The response returns the identifier of each investment in `identifiers`, so you can match results to the values you sent. See [Work with Results](https://developer-beta.morningstar.com/time-series-api/work-with-results).

## [Mix Identifier Types](#mix-identifier-types)

`idTypes` is a comma-separated list that lines up with `ids` by position. Follow these rules.

-   List one type for each value in `ids`, in the same order.
-   Leave an entry empty to skip a position. Empty entries default to `performanceId`.
-   Omit trailing commas after the last non-empty value.

The following request queries three investments. The first is an ISIN, the second is a trading symbol, and the third is a Performance ID, so its entry is left out.

```text
GET /direct-web-services/time-series/v1/performance/daily-price/US2562191062,MDLOX,0P00006W6Q
  ?idTypes=isin,tradingSymbol
```

## [Narrow the Lookup](#narrow-the-lookup)

When you pass an identifier that can match more than one investment, such as a trading symbol listed on several exchanges, use lookup filters to choose the right one. The filters work the same way as `idTypes`: each is a comma-separated list that lines up with `ids` by position.

| Parameter       | Description                                                              | Example                 |
| :-------------- | :----------------------------------------------------------------------- | :---------------------- |
| baseCurrency    | The base currency of the investment, as ISO 4217 currency codes.         | USD,USD                 |
| domicile        | The domicile of the investment, as 3-character ISO 3166-1 country codes. | ,USA,,USA               |
| exchangeCountry | The exchange country, as 3-character ISO 3166-1 country codes.           | ,USA                    |
| exchangeId      | The exchange, as exchange IDs.                                           | ,EX$$$$XMEX,,EX$$$$XNAS |

For example, with `ids=id1,id2,id3,id4`, the value `domicile=,USA,,USA` applies the domicile filter to the second and fourth investments only.

The following request filters the lookup for the trading symbol by exchange country and base currency. The empty first entries skip the ISIN.

```text
GET /direct-web-services/time-series/v1/performance/daily-price/US2562191062,MDLOX
  ?idTypes=isin,tradingSymbol
  &baseCurrency=,USD
  &exchangeCountry=,USA
```

The lookup values that were applied are returned in the `metadata` of each investment in the response.

## [Use Category IDs](#use-category-ids)

You can also pass category IDs. Set the matching `idTypes` value to `performanceId` or `securityId`, and URL-encode the ID. For example, the category ID `LC00002226;CA]FO` is passed as `LC00002226;CA%5DFO`.

```text
GET /direct-web-services/time-series/v1/performance/daily-price/LC00002226;CA%5DFO
  ?idTypes=performanceId
```

## [Handle Unmatched Investments](#handle-unmatched-investments)

If the API can't match an identifier and its lookup filters to an investment, it returns no data for that investment. The unmatched values are listed in `metadata.messages` in the response, so the request can still succeed for the investments that did match. See [Work with Results](https://developer-beta.morningstar.com/time-series-api/work-with-results).

If an investment is unexpectedly missing, check the identifier, its `idTypes` entry, and whether a lookup filter is excluding it. See [Troubleshooting](https://developer-beta.morningstar.com/time-series-api/troubleshooting).