Products

The product API is publicly available and provides information and specs for all products at the exchange.

Product API Endpoints

Get All Product Data

HTTP MethodEndpoint
GET/product/data/

Returns a list of all product data objects for each product in the system.

Get Product Data by ID

HTTP MethodEndpoint
GET/product/data/:product_id

Returns the product data for the specified product, where :product_id is the product ID.

Get All Product Specs

HTTP MethodEndpoint
GET/product/specs/

Returns a list of all product spec objects for each product in the system.

Get Product Spec by ID

HTTP MethodEndpoint
GET/product/spec/:product_id

Returns the spec for the specified product, where :product_id is the product ID.

Product API Flags

Each of these endpoints supports the following flags:

  • day, show products only for that given day, the current day is used if this is not supplied.
  • active=true, filter products only to active products, active=false has the same behavior as omitting the flag altogether.
  • base_symbol, show only products that share a given base symbol

Product API Objects

Product Data objects have the following TS type:

export interface ProductData {
  product_id: number;
  last_price_time: string | null;
  last_price: number | null;
  settlement_time: string | null;
  settlement_price: number | null;
  settlement_price_comment: string | null;
  open_price: number | null;
  high_price: number | null;
  low_price: number | null;
  close_price: number | null;
  price_change: number | null;
  volume: number | null;
  notional_volume: number | null;
  block_volume: number | null;
  notional_block_volume: number | null;
  price_limit_upper: number;
  price_limit_lower: number;
  open_interest: number | null;
  open_interest_change: number | null;
}

The Product Spec objects have the following TS type

export type ProductSpec = IFutureSpec | ISpreadSpec | IOptionSpec;

export type IFutureSpec = ProductFutureSpec;

export type ISpreadSpec = ProductSpreadSpec;

export type IOptionSpec = ProductOptionSpec;

export type ProductStatus = "active" | "forthcoming" | "expired";

export interface ProductFutureSpec {
  type: string;
  product_id: number;
  product_name: string;
  margin_unit: string;
  settlement_method: string;
  max_order_quantity: number;
  min_block_size: number;
  contract_size: number;
  contract_size_unit: string;
  price_increment: number;
  price_quotation_unit: string;
  price_band_variation: number;
  price_limit_percentage: number;
  first_trading_day: string;
  final_settle_time: string;
  daily_open_time: string;
  daily_settle_time: string;
  symbol: string;
  month: number;
  year: number;
  base_symbol: string;
  cqg_symbol: string;
  product_status: ProductStatus;
}

export interface ProductSpreadSpec {
  type: string;
  product_id: number;
  product_name: string;
  max_order_quantity: number;
  min_block_size: number;
  price_band_variation: number;
  price_limit_percentage: number;
  first_trading_day: string;
  final_settle_time: string;
  daily_open_time: string;
  daily_settle_time: string;
  symbol: string;
  base_symbol: string;
  price_increment: number;
  cqg_symbol: string;
  product_status: ProductStatus;
  legs: SpreadSpecLeg[];
}

export interface SpreadSpecLeg {
  product_id: number;
  weight: number;
}

export interface ProductOptionSpec {
  type: string;
  product_id: number;
  product_name: string;
  max_order_quantity: number;
  min_block_size: number;
  price_band_variation: number;
  price_limit_percentage: number;
  first_trading_day: string;
  final_settle_time: string;
  daily_open_time: string;
  daily_settle_time: string;
  symbol: string;
  cqg_symbol: string;
  underlying_product: number;
  strike_price: number;
  base_symbol: string;
  price_increment: number;
  option_type: string;
  product_status: ProductStatus;
}

Product API Fields

The following are the fields provided in the product data API. This data comes from sources such as the settlement process ran each day or live market activity. The settlement process is usually ran between 2:30 and 3:00 PM CT, or within 30 minutes of the daily settle time of the respective field for that process.

volume, open_interest, and open_interest_change have their own semantics. They are updated by 8:30 AM the following day. Those values will be null until they are published.

FieldNotes
product_idThe product ID for a given product
last_price_timeThe time of the last trade, updated live
last_priceThe price of the last trade, updated live
settlement_timeThe time that the settlement process was ran, updated by the settlement process
settlement_priceSettlement price, updated by the settlement process. When the product has expired this is the final settlement price.
settlement_price_commentSettlement price comment, updated by the settlement process
open_priceOpen price, updated live as the price of the first trade of the day
high_priceHigh price, updated live as the highest price of a trade for the day
low_priceLow price, updated live as the lowest price of a trade for the day
close_priceClose price, updated by the settlement process
price_changePrice change computed as either the percentage change between the last_price and settlement_price, or, if there are no trades on the day, the percentage change between the last two settlement prices.
volumeTrade volume, fetched from the clearing house, during trading it is updated live
notional_volumeNotional trade volume, fetched from the clearing house, during trading it is updated live
price_limit_upperThe upper price limit for the product
price_limit_lowerThe lower price limit for the product
open_interestOpen interest, fetched from the clearing house
open_interest_changeOpen interest change in number of contracts day over day. Positive for increases, negative for decreases.

The following are the fields provided in the product spec API. These fields are mostly static, they do not change day to day. The changes seen through this API will be new contract listings near the end of a given quarter. If there are other changes, such as to market hours, customers will be notified well in advance of API changes.

The increment of price_band_variation is expressed in terms of the price_quotation_unit field.

FieldProduct TypesNotes
product_idAllProduct ID
product_nameAllProduct name
max_order_quantityAllMax order quantity
min_block_sizeAllMinimum block size
price_band_variationAllPrice band variation
price_limit_percentageAllPrice limit percentage
typeAllProduct type, either "future" or "spread" or "option"
first_trading_dayAllFirst trading day
final_settle_timeAllFinal settle time
daily_open_timeAllDaily open time
daily_settle_timeAllDaily settle time
symbolAllBitnomial product symbol
cqg_symbolAllCQG product symbol (for use on CQG IC/Desktop)
product_statusAllProduct status, either "active" or "forthcoming" or "expired"
legsSpreadLegs for a given spread product, with "product_id" and "weight" fields
underlying_productOptionProduct ID of the underlying product
strike_priceOptionOption strike price
option_typeOptionOption type, either call or put
margin_unitFutureMargin unit
settlement_methodFutureSettlement method
contract_sizeFutureContract size
contract_size_unitFutureContract size unit
price_incrementFuturePrice increment
price_quotation_unitFuturePrice quotation unit
monthFutureContract month
yearFuturecontract year
base_symbolFutureContract base symbol

Start Trading

Trade US Perpetual Futures, Physical Futures, and Options on the Bitcoin Complex®, XRP, ETH, SOL, and more.