This page gives advance notice of changes to the API contract before they ship, so you can update your integration ahead of time. Changes are listed here before they are generally available.
Market responses: underlyingMarket can be null, new constituentTokens field
We are extending the market response returned by Get market data for an asset and Get market data for all supported assets to support tokens that represent several underlying assets rather than a single stock.
What is changing
constituentTokens(new) — an array of GM token symbols, present on every market response. For a token that represents several underlying assets, it lists the GM symbols of those assets, and you can look each one up individually via the market endpoints. For a token backed by a single stock, it is an empty array ([]).underlyingMarket(updated) — can now benull. For a token backed by a single stock it stays populated as it is today. For a token that represents several underlying assets there is no single underlying stock, so this field isnull.
Example responses
Both Get market data for an asset and Get market data for all supported assets return this object — the all-assets endpoint returns an array of them. Numeric values below are illustrative.Today
The current response:underlyingMarket is always populated and there is no constituentTokens field.
A token backed by a single stock (after the change)
Identical to today, with one addition:constituentTokens is present as an empty array ([]). underlyingMarket is unchanged, so integrations that ignore the new field keep working.
A token that represents several underlying assets (after the change)
underlyingMarket is null — there is no single backing stock — and constituentTokens lists the GM symbols that make up the token. Each can be looked up individually via the market endpoints.
What you should do
- Treat
underlyingMarketas optional, and handle anullvalue without erroring. - Accept the new
constituentTokensarray. You can ignore it if you do not need it, but your parser should not reject responses that include it.
Rollout
constituentTokensappears first. For every token available today it is an empty array ([]), andunderlyingMarketstays populated — so no existing value changes, you only receive an added field.underlyingMarket: nullonly occurs once tokens that represent several underlying assets are available. Until then,underlyingMarketremains populated on every response.
These changes are additive and backward-compatible for tokens backed by a single stock. No existing field is removed or renamed.

