cpausp, “Gold Spot Price Contracts”, and cpagsp, “Silver Spot Price Contracts”). Do not parse the instrument symbol or slug — symbol formats are not part of the public contract and may change. Identify markets using the fields below.
Every gold and silver market settles on Chainlink’s spot price data streams for XAU/USD and XAG/USD, not on a spot venue and not on an average. The Retail API exposes the same terms as the typed assetPriceTerms object; see Asset Price Market Fields. The markets mirror the crypto Up/Down windows described in Crypto Schema. The differences are: the price source (Chainlink spot streams, category FIN and subcategory COMMODITY instead of CRY), a single spot value at each boundary instead of a 60-second average, trading opens at the window start instead of about 90 seconds before, price_to_beat arrives about a minute after the open instead of a few seconds, a daily 1d window, trading hours with metals_next_window_start, and the metals_* field names.
Gold and silver Up/Down windows are listed in production from October 22, 2026, as announced in the changelog.
Section 1: Common Identifying Fields
The following fields appear on every gold and silver instrument. Together they identify the metal, the market type and the time window of a contract.Field Reference
The instrument also carries display fields you can ignore for mapping:
market_title, market_subtitle, event_sort_type, event_tags, instrument_rules, event_image and event_image_display_type (once the event has an image), and the CFTC reporting fields cftc_instrument_id, cftc_binary_option_strike_price_alias. Unlike crypto, gold and silver instruments carry no market_sort_order, market_color or market_dark_color. cftc_product_desc is in the table above because it names the product. Operational fields (requires_manual_settlement, manual_settlement_*, expected_settlement_side, settlement_*) can appear while the exchange is settling an instrument and must be ignored. Gold and silver instruments carry no crypto_* fields.
metals_market_type Enum
Treat an unknown value as a newer family: render the fields that are present and watch the changelog.
metals_horizon Enum
Series
event_series combines metal, family and cadence:
Event Attributes
event_attributes records the contract for the exchange’s DCM record: strike_value: "Up", strike_unit: "string", strike_description: "Direction", evaluation_type: "==", source agency Chainlink (https://data.chain.link). Each instrument resolves independently (EVENT_OUTCOME_INDEPENDENT). Settlement never depends on these fields; the metals_* metadata above and the rules text are authoritative.
Section 2: Market Families
All windows share the same contract attributes as crypto Up/Down: tick size0.01, valid prices 0.01 to 0.99, minimum order 0.01 contract, payout $1.00 per contract, position accountability level 25,000 contracts, and a daily trade-day roll at 5:00 PM ET. Last trade is the settlement instant (interval_end); the instrument expires 30 minutes later, which leaves time for the exchange to resolve it. Source agency is Chainlink.
Up/Down
Will the price of gold (or silver) close the window at or above its open?
The window trades without a
price_to_beat for about its first minute. This is by design: the open value does not exist until Chainlink publishes it. Re-read the instrument after interval_start rather than assuming the value at listing.
Section 3: Identifying Markets
Use this table to identify a market from instrument metadata. Match onmetals_market_type, then read the window from interval_start / interval_end.
event_category = "FIN" and event_subcategory = "COMMODITY" can also match other commodity products. Use the clearing symbol or metals_market_type to select gold and silver.
Worked Example: 15-Minute Gold Window
A settled 15-minute gold window that opened at 14:30 UTC on October 21, 2026:metals_market_type = "updown"→ an up/down window;metals_horizon = "15m"→ 15 minutes long.interval_start/interval_end→ the window ran from 14:30:00 to 14:45:00 UTC (10:30 to 10:45 AM ET).price_to_beat = "4133.50"→ the gold spot value at 14:30:00;metals_settlement_price = "4128.62"→ the value at 14:45:00.- Close < open, so the short side (No, “Down”) paid $1.00.
metals_next_window_startequalsinterval_end→ the next 15-minute window opened straight after this one.
Worked Example: Daily Silver Window
A daily silver window has this shape (values from the window that opened at the 6:15 PM ET evening open on Tuesday, October 20, 2026, before it settled):metals_horizon = "1d"→ a daily window.interval_start/interval_end→ 22:15 UTC on October 20 to 21:00 UTC on October 21 (6:15 PM to 5:00 PM ET), 22 hours 45 minutes.price_to_beat = "57.989"→ silver carries three decimals.metals_next_window_start = "1792620900"→ the next daily opens at 22:15 UTC on October 21 (6:15 PM ET), after the daily break.
Best Practices
- Never parse the symbol or slug to determine the metal, market type or window. Symbol formats are not part of the public contract.
- Map on
metals_market_type. Treat an unknown value as a newer family: render the terms that are present and watch the changelog. - Read windows from
interval_startandinterval_end, not from the instrument’s expiration date, which is 30 minutes after settlement. - Treat every price as a decimal string (
price_to_beat,metals_settlement_price) and convert it yourself. Gold carries 2 decimals and silver 3; do not round silver to cents. - Expect
price_to_beatabout a minute after a window opens. Re-read the instrument afterinterval_start. - Use
metals_next_window_startfor closed periods. It tells you when the next window opens after the daily break, the weekend or a holiday. - Read fresh prices from the Retail API.
POST /v1/refdata/instrumentsserves a cached copy of each instrument, soprice_to_beatandmetals_settlement_pricecan appear there up to an hour after they are stamped. The Retail market endpoints (assetPriceTerms.priceToBeatandassetPriceTerms.settlementPrice) update when the value is stamped, andGET /v1/instruments/{symbol}/settlementreads the final settlement from the exchange live. See Settlement API. - Follow each market’s own rules text (
instrument_rules). It names the stream, the two instants and the rounding.