Related resources:




Providing you have suitable access control permissions, you can upload a ‘quote’ representing a single value at a single point in time to the LUSID Quote Store, for example an Apple stock price or a USD/GBP spot rate.

Note: Choices you make when uploading market data impact the composition of the recipe you must create in order to use this data in a valuation.

Using the LUSID API

You can load up to 2000 quotes in a single request:

  1. Obtain an API access token.
  2. Call the UpsertQuotes API, encapsulating all the quotes in the request in a single scope (namespace). Note the dataScope market data rule field in your recipe must match this value.
  3. For each quote in the request, specify:
    • An ephemeral ID (to track errors in the response).
    • A provider representing a financial data vendor. Valid providers are currently Bloomberg, DataScope (for Refinitiv), SIX, FactSet, TraderMade, Edi, RimesLusid and Client; if your data vendor isn't listed, represent it using Client. Note the supplier market data rule field in your recipe must match this value.
    • Optionally, a priceSource indicating a sub-supplier to the financial data vendor (above), for example Tradeweb or RRPS for Refinitiv DataScope. If specified, note the priceSource market data rule field in your recipe must match this value.
    • An instrumentIdType and instrumentId that together constitute an instrument identifier linking the quote to an instrument mastered in LUSID:
      Market data categoryinstrumentIdType fieldinstrumentId field syntax and example value
      Market priceYour choice of LusidInstrumentId, Figi, RIC, QuotePermId, Isin, Sedol, Cusip, ClientInternalThere is no syntax; the value must be appropriate for the identifier type, for example LUID_00003D58 for LusidInstrumentId.
      FX spot rateCurrencyPairSyntax: <DomCcy>/<FgnCcy>

      Example: USD/GBP
    • A quoteType, for example Price or Rate. Note the quoteType market data rule field in your recipe must match this value.
    • A field appropriate for the provider. Note the field market data rule field in your recipe must match this value:
      provider fieldfield values
      LusidAny string
      Bloombergbid, mid, ask, open, close, last
      SIXbid, mid, ask, open, close, last
      DataScopebid, mid, ask
      ClientAny string
      Edibid, mid, ask, open, close, last
      TraderMadebid, mid, ask, open, close, high, low
      FactSetbid, mid, ask, open, close
      Rimesbid, mid, ask, open, close, last
    • An effectiveAt date from which the quote is valid. This could be a full date and time (in UTC), or a date and cut label.
    • A metricValue constituting the actual price or rate, with a value and a unit that is either a currency (price) or a currency pair (rate).

Consider the following example of a market price and a FX spot rate uploaded together to a Growth quote scope (highlighted in red in the URL):

curl -X POST "https://<your-domain>"
  -H "Authorization: Bearer <your-API-access-token>"
  -H "Content-Type: application/json-patch+json"
  -d '{
    "Quote-0001": {
      "quoteId": {
        "quoteSeriesId": {
          "provider": "Lusid",
          "instrumentIdType": "LusidInstrumentId",
          "instrumentId": "LUID_00003D58",
          "quoteType": "Price",
          "field": "mid"
        "effectiveAt": "2023-02-07T00:00:00Z"
      "metricValue": {
        "value": 100, "unit": "USD"
    "Quote-0002": {
      "quoteId": {
        "quoteSeriesId": {
          "provider": "Lusid",
          "instrumentIdType": "CurrencyPair",
          "instrumentId": "USD/GBP",
          "quoteType": "Rate",
          "field": "mid"
        "effectiveAt": "2023-02-07T00:00:00Z"
      "metricValue": {
        "value": 0.8, "unit": "USD/GBP"

Using the LUSID web app

Coming soon.