For a more in depth documentation, you should check the comments from the protobuf file.


Used to get all Exchanges, GlobalMarketSectors, ProductTypes, OptionTypes, TradingSessions, StrategyTypes, FutureTypes, ProductFamilys and Products.


Before sending an InstrumentDefinitionRequest, the client must send a ProductInfoRequest.

After sending a ProductInfoRequest request, the client will be automatically subscribed to asynchronous ProductsInfo. If the details of a Product or a ProductFamily are changed or a new Product or ProductFamily is added, the server will send that as an asynchronous message.


At the moment, we only send asynchronous messages only when a Product or ProductFamily is updated or added. In the future, we might send the other things from the ProductInfoResponse.

QST internal product hierarchy

graph TD; E(Exchange) --> |1:m| PF; GMS(Global Market Sector) --> |1:m| PF; PF(Product Family) --> |1:m| P; P(Product) --> |1:m| I(Instrument);


graph TD; E(Exchange=Chicago Board of Trade) --> PF; GMS(Global Market Sector = Agriculture) --> PF; PF(Product Family = Corn) --> PCF; PF(Product Family = Corn) --> PCAO; PF(Product Family = Corn) --> PCCFS; PCF(Product = Corn Outright Future<br/>ProductType=Outright Future<br/>Trading Session=Electronic) --> I1(Instrument<br/>Maturity Year=2021<br/>Maturity Month=12<br/>); PCF --> I2(Instrument<br/>Maturity Year=2021<br/>Maturity Month=9<br/>); PCAO(Product = Corn American Option<br/>ProductType=American Option<br/>Trading Session=Electronic) --> I3(Instrument<br/>Maturity Year=2021<br/>MaturityMonth=12<br/>strike=410.00); PCAO --> I4(Instrument<br/>Maturity Year=2021<br/>MaturityMonth=9<br/>strike=320.00); PCCFS(Product = Corn Calendar Future Spread<br/>ProductType=Futures Spread<br/>Trading Session=Electronic<br/>Strategy Type=Calendar) --> I5(Instrument<br/>Maturity Year=2021<br/>MaturityMonth=12<br/>Number Of Legs=2); I5 --> I5L1(Leg<br/>Leg Index=1<br/>Maturity Year=2021<br/>Maturity Month=12) I5 --> I5L2(Leg<br/>Leg Index=2<br/>Maturity Year=2022<br/>Maturity Month=3) PCCFS --> I6(Instrument<br/>Maturity Year=2021<br/>MaturityMonth=5<br/>Number Of Legs=2); I6 --> I6L1(Leg<br/>Leg Index=1<br/>Maturity Year=2021<br/>Maturity Month=5) I6 --> I6L2(Leg<br/>Leg Index=2<br/>Maturity Year=2021<br/>Maturity Month=7)

The central elements of our security definitions are the product families. A product family typically includes a flagship future product along with one or multiple option products that have the flagship future as their underlying. A product family may also include one or multiple strategy products, such as a calendar spread strategy product, a butterfly strategy product, etc.

Product families are assigned to exchanges and each product family is included in a global market sector, such as: Agriculture, Currency, Energy, etc.

Each product has multiple instruments:

  • Each instrument of a future product typically represents a trading month.

  • Each instrument of an option product represents a strike price for a certain trading month.

  • Each instrument of a future strategy product represents a combination of specific trading months (named instrument legs) that are bought and/or sold together as part of the strategy.

  • Each instrument of an option strategy product represents a combination of specific trading months and strike prices that are bought and/or sold together as part of the strategy.

Request example

const payload = {
  request_id: 3,
  product_info: {




An important field from the Product message is price_exponent. This is the default exponent that the client should use for all prices that don’t contain an exponent in the AsyncQuotes messages. The per-product exponent applies to all the product’s instrument (that is all the trading months and all the strike prices of that product).

The server will respond with a ProductInfoResponse that contains:

  • 1 or more exchanges

  • 0 or more global market sector

  • 0 or more trading sessions

  • 0 or more product types

  • 0 or more option types

  • 0 or more strategy types

  • 0 or more future types

  • 0 or more product families

  • 0 or more products.


In some scenarios, the server might respond with an ErrorMessage with the following error message:

  • No products found

This message will be received in these scenarios:

  • User has no rights to any exchanges

  • No products were found for the exchanges that the user has rights

  • Server error