{"openapi":"3.0.3","info":{"title":"MetalCharts API","description":"Live and historical prices for precious and base metals, plus the exchange data behind them: COMEX warehouse inventory and deliveries, LBMA vaults and clearing, Shanghai SGE and SHFE, India MCX premiums, Guangzhou GFEX warehouse receipts, and CFTC Commitments of Traders positioning. Commercial use is permitted on every plan including the free tier, which allows 200 requests a month. On the free tier, any public display of the data must show a visible link to https://metalcharts.org, such as \"Metal prices by MetalCharts\"; free-tier responses carry an X-Attribution header saying so. Paid plans need no link.","version":"1.0.0","termsOfService":"https://metalcharts.org/api-terms","contact":{"name":"MetalCharts support","email":"support@metalcharts.org","url":"https://metalcharts.org/contact"},"x-logo":{"url":"https://metalcharts.org/icon-512.png","backgroundColor":"#121212"}},"servers":[{"url":"https://api.metalcharts.org","description":"Production"}],"tags":[{"name":"Prices","description":"Real-time spot prices for all supported assets"},{"name":"History","description":"Historical price data and candles"},{"name":"Metals","description":"Precious and base metals data"},{"name":"Futures","description":"Futures contracts and settlement data"},{"name":"Regional","description":"Regional exchange data (COMEX, LBMA, Shanghai, India, GFEX)"},{"name":"Commodities","description":"Energy, agriculture, and industrial commodities"},{"name":"Crypto","description":"Cryptocurrency prices and history"},{"name":"ETFs","description":"Exchange-traded fund prices and history"},{"name":"Markets","description":"Market indices and 24/7 markets"},{"name":"News","description":"Market news, sentiment, and summaries"},{"name":"Analytics","description":"COT positioning, supply, ATH, currency rates, and economic calendar"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Pass your API key as: Authorization: Bearer mc_live_..."}},"schemas":{}},"paths":{"/v1/prices/":{"get":{"summary":"Latest spot prices","description":"Latest spot prices for all supported assets (precious and base metals plus key benchmarks) in a single call, keyed by symbol. Prices are in US dollars per each market's own unit unless `currency`, `unit` or `karat` say otherwise; every quote states the `currency` and `unit` it is in, and a converted response carries the `fx` rate used (ECB reference rate). `karat` returns gold only, at nominal purity karat/24.","tags":["Prices"],"responses":{"200":{"description":"Spot prices keyed by metal symbol.","content":{"application/json":{"schema":{"type":"object","required":["success","data","count","source","isStale","timestamp"],"properties":{"success":{"type":"boolean"},"data":{"description":"Keyed by metal symbol. Without a symbols filter it covers XAU, XAG, XPT, XPD, HG, ALI, NI, ZN, PB, JBP, CO, LC, UXA; a metal with no stored price is left out.","type":"object","patternProperties":{"^(.*)$":{"type":"object","required":["symbol","price","exchange","marketType","timestamp"],"properties":{"symbol":{"examples":["XAU"],"type":"string"},"price":{"type":"number"},"change24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"changePercent24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"high24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"low24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"exchange":{"examples":["SPOT"],"type":"string"},"marketType":{"examples":["spot"],"type":"string"},"timestamp":{"format":"date-time","type":"string"},"open24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"bid":{"description":"Indicative bid, a fixed spread below the mid price.","anyOf":[{"type":"number"},{"type":"null"}]},"ask":{"description":"Indicative ask, a fixed spread above the mid price.","anyOf":[{"type":"number"},{"type":"null"}]},"stale":{"description":"True when this quote's feed hasn't updated for more than five days.","type":"boolean"}}}}},"count":{"type":"number"},"source":{"type":"string"},"cacheAge":{"anyOf":[{"description":"Seconds since the most recent price update across all metals. Null when no update time is known, and absent when no prices are stored yet.","type":"number"},{"type":"null"}]},"isStale":{"type":"boolean"},"timestamp":{"format":"date-time","type":"string"},"_rid":{"description":"Request id, for support.","type":"string"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbols","in":"query","required":false,"schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"schema":{"description":"ISO 4217 code to quote in. Default USD. One of: USD, EUR, GBP, JPY, CHF, AUD, CAD, CNY, INR, SGD, HKD, NZD, SEK, NOK, DKK, MXN, BRL, ZAR, TRY, PLN, CZK, HUF, RON, ISK, ILS, KRW, IDR, MYR, PHP, THB, AED, SAR.","examples":["EUR"],"type":"string"}},{"name":"unit","in":"query","required":false,"schema":{"description":"Mass unit to quote per: toz, g, kg, lb, mt, tola (toz is the troy ounce; oz is accepted as an alias). Default: the market's own unit.","examples":["g"],"type":"string"}},{"name":"karat","in":"query","required":false,"schema":{"description":"Gold only: price 24, 23, 22, 21, 20, 18, 16, 15, 14, 12, 10, 9, 8-karat gold at nominal purity karat/24 (24K is the spot price).","examples":["22"],"type":"string"}}],"operationId":"getV1Prices"}},"/v1/history/{symbol}":{"get":{"summary":"Price history for a metal","description":"Historical price series for a metal. Symbols are the metal codes, not names: XAU (gold), XAG (silver), XPT (platinum), XPD (palladium), HG (copper), plus ALI, NI, ZN, PB, JBP, CO, LC and UXA.`GOLD` is not valid here; it belongs to /v1/markets. Use the range parameter (for example 1M, 6M, 1Y or ALL; MAX is accepted as a synonym for ALL) or a start date to set the window; start overrides range, and end (used only with start) defaults to now. interval picks the candle size. Supported intervals are 15m, 30m, 45m, 1h, 2h, 4h, 8h, 1d, 1w and 1M; intraday intervals read the interval candle tables and 1w/1M are aggregated from daily candles. Prices are in US dollars per the market's own unit unless currency, unit or karat say otherwise; each point is converted at the ECB reference rate in force on its date (FX history starts 1999-01-04, and earlier points are left out of a converted series). The response states the currency and unit it is in.","tags":["History"],"responses":{"200":{"description":"OHLC series, oldest first.","content":{"application/json":{"schema":{"type":"object","required":["success","data","symbol","range","startDate","endDate","count","source"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","required":["timestamp","price","open","high","low","close","volume"],"properties":{"timestamp":{"format":"date-time","type":"string"},"price":{"description":"Same as close. Kept for older consumers.","type":"number"},"open":{"type":"number"},"high":{"type":"number"},"low":{"type":"number"},"close":{"type":"number"},"volume":{"description":"0 where the source publishes no volume.","type":"number"}}}},"symbol":{"examples":["XAU"],"type":"string"},"range":{"examples":["1Y"],"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"},"count":{"type":"number"},"source":{"type":"string"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}]},"_rid":{"description":"Request id, for support.","type":"string"}}}}}},"400":{"description":"Invalid range, interval or symbol.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"403":{"description":"Requested history exceeds the plan's limit.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["XAU"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"schema":{"description":"ISO 4217 code to quote in. Default USD. One of: USD, EUR, GBP, JPY, CHF, AUD, CAD, CNY, INR, SGD, HKD, NZD, SEK, NOK, DKK, MXN, BRL, ZAR, TRY, PLN, CZK, HUF, RON, ISK, ILS, KRW, IDR, MYR, PHP, THB, AED, SAR.","examples":["EUR"],"type":"string"}},{"name":"unit","in":"query","required":false,"schema":{"description":"Mass unit to quote per: toz, g, kg, lb, mt, tola (toz is the troy ounce; oz is accepted as an alias). Default: the market's own unit.","examples":["g"],"type":"string"}},{"name":"karat","in":"query","required":false,"schema":{"description":"Gold only: price 24, 23, 22, 21, 20, 18, 16, 15, 14, 12, 10, 9, 8-karat gold at nominal purity karat/24 (24K is the spot price).","examples":["22"],"type":"string"}}],"operationId":"getV1HistoryBySymbol"}},"/v1/metals/":{"get":{"summary":"List supported metals","description":"Reference list of supported metals with their names, categories, and units.","tags":["Prices"],"responses":{"200":{"description":"Every tracked metal with its latest price.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["symbol","name","price"],"properties":{"symbol":{"examples":["XAU"],"type":"string"},"name":{"type":"string"},"price":{"type":"number"},"category":{"anyOf":[{"examples":["precious"],"type":"string"},{"type":"null"}]},"unit":{"anyOf":[{"examples":["oz"],"type":"string"},{"type":"null"}]},"change24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"change7d":{"anyOf":[{"type":"number"},{"type":"null"}]},"high24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"low24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]}}}},"sparklines":{"description":"Recent price points per symbol, for inline charts.","type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"type":"number"}}}}}}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Metals"}},"/v1/market-status/":{"get":{"summary":"Exchange open and closed status","description":"Current open or closed status and trading hours for supported exchanges.","tags":["Markets"],"responses":{"200":{"description":"Open/closed state per venue.","content":{"application/json":{"schema":{"type":"object","required":["success","exchanges","timestamp"],"properties":{"success":{"type":"boolean"},"exchanges":{"description":"Keyed by venue: COMEX, LME, LBMA, SHFE, SGE, TOCOM, MCX.","type":"object","patternProperties":{"^(.*)$":{"type":"object","required":["name","country","currency","isOpen","isHoliday","localTime","timezone","tradingHours","tradingDays"],"properties":{"name":{"examples":["COMEX (CME Group)"],"type":"string"},"country":{"type":"string"},"currency":{"examples":["USD"],"type":"string"},"isOpen":{"type":"boolean"},"isHoliday":{"type":"boolean"},"holidayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"localTime":{"description":"HH:mm in the venue's own timezone.","type":"string"},"timezone":{"examples":["America/New_York"],"type":"string"},"tradingHours":{"description":"Local session windows, comma separated where a venue breaks.","type":"string"},"tradingDays":{"examples":["Mon-Fri"],"type":"string"},"nextOpen":{"anyOf":[{"type":"object","required":["msUntilOpen","countdown","nextSessionStart"],"properties":{"msUntilOpen":{"type":"number"},"countdown":{"examples":["5h 54m"],"type":"string"},"nextSessionStart":{"examples":["00:00"],"type":"string"}}},{"type":"null"}]}}}}},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"exchange","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Market-status"}},"/v1/currency/":{"get":{"summary":"Exchange rates","description":"Exchange rates for the 32 currencies the API quotes metals in: the US dollar, the ECB reference set and the pegged UAE dirham and Saudi riyal. `rates` holds units of each currency per one unit of `base` (USD by default). With `date`, the rates in force on that day; on weekends and holidays, the last publication before it. `timestamp` is in milliseconds.","tags":["Analytics"],"responses":{"200":{"description":"Exchange rates keyed by ISO 4217 code.","content":{"application/json":{"schema":{"type":"object","required":["success","base","rates"],"properties":{"success":{"type":"boolean"},"base":{"examples":["USD"],"type":"string"},"date":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}]},"rates":{"description":"Rate per unit of `base`, keyed by ISO 4217 code.","type":"object","patternProperties":{"^(.*)$":{"type":"number"}}},"timestamp":{"anyOf":[{"description":"When these rates were captured, as Unix time in milliseconds (not seconds).","type":"number"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"currencies":{"type":"array","items":{"type":"object","required":["code"],"properties":{"code":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}}}}},"400":{"description":"Unsupported base or malformed date.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"403":{"description":"The date is further back than the plan's history allows.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"503":{"description":"No current rates could be read from any source. Retry later; Retry-After gives a suggested wait.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"base","in":"query","required":false,"schema":{"description":"Currency the rates are quoted against. Default USD.","examples":["EUR"],"type":"string"}},{"name":"date","in":"query","required":false,"schema":{"description":"YYYY-MM-DD: the ECB reference rates in force that day (history from 1999-01-04). Counts as history for plan limits.","examples":["2020-03-02"],"type":"string"}}],"operationId":"getV1Currency"}},"/v1/currency/history":{"get":{"summary":"Exchange rate history","description":"Daily ECB reference rates for one currency against `base` (units of `currency` per one `base`), one point per ECB publication day, back to 1999-01-04. Depth follows the plan's history limit.","tags":["Analytics"],"responses":{"200":{"description":"Daily rates, oldest first.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","required":["date","rate"],"properties":{"date":{"type":"string"},"rate":{"type":"number"}}}}}}}}},"400":{"description":"Unsupported currency or base, or an invalid range or date.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"403":{"description":"The window is further back than the plan's history allows.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"currency","in":"query","required":true,"schema":{"description":"The currency to chart.","examples":["EUR"],"type":"string"}},{"name":"base","in":"query","required":false,"schema":{"description":"Quoted against. Default USD.","examples":["USD"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y, ALL, MAX. Default 1M.","examples":["1Y"],"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"description":"YYYY-MM-DD; overrides range.","examples":["2024-01-01"],"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"description":"YYYY-MM-DD, used with start. Default today.","examples":["2024-12-31"],"type":"string"}}],"operationId":"getV1CurrencyHistory"}},"/v1/convert/":{"get":{"summary":"Convert between metals, currencies and units","description":"Converts an amount between a metal, a currency and a mass unit: 10 g of gold in euros (from=XAU&to=EUR&amount=10&unit=g), how much silver 1,000 rupees buys (from=INR&to=XAG&unit=g), euros to yen, or grams to troy ounces. Metal prices are live spot (or the close on `date`), currency rates are ECB reference rates. `karat` prices gold at nominal purity karat/24. A `date` counts as history: Free reaches 30 days back, paid plans their history depth.","tags":["Prices"],"responses":{"200":{"description":"The converted amount and the rate used.","content":{"application/json":{"schema":{"type":"object","required":["success","result","rate"],"properties":{"success":{"type":"boolean"},"result":{"type":"number"},"rate":{"type":"number"}}}}}},"400":{"description":"Invalid from, to, amount, unit, karat or date.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"403":{"description":"The date is further back than the plan's history allows.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"404":{"description":"No price or rate on or before the date.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"from","in":"query","required":true,"schema":{"description":"A metal symbol (XAU), a currency (EUR) or a unit (g).","examples":["XAU"],"type":"string"}},{"name":"to","in":"query","required":true,"schema":{"description":"A metal symbol, a currency or a unit.","examples":["EUR"],"type":"string"}},{"name":"amount","in":"query","required":false,"schema":{"description":"Quantity of `from`. Default 1.","examples":["10"],"type":"string"}},{"name":"unit","in":"query","required":false,"schema":{"description":"For a metal: the unit its quantity is in (toz, g, kg, lb, mt, tola). Default: the metal's own unit.","examples":["g"],"type":"string"}},{"name":"karat","in":"query","required":false,"schema":{"description":"For gold to or from a currency: karat purity (karat/24).","examples":["22"],"type":"string"}},{"name":"date","in":"query","required":false,"schema":{"description":"YYYY-MM-DD: convert at that day's closing price and ECB rate instead of live. Counts as history for plan limits.","examples":["2025-01-15"],"type":"string"}}],"operationId":"getV1Convert"}},"/v1/bulk/history":{"get":{"summary":"Bulk daily history download","description":"Every daily bar for the requested metals, back to the start of each series (October 1966 for gold and silver), as one CSV file with columns symbol, date, open, high, low, close, volume, currency, unit. `currency` and `unit` convert as on /v1/history (FX history starts 1999-01-04, so a converted file starts there). For an initial load or a nightly sync. Requires the Ultimate plan.","tags":["History"],"responses":{"200":{"description":"CSV file.","content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Unknown symbol, currency or unit.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"403":{"description":"Requires the Ultimate plan.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbols","in":"query","required":false,"schema":{"description":"Comma-separated metal codes. Default: all of XAU, XAG, XPT, XPD, HG, ALI, NI, ZN, PB, JBP, CO, LC, UXA.","examples":["XAU,XAG"],"type":"string"}},{"name":"currency","in":"query","required":false,"schema":{"description":"ISO 4217 code to quote in. Default USD. One of: USD, EUR, GBP, JPY, CHF, AUD, CAD, CNY, INR, SGD, HKD, NZD, SEK, NOK, DKK, MXN, BRL, ZAR, TRY, PLN, CZK, HUF, RON, ISK, ILS, KRW, IDR, MYR, PHP, THB, AED, SAR.","examples":["EUR"],"type":"string"}},{"name":"unit","in":"query","required":false,"schema":{"description":"Mass unit to quote per: toz, g, kg, lb, mt, tola (toz is the troy ounce; oz is accepted as an alias). Default: the market's own unit.","examples":["g"],"type":"string"}}],"operationId":"getV1BulkHistory"}},"/v1/health/":{"get":{"summary":"Service health check","description":"Service health and database connectivity. Free on every plan and weight 0, so a monitor can poll it without consuming quota.","tags":["Markets"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}}}}}}},"operationId":"getV1Health"}},"/v1/shanghai/":{"get":{"summary":"Latest Shanghai prices and premiums","description":"Latest Shanghai Gold Exchange spot prices and premium to Western pricing. `price` is USD per troy ounce, `priceCNY` is in the exchange's native unit (CNY/kg for silver, CNY/g for gold), and `exchangeRate` is USD/CNY. Shanghai silver prices (SGE and SHFE) include China's VAT and are returned as quoted; `priceExVat`, `priceCNYExVat` and `premiumPercentExVat` strip it at `vatRate`, and `vatInclusive` says whether a price carries VAT. Gold carries none, so its ex-VAT fields equal the raw ones.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"XAU":{"type":"object","properties":{"symbol":{"type":"string"},"exchange":{"type":"string"},"marketType":{"type":"string"},"price":{"type":"number"},"priceCNY":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"exchangeRate":{"type":"number"},"source":{"type":"string"},"vatInclusive":{"type":"boolean"},"vatRate":{"type":"number"},"priceExVat":{"type":"number"},"priceCNYExVat":{"type":"number"},"premiumPercent":{"type":"number"},"premiumPercentExVat":{"type":"number"}}},"XAG":{"type":"object","properties":{"symbol":{"type":"string"},"exchange":{"type":"string"},"marketType":{"type":"string"},"price":{"type":"number"},"priceCNY":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"exchangeRate":{"type":"number"},"source":{"type":"string"},"vatInclusive":{"type":"boolean"},"vatRate":{"type":"number"},"priceExVat":{"type":"number"},"priceCNYExVat":{"type":"number"},"premiumPercent":{"type":"number"},"premiumPercentExVat":{"type":"number"}}}}},"count":{"type":"number"},"source":{"type":"string"},"series":{"type":"string"},"cacheAge":{"type":"number"},"isStale":{"type":"boolean"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbols","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"series","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Shanghai"}},"/v1/shanghai/history":{"get":{"summary":"Shanghai silver premium history","description":"Historical Shanghai silver premium series versus Western pricing. `shanghai` and `premiumPercent` use the SGE silver price as quoted, which includes China's VAT; `shanghaiExVat` and `premiumPercentExVat` strip it at the rate in force on each date (13% since 2019-04-01, 16% from 2018-05-01, 17% before). Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"premium":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiumPercent":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiumPercentExVat":{"anyOf":[{"type":"number"},{"type":"null"}]},"shanghai":{"type":"number"},"shanghaiExVat":{"type":"number"},"western":{"anyOf":[{"type":"number"},{"type":"null"}]}}}},"vatInclusive":{"type":"boolean"},"count":{"type":"number"},"source":{"type":"string"},"series":{"type":"string"},"range":{"type":"object","properties":{"minDate":{"format":"date","type":"string"},"maxDate":{"format":"date","type":"string"},"totalRecords":{"type":"number"}}},"requestedRange":{"type":"object","properties":{"start":{"format":"date","type":"string"},"end":{"format":"date","type":"string"}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"series","in":"query","required":false,"schema":{"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1ShanghaiHistory"}},"/v1/shanghai/gold/history":{"get":{"summary":"Shanghai gold price history","description":"Historical Shanghai gold price series. Gold carries no VAT, so `shanghaiExVat` and `premiumPercentExVat` equal the raw values. Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"premium":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiumPercent":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiumPercentExVat":{"anyOf":[{"type":"number"},{"type":"null"}]},"shanghai":{"type":"number"},"shanghaiExVat":{"type":"number"},"western":{"anyOf":[{"type":"number"},{"type":"null"}]}}}},"vatInclusive":{"type":"boolean"},"count":{"type":"number"},"source":{"type":"string"},"series":{"type":"string"},"range":{"type":"object","properties":{"minDate":{"format":"date","type":"string"},"maxDate":{"format":"date","type":"string"},"totalRecords":{"type":"number"}}},"requestedRange":{"type":"object","properties":{"start":{"format":"date","type":"string"},"end":{"format":"date","type":"string"}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"series","in":"query","required":false,"schema":{"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1ShanghaiGoldHistory"}},"/v1/india/ibja":{"get":{"summary":"IBJA gold rate","description":"The India Bullion and Jewellers Association benchmark gold rate for 999 fine gold, in rupees per gram, one value per day. Requires the Pro plan or higher; depth follows the plan's history limit.","tags":["Regional"],"responses":{"200":{"description":"Daily rates, oldest first.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","required":["date","price"],"properties":{"date":{"type":"string"},"price":{"type":"number"}}}}}}}}},"400":{"description":"Invalid range.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"403":{"description":"Requires Pro, or the window exceeds the plan's history.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 2Y, 5Y, ALL. Default 1M.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"description":"latest: the newest rate only.","examples":["latest"],"type":"string"}}],"operationId":"getV1IndiaIbja"}},"/v1/india/":{"get":{"summary":"Latest India MCX prices and premiums","description":"Latest MCX India spot prices and premium to Western pricing.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"XAU":{"type":"object","properties":{"symbol":{"type":"string"},"indiaSymbol":{"type":"string"},"price":{"type":"number"},"priceRaw":{"type":"number"},"unit":{"type":"string"},"unitRaw":{"type":"string"},"premium":{"type":"number"},"premiumPercent":{"type":"number"},"source":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}}},"XAG":{"type":"object","properties":{"symbol":{"type":"string"},"indiaSymbol":{"type":"string"},"price":{"type":"number"},"priceRaw":{"type":"number"},"unit":{"type":"string"},"unitRaw":{"type":"string"},"premium":{"type":"number"},"premiumPercent":{"type":"number"},"source":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}}}}},"futures":{"type":"object","properties":{"symbol":{"type":"string"},"price":{"type":"number"},"priceINR":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"source":{"type":"string"}}},"futuresMap":{"type":"object","properties":{"XAU":{"type":"object","properties":{"symbol":{"type":"string"},"price":{"type":"number"},"priceINR":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"source":{"type":"string"}}},"XAG":{"type":"object","properties":{"symbol":{"type":"string"},"price":{"type":"number"},"priceINR":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"source":{"type":"string"}}}}},"count":{"type":"number"},"source":{"type":"string"},"cacheAge":{"type":"number"},"isStale":{"type":"boolean"},"lastUpdated":{"format":"date-time","type":"string"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbols","in":"query","required":false,"schema":{"type":"string"}},{"name":"fresh","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1India"}},"/v1/india/history":{"get":{"summary":"India MCX premium history","description":"Historical MCX India premium series versus Western pricing. Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"india":{"anyOf":[{"type":"number"},{"type":"null"}]},"indiaINR":{"anyOf":[{"type":"number"},{"type":"null"}]},"premium":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiumPercent":{"anyOf":[{"type":"number"},{"type":"null"}]},"western":{"anyOf":[{"type":"number"},{"type":"null"}]}}}},"count":{"type":"number"},"symbol":{"type":"string"},"range":{"type":"object","properties":{"minDate":{"format":"date","type":"string"},"maxDate":{"format":"date","type":"string"},"totalRecords":{"type":"number"}}},"requestedRange":{"type":"object","properties":{"start":{"anyOf":[{},{"type":"null"}]},"end":{"format":"date","type":"string"}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"symbol","in":"query","required":false,"schema":{"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1IndiaHistory"}},"/v1/shfe/settlement":{"get":{"summary":"SHFE settlement prices","description":"Shanghai Futures Exchange settlement price history for a metal. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. cu, al, zn, pb, ni, sn, au or ag.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1ShfeSettlement"}},"/v1/shfe/inventory":{"get":{"summary":"SHFE warehouse inventory","description":"Shanghai Futures Exchange warehouse inventory history for a metal. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. cu, al, zn, pb, ni, sn, au or ag.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1ShfeInventory"}},"/v1/comex/inventory":{"get":{"summary":"COMEX warehouse inventory","description":"COMEX warehouse inventory history for a metal symbol: exchange-wide registered, eligible and total per day. type=latest returns the newest day with the previous day's figures; type=depositories returns the newest day per depository, with that day's received, withdrawn and adjustment figures. For per-depository history use /v1/comex/depositories. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"eligible":{"anyOf":[{"type":"number"},{"type":"null"}]},"registered":{"anyOf":[{"type":"number"},{"type":"null"}]},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. Metal symbol: XAU, XAG, HG, XPT, XPD, ALI, ZN or PB (availability varies by endpoint).","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1ComexInventory"}},"/v1/comex/depositories":{"get":{"summary":"COMEX stocks and flows by depository","description":"Daily COMEX warehouse stocks and flows per depository, laid out like CME's metal depository statistics report: for registered, eligible and total metal, the previous stock, received, withdrawn, net change, adjustment and today's stock. Rows are per report date, with activityDate giving the business day the movements happened. Received, withdrawn and adjustment are null on report dates before flowsAvailableFrom; stocks go back to February 2026 for most metals. Use /v1/comex/inventory for the exchange-wide totals, which go back to 1992 for gold and silver. Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","symbol","end","stale","count","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"unit":{"anyOf":[{"description":"troy_ounces, short_tons or metric_tons.","type":"string"},{"type":"null"}]},"range":{"anyOf":[{"type":"string"},{"type":"null"}]},"start":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}]},"end":{"format":"date","type":"string"},"flowsAvailableFrom":{"anyOf":[{"format":"date","description":"First report date with received, withdrawn and adjustment figures for this symbol.","type":"string"},{"type":"null"}]},"asOf":{"anyOf":[{"format":"date","type":"string"},{"type":"null"}]},"ageDays":{"anyOf":[{"type":"number"},{"type":"null"}]},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","required":["date","depository","registered","eligible","total"],"properties":{"date":{"format":"date","description":"CME report date.","type":"string"},"activityDate":{"anyOf":[{"format":"date","description":"Business day the movements happened on; CME reports them the next business day.","type":"string"},{"type":"null"}]},"depository":{"type":"string"},"registered":{"type":"object","properties":{"previous":{"anyOf":[{"description":"PREV TOTAL: stock at the previous report.","type":"number"},{"type":"null"}]},"received":{"anyOf":[{"description":"RECEIVED: metal delivered into the depository.","type":"number"},{"type":"null"}]},"withdrawn":{"anyOf":[{"description":"WITHDRAWN: metal taken out of the depository.","type":"number"},{"type":"null"}]},"netChange":{"anyOf":[{"description":"NET CHANGE: received minus withdrawn.","type":"number"},{"type":"null"}]},"adjustment":{"anyOf":[{"description":"ADJUSTMENT: mostly transfers between registered and eligible.","type":"number"},{"type":"null"}]},"today":{"anyOf":[{"description":"TOTAL TODAY: stock after the day's activity.","type":"number"},{"type":"null"}]}}},"eligible":{"type":"object","properties":{"previous":{"anyOf":[{"description":"PREV TOTAL: stock at the previous report.","type":"number"},{"type":"null"}]},"received":{"anyOf":[{"description":"RECEIVED: metal delivered into the depository.","type":"number"},{"type":"null"}]},"withdrawn":{"anyOf":[{"description":"WITHDRAWN: metal taken out of the depository.","type":"number"},{"type":"null"}]},"netChange":{"anyOf":[{"description":"NET CHANGE: received minus withdrawn.","type":"number"},{"type":"null"}]},"adjustment":{"anyOf":[{"description":"ADJUSTMENT: mostly transfers between registered and eligible.","type":"number"},{"type":"null"}]},"today":{"anyOf":[{"description":"TOTAL TODAY: stock after the day's activity.","type":"number"},{"type":"null"}]}}},"total":{"type":"object","properties":{"previous":{"anyOf":[{"description":"PREV TOTAL: stock at the previous report.","type":"number"},{"type":"null"}]},"received":{"anyOf":[{"description":"RECEIVED: metal delivered into the depository.","type":"number"},{"type":"null"}]},"withdrawn":{"anyOf":[{"description":"WITHDRAWN: metal taken out of the depository.","type":"number"},{"type":"null"}]},"netChange":{"anyOf":[{"description":"NET CHANGE: received minus withdrawn.","type":"number"},{"type":"null"}]},"adjustment":{"anyOf":[{"description":"ADJUSTMENT: mostly transfers between registered and eligible.","type":"number"},{"type":"null"}]},"today":{"anyOf":[{"description":"TOTAL TODAY: stock after the day's activity.","type":"number"},{"type":"null"}]}}}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. Metal symbol: XAU, XAG, HG, XPT, XPD, ALI, ZN or PB.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to 1M. ALL returns the whole series, and MAX is accepted as a synonym for it. Ignored when start or end is given.","type":"string"}},{"name":"start","in":"query","required":false,"schema":{"description":"First report date, YYYY-MM-DD.","type":"string"}},{"name":"end","in":"query","required":false,"schema":{"description":"Last report date, YYYY-MM-DD. Defaults to today.","type":"string"}},{"name":"depository","in":"query","required":false,"schema":{"description":"Case-insensitive part of a depository name, e.g. jp morgan, brink or hsbc.","type":"string"}}],"operationId":"getV1ComexDepositories"}},"/v1/comex/volume-oi":{"get":{"summary":"COMEX volume and open interest","description":"COMEX volume and open interest for a metal symbol. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"data":{"type":"object","properties":{"date":{"format":"date","type":"string"},"openInterest":{"type":"number"},"volume":{"type":"number"}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. Metal symbol: XAU, XAG, HG, XPT, XPD, ALI, ZN or PB (availability varies by endpoint).","type":"string"}}],"operationId":"getV1ComexVolume-oi"}},"/v1/comex/delivery-notices":{"get":{"summary":"COMEX delivery notices","description":"COMEX delivery notice history for a metal symbol. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"dailyIssued":{"type":"number"},"dailyStopped":{"type":"number"},"date":{"format":"date","type":"string"},"exchange":{"type":"string"},"mtdCumulative":{"anyOf":[{"type":"number"},{"type":"null"}]},"settlementPrice":{"anyOf":[{},{"type":"null"}]},"symbol":{"type":"string"},"ytdCumulative":{"anyOf":[{"type":"number"},{"type":"null"}]}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. Metal symbol: XAU, XAG, HG, XPT, XPD, ALI, ZN or PB (availability varies by endpoint).","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"year","in":"query","required":false,"schema":{"type":"string"}},{"name":"date","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1ComexDelivery-notices"}},"/v1/sge/trading":{"get":{"summary":"SGE contract trading history","description":"Shanghai Gold Exchange contract trading history. Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"contract":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"contract","in":"query","required":true,"schema":{"description":"Required. Au99.99, Au99.95, Au(T+D), mAu(T+D), Ag(T+D) or Ag99.99.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to ALL. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1SgeTrading"}},"/v1/sge/benchmark":{"get":{"summary":"SGE gold and silver benchmark fixings","description":"Shanghai Gold Exchange AM and PM benchmark fixings for gold or silver, one row per trading day dated in Shanghai time. Gold is in CNY per gram, silver in CNY per kilogram. New fixings are fetched on weekdays at 03:00 and 07:00 UTC, shortly after each auction. Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"metal":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"amPrice":{"type":"number"},"date":{"format":"date","type":"string"},"pmPrice":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"metal","in":"query","required":true,"schema":{"description":"Required. gold or silver.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1Y, 2Y, 5Y or ALL. Defaults to ALL. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1SgeBenchmark"}},"/v1/sge/inventory":{"get":{"summary":"SGE vault inventory","description":"Shanghai Gold Exchange vault inventory history. Every response carries asOf, ageDays and a stale flag, so you can tell current inventory from an archived series without inspecting the array. Coverage is uneven and worth knowing before you build on it: silver vault stock updates normally, but the exchange feed has only ever produced ten gold vault-stock observations and the most recent is from January 2016, so metal=gold returns an archive rather than a current series. Requires the Pro plan or higher.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"metal":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"metal","in":"query","required":true,"schema":{"description":"Required. gold or silver.","examples":["silver"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1Y, 2Y, 5Y or ALL. Defaults to ALL. ALL returns the whole series, and MAX is accepted as a synonym for it.","examples":["1Y"],"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"examples":["latest"],"type":"string"}}],"operationId":"getV1SgeInventory"}},"/v1/gfex/settlement":{"get":{"summary":"GFEX platinum and palladium settlement prices","description":"GFEX settlement price history for platinum or palladium. Requires the Ultimate plan.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. pt or pd.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y or ALL. Defaults to ALL. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1GfexSettlement"}},"/v1/gfex/premium":{"get":{"summary":"GFEX premium over Western prices","description":"GFEX platinum and palladium premium history versus Western pricing. Requires the Ultimate plan.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"gfex":{"type":"number"},"premium":{"anyOf":[{"type":"number"},{"type":"null"}]},"premiumPercent":{"anyOf":[{"type":"number"},{"type":"null"}]},"western":{"anyOf":[{"type":"number"},{"type":"null"}]}}}},"count":{"type":"number"},"symbol":{"type":"string"},"cnyRate":{"type":"number"},"requestedRange":{"type":"object","properties":{"start":{"format":"date","type":"string"},"end":{"format":"date","type":"string"}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}},"503":{"description":"No USD/CNY rate stored to convert GFEX prices with.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":false,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}}],"operationId":"getV1GfexPremium"}},"/v1/gfex/receipts":{"get":{"summary":"GFEX warehouse receipts","description":"GFEX registered warehouse receipts, per warehouse and per day. Covers lithium carbonate (LC), industrial silicon (SI) and polysilicon (PS), which is Chinese battery and solar supply-chain inventory published only in Chinese, plus platinum (XPT) and palladium (XPD). The default response is the per-warehouse breakdown for the most recent date, or an explicit date. Pass type=totals for the exchange-wide daily series instead. Warehouse names are the exchange's own and are passed through unaltered, because they are identifiers you match against exchange notices. Requires the Ultimate plan.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"asOf":{"format":"date","type":"string"},"total":{"type":"number"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"cancelled":{"type":"number"},"change":{"type":"number"},"date":{"format":"date","type":"string"},"quantity":{"type":"number"},"registered":{"type":"number"},"warehouse":{"type":"string"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"description":"Required. LC, SI, PS, XPT or XPD.","examples":["LC"],"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"examples":["totals"],"type":"string"}},{"name":"date","in":"query","required":false,"schema":{"examples":["2026-09-17"],"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"examples":["2026-01-01"],"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"examples":["2026-09-17"],"type":"string"}}],"operationId":"getV1GfexReceipts"}},"/v1/gfex/receipts/coverage":{"get":{"summary":"GFEX warehouse receipts coverage","description":"Which symbols the GFEX receipts dataset covers, how many warehouses each spans, and the date range held. Requires the Ultimate plan.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"from":{"format":"date","type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"to":{"format":"date","type":"string"},"warehouses":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"operationId":"getV1GfexReceiptsCoverage"}},"/v1/lbma/vault":{"get":{"summary":"LBMA vault holdings","description":"LBMA vault holdings history for gold or silver. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"metal":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"total":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"metal","in":"query","required":true,"schema":{"description":"Required. gold or silver.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1Y, 2Y, 5Y or ALL. Defaults to ALL. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1LbmaVault"}},"/v1/lbma/clearing":{"get":{"summary":"LBMA clearing statistics","description":"LBMA clearing statistics for gold or silver. Requires the Pro plan or higher. Every response carries asOf, ageDays and a stale flag, so you can tell a current series from one that has stopped updating without inspecting the array.","tags":["Regional"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"metal":{"type":"string"},"range":{"type":"string"},"asOf":{"format":"date","type":"string"},"ageDays":{"type":"number"},"stale":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"date":{"format":"date","type":"string"},"transfers":{"type":"number"},"value":{"type":"number"},"volume":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"metal","in":"query","required":true,"schema":{"description":"Required. gold or silver.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1Y, 2Y, 5Y or ALL. Defaults to ALL. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1LbmaClearing"}},"/v1/news/":{"get":{"summary":"Latest market news","description":"Latest market news articles.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"articles":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"description":{"type":"string"},"entities":{"type":"object","properties":{"locations":{"type":"array","items":{"type":"string"}},"orgs":{"type":"array","items":{"type":"string"}},"people":{"type":"array","items":{"type":"string"}}}},"id":{"type":"string"},"imageUrl":{"type":"string"},"keyTopics":{"type":"array","items":{"type":"string"}},"marketImpact":{"type":"string"},"publishedAt":{"format":"date-time","type":"string"},"relevanceScore":{"type":"number"},"sentiment":{"type":"string"},"sentimentScore":{"type":"number"},"source":{"type":"string"},"subcategory":{"type":"string"},"symbols":{"type":"array","items":{"type":"string"}},"tickers":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"url":{"type":"string"}}}},"count":{"type":"number"},"source":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"operationId":"getV1News"}},"/v1/news/feed":{"get":{"summary":"Paginated news feed","description":"Paginated market news feed.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"articles":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"description":{"type":"string"},"entities":{"type":"object","properties":{"locations":{"type":"array","items":{"type":"string"}},"orgs":{"type":"array","items":{"type":"string"}},"people":{"type":"array","items":{"type":"string"}}}},"id":{"type":"string"},"imageUrl":{"type":"string"},"keyTopics":{"type":"array","items":{"type":"string"}},"marketImpact":{"type":"string"},"publishedAt":{"format":"date-time","type":"string"},"relevanceScore":{"type":"number"},"sentiment":{"type":"string"},"sentimentScore":{"type":"number"},"source":{"type":"string"},"subcategory":{"type":"string"},"symbols":{"type":"array","items":{"type":"string"}},"tickers":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"url":{"type":"string"}}}},"grouped":{"type":"object","properties":{"Today":{"type":"array","items":{"type":"string"}}}},"count":{"type":"number"},"total":{"type":"number"},"hasMore":{"type":"boolean"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"symbols","in":"query","required":false,"schema":{"type":"string"}},{"name":"sources","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"schema":{"type":"string"}},{"name":"since","in":"query","required":false,"schema":{"type":"string"}},{"name":"timePeriod","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"impact","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceTypes","in":"query","required":false,"schema":{"type":"string"}},{"name":"excludeSourceTypes","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1NewsFeed"}},"/v1/news/search":{"get":{"summary":"Search news articles","description":"Search news articles by keyword. Costs 3 weight per request.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"article":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"url":{"type":"string"},"source":{"type":"string"},"publishedAt":{"format":"date-time","type":"string"},"imageUrl":{"type":"string"},"sentiment":{"type":"string"},"symbols":{"type":"array","items":{}},"category":{"type":"string"},"sentimentScore":{"type":"number"},"relevanceScore":{"type":"number"},"marketImpact":{"type":"string"},"keyTopics":{"type":"array","items":{"type":"string"}},"subcategory":{"type":"string"},"entities":{"type":"object","properties":{"orgs":{"type":"array","items":{"type":"string"}},"people":{"type":"array","items":{}},"locations":{"type":"array","items":{}}}},"tickers":{"type":"array","items":{"type":"string"}}}},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1NewsSearch"}},"/v1/news/filters":{"get":{"summary":"News filter values with counts","description":"Every filter value available on the news endpoints, with a count per value: sources, categories and symbols. Call this to build a filter UI rather than hard-coding the options.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"filters":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"label":{"type":"string"},"value":{"type":"string"}}}},"categories":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"label":{"type":"string"},"value":{"type":"string"}}}},"symbols":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"label":{"type":"string"},"value":{"type":"string"}}}},"sourceTypes":{"type":"array","items":{}}}},"totalArticles":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"operationId":"getV1NewsFilters"}},"/v1/news/categories":{"get":{"summary":"News categories","description":"The distinct news categories currently in use, for populating a category filter.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"categories":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number"},"icon":{"type":"string"},"id":{"type":"string"},"label":{"type":"string"}}}},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"operationId":"getV1NewsCategories"}},"/v1/news/sentiment/candles/{symbol}":{"get":{"summary":"News sentiment candles for a metal","description":"News sentiment aggregated into OHLC-style candles, so sentiment can be charted alongside price. Requires the Ultimate plan.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"interval":{"type":"string"},"range":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"avgConfidence":{"type":"number"},"avgScore":{"type":"number"},"bearishCount":{"type":"number"},"bullishCount":{"type":"number"},"close":{"type":"number"},"high":{"type":"number"},"low":{"type":"number"},"neutralCount":{"type":"number"},"open":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"volume":{"type":"number"}}}},"count":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["XAU"],"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1NewsSentimentCandlesBySymbol"}},"/v1/news/sentiment/{symbol}":{"get":{"summary":"News sentiment for a metal","description":"AI-scored news sentiment for one metal, aggregated across articles. Requires the Ultimate plan.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"sentiments":{"type":"array","items":{"type":"object","properties":{"articleId":{"type":"string"},"articleTitle":{"type":"string"},"assetClass":{"type":"string"},"confidence":{"type":"number"},"impact":{"type":"string"},"publishedAt":{"format":"date-time","type":"string"},"reasoning":{"type":"string"},"relationship":{"type":"string"},"score":{"type":"number"},"sentiment":{"type":"string"},"symbol":{"type":"string"}}}},"count":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["XAU"],"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1NewsSentimentBySymbol"}},"/v1/news/{symbol}":{"get":{"summary":"Latest news for a symbol","description":"Latest news articles filtered to a specific asset symbol.","tags":["News"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"articles":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"description":{"type":"string"},"entities":{"type":"object","properties":{"locations":{"type":"array","items":{"type":"string"}},"orgs":{"type":"array","items":{"type":"string"}},"people":{"type":"array","items":{"type":"string"}}}},"id":{"type":"string"},"imageUrl":{"type":"string"},"keyTopics":{"type":"array","items":{"type":"string"}},"marketImpact":{"type":"string"},"publishedAt":{"format":"date-time","type":"string"},"relevanceScore":{"type":"number"},"sentiment":{"type":"string"},"sentimentScore":{"type":"number"},"source":{"type":"string"},"subcategory":{"type":"string"},"symbols":{"type":"array","items":{"type":"string"}},"tickers":{"type":"array","items":{"type":"string"}},"title":{"type":"string"},"url":{"type":"string"}}}},"count":{"type":"number"},"source":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["XAU"],"type":"string"}},{"name":"includeTwitter","in":"query","required":false,"schema":{"type":"string"}},{"name":"sourceTypes","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1NewsBySymbol"}},"/v1/commodities/":{"get":{"summary":"Latest commodity prices","description":"Latest prices for energy, agriculture, and industrial commodities. Symbols are contract codes such as CL1 (crude), CO1 (Brent), W_1 (wheat) and KC1 (coffee); call this endpoint to list them all. Requires the Basic plan or higher.","tags":["Commodities"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"change24h":{"type":"number"},"change7d":{"type":"number"},"high24h":{"type":"number"},"low24h":{"type":"number"},"name":{"type":"string"},"price":{"type":"number"},"symbol":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"}}}},"sparklines":{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"type":"number"}}}}}},"cacheAge":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Commodities"}},"/v1/commodities/{symbol}/history":{"get":{"summary":"Price history for a commodity","description":"Historical price series for a single commodity. Requires the Basic plan or higher.","tags":["Commodities"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}},"symbol":{"type":"string"},"range":{"type":"string"},"interval":{"type":"string"},"count":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["CL1"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1CommoditiesBySymbolHistory"}},"/v1/crypto/":{"get":{"summary":"Latest cryptocurrency prices","description":"Latest cryptocurrency prices. Requires the Basic plan or higher.","tags":["Crypto"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"change24h":{"type":"number"},"change7d":{"anyOf":[{"type":"number"},{"type":"null"}]},"high24h":{"type":"number"},"low24h":{"type":"number"},"marketCap":{"type":"number"},"name":{"type":"string"},"price":{"type":"number"},"symbol":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"},"volume24h":{"type":"number"}}}},"sparklines":{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"type":"number"}}}}}},"cacheAge":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Crypto"}},"/v1/crypto/{symbol}/history":{"get":{"summary":"Price history for a cryptocurrency","description":"Historical price series for a single cryptocurrency. Requires the Basic plan or higher.","tags":["Crypto"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}},"symbol":{"type":"string"},"range":{"type":"string"},"interval":{"type":"string"},"count":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["BTC"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1CryptoBySymbolHistory"}},"/v1/etfs/":{"get":{"summary":"Latest ETF prices","description":"Latest prices for tracked ETFs such as GLD and SLV. Requires the Basic plan or higher.","tags":["ETFs"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"aum":{"type":"number"},"change24h":{"type":"number"},"change7d":{"type":"number"},"high24h":{"type":"number"},"low24h":{"type":"number"},"marketCap":{"anyOf":[{},{"type":"null"}]},"name":{"type":"string"},"price":{"type":"number"},"provider":{"type":"string"},"symbol":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"},"volume24h":{"type":"number"}}}},"sparklines":{"type":"object","properties":{"DBC":{"type":"array","items":{"type":"number"}},"GLD":{"type":"array","items":{"type":"number"}},"IAU":{"type":"array","items":{"type":"number"}},"PALL":{"type":"array","items":{"type":"number"}},"PDBC":{"type":"array","items":{"type":"number"}},"PPLT":{"type":"array","items":{"type":"number"}},"SLV":{"type":"array","items":{"type":"number"}}}}}},"cacheAge":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Etfs"}},"/v1/etfs/{symbol}/history":{"get":{"summary":"Price history for an ETF","description":"Historical price series for a single ETF. Requires the Basic plan or higher.","tags":["ETFs"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}},"symbol":{"type":"string"},"range":{"type":"string"},"interval":{"type":"string"},"count":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["GLD"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1EtfsBySymbolHistory"}},"/v1/markets/":{"get":{"summary":"Latest 24/7 market prices","description":"Latest prices for 24/7 markets.","tags":["Markets"],"responses":{"200":{"description":"Every 24/7 market instrument with its latest price.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"type":"object","required":["symbol","name","price"],"properties":{"symbol":{"examples":["GOLD"],"type":"string"},"name":{"type":"string"},"price":{"type":"number"},"assetClass":{"anyOf":[{"examples":["commodity"],"type":"string"},{"type":"null"}]},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}]},"change24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"change7d":{"anyOf":[{"type":"number"},{"type":"null"}]},"high24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"low24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"volume24h":{"anyOf":[{"type":"number"},{"type":"null"}]},"updatedAt":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]}}}},"sparklines":{"type":"object","patternProperties":{"^(.*)$":{"type":"array","items":{"type":"number"}}}}}},"cacheAge":{"anyOf":[{"type":"number"},{"type":"null"}]},"timestamp":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}]}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Markets"}},"/v1/markets/{symbol}/history":{"get":{"summary":"Price history for a 24/7 market","description":"Historical series for a single 24/7 market. These symbols are plain names such as GOLD, SILVER, BTC and AAPL, unlike /v1/history which uses metal codes like XAU.","tags":["Markets"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}},"symbol":{"type":"string"},"range":{"type":"string"},"interval":{"type":"string"},"count":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["GOLD"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1MarketsBySymbolHistory"}},"/v1/indices/":{"get":{"summary":"Latest market index values","description":"Latest values for market indices: DXY, SPX and DJI. DXY is a US dollar index computed by MetalCharts from daily reference exchange rates with the standard six-currency weights, updated once a day. Requires the Basic plan or higher.","tags":["Markets"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"DJI":{"type":"object","properties":{"symbol":{"type":"string"},"exchange":{"type":"string"},"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"source":{"type":"string"}}},"DXY":{"type":"object","properties":{"symbol":{"type":"string"},"exchange":{"type":"string"},"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"source":{"type":"string"}}},"SPX":{"type":"object","properties":{"symbol":{"type":"string"},"exchange":{"type":"string"},"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"},"source":{"type":"string"}}}}},"count":{"type":"number"},"source":{"type":"string"},"cacheAge":{"type":"number"},"isStale":{"type":"boolean"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbols","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Indices"}},"/v1/indices/history/{symbol}":{"get":{"summary":"History for a market index","description":"Historical series for a single market index. DXY is computed by MetalCharts from daily reference exchange rates with the standard six-currency weights: daily only, from January 1999. Requires the Basic plan or higher.","tags":["Markets"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"price":{"type":"number"},"timestamp":{"format":"date-time","type":"string"}}}},"symbol":{"type":"string"},"interval":{"type":"string"},"range":{"anyOf":[{},{"type":"null"}]},"count":{"type":"number"},"source":{"type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["DXY"],"type":"string"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1IndicesHistoryBySymbol"}},"/v1/cot/":{"get":{"summary":"Commitments of Traders positioning","description":"COT (Commitments of Traders) positioning history for a metal. Requires the Pro plan or higher.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"metal":{"type":"string"},"range":{"type":"string"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"cftcContractCode":{"type":"string"},"marketName":{"type":"string"},"metal":{"type":"string"},"mmLong":{"type":"number"},"mmNet":{"type":"number"},"mmShort":{"type":"number"},"mmSpreading":{"type":"number"},"nrLong":{"type":"number"},"nrNet":{"type":"number"},"nrShort":{"type":"number"},"openInterest":{"type":"number"},"orLong":{"type":"number"},"orNet":{"type":"number"},"orShort":{"type":"number"},"orSpreading":{"type":"number"},"pmLong":{"type":"number"},"pmNet":{"type":"number"},"pmShort":{"type":"number"},"reportDate":{"format":"date","type":"string"},"sdLong":{"type":"number"},"sdNet":{"type":"number"},"sdShort":{"type":"number"},"sdSpreading":{"type":"number"}}}},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"metal","in":"query","required":true,"schema":{"description":"Required. XAU, XAG, HG, XPT or XPD.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, YTD, 1Y, 5Y, 10Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}}],"operationId":"getV1Cot"}},"/v1/supply/":{"get":{"summary":"Visible supply and inventory","description":"Visible supply and inventory history for a metal. Requires the Ultimate plan.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"metal":{"type":"string"},"range":{"type":"string"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"comexEligible":{"anyOf":[{"type":"number"},{"type":"null"}]},"comexRegistered":{"anyOf":[{"type":"number"},{"type":"null"}]},"comexTotal":{"type":"number"},"date":{"format":"date","type":"string"},"lbmaTotal":{"type":"number"},"metal":{"type":"string"},"sgeTotal":{"anyOf":[{},{"type":"null"}]},"shfeTotal":{"anyOf":[{"type":"number"},{"type":"null"}]},"totalOz":{"type":"number"}}}},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string"}},{"name":"metal","in":"query","required":true,"schema":{"description":"Required. XAU or XAG.","type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1M, 3M, 6M, 1Y, 5Y or ALL. Defaults to 1Y. ALL returns the whole series, and MAX is accepted as a synonym for it.","type":"string"}}],"operationId":"getV1Supply"}},"/v1/ath/{symbol}":{"get":{"summary":"All-time high for a metal","description":"All time high price and the date it was recorded. Symbols are metal codes such as XAU, XAG, XPT, XPD and HG, not names like GOLD.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"symbol":{"type":"string"},"price":{"type":"number"},"recordedAt":{"format":"date-time","type":"string"}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["XAU"],"type":"string"}}],"operationId":"getV1AthBySymbol"}},"/v1/economic-calendar/":{"get":{"summary":"Economic calendar events","description":"Upcoming and recent macroeconomic calendar events. Requires the Pro plan or higher.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"actual":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"eventDate":{"format":"date-time","type":"string"},"eventName":{"type":"string"},"forecast":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string"},"impact":{"type":"string"},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"}}}},"count":{"type":"number"},"source":{"type":"string"},"timestamp":{"format":"date-time","type":"string"}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"country","in":"query","required":false,"schema":{"type":"string"}},{"name":"impact","in":"query","required":false,"schema":{"type":"string"}},{"name":"days","in":"query","required":false,"schema":{"type":"string"}}],"operationId":"getV1Economic-calendar"}},"/v1/instruments/":{"get":{"summary":"List tracked instruments","description":"Every instrument the platform tracks, with the exchange and asset class it belongs to. Use this to discover the symbol a given endpoint expects: symbol spaces differ per route, so gold is XAU on /v1/history but GOLD on /v1/markets, and commodities are contract codes such as CL1. Filter with asset_class (commodity, crypto, equity, etf, fx, index, bond), exchange, or a case-insensitive search across symbol and name. Available on every plan including Free.","tags":["Markets"],"responses":{"200":{"description":"The instrument catalogue.","content":{"application/json":{"schema":{"type":"object","required":["success","count","data"],"properties":{"success":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","required":["symbol","name"],"properties":{"symbol":{"examples":["XAU"],"type":"string"},"name":{"type":"string"},"assetClass":{"anyOf":[{"description":"commodity, crypto, equity, etf, fx, index or bond.","type":"string"},{"type":"null"}]},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}]},"marketType":{"anyOf":[{"type":"string"},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"asset_class","in":"query","required":false,"schema":{"examples":["commodity"],"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"examples":["COMEX"],"type":"string"}},{"name":"search","in":"query","required":false,"schema":{"examples":["gold"],"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"examples":["100"],"type":"string"}}],"operationId":"getV1Instruments"}},"/v1/instruments/summary":{"get":{"summary":"Instrument counts by asset class","description":"Instrument counts per asset class, with the exchanges each covers. A cheap way to see the shape of the catalogue before paging through it. Available on every plan including Free.","tags":["Markets"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"total":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"assetClass":{"type":"string"},"count":{"type":"number"},"exchanges":{"type":"array","items":{"type":"string"}}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"operationId":"getV1InstrumentsSummary"}},"/v1/funding/":{"get":{"summary":"Latest perpetual funding rates","description":"Latest perpetual funding rate for every symbol, optionally scoped to one venue. Funding is the periodic payment between longs and shorts that holds a perpetual near spot: a positive rate means longs pay shorts, so the sign and size read directly as crowd positioning. Rates are per-interval decimals, so 0.0000125 is 0.00125%. Coverage includes GOLD and SILVER perps alongside crypto and tokenised equities. Requires the Pro plan or higher.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"exchange":{"type":"string"},"fundingRate":{"type":"number"},"premium":{"type":"number"},"symbol":{"type":"string"},"time":{"format":"date-time","type":"string"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"exchange","in":"query","required":false,"schema":{"examples":["HYPERLIQUID"],"type":"string"}}],"operationId":"getV1Funding"}},"/v1/funding/venues":{"get":{"summary":"Funding rate venues","description":"Venues currently publishing funding data, with how many symbols each covers and when it last printed. Requires the Pro plan or higher.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"exchange":{"type":"string"},"latest":{"format":"date-time","type":"string"},"symbols":{"type":"number"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"operationId":"getV1FundingVenues"}},"/v1/funding/{symbol}/history":{"get":{"summary":"Funding rate history for a perpetual","description":"Funding rate history for one perpetual, oldest first. Symbols are the venue's own tickers such as BTC, ETH, GOLD, SILVER, NVDA; call /v1/funding for the full list. Set the window with range (1D, 1W, 1M, 3M, 6M, 1Y, ALL) or explicit start and end dates. Requires the Pro plan or higher.","tags":["Analytics"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"symbol":{"type":"string"},"range":{"type":"string"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"exchange":{"type":"string"},"fundingRate":{"type":"number"},"premium":{"type":"number"},"symbol":{"type":"string"},"time":{"format":"date-time","type":"string"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"symbol","in":"path","required":true,"schema":{"examples":["BTC"],"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"examples":["HYPERLIQUID"],"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"description":"One of 1D, 1W, 1M, 3M, 6M, 1Y or ALL. Defaults to 1M. ALL returns the whole series, and MAX is accepted as a synonym for it.","examples":["1M"],"type":"string"}},{"name":"start","in":"query","required":false,"schema":{"examples":["2026-01-01"],"type":"string"}},{"name":"end","in":"query","required":false,"schema":{"examples":["2026-09-01"],"type":"string"}}],"operationId":"getV1FundingBySymbolHistory"}},"/v1/bullion/":{"get":{"summary":"Retail bullion dealer prices","description":"Retail bullion prices across competing dealers, with each quote's premium over spot. Every product is normalised to its fine-ounce content so premiums are comparable across coins, bars and junk silver. `best` is the cheapest in-stock quote at or above spot, falling back to the cheapest such quote; a below-spot quote stays in `quotes` but is never `best`, and `best` is null when every fresh quote is below spot. Premium is the figure recorded at scrape time and travels with its own scrapedAt, so price and premium always agree. Filter with metal: gold, silver, platinum or palladium, or the code each product carries in `metal` (XAU, XAG, XPT, XPD), in any case. Quotes older than 7 days are excluded by default and never chosen as `best`, because individual dealer scrapers fail silently and a stale row would otherwise be presented as today's cheapest price; widen or narrow that with max_age_days, and read `asOf`, `ageDays` and `staleQuotesExcluded` to judge freshness yourself. Requires the Pro plan or higher.","tags":["Markets"],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","required":["success","data"],"properties":{"success":{"type":"boolean"},"maxAgeDays":{"type":"number"},"count":{"type":"number"},"data":{"type":"array","items":{"type":"object","properties":{"asOf":{"format":"date-time","type":"string"},"best":{"type":"object","properties":{"dealer":{"type":"string"},"inStock":{"type":"boolean"},"premiumPct":{"type":"number"},"priceCash":{"type":"number"},"scrapedAt":{"format":"date-time","type":"string"}}},"fineOz":{"type":"number"},"form":{"type":"string"},"metal":{"type":"string"},"name":{"type":"string"},"productId":{"type":"string"},"purity":{"type":"number"},"quotes":{"type":"array","items":{"type":"object","properties":{"ageDays":{"type":"number"},"dealer":{"type":"string"},"dealerId":{"type":"string"},"inStock":{"type":"boolean"},"premiumPct":{"type":"number"},"priceCard":{"anyOf":[{},{"type":"null"}]},"priceCash":{"type":"number"},"scrapedAt":{"format":"date-time","type":"string"}}}},"series":{"type":"string"},"staleQuotesExcluded":{"type":"number"},"weightLabel":{"type":"string"}}}}}}}}},"400":{"description":"Invalid parameter.","content":{"application/json":{"schema":{"description":"Error response.","type":"object","required":["error"],"properties":{"success":{"const":false,"type":"boolean"},"error":{"description":"Human-readable reason.","type":"string"},"message":{"type":"string"},"upgrade_url":{"description":"Present on plan-limit errors.","type":"string"},"reference":{"description":"Support reference, present on 500s.","type":"string"}}}}}}},"parameters":[{"name":"metal","in":"query","required":false,"schema":{"description":"Optional. gold, silver, platinum or palladium, or the code XAU, XAG, XPT or XPD, in any case.","examples":["gold"],"type":"string"}},{"name":"max_age_days","in":"query","required":false,"schema":{"examples":["7"],"type":"string"}}],"operationId":"getV1Bullion"}},"/v1/bullion/{productId}":{"get":{"summary":"Dealer quotes for a bullion product","description":"Every dealer quote for one bullion product. Product ids are slugs such as 1-oz-american-gold-eagle; call /v1/bullion for the full list. Quotes older than 7 days are excluded by default; widen with max_age_days. Requires the Pro plan or higher.","tags":["Markets"],"parameters":[{"name":"productId","in":"path","required":true,"schema":{"examples":["1-oz-american-gold-eagle"],"type":"string"}},{"name":"max_age_days","in":"query","required":false,"schema":{"examples":["7"],"type":"string"}}],"operationId":"getV1BullionByProductId"}}}}