{"openapi":"3.1.0","info":{"title":"FX Macrodata API","description":"...","version":"1.0.0"},"paths":{"/v1/health":{"get":{"tags":["health"],"summary":"Ping the API","description":"Returns a simple OK status to verify the API is running.","operationId":"ping_v1_health_get","responses":{"200":{"description":"Health-check response confirming API availability.","content":{"application/json":{"schema":{},"example":{"status":"ok","service":"fxmacrodata-api"}}}}}}},"/v1/ping":{"get":{"tags":["health"],"summary":"Ping the API","description":"Returns a simple OK status to verify the API is running.","operationId":"ping_v1_ping_get","responses":{"200":{"description":"Health-check response confirming API availability.","content":{"application/json":{"schema":{},"example":{"status":"ok","service":"fxmacrodata-api"}}}}}}},"/v1/forex/{base}/{quote}":{"get":{"tags":["fx_markets"],"summary":"Get FX spot rates","description":"Fetches daily FX spot rates between two currencies using official central-bank reference rates.\n\n**Path Parameters:**\n- `base`: Base currency code (e.g., AUD, USD).\n- `quote`: Quote currency code (e.g., USD, EUR).\n\n**Query Parameters:**\n- `start_date`: Optional. Start date YYYY-MM-DD. Defaults to 365 days ago.\n- `end_date`: Optional. End date YYYY-MM-DD. Defaults to today.\n\n- `indicators`: Optional. Comma-separated list of technical indicators to compute from the spot-rate series and include in the response. Pass `all` to include every supported indicator. Supported values: `adx_14`, `atr_14`, `bollinger_bands`, `ema_12`, `ema_20`, `ema_200`, `ema_26`, `ema_50`, `macd`, `macd_histogram`, `macd_signal`, `rsi_14`, `sma_20`, `sma_200`, `sma_50`, `all`.\n\n**FX source and derivation metadata:**\n- FX values are served from FXMacroData's Firestore-backed reference-rate store. Canonical USD quote legs are stored first; inverse and cross pairs can be derived from those legs when a requested direct pair is not stored.\n- Responses include `pair_metadata` and row-level `data[].source` with `direct_available`, `inverse_available`, `is_derived`, `derived_from_inverse`, `derived_from_cross`, `derived_from_source_legs`, `derivation_method`, `anchor_currency`, `source_pair`, `source_legs`, and `pair_consistency_check`.\n- Upstream FX source priority is BIS XRU daily USD exchange rates where available, then official national-bank daily sources, explicitly labelled EUR/CAD-derived daily crosses, official USD pegs, BIS monthly averages expanded to business days, IMF IFS monthly rates, and World Bank annual rates. Lower-frequency expansions are labelled with `source_frequency` and `derivation_method`; they are not presented as true daily fixings.\n- `data[].observation_datetime` is the UTC midnight timestamp for the FX reference date. It is an observation-date marker, not a publication timestamp.","operationId":"forex_v1_forex__base___quote__get","parameters":[{"name":"base","in":"path","required":true,"schema":{"type":"string","description":"Base currency code","examples":["AUD"],"title":"Base","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Base currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"quote","in":"path","required":true,"schema":{"type":"string","description":"Quote currency code","examples":["USD"],"title":"Quote","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Quote currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2026-01-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"indicators","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated technical indicators to compute (e.g. sma_20,rsi_14,macd,bollinger_bands). Use 'all' to request every supported indicator.","examples":["sma_20,rsi_14,macd"],"title":"Indicators"},"description":"Optional query parameter. Comma-separated technical indicators to compute (e.g. sma_20,rsi_14,macd,bollinger_bands). Use 'all' to request every supported indicator."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Daily FX spot-rate series with optional computed technical indicators.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForexResponse"},"example":{"base":"USD","quote":"JPY","source":"Official central-bank reference rates","provenance":{"publisher":"Official central-bank reference rates","storage":"FXMacroData Firestore","timestamp_field":"date","value_field":"val"},"pair_metadata":{"direct_available":true,"inverse_available":false,"derived_from_inverse":false,"derived_from_cross":false,"derived_from_source_legs":false,"is_derived":false,"derivation_method":"direct_original_pair","source_pair":"USD/JPY","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_name":"BIS XRU daily USD exchange rates","source_url":"https://stats.bis.org/api/v2/data/dataflow/BIS/WS_XRU/1.0","source_frequency":"daily"}],"pair_consistency_check":"passed"},"data_quality":{"source_name":"Official central-bank reference rates","source_type":"official","is_derived":false,"datetime_field":"observation_datetime","datetime_precision":"date","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_frequency":"daily"}]},"start_date":"2026-06-17","end_date":"2026-06-18","data":[{"date":"2026-06-18","val":161.1288,"observation_datetime":1781740800,"observation_datetime_iso":"2026-06-18T00:00:00Z","observation_datetime_precision":"date","source":{"source_pair":"USD/JPY","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_frequency":"daily"}],"is_derived":false,"derivation_method":"direct_original_pair","pair_consistency_check":"passed"}},{"date":"2026-06-17","val":161.1288,"observation_datetime":1781654400,"observation_datetime_iso":"2026-06-17T00:00:00Z","observation_datetime_precision":"date","source":{"source_pair":"USD/JPY","source_legs":[{"pair":"USD/JPY","source_provider":"BIS XRU","source_frequency":"daily"}],"is_derived":false,"derivation_method":"direct_original_pair","pair_consistency_check":"passed"}}],"indicators":{"sma_20":0.6519,"rsi_14":58.42,"macd":{"macd":0.0012,"signal":0.0009,"histogram":0.0003}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"base":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"quote":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicators":["adx_14","atr_14","bollinger_bands","ema_12","ema_20","ema_200","ema_26","ema_50","macd","macd_histogram","macd_signal","rsi_14","sma_20","sma_200","sma_50","all"]}}},"/v1/data_catalogue/{currency}":{"get":{"tags":["data_catalogue"],"summary":"Get Currently Available Macroeconomic Indicators","description":"Returns the currently available macroeconomic indicators for a specific currency.\n\n    Availability is determined from the Firestore-backed product store rather than\n    the static indicator registry alone, so temporarily unavailable series are\n    excluded until live data is available again. The catalogue is refreshed on a\n    regular schedule.\n\n    This route also replaces the deprecated `/v1/capabilities` and\n    `/v1/coverage_matrix` endpoints. Coverage is included directly on each\n    catalogue entry. To also include the legacy top-level coverage list, call it\n    with `include_coverage=true`. To include capability metadata, call it with\n    `include_capabilities=true`.\n\n    Each entry includes:\n    * **name**: The full descriptive name of the metric.\n    * **unit**: The unit of measurement (e.g., %YoY, Billions of USD).\n    * **frequency**: How often the data is updated (Daily, Monthly, Quarterly).\n    * **source** / **source_url**: The publisher or source family used for the stored series, when available.\n    * **source_series_id** / **source_series_name**: The upstream source identifier and exact source-series label, when available.\n    * **seasonal_adjustment**: Seasonal basis (`SA`, `NSA`, `UNKNOWN`, or `NOT_APPLICABLE`).\n    * **price_basis**: GDP/level price basis (`REAL`, `NOMINAL`, or `UNKNOWN`) when applicable.\n    * **aliases** / **related_indicators**: Optional flat discovery metadata for common alternative names and adjacent indicators.\n    * **standardization_note**: Optional note explaining sign, unit, scope, or cross-currency comparability choices.\n    * **has_official_forecast**: Whether the relevant central bank or statistics agency publishes a preliminary, flash, or advance estimate of this indicator before the main/final data release.\n    * **coverage**: Earliest/latest stored dates, row count, recency status, and coverage quality for that indicator.","operationId":"get_data_catalogue_v1_data_catalogue__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","description":"The 3-letter currency code (e.g., USD, AUD, EUR, GBP, CHF)","examples":["USD"],"title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. The 3-letter currency code (e.g., USD, AUD, EUR, GBP, CHF) Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"include_capabilities","in":"query","required":false,"schema":{"type":"boolean","description":"Include currency-scoped endpoint/auth metadata that replaces the deprecated /v1/capabilities response.","default":false,"title":"Include Capabilities"},"description":"Optional query parameter. Include currency-scoped endpoint/auth metadata that replaces the deprecated /v1/capabilities response."},{"name":"include_coverage","in":"query","required":false,"schema":{"type":"boolean","description":"Also include the legacy currency-scoped coverage list that replaces the deprecated /v1/coverage_matrix response. Per-indicator coverage is included in catalogue entries by default.","default":false,"title":"Include Coverage"},"description":"Optional query parameter. Also include the legacy currency-scoped coverage list that replaces the deprecated /v1/coverage_matrix response. Per-indicator coverage is included in catalogue entries by default."},{"name":"indicator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional indicator filter when include_coverage=true.","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Optional indicator filter when include_coverage=true. Allowed values: average_hourly_earnings, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, credit_growth, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, net_foreign_asset_position, non_farm_payrolls, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, risk_free_rate, secondary_income_balance, services_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."}],"responses":{"200":{"description":"Indicator metadata keyed by indicator slug, with optional capability and coverage metadata.","content":{"application/json":{"schema":{},"example":{"gdp":{"name":"GDP","unit":"%QoQ","frequency":"Quarterly","has_official_forecast":true},"inflation":{"name":"Inflation (CPI)","unit":"%YoY","frequency":"Monthly","has_official_forecast":false},"unemployment":{"name":"Unemployment Rate","unit":"%","frequency":"Monthly","has_official_forecast":false},"policy_rate":{"name":"Policy Interest Rate","unit":"%","frequency":"Daily","has_official_forecast":false},"gov_bond_10y":{"name":"10-Year Government Bond Yield","unit":"%","frequency":"Daily","has_official_forecast":false}}}}},"404":{"description":"Currency not found.","content":{"application/json":{"example":{"detail":"Currency 'XYZ' not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"]}}},"/v1/calendar/{currency}":{"get":{"tags":["calendar"],"summary":"Get upcoming economic data release dates","description":"Returns upcoming economic data release dates for a given currency.\n\nRows are served from Firestore-first calendar documents. Announcement rows keep the existing `release` slug mapping to `/v1/announcements/{currency}/{indicator}`, while other domains such as COT may also include additive fields like `domain`, `endpoint_family`, and `endpoint_path`.\n\n**Path Parameters:**\n- `currency`: The 3-letter currency code (e.g., USD).\n\n**Query Parameters:**\n- `indicator`: Optional. Filter to a specific indicator (e.g., gdp, inflation, unemployment, non_farm_payrolls).\n\n- `start_date`: Optional inclusive lower bound, YYYY-MM-DD.\n- `end_date`: Optional inclusive upper bound, YYYY-MM-DD.\n\n**Returns:** List of release rows sorted by announcement time ascending (nearest scheduled release first). Core fields remain `announcement_datetime` and `release`; additive routing metadata may also be present.","operationId":"get_release_calendar_v1_calendar__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AED","ARS","AUD","BOB","BRL","CAD","CHF","CLP","CNH","CNY","COMM","COP","CZK","DKK","DZD","EGP","EUR","GBP","HKD","HUF","IDR","ILS","INR","JPY","KRW","MAD","MXN","MYR","NGN","NOK","NZD","PEN","PHP","PKR","PLN","RUB","SAR","SEK","SGD","THB","TRY","TWD","USD","UYU","VND","ZAR"],"example":"AED"},"description":"Required path parameter. Allowed values: AED, ARS, AUD, BOB, BRL, CAD, CHF, CLP, CNH, CNY, COMM, COP, CZK, DKK, DZD, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PEN, PHP, PKR, PLN, RUB, SAR, SEK, SGD, THB, TRY, TWD, USD, UYU, VND, ZAR."},{"name":"indicator","in":"query","required":false,"schema":{"type":"string","description":"Filter by indicator name (e.g., gdp, inflation, unemployment)","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Filter by indicator name (e.g., gdp, inflation, unemployment) Allowed values: average_hourly_earnings, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, credit_growth, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, net_foreign_asset_position, non_farm_payrolls, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, risk_free_rate, secondary_income_balance, services_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Optional inclusive lower bound in YYYY-MM-DD format.","examples":["2026-06-01"],"title":"Start Date"},"description":"Optional query parameter. Optional inclusive lower bound in YYYY-MM-DD format."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"Optional inclusive upper bound in YYYY-MM-DD format.","examples":["2026-06-30"],"title":"End Date"},"description":"Optional query parameter. Optional inclusive upper bound in YYYY-MM-DD format."},{"name":"timezone","in":"query","required":false,"schema":{"type":"string","description":"Optional IANA timezone for an additional converted timestamp field, for example America/Sao_Paulo.","examples":["America/Sao_Paulo"],"title":"Timezone"},"description":"Optional query parameter. Optional IANA timezone for an additional converted timestamp field, for example America/Sao_Paulo."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Upcoming release dates for the selected currency and optional indicator filter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarResponse"},"example":{"currency":"USD","timezone":"America/New_York","indicator":"inflation","data":[{"announcement_datetime":1773077400,"announcement_datetime_local":"2026-03-11T08:30:00-04:00","release":"inflation"},{"announcement_datetime":1773682200,"announcement_datetime_local":"2026-03-18T08:30:00-04:00","release":"non_farm_payrolls"}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AED","ARS","AUD","BOB","BRL","CAD","CHF","CLP","CNH","CNY","COMM","COP","CZK","DKK","DZD","EGP","EUR","GBP","HKD","HUF","IDR","ILS","INR","JPY","KRW","MAD","MXN","MYR","NGN","NOK","NZD","PEN","PHP","PKR","PLN","RUB","SAR","SEK","SGD","THB","TRY","TWD","USD","UYU","VND","ZAR"],"indicator":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"]}}},"/v1/market_sessions":{"get":{"tags":["fx_markets"],"summary":"FX market session timetable","description":"Returns a real-time snapshot of the four major FX trading sessions (Sydney, Tokyo, London, New York) and their overlap windows.\n\nEach session entry shows today's open and close times in UTC, whether the session is currently open, and seconds until it opens or closes.\n\nOverlap windows highlight the highest-liquidity trading periods — in particular the **London / New York** overlap (~13:00–17:00 UTC in winter), which sees the largest volume and tightest spreads on major USD pairs.\n\n**Query Parameters:**\n- `at`: Optional ISO-8601 UTC timestamp (e.g. `2026-03-05T12:00:00Z`). Defaults to the current server time. Useful for scheduling or back-testing decisions.\n\n**No authentication required.**","operationId":"get_market_sessions_v1_market_sessions_get","parameters":[{"name":"at","in":"query","required":false,"schema":{"type":"string","description":"Optional ISO-8601 UTC timestamp (e.g. 2026-03-05T12:00:00Z)","examples":["2026-03-05T12:00:00Z"],"title":"At"},"description":"Optional query parameter. Optional ISO-8601 UTC timestamp (e.g. 2026-03-05T12:00:00Z)"}],"responses":{"200":{"description":"Session snapshot including open/close state and overlap windows.","content":{"application/json":{"schema":{},"example":{"now_utc":"2026-03-05T12:00:00Z","now_unix":1741176000,"is_market_day":true,"sessions":[{"name":"Sydney","display_name":"Sydney (Australia / New Zealand)","description":"First major session to open after the weekend.","currencies":["AUD","NZD"],"timezone":"Australia/Sydney","open_utc":"2026-03-04T23:00:00Z","close_utc":"2026-03-05T08:00:00Z","open_unix":1741129200,"close_unix":1741161600,"is_open":false},{"name":"London","display_name":"London (United Kingdom / Europe)","description":"Largest FX session by volume.","currencies":["GBP","EUR","CHF"],"timezone":"Europe/London","open_utc":"2026-03-05T08:00:00Z","close_utc":"2026-03-05T17:00:00Z","open_unix":1741161600,"close_unix":1741194000,"is_open":true,"seconds_to_close":18000}],"overlaps":[{"name":"London / New York","sessions":["London","New York"],"description":"Most active window of the trading day.","priority":"high","notable_pairs":["EUR/USD","GBP/USD","USD/CHF","USD/CAD"],"start_utc":"2026-03-05T13:00:00Z","end_utc":"2026-03-05T17:00:00Z","start_unix":1741179600,"end_unix":1741194000,"is_active":false,"seconds_to_start":3600,"duration_hours":4.0}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rate_differentials/{base}/{quote}":{"get":{"tags":["fx_markets"],"summary":"Get pair rate differentials","description":"Returns a store-backed historical differential between the base and quote currency using a shared rate measure. The endpoint aligns the two legs by date intersection and reports the spread in both percentage points and basis points.\n\n**Measures:**\n- Supported values: `auto`, `risk_free_rate`, `gov_bond_2y`, `gov_bond_10y`, `policy_rate`.\n- `auto` prefers `risk_free_rate`, then `gov_bond_2y`, then `policy_rate`.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_rate_differentials_v1_rate_differentials__base___quote__get","parameters":[{"name":"base","in":"path","required":true,"schema":{"type":"string","description":"Base currency code","examples":["AUD"],"title":"Base","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Base currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"quote","in":"path","required":true,"schema":{"type":"string","description":"Quote currency code","examples":["USD"],"title":"Quote","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Quote currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"measure","in":"query","required":false,"schema":{"type":"string","description":"Shared rate measure to compare across the pair.","examples":["auto","risk_free_rate","gov_bond_2y"],"default":"auto","title":"Measure","enum":["auto","risk_free_rate","gov_bond_2y","gov_bond_10y","policy_rate"],"example":"auto"},"description":"Optional query parameter. Shared rate measure to compare across the pair. Allowed values: auto, risk_free_rate, gov_bond_2y, gov_bond_10y, policy_rate."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Defaults to 365 days ago.","examples":["2026-01-01"],"title":"Start Date"},"description":"Optional query parameter. Inclusive start date YYYY-MM-DD. Defaults to 365 days ago."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive end date YYYY-MM-DD. Defaults to today.","examples":["2026-06-01"],"title":"End Date"},"description":"Optional query parameter. Inclusive end date YYYY-MM-DD. Defaults to today."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateDifferentialResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"base":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"quote":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"measure":["auto","risk_free_rate","gov_bond_2y","gov_bond_10y","policy_rate"]}}},"/v1/curves/{currency}":{"get":{"tags":["fx_markets"],"summary":"Get official curve node snapshot","description":"Returns the latest stored official-source curve nodes for the requested currency and curve family. The current implementation serves government nominal curve nodes already ingested into the FXMacroData store.\n\n**Curve Families:**\n- Supported values: `government_nominal`.\n\n**Metrics:**\n- Supported values: `spot`.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_curve_snapshot_v1_curves__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","description":"Currency code","examples":["GBP"],"title":"Currency","enum":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"example":"ARS"},"description":"Required path parameter. Currency code Allowed values: ARS, AUD, BRL, CAD, CHF, CNH, CNY, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, ISK, JPY, MXN, MYR, NGN, NOK, NZD, PEN, PLN, SEK, SGD, THB, TRY, USD, XOF, ZAR."},{"name":"curve_family","in":"query","required":false,"schema":{"type":"string","description":"Official curve family to return.","examples":["government_nominal"],"default":"government_nominal","title":"Curve Family","enum":["government_nominal"],"example":"government_nominal"},"description":"Optional query parameter. Official curve family to return. Allowed values: government_nominal."},{"name":"metric","in":"query","required":false,"schema":{"type":"string","description":"Curve metric to return.","examples":["spot"],"default":"spot","title":"Metric","enum":["spot"],"example":"spot"},"description":"Optional query parameter. Curve metric to return. Allowed values: spot."},{"name":"date","in":"query","required":false,"schema":{"type":"string","description":"Optional target date YYYY-MM-DD. The endpoint returns the latest stored node per maturity up to this date, using a recent lookback window.","examples":["2026-06-01"],"title":"Date"},"description":"Optional query parameter. Optional target date YYYY-MM-DD. The endpoint returns the latest stored node per maturity up to this date, using a recent lookback window."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurveSnapshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"curve_family":["government_nominal"],"metric":["spot"]}}},"/v1/curve_proxies/{currency}":{"get":{"tags":["fx_markets"],"summary":"Get curve slope proxies","description":"Returns store-backed yield-curve slope proxies computed from the latest stored government bond tenor nodes. This endpoint is broad-coverage and is intended for curve steepness and inversion analysis across currencies.\n\n**Curve Families:**\n- Supported values: `government_nominal`.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_curve_proxies_v1_curve_proxies__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","description":"Currency code","examples":["CAD"],"title":"Currency","enum":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"example":"ARS"},"description":"Required path parameter. Currency code Allowed values: ARS, AUD, BRL, CAD, CHF, CNH, CNY, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, ISK, JPY, MXN, MYR, NGN, NOK, NZD, PEN, PLN, SEK, SGD, THB, TRY, USD, XOF, ZAR."},{"name":"curve_family","in":"query","required":false,"schema":{"type":"string","description":"Curve family to analyze.","examples":["government_nominal"],"default":"government_nominal","title":"Curve Family","enum":["government_nominal"],"example":"government_nominal"},"description":"Optional query parameter. Curve family to analyze. Allowed values: government_nominal."},{"name":"date","in":"query","required":false,"schema":{"type":"string","description":"Optional target date YYYY-MM-DD for the latest stored snapshot.","examples":["2026-06-01"],"title":"Date"},"description":"Optional query parameter. Optional target date YYYY-MM-DD for the latest stored snapshot."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurveProxyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"curve_family":["government_nominal"]}}},"/v1/forward_curves/{currency}":{"get":{"tags":["fx_markets"],"summary":"Get derived forward curve segments","description":"Returns derived forward-rate segments computed from stored government spot-curve nodes. This endpoint does not imply that forward-rate series are stored directly; the values are computed from the latest available tenor snapshot.\n\n**Curve Families:**\n- Supported values: `government_nominal`.\n**Methods:**\n- Supported values: `derived_from_spot_nodes`.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_forward_curve_v1_forward_curves__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","description":"Currency code","examples":["EUR"],"title":"Currency","enum":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"example":"ARS"},"description":"Required path parameter. Currency code Allowed values: ARS, AUD, BRL, CAD, CHF, CNH, CNY, CZK, DKK, EUR, GBP, HKD, HUF, IDR, ILS, INR, ISK, JPY, MXN, MYR, NGN, NOK, NZD, PEN, PLN, SEK, SGD, THB, TRY, USD, XOF, ZAR."},{"name":"curve_family","in":"query","required":false,"schema":{"type":"string","description":"Curve family to derive the forward segments from.","examples":["government_nominal"],"default":"government_nominal","title":"Curve Family","enum":["government_nominal"],"example":"government_nominal"},"description":"Optional query parameter. Curve family to derive the forward segments from. Allowed values: government_nominal."},{"name":"method","in":"query","required":false,"schema":{"type":"string","description":"Forward derivation method.","examples":["derived_from_spot_nodes"],"default":"derived_from_spot_nodes","title":"Method","enum":["derived_from_spot_nodes"],"example":"derived_from_spot_nodes"},"description":"Optional query parameter. Forward derivation method. Allowed values: derived_from_spot_nodes."},{"name":"date","in":"query","required":false,"schema":{"type":"string","description":"Optional target date YYYY-MM-DD for the latest stored snapshot.","examples":["2026-06-01"],"title":"Date"},"description":"Optional query parameter. Optional target date YYYY-MM-DD for the latest stored snapshot."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardCurveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["ARS","AUD","BRL","CAD","CHF","CNH","CNY","CZK","DKK","EUR","GBP","HKD","HUF","IDR","ILS","INR","ISK","JPY","MXN","MYR","NGN","NOK","NZD","PEN","PLN","SEK","SGD","THB","TRY","USD","XOF","ZAR"],"curve_family":["government_nominal"],"method":["derived_from_spot_nodes"]}}},"/v1/forward_differentials/{base}/{quote}":{"get":{"tags":["fx_markets"],"summary":"Get pair forward-rate differentials","description":"Returns a historical differential between two currencies for a derived forward-rate segment such as `2Y->5Y`. Each currency leg is derived from stored government spot nodes, then aligned by date intersection before the pair differential is computed.\n\n**Curve Families:**\n- Supported values: `government_nominal`.\n\n**Authentication:**\n- Requires a Professional API key via `?api_key=<key>` or `X-API-Key`.","operationId":"get_forward_differentials_v1_forward_differentials__base___quote__get","parameters":[{"name":"base","in":"path","required":true,"schema":{"type":"string","description":"Base currency code","examples":["GBP"],"title":"Base","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Base currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"quote","in":"path","required":true,"schema":{"type":"string","description":"Quote currency code","examples":["USD"],"title":"Quote","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Quote currency code Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"curve_family","in":"query","required":false,"schema":{"type":"string","description":"Curve family to use for both legs.","examples":["government_nominal"],"default":"government_nominal","title":"Curve Family","enum":["government_nominal"],"example":"government_nominal"},"description":"Optional query parameter. Curve family to use for both legs. Allowed values: government_nominal."},{"name":"start_tenor_years","in":"query","required":false,"schema":{"type":"number","description":"Start tenor in years for the forward segment.","examples":[2.0],"default":2.0,"title":"Start Tenor Years"},"description":"Optional query parameter. Start tenor in years for the forward segment."},{"name":"end_tenor_years","in":"query","required":false,"schema":{"type":"number","description":"End tenor in years for the forward segment.","examples":[5.0],"default":5.0,"title":"End Tenor Years"},"description":"Optional query parameter. End tenor in years for the forward segment."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive start date YYYY-MM-DD. Defaults to 365 days ago.","examples":["2026-01-01"],"title":"Start Date"},"description":"Optional query parameter. Inclusive start date YYYY-MM-DD. Defaults to 365 days ago."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"Inclusive end date YYYY-MM-DD. Defaults to today.","examples":["2026-06-01"],"title":"End Date"},"description":"Optional query parameter. Inclusive end date YYYY-MM-DD. Defaults to today."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForwardDifferentialResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"base":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"quote":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"curve_family":["government_nominal"]}}},"/v1/news/{currency}":{"get":{"tags":["news"],"summary":"Recent central bank news and press releases","description":"Returns recent press releases and news from official central bank sources.\n\n**Path Parameters:**\n- `currency`: A 3-letter currency code (e.g., USD, AUD, EUR).\n\n**Query Parameters:**\n- `limit`: Maximum number of news items to return per page (1–50, default 20).\n- `offset`: Zero-based pagination offset (default: 0).\n\n**Authentication:** USD news is publicly available without an API key. All other currencies require a professional API key supplied via `?api_key=<key>` or the `X-API-Key` header.","operationId":"get_news_v1_news__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNY","CZK","DKK","EUR","GBP","HKD","INR","JPY","MXN","NOK","NZD","PEN","PLN","SEK","SGD","THB","USD","ZAR"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, INR, JPY, MXN, NOK, NZD, PEN, PLN, SEK, SGD, THB, USD, ZAR."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum number of news items to return","examples":[10],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of news items to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Zero-based offset into the full news feed before pagination.","default":0,"title":"Offset"},"description":"Optional query parameter. Zero-based offset into the full news feed before pagination."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Recent central bank news items for the selected currency.","content":{"application/json":{"schema":{},"example":{"currency":"EUR","source":"European Central Bank","source_url":"https://www.ecb.europa.eu/press/","data":[{"title":"Monetary policy decisions","url":"https://www.ecb.europa.eu/press/pr/date/2026/html/example.en.html","announcement_datetime":1773077400}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNY","CZK","DKK","EUR","GBP","HKD","INR","JPY","MXN","NOK","NZD","PEN","PLN","SEK","SGD","THB","USD","ZAR"]}}},"/v1/press-releases/{currency}":{"get":{"tags":["press_releases"],"summary":"Recent central bank press releases","description":"Returns recent press releases from official central bank websites for the requested currency.\n\n**Supported currencies:** AUD, BRL, CAD, CHF, CNY, CZK, DKK, EUR, GBP, HKD, INR, JPY, KRW, MXN, NOK, NZD, PEN, PLN, SEK, SGD, THB, USD, ZAR\n\n**Path Parameters:**\n- `currency`: 3-letter ISO currency code (e.g., USD, EUR, GBP).\n\n**Query Parameters:**\n- `limit`: Maximum number of press releases to return per page (1–50, default 20).\n- `offset`: Zero-based pagination offset (default: 0).\n\n**Authentication:** USD press releases are publicly available without an API key. All other currencies require a professional API key supplied via `?api_key=<key>` or the `X-API-Key` header.\n\n**Data sources:** Official central bank RSS feeds and websites only.","operationId":"get_press_releases_v1_press_releases__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["ARS","AUD","CAD","CHF","CLP","CNY","CZK","EUR","GBP","HKD","ILS","INR","JPY","NGN","NZD","PEN","PLN","THB","USD"],"example":"ARS"},"description":"Required path parameter. Allowed values: ARS, AUD, CAD, CHF, CLP, CNY, CZK, EUR, GBP, HKD, ILS, INR, JPY, NGN, NZD, PEN, PLN, THB, USD."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Maximum number of press releases to return","examples":[10],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of press releases to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Zero-based offset into the full press-release feed before pagination.","default":0,"title":"Offset"},"description":"Optional query parameter. Zero-based offset into the full press-release feed before pagination."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Recent press releases for the selected central bank.","content":{"application/json":{"schema":{},"example":{"currency":"USD","source":"Federal Reserve","source_url":"https://www.federalreserve.gov","count":2,"data":[{"title":"Federal Reserve issues FOMC statement","url":"https://www.federalreserve.gov/newsevents/pressreleases/monetary20260319a.htm","date":"2026-03-19","summary":"The Committee decided to maintain the target range for the federal funds rate...","category":"monetary_policy","relevance":0.95,"ai_summary":"FOMC held rates and stressed inflation persistence, signalling a longer plateau than markets had priced.","ai_stance":"hawkish","ai_stance_score":0.45,"ai_next_meeting_action":"hold","ai_next_meeting_probability":0.7,"ai_rationale":"Statement cited 'elevated' inflation and the need to keep policy 'sufficiently restrictive'.","rate_path":{"score":0.42,"label":"Moderately Hawkish","bias_action":"hike","confidence":"medium","raw_score":1.1,"matches":[{"phrase":"elevated inflation","weight":0.7},{"phrase":"restrictive stance","weight":0.7}]}}]}}}},"404":{"description":"Currency not supported for press releases."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["ARS","AUD","CAD","CHF","CLP","CNY","CZK","EUR","GBP","HKD","ILS","INR","JPY","NGN","NZD","PEN","PLN","THB","USD"]}}},"/v1/risk_sentiment":{"get":{"tags":["fx_markets"],"summary":"Global risk-on / risk-off indicator","description":"Returns a composite daily risk-sentiment score indicating whether global financial conditions favour risk-on currencies (AUD, NZD, CAD) or risk-off safe havens (JPY, CHF, USD).\n\nThe score is derived from four publicly available sources:\n- **OFR FSI** (U.S. Treasury Office of Financial Research Financial Stress Index) — primary stress gauge, *inverted*\n- **Gold** (LBMA PM Fix via Bank of England IADB) — safe-haven demand proxy, *inverted*\n- **AUD/USD** (Frankfurter API) — risk-sensitive currency pair\n- **USD/JPY** (Frankfurter API) — safe-haven flow proxy\n\nEach component is normalised to a 252-day rolling z-score, weighted, and compressed through tanh to produce a final score in **[-1.0, +1.0]**.\n\n**Weights:** OFR FSI 40%, Gold 20%, AUD/USD 20%, USD/JPY 20%.\n\n**Query Parameters:**\n- `start_date`: Start date YYYY-MM-DD (default: 365 days ago).\n- `end_date`: End date YYYY-MM-DD (default: today).\n\n**Each data record contains:**\n- `date`: Observation date (YYYY-MM-DD).\n- `val`: Composite score -1.0 (extreme risk-off) ... +1.0 (extreme risk-on).\n- `regime`: `risk_on` (>= 0.25) | `neutral` | `risk_off` (<= -0.25).\n- `components.ofr_fsi`: Normalised (inverted) OFR FSI contribution.\n- `components.gold`: Normalised (inverted) gold price contribution.\n- `components.aud_usd`: Normalised AUD/USD contribution.\n- `components.usd_jpy`: Normalised USD/JPY contribution.","operationId":"get_risk_sentiment_v1_risk_sentiment_get","parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-12-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."}],"responses":{"200":{"description":"Risk sentiment time series and component-level contributions.","content":{"application/json":{"schema":{},"example":{"start_date":"2025-12-01","end_date":"2026-03-01","data":[{"date":"2026-02-28","val":0.31,"regime":"risk_on","components":{"ofr_fsi":0.18,"gold":-0.07,"aud_usd":0.09,"usd_jpy":0.04}}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/predictions/{currency}/{indicator}":{"get":{"tags":["predictions"],"summary":"List predictions for one indicator of a currency","description":"Returns every available prediction for the requested ``currency``/``indicator`` pair.","operationId":"get_indicator_predictions_v1_predictions__currency___indicator__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency"},"description":"Required path parameter."},{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Indicator slug","examples":["inflation"],"title":"Indicator"},"description":"Required path parameter. Indicator slug"},{"name":"prediction_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["market_consensus","market_prediction","model_nowcast","survey","central_bank_forecast","imf_weo","fxmacrodata"],"type":"string"},{"type":"null"}],"description":"Optional prediction-type filter.","title":"Prediction Type"},"description":"Optional query parameter. Optional prediction-type filter."},{"name":"prediction_source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional source identifier filter.","title":"Prediction Source"},"description":"Optional query parameter. Optional source identifier filter."},{"name":"start_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date YYYY-MM-DD (period date). Defaults to 12 months before today when omitted.","title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD (period date). Defaults to 12 months before today when omitted."},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date YYYY-MM-DD (period date). Defaults to 12 months ahead.","title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD (period date). Defaults to 12 months ahead."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of prediction groups to return in `data[]`. Use with `offset` to page through long histories. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of prediction groups to return in `data[]`. Use with `offset` to page through long histories. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of prediction groups to skip from the start of `data[]`. Use with `limit` for pagination. Defaults to 0.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of prediction groups to skip from the start of `data[]`. Use with `limit` for pagination. Defaults to 0."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/announcements/{currency}/latest":{"get":{"tags":["announcements"],"summary":"Get latest stored values for all indicators in a currency","operationId":"get_currency_latest_indicator_values_v1_announcements__currency__latest_get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"indicator_by_currency":{"AUD":["building_approvals","business_confidence","capital_account_balance","cb_assets","commodity_prices","consumer_confidence","core_inflation","credit_growth","current_account_balance","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","house_price_index","imports","inflation","inflation_linked_bond","international_assets","international_liabilities","monthly_cpi","net_foreign_asset_position","part_time_employment","participation_rate","policy_rate","ppi","primary_income_balance","risk_free_rate","secondary_income_balance","services_balance","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"BRL":["foreign_reserves","gdp","inflation","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"CAD":["building_permits","business_confidence","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","consumer_confidence","core_inflation","core_inflation_median","core_inflation_trim","current_account_balance","employment","full_time_employment","gdp","gdp_quarterly","gov_bond_10y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_5y","gov_bond_7y","household_credit","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"CHF":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_4y","gov_bond_5y","inflation","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","sight_deposits","trade_weighted_index","unemployment"],"CNH":["business_confidence","cb_assets","core_inflation","current_account_balance","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"CNY":["business_confidence","cb_assets","core_inflation","current_account_balance","foreign_reserves","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"DKK":["gov_bond_10y","inflation","inflation_mom","risk_free_rate","trade_weighted_index"],"EUR":["balance_on_goods","balance_on_services","breakeven_inflation_rate","business_confidence","consumer_confidence","core_inflation","core_inflation_mom","current_account_balance","employment","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","inflation_mom","m1","m2","m3","part_time_employment","participation_rate","policy_rate","policy_rate_mlf","policy_rate_mro","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"GBP":["consumer_confidence","core_inflation","employment","exports","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_3y","gov_bond_5y","imports","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"JPY":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_5y","gov_bond_7y","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"NGN":["cb_assets","deposit_rates","foreign_reserves","policy_rate","risk_free_rate"],"NOK":["business_confidence","gov_bond_10y","gov_bond_2y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"NZD":["cb_assets","core_inflation","dairy_exports","deposit_rates","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","risk_free_rate","terms_of_trade","trade_weighted_index","unemployment"],"PEN":["foreign_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"SEK":["employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_5y","inflation","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"THB":["current_account_balance","employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","participation_rate","policy_rate","ppi","risk_free_rate","trade_balance","unemployment"],"USD":["average_hourly_earnings","breakeven_inflation_rate","building_permits","business_confidence","cb_assets","consumer_confidence","core_inflation","core_inflation_mom","core_pce","current_account_balance","durable_goods_orders","employment","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","government_debt","house_price_index","housing_starts","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","job_openings","nairu","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_target_lower","ppi","ppi_mom","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"ILS":["gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation_linked_bond","policy_rate","risk_free_rate","trade_weighted_index"]}}}},"/v1/announcements/{currency}/{indicator}":{"get":{"tags":["announcements"],"summary":"Get macroeconomic indicator data","description":"Fetches historical data for a given macroeconomic indicator of a currency.\n\n**Authentication & limits:**\n- USD data is publicly accessible without an API key, but anonymous callers are limited to the most recent 365 days. Requests for an earlier `start_date` are silently clamped to that 365-day window.\n- All other currencies require a Professional API key supplied via `?api_key=<key>` or the `X-API-Key` header.\n- Authenticated callers (any valid API key) receive the full requested history for every supported currency, including USD.\n\n**Path Parameters:**\n- `currency`: The 3-letter currency code (USD, AUD, EUR, GBP, CHF).\n- `indicator`: The indicator name (e.g., inflation, unemployment).\n\n**Query Parameters:**\n- `start_date`: Optional. Start date in YYYY-MM-DD format. When omitted by authenticated callers, the endpoint pages through the full stored history. Anonymous USD requests are capped to the freemium window.\n- `end_date`: Optional. End date in YYYY-MM-DD format. Defaults to today.\n\n- `limit`: Optional page size. Defaults to 20.\n- `page`: Optional one-based page number. When provided, it takes precedence over `offset`.\n- `offset`: Optional zero-based row offset for offset-based pagination.\n\n- `series_mode`: Optional. `canonical` (default) applies any configured remap rules for continuity across methodology changes; `raw` returns the direct underlying indicator series.\n\n**Response fields:**\n- `remap`: Metadata about the canonical remap rule application (`applied`, `rule_id`, segments, and transform mode).\n- `has_official_forecast`: Whether the relevant central bank or statistics agency publishes a preliminary, flash, or advance estimate of this indicator before the main/final data release.\n- `earliest_available_date` / `latest_available_date`: The full coverage span available in the response window before any pagination is applied.\n- `pagination`: Page metadata for the returned `data[]` slice (`limit`, `offset`, `returned_count`, `total_count`, `has_more`, `next_offset`).\n- `data[].announcement_id`: Stable identifier for this unique announcement, in the form `{currency}_{indicator}_{date}` (lowercase, e.g. `usd_inflation_2026-01-31`). Use this to join predictions from `/v1/predictions/{currency}/{indicator}` and revision history back to the underlying observation.\n- `data[].announcement_datetime`: Release timestamp as Unix epoch seconds (UTC).\n- `data[].announcement_datetime_local`: ISO 8601 release time with offset, rendered in the source agency's local timezone (e.g. USD → America/New_York, AUD → Australia/Sydney).\n- `data[].official_planned_release_datetime`: Official planned release timestamp used by the scheduler, as Unix epoch seconds (UTC), when this row was collected by a scheduled release task.\n- `data[].official_actual_release_datetime`: Official release timestamp on the source row, as Unix epoch seconds (UTC). This is normally the same as `announcement_datetime` unless the source exposes a separate publication timestamp.\n- `data[].collected_at_ns` / `data[].collected_at_iso`: Exact time the ingest process first collected this row from the upstream source.\n- `data[].ingestion_latency_ms`: Milliseconds from the official planned release timestamp to collection time when a planned timestamp is known; otherwise from the official actual release timestamp.\n- `source_series_name`: The actual underlying source series used for this standardized indicator.\n- `value_name`: The actual series name used for the returned `val`. For `policy_rate`, this is the canonical policy-series label chosen by the platform (for example, ECB Deposit Facility Rate or Federal Funds Target Range Upper Bound).\n- `source_local_name`: Official local-language series label when available.\n- `is_proxy`: True when the standardized indicator is populated using a documented proxy rather than a directly named national headline series.\n- `proxy_note`: Short explanation of the proxy choice when `is_proxy=true`.\n- `policy_role`: For `policy_rate`, the role of the canonical rate inside its official rate family (for example `primary` or `target_upper`).\n- `policy_structure`: For `policy_rate`, the policy-regime structure such as `single_primary`, `target_range`, `primary_plus_corridor`, or `non_rate_regime`.\n- `comparison_compatible`: For `policy_rate`, whether the returned `val` can be honestly used in cross-country policy-rate comparisons.\n- `policy_family`: Optional top-level metadata listing sibling policy-rate indicators in the same official family.\n- `data[].predicted_value` *(deprecated — use `/v1/predictions/{currency}/{indicator}` instead)*: Market or professional-forecaster expectation for this indicator reading, in the same units as `val`. Present only where a prediction source is available.\n- `data[].prediction_type` *(deprecated — use `/v1/predictions/{currency}/{indicator}` instead)*: Type of prediction — `market_consensus` (compiled market poll) or `market_prediction` (professional forecasters survey).\n- `data[].prediction_source` *(deprecated — use `/v1/predictions/{currency}/{indicator}` instead)*: Stable identifier for the prediction source (e.g. `ecb_spf` for the ECB Survey of Professional Forecasters). Null when `predicted_value` is absent.","operationId":"get_indicator_data_v1_announcements__currency___indicator__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, ILS, JPY, NGN, NOK, NZD, PEN, SEK, THB, USD."},{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Indicator slug","examples":["inflation"],"title":"Indicator","enum":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Required path parameter. Indicator slug Allowed values: average_hourly_earnings, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, credit_growth, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, net_foreign_asset_position, non_farm_payrolls, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, risk_free_rate, secondary_income_balance, services_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-01-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"series_mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(raw|canonical)$","description":"Optional series rendering mode. `canonical` applies configured remap rules (for continuity across methodology transitions). `raw` returns the direct indicator series without remapping.","examples":["raw"],"default":"raw","title":"Series Mode"},"description":"Optional query parameter. Optional series rendering mode. `canonical` applies configured remap rules (for continuity across methodology transitions). `raw` returns the direct indicator series without remapping."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of rows to return in `data[]`. Rows are ordered most-recent-first, so `limit=10` returns the 10 most recent observations within the requested window. Use together with `offset` to page through long histories. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum number of rows to return in `data[]`. Rows are ordered most-recent-first, so `limit=10` returns the 10 most recent observations within the requested window. Use together with `offset` to page through long histories. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip from the start of `data[]` (after most-recent-first ordering). Use with `limit` for pagination. Defaults to 0.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip from the start of `data[]` (after most-recent-first ordering). Use with `limit` for pagination. Defaults to 0."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number for callers that prefer page-based pagination. When supplied, `offset` is derived as `(page - 1) * limit`.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number for callers that prefer page-based pagination. When supplied, `offset` is derived as `(page - 1) * limit`."},{"name":"seasonality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional seasonal adjustment selector. Supported public values are `sa` and `nsa`; check `supported_options.seasonality` in the response/catalogue for values available on this endpoint.","examples":["sa"],"title":"Seasonality","enum":["sa","nsa"],"example":"sa"},"description":"Optional query parameter. Optional seasonal adjustment selector. Supported public values are `sa` and `nsa`; check `supported_options.seasonality` in the response/catalogue for values available on this endpoint. Allowed values: sa, nsa."},{"name":"frequency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional returned change basis. Supported public values are `level`, `yoy`, `qoq`, and `mom`; check `supported_options.frequency` for values available on this endpoint.","examples":["yoy"],"title":"Frequency","enum":["level","yoy","qoq","mom"],"example":"level"},"description":"Optional query parameter. Optional returned change basis. Supported public values are `level`, `yoy`, `qoq`, and `mom`; check `supported_options.frequency` for values available on this endpoint. Allowed values: level, yoy, qoq, mom."},{"name":"revisions","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional revision view. Supported public values are `latest`, `first`, `final`, and `all`; unsupported views return `unsupported_series_option` with supported values.","examples":["latest"],"default":"latest","title":"Revisions","enum":["latest","first","final","all"],"example":"latest"},"description":"Optional query parameter. Optional revision view. Supported public values are `latest`, `first`, `final`, and `all`; unsupported views return `unsupported_series_option` with supported values. Allowed values: latest, first, final, all."},{"name":"basis","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional real/nominal selector. Supported public values are `real` and `nominal`; only endpoints with known basis metadata accept it.","examples":["real"],"title":"Basis","enum":["real","nominal"],"example":"real"},"description":"Optional query parameter. Optional real/nominal selector. Supported public values are `real` and `nominal`; only endpoints with known basis metadata accept it. Allowed values: real, nominal."},{"name":"official_only","in":"query","required":false,"schema":{"type":"boolean","description":"When true, return only official-source rows and remove explicit fallback observations. Prohibited private aggregator rows are always removed regardless of this setting.","examples":[true],"default":true,"title":"Official Only"},"description":"Optional query parameter. When true, return only official-source rows and remove explicit fallback observations. Prohibited private aggregator rows are always removed regardless of this setting."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Normalized macro series for one currency and indicator.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementResponse"},"example":{"currency":"USD","indicator":"inflation","has_official_forecast":false,"start_date":"2025-01-01","end_date":"2026-03-01","earliest_available_date":"2025-01-01","latest_available_date":"2026-02-28","pagination":{"limit":20,"offset":0,"returned_count":2,"total_count":2,"has_more":false},"cb_target":{"description":"Federal Reserve inflation objective (2% goal is defined on PCE, not CPI)","source":"Federal Reserve Statement on Longer-Run Goals and Monetary Policy Strategy","current":{"effective_from":"2020-08-27","target":2.0,"notes":"Flexible Average Inflation Targeting (FAIT) adopted; 2% goal is defined on PCE"},"history":[{"effective_from":"2012-01-25","target":2.0,"notes":"First explicit 2% inflation goal announced by FOMC (defined on the PCE price index)"},{"effective_from":"2020-08-27","target":2.0,"notes":"Flexible Average Inflation Targeting (FAIT) adopted; 2% goal is defined on PCE"}]},"data":[{"date":"2026-01-31","val":2.9,"val_mom":0.5,"announcement_datetime":1769754600,"announcement_datetime_local":"2026-01-30T08:30:00-05:00","pct_change":0.2},{"date":"2026-02-28","val":3.0,"val_mom":0.2,"announcement_datetime":1772433000,"announcement_datetime_local":"2026-03-01T08:30:00-05:00","pct_change":0.1}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"indicator_by_currency":{"AUD":["building_approvals","business_confidence","capital_account_balance","cb_assets","commodity_prices","consumer_confidence","core_inflation","credit_growth","current_account_balance","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","house_price_index","imports","inflation","inflation_linked_bond","international_assets","international_liabilities","monthly_cpi","net_foreign_asset_position","part_time_employment","participation_rate","policy_rate","ppi","primary_income_balance","risk_free_rate","secondary_income_balance","services_balance","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"BRL":["foreign_reserves","gdp","inflation","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"CAD":["building_permits","business_confidence","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","consumer_confidence","core_inflation","core_inflation_median","core_inflation_trim","current_account_balance","employment","full_time_employment","gdp","gdp_quarterly","gov_bond_10y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_5y","gov_bond_7y","household_credit","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"CHF":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_4y","gov_bond_5y","inflation","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","sight_deposits","trade_weighted_index","unemployment"],"CNH":["business_confidence","cb_assets","core_inflation","current_account_balance","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"CNY":["business_confidence","cb_assets","core_inflation","current_account_balance","foreign_reserves","gdp","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","policy_rate","ppi","retail_sales","risk_free_rate","trade_weighted_index","unemployment"],"DKK":["gov_bond_10y","inflation","inflation_mom","risk_free_rate","trade_weighted_index"],"EUR":["balance_on_goods","balance_on_services","breakeven_inflation_rate","business_confidence","consumer_confidence","core_inflation","core_inflation_mom","current_account_balance","employment","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","inflation_mom","m1","m2","m3","part_time_employment","participation_rate","policy_rate","policy_rate_mlf","policy_rate_mro","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment"],"GBP":["consumer_confidence","core_inflation","employment","exports","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_3y","gov_bond_5y","imports","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","ppi","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"JPY":["business_confidence","cb_assets","consumer_confidence","core_inflation","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_5y","gov_bond_7y","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"NGN":["cb_assets","deposit_rates","foreign_reserves","policy_rate","risk_free_rate"],"NOK":["business_confidence","gov_bond_10y","gov_bond_2y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"NZD":["cb_assets","core_inflation","dairy_exports","deposit_rates","employment","foreign_reserves","full_time_employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","inflation_linked_bond","part_time_employment","participation_rate","policy_rate","risk_free_rate","terms_of_trade","trade_weighted_index","unemployment"],"PEN":["foreign_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","risk_free_rate","trade_weighted_index"],"SEK":["employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_5y","inflation","participation_rate","policy_rate","risk_free_rate","trade_weighted_index","unemployment"],"THB":["current_account_balance","employment","gdp","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation","m1","m2","participation_rate","policy_rate","ppi","risk_free_rate","trade_balance","unemployment"],"USD":["average_hourly_earnings","breakeven_inflation_rate","building_permits","business_confidence","cb_assets","consumer_confidence","core_inflation","core_inflation_mom","core_pce","current_account_balance","durable_goods_orders","employment","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gold_reserves","gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","government_debt","house_price_index","housing_starts","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","job_openings","nairu","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_target_lower","ppi","ppi_mom","retail_sales","risk_free_rate","trade_balance","trade_weighted_index","unemployment","wages"],"ILS":["gov_bond_10y","gov_bond_2y","gov_bond_3y","gov_bond_5y","inflation_linked_bond","policy_rate","risk_free_rate","trade_weighted_index"]},"seasonality":["sa","nsa"],"frequency":["level","yoy","qoq","mom"],"revisions":["latest","first","final","all"],"basis":["real","nominal"]}}},"/v1/cot/{currency}":{"get":{"tags":["fx_markets"],"summary":"Get CFTC Commitment of Traders (COT) data","description":"Returns weekly CFTC Legacy Futures-Only COT report data for the specified currency's FX futures contract.\n\n**Supported currencies:** AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU\n\n**Path Parameters:**\n- `currency`: 3-letter currency code (e.g., EUR, GBP, JPY).\n\n**Query Parameters:**\n- `start_date`: Optional. Start date YYYY-MM-DD. Defaults to 52 weeks ago.\n- `end_date`: Optional. End date YYYY-MM-DD. Defaults to today.\n\n**Authentication:** USD data is publicly available, but anonymous callers are limited to the most recent 365 days; an earlier `start_date` is clamped automatically. All other currencies require a professional API key supplied via `?api_key=<key>` or the `X-API-Key` header. Authenticated callers (any valid key) receive the full requested history for every currency.\n\n**Data source:** CFTC public API — https://publicreporting.cftc.gov/resource/6dca-aqww.json","operationId":"get_cot_data_v1_cot__currency__get","parameters":[{"name":"currency","in":"path","required":true,"schema":{"type":"string","title":"Currency","enum":["AUD","CAD","CHF","EUR","GBP","HUF","JPY","MXN","NZD","TRY","USD","XAU"],"example":"AUD"},"description":"Required path parameter. Allowed values: AUD, CAD, CHF, EUR, GBP, HUF, JPY, MXN, NZD, TRY, USD, XAU."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-09-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"COT report history for the selected futures market.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/COTResponse"},"example":{"currency":"JPY","instrument":"JAPANESE YEN - CHICAGO MERCANTILE EXCHANGE","source":"CFTC public reporting API","source_url":"https://publicreporting.cftc.gov/resource/6dca-aqww.json","fx_overlay":{"pair":"USD/JPY"},"start_date":"2025-09-01","end_date":"2026-03-01","data":[{"date":"2026-02-24","announcement_datetime":1771996800,"open_interest":245678,"noncommercial_long":62400,"noncommercial_short":70420,"noncommercial_net":-8020}]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","CAD","CHF","EUR","GBP","HUF","JPY","MXN","NZD","TRY","USD","XAU"]}}},"/v1/commodities/latest":{"get":{"tags":["commodities"],"summary":"Get latest stored values for all commodity indicators","operationId":"get_all_commodity_latest_values_v1_commodities_latest_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/commodities/{indicator}":{"get":{"tags":["commodities"],"summary":"Get commodity indicator data","description":"Returns a time-series of commodity and energy price data from official sources.\n\n**Supported indicators:** `gold`, `natural_gas`, `oil_brent`, `oil_wti`, `platinum`, `silver`.\n\nUse the supported-indicator list above as the authoritative contract; feature-flagged development indicators are not shown or served in production.\n\n**Precious metals** — sourced from The Royal Mint public chart API (https://www.royalmint.com/).\n\n- **Gold** (`gold`): LBMA PM Fix, USD/troy oz.\n- **Silver** (`silver`): LBMA Silver Fix, USD/troy oz.\n- **Platinum** (`platinum`): Spot price, USD/troy oz.\n\n**Energy** — sourced from the U.S. Energy Information Administration (https://api.eia.gov/v2/).\n\n- **WTI crude oil** (`oil_wti`): Cushing, OK spot price, USD/barrel.\n- **Brent crude oil** (`oil_brent`): Europe spot price, USD/barrel.\n- **Natural gas** (`natural_gas`): Henry Hub spot price, USD/MMBtu.\n\n**Query Parameters:**\n- `start_date`: Earliest date to include (YYYY-MM-DD). Defaults to 365 days ago.\n- `end_date`: Latest date to include (YYYY-MM-DD). Defaults to today.\n\n**Authentication:** A professional API key is required. Supply it via `?api_key=<key>` or the `X-API-Key` header.","operationId":"get_commodity_indicator_data_v1_commodities__indicator__get","parameters":[{"name":"indicator","in":"path","required":true,"schema":{"type":"string","description":"Commodity indicator slug","examples":["oil_wti"],"title":"Indicator","enum":["gold","natural_gas","oil_brent","oil_wti","platinum","silver"],"example":"gold"},"description":"Required path parameter. Commodity indicator slug Allowed values: gold, natural_gas, oil_brent, oil_wti, platinum, silver."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","description":"Start date YYYY-MM-DD","examples":["2025-01-01"],"title":"Start Date"},"description":"Optional query parameter. Start date YYYY-MM-DD"},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","description":"End date YYYY-MM-DD","examples":["2026-03-01"],"title":"End Date"},"description":"Optional query parameter. End date YYYY-MM-DD"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum rows to return. Defaults to 20. Maximum 100.","examples":[20],"default":20,"title":"Limit"},"description":"Optional query parameter. Maximum rows to return. Defaults to 20. Maximum 100."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of rows to skip after most-recent-first ordering.","examples":[0],"default":0,"title":"Offset"},"description":"Optional query parameter. Number of rows to skip after most-recent-first ordering."},{"name":"page","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"One-based page number. When supplied, it takes precedence over offset.","examples":[1],"title":"Page"},"description":"Optional query parameter. One-based page number. When supplied, it takes precedence over offset."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string","description":"Your Professional API key","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Time-series data for the requested commodity indicator.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommodityResponse"},"example":{"currency":"COMM","indicator":"gold","source":"The Royal Mint / LBMA","source_url":"https://www.royalmint.com/","has_official_forecast":false,"start_date":"2025-03-15","end_date":"2026-03-15","data":[{"date":"2026-01-31","val":2835.5,"pct_change":1.8,"pct_change_12m":28.5},{"date":"2026-02-28","val":2870.0,"pct_change":1.2,"pct_change_12m":30.1}]}}}},"404":{"description":"Unsupported commodity indicator.","content":{"application/json":{"example":{"detail":"Unsupported commodity indicator (xyz)"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"indicator":["gold","natural_gas","oil_brent","oil_wti","platinum","silver"]}}},"/v1/announcements/changes":{"get":{"tags":["announcements"],"summary":"Poll recent live announcement release changes","description":"Returns recent live announcement release events from the same durable fanout used by the real-time SSE stream. Use `next_cursor` as the `since` value on the next poll. This endpoint is intended for serverless clients that cannot hold a persistent SSE connection.\n\n**Authentication:** USD events are available without an API key. Non-USD currencies require a paid API key supplied via `api_key` or `X-API-Key`.\n\n**Retention:** Events are retained for the configured fanout window, currently exposed in `retention_seconds`. If a client is offline longer than that window, re-bootstrap from `/v1/announcements/{currency}/latest` and continue polling changes.","operationId":"get_announcement_changes_v1_announcements_changes_get","parameters":[{"name":"currencies","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated currency codes, `g10`, or `all`. Without a paid API key the result is restricted to USD.","examples":["g10"],"title":"Currencies"},"description":"Optional query parameter. Comma-separated currency codes, `g10`, or `all`. Without a paid API key the result is restricted to USD."},{"name":"indicators","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional comma-separated announcement indicator slugs.","examples":["inflation,unemployment"],"title":"Indicators","enum":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Optional comma-separated announcement indicator slugs. Allowed values: average_hourly_earnings, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, credit_growth, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, net_foreign_asset_position, non_farm_payrolls, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, risk_free_rate, secondary_income_balance, services_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cursor returned as `next_cursor` by the previous response. ISO 8601 timestamps and Unix epoch seconds are also accepted.","title":"Since"},"description":"Optional query parameter. Cursor returned as `next_cursor` by the previous response. ISO 8601 timestamps and Unix epoch seconds are also accepted."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Maximum number of matching change events to return.","default":100,"title":"Limit"},"description":"Optional query parameter. Maximum number of matching change events to return."},{"name":"payload","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Use `compact` for trigger payloads or `full` for row fields.","default":"compact","title":"Payload","enum":["compact","full"],"example":"compact"},"description":"Optional query parameter. Use `compact` for trigger payloads or `full` for row fields. Allowed values: compact, full."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementChangesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"payload":["compact","full"]}}},"/v1/stream/events":{"get":{"tags":["announcements"],"summary":"Subscribe to real-time announcement events (SSE)","description":"Opens a long-lived Server-Sent Events (SSE) stream.  A new event is pushed to all connected clients whenever an economic data release is ingested.\n\nThe stream payload contains event metadata and a single `latest_announcement` datapoint (`date`, `val`, `announcement_datetime`) when available.  It does not include the full time-series; fetch complete history from the matching announcements endpoint after receiving an event.\n\n**Authentication:** USD events are delivered without an API key.  All other currencies require a valid Professional API key supplied via the ``api_key`` query parameter or the ``X-API-Key`` header.\n\n**Reconnection:** Pass the ``Last-Event-ID`` header (the ``event_id`` of the last received event) to replay buffered events on reconnect.\n\n**Filtering:** Use ``currencies`` and ``indicators`` to narrow the stream.  Omit either parameter to receive all events allowed by your plan tier.\n\n**Payloads:** ``payload=compact`` is the default.  ``payload=full`` adds the latest stored announcement row fields directly to each event.","operationId":"stream_events_v1_stream_events_get","parameters":[{"name":"currencies","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated currency codes to subscribe to, e.g. ``usd,eur``. Omit to receive all events allowed by your plan.","title":"Currencies"},"description":"Optional query parameter. Comma-separated currency codes to subscribe to, e.g. ``usd,eur``. Omit to receive all events allowed by your plan."},{"name":"indicators","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated indicator slugs, e.g. ``inflation,gdp``. Omit to receive all indicators.","title":"Indicators","enum":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"example":"average_hourly_earnings"},"description":"Optional query parameter. Comma-separated indicator slugs, e.g. ``inflation,gdp``. Omit to receive all indicators. Allowed values: average_hourly_earnings, balance_on_goods, balance_on_services, breakeven_inflation_rate, building_approvals, building_permits, business_confidence, capital_account_balance, cb_assets, commodity_price_energy, commodity_price_ex_energy, commodity_price_index, commodity_prices, consumer_confidence, core_inflation, core_inflation_median, core_inflation_mom, core_inflation_trim, core_pce, credit_growth, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, gdp, gdp_growth_q4_yoy, gdp_growth_qoq_saar, gdp_quarterly, gold_reserves, gov_bond_10y, gov_bond_1y, gov_bond_20y, gov_bond_2y, gov_bond_30y, gov_bond_3y, gov_bond_40y, gov_bond_4y, gov_bond_5y, gov_bond_7y, government_debt, house_price_index, household_credit, housing_starts, imports, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, monthly_cpi, nairu, net_foreign_asset_position, non_farm_payrolls, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, ppi_mom, primary_income_balance, retail_sales, risk_free_rate, secondary_income_balance, services_balance, sight_deposits, terms_of_trade, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Your Professional API key.","title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."},{"name":"payload","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Event payload shape. Use `compact` for the stable trigger payload or `full` to flatten the latest announcement row into each event.","default":"compact","title":"Payload","enum":["compact","full"],"example":"compact"},"description":"Optional query parameter. Event payload shape. Use `compact` for the stable trigger payload or `full` to flatten the latest announcement row into each event. Allowed values: compact, full."},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Streaming SSE response.","content":{"text/event-stream":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-parameter-availability":{"currency":["AUD","BRL","CAD","CHF","CNH","CNY","DKK","EUR","GBP","ILS","JPY","NGN","NOK","NZD","PEN","SEK","THB","USD"],"indicator":["average_hourly_earnings","balance_on_goods","balance_on_services","breakeven_inflation_rate","building_approvals","building_permits","business_confidence","capital_account_balance","cb_assets","commodity_price_energy","commodity_price_ex_energy","commodity_price_index","commodity_prices","consumer_confidence","core_inflation","core_inflation_median","core_inflation_mom","core_inflation_trim","core_pce","credit_growth","current_account_balance","dairy_exports","deposit_rates","durable_goods_orders","employment","exports","financial_account_balance","foreign_reserves","full_time_employment","gdp","gdp_growth_q4_yoy","gdp_growth_qoq_saar","gdp_quarterly","gold_reserves","gov_bond_10y","gov_bond_1y","gov_bond_20y","gov_bond_2y","gov_bond_30y","gov_bond_3y","gov_bond_40y","gov_bond_4y","gov_bond_5y","gov_bond_7y","government_debt","house_price_index","household_credit","housing_starts","imports","inflation","inflation_linked_bond","inflation_mom","initial_jobless_claims","international_assets","international_liabilities","job_openings","m1","m2","m3","monthly_cpi","nairu","net_foreign_asset_position","non_farm_payrolls","part_time_employment","participation_rate","pce","pce_mom","policy_rate","policy_rate_mlf","policy_rate_mro","policy_rate_target_lower","ppi","ppi_mom","primary_income_balance","retail_sales","risk_free_rate","secondary_income_balance","services_balance","sight_deposits","terms_of_trade","trade_balance","trade_weighted_index","trimmed_mean_inflation","unemployment","wage_price_index","wages"],"payload":["compact","full"]}}},"/v1/webhooks/subscriptions":{"post":{"tags":["webhooks"],"summary":"Create a webhook subscription","operationId":"create_webhook_subscription_v1_webhooks_subscriptions_post","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Webhook Subscription V1 Webhooks Subscriptions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["webhooks"],"summary":"List webhook subscriptions","operationId":"list_webhook_subscriptions_v1_webhooks_subscriptions_get","parameters":[{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Webhook Subscriptions V1 Webhooks Subscriptions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/subscriptions/{subscription_id}":{"get":{"tags":["webhooks"],"summary":"Get a webhook subscription","operationId":"get_webhook_subscription_v1_webhooks_subscriptions__subscription_id__get","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Subscription Id"},"description":"Required path parameter."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Webhook Subscription V1 Webhooks Subscriptions  Subscription Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["webhooks"],"summary":"Update a webhook subscription","operationId":"update_webhook_subscription_v1_webhooks_subscriptions__subscription_id__patch","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Subscription Id"},"description":"Required path parameter."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Webhook Subscription V1 Webhooks Subscriptions  Subscription Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["webhooks"],"summary":"Delete a webhook subscription","operationId":"delete_webhook_subscription_v1_webhooks_subscriptions__subscription_id__delete","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Subscription Id"},"description":"Required path parameter."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Webhook Subscription V1 Webhooks Subscriptions  Subscription Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/subscriptions/{subscription_id}/rotate-secret":{"post":{"tags":["webhooks"],"summary":"Rotate a webhook signing secret","operationId":"rotate_webhook_secret_v1_webhooks_subscriptions__subscription_id__rotate_secret_post","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","title":"Subscription Id"},"description":"Required path parameter."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rotate Webhook Secret V1 Webhooks Subscriptions  Subscription Id  Rotate Secret Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/deliveries":{"get":{"tags":["webhooks"],"summary":"List webhook delivery logs","operationId":"list_webhook_deliveries_v1_webhooks_deliveries_get","parameters":[{"name":"subscription_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Id"},"description":"Optional query parameter."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"},"description":"Optional query parameter."},{"name":"api_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Webhook Deliveries V1 Webhooks Deliveries Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/graphql":{"get":{"tags":["graphql"],"summary":"Handle Http Get","operationId":"handle_http_get_v1_graphql_get","responses":{"200":{"description":"The GraphiQL integrated development environment.","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found if GraphiQL or query via GET are not enabled."}}},"post":{"tags":["graphql"],"summary":"Handle Http Post","operationId":"handle_http_post_v1_graphql_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp":{"post":{"tags":["mcp"],"summary":"FXMacroData MCP endpoint","description":"Streamable HTTP endpoint for the FXMacroData MCP server. Use this path for MCP tool execution and resource access.","responses":{"200":{"description":"MCP response stream or tool result."}}}},"/v1/ws/events":{"get":{"tags":["websocket"],"summary":"Subscribe to real-time announcement events (WebSocket)","description":"WebSocket upgrade endpoint for FXMacroData real-time announcement events. Connect to `wss://api.fxmacrodata.com/v1/ws/events` for JSON messages that mirror the SSE release-event stream. USD events are available without a key; non-USD currencies require a Professional API key supplied with the `api_key` query parameter or `X-API-Key` header.","parameters":[{"name":"currencies","in":"query","required":false,"schema":{"type":"string","example":"usd,eur"},"description":"Optional query parameter. Comma-separated currency codes to subscribe to. Omit to receive every currency available to your plan."},{"name":"indicators","in":"query","required":false,"schema":{"type":"string","example":"inflation,policy_rate"},"description":"Optional query parameter. Comma-separated indicator slugs. Omit to receive every indicator available to your plan."},{"name":"payload","in":"query","required":false,"schema":{"type":"string","enum":["compact","full"],"default":"compact"},"description":"Optional query parameter. Event payload shape. Use compact for trigger events or full to include the latest stored announcement row fields."},{"name":"last_event_id","in":"query","required":false,"schema":{"type":"string"},"description":"Optional query parameter. Last processed event_id. The server replays buffered events published after this ID when available."},{"name":"api_key","in":"query","required":false,"schema":{"type":"string"},"description":"Optional query API key. Recommended for public examples and required for non-USD, paid-only, or full-history requests. The API also accepts the X-API-Key header for server-side clients."}],"responses":{"101":{"description":"WebSocket protocol upgrade accepted."}}}}},"components":{"schemas":{"AnnouncementChangeEvent":{"properties":{"event_id":{"type":"string","title":"Event Id"},"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"records_written":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Records Written"},"timestamp":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timestamp"},"latest_announcement":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Latest Announcement"}},"additionalProperties":true,"type":"object","required":["event_id","currency","indicator"],"title":"AnnouncementChangeEvent"},"AnnouncementChangesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AnnouncementChangeEvent"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"},"next_cursor":{"type":"string","title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More"},"retention_seconds":{"type":"integer","title":"Retention Seconds"},"scope":{"additionalProperties":true,"type":"object","title":"Scope"}},"type":"object","required":["data","count","next_cursor","has_more","retention_seconds","scope"],"title":"AnnouncementChangesResponse"},"AnnouncementDataPoint":{"properties":{"announcement_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Id"},"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"original_val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Original Val"},"original_unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Unit"},"val_mom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val Mom"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"announcement_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Local"},"official_planned_release_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Official Planned Release Datetime"},"official_planned_release_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Official Planned Release Datetime Local"},"official_actual_release_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Official Actual Release Datetime"},"official_actual_release_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Official Actual Release Datetime Local"},"collected_at_ns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Collected At Ns"},"collected_at_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collected At Iso"},"ingestion_latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ingestion Latency Ms"},"ingestion_latency_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ingestion Latency Reference"},"pct_change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change"},"pct_change_12m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change 12M"},"revisions":{"anyOf":[{"items":{"$ref":"#/components/schemas/RevisionEntry"},"type":"array"},{"type":"null"}],"title":"Revisions"}},"additionalProperties":true,"type":"object","required":["date"],"title":"AnnouncementDataPoint"},"AnnouncementPredictions":{"properties":{"announcement_id":{"type":"string","title":"Announcement Id","description":"Stable identifier of the announcement these predictions target, in the form ``{currency}_{indicator}_{date}``.","examples":["usd_inflation_2026-01-31"]},"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"date":{"type":"string","title":"Date","description":"Reference period date of the forecast, ``YYYY-MM-DD``."},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime","description":"Release timestamp of the forecasted announcement, Unix epoch seconds (UTC)."},"announcement_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Local","description":"ISO 8601 release time with timezone offset, rendered in the currency's market timezone."},"announcement_timing":{"anyOf":[{"type":"string","enum":["past","future"]},{"type":"null"}],"title":"Announcement Timing","description":"Whether the forecasted announcement is still upcoming (`future`) or already released (`past`)."},"predictions":{"items":{"$ref":"#/components/schemas/PredictionItem"},"type":"array","title":"Predictions","description":"List of forecasts for this announcement, one entry per prediction source.  Sorted by ``prediction_source`` for deterministic output."}},"type":"object","required":["announcement_id","currency","indicator","date"],"title":"AnnouncementPredictions","description":"All available forecasts targeting a single announcement.\n\n``announcement_id`` matches the value surfaced on the corresponding\nrow in ``/v1/announcements/{currency}/{indicator}``, allowing clients\nto join predictions with realised observations.  ``predictions``\ncontains one sub-entry per source (e.g. central-bank projection,\nIMF WEO, market consensus survey, FXMacroData prediction)."},"AnnouncementResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"value_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Name"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Series Id"},"source_series_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Series Name"},"source_local_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Local Name"},"seasonal_adjustment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seasonal Adjustment"},"price_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Basis"},"is_proxy":{"type":"boolean","title":"Is Proxy","default":false},"proxy_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy Note"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"},"policy_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Role"},"policy_structure":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Structure"},"comparison_compatible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Comparison Compatible"},"policy_family":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyFamilyEntry"},"type":"array"},{"type":"null"}],"title":"Policy Family"},"has_official_forecast":{"type":"boolean","title":"Has Official Forecast"},"requested_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Start Date"},"requested_end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested End Date"},"requested_window_has_data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Has Data"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"earliest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Earliest Available Date"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"cb_target":{"anyOf":[{"$ref":"#/components/schemas/CBTargetInfo"},{"type":"null"}]},"remap":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Remap"},"filters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filters"},"selected_series_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Selected Series Id"},"selected_series":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Selected Series"},"supported_options":{"anyOf":[{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},{"type":"null"}],"title":"Supported Options"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"},"data":{"items":{"$ref":"#/components/schemas/AnnouncementDataPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","indicator","has_official_forecast","start_date","end_date","data_quality","pagination","data"],"title":"AnnouncementResponse"},"Body_oauth_token_oauth_token_post":{"properties":{"grant_type":{"type":"string","title":"Grant Type","examples":["authorization_code"]},"code":{"type":"string","title":"Code","examples":["auth_code_from_authorize_endpoint"]},"redirect_uri":{"type":"string","title":"Redirect Uri","examples":["https://claude.ai/api/mcp/auth_callback"]},"client_id":{"type":"string","title":"Client Id","examples":["claude-connector"]},"code_verifier":{"type":"string","title":"Code Verifier","examples":["pkce-verifier-value"]},"resource":{"type":"string","title":"Resource","description":"Optional protected resource identifier sent by some MCP OAuth clients.","examples":["https://fxmacrodata.com"]},"client_secret":{"type":"string","title":"Client Secret","examples":["oauth-client-secret"]}},"type":"object","required":["grant_type","code","redirect_uri","client_id"],"title":"Body_oauth_token_oauth_token_post"},"CBTargetEntry":{"properties":{"effective_from":{"type":"string","title":"Effective From"},"target":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Target"},"lower":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lower"},"upper":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Upper"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["effective_from"],"title":"CBTargetEntry","description":"A single central-bank target entry valid from ``effective_from``."},"CBTargetInfo":{"properties":{"description":{"type":"string","title":"Description"},"source":{"type":"string","title":"Source"},"current":{"$ref":"#/components/schemas/CBTargetEntry"},"history":{"items":{"$ref":"#/components/schemas/CBTargetEntry"},"type":"array","title":"History"}},"type":"object","required":["description","source","current","history"],"title":"CBTargetInfo","description":"Central-bank target metadata for an indicator.\n\n``current`` is the entry effective as of the response ``end_date``.\n``history`` contains every known target regime in ascending date order."},"COTDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"}},"additionalProperties":true,"type":"object","required":["date"],"title":"COTDataPoint"},"COTLatestResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"instrument":{"type":"string","title":"Instrument"},"fx_overlay":{"additionalProperties":true,"type":"object","title":"Fx Overlay"},"source":{"type":"string","title":"Source"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"latest_available_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Available Announcement Datetime"},"expected_next_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release"},"expected_next_release_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Next Release Epoch"},"last_sync_status":{"type":"string","title":"Last Sync Status"},"last_sync_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Datetime"},"data_lag_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Lag Days"},"next_expected_cftc_report_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Report Date"},"next_expected_cftc_release_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Release Date"},"expected_next_release_holiday_adjusted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Next Release Holiday Adjusted"},"expected_next_release_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source"},"expected_next_release_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source Url"},"expected_next_release_schedule_storage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Storage"},"expected_next_release_schedule_last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Last Updated"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"latest":{"$ref":"#/components/schemas/COTDataPoint"},"previous":{"anyOf":[{"$ref":"#/components/schemas/COTDataPoint"},{"type":"null"}]},"pct_diff_prev":{"additionalProperties":true,"type":"object","title":"Pct Diff Prev"}},"additionalProperties":true,"type":"object","required":["currency","instrument","fx_overlay","source","last_sync_status","data_quality","latest","pct_diff_prev"],"title":"COTLatestResponse"},"COTResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"instrument":{"type":"string","title":"Instrument"},"source":{"type":"string","title":"Source"},"source_url":{"type":"string","title":"Source Url"},"provenance":{"additionalProperties":true,"type":"object","title":"Provenance"},"fx_overlay":{"additionalProperties":true,"type":"object","title":"Fx Overlay"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"latest_available_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Available Announcement Datetime"},"expected_next_release":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release"},"expected_next_release_epoch":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Next Release Epoch"},"last_sync_status":{"type":"string","title":"Last Sync Status"},"last_sync_datetime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Sync Datetime"},"data_lag_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Lag Days"},"next_expected_cftc_report_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Report Date"},"next_expected_cftc_release_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Expected Cftc Release Date"},"expected_next_release_holiday_adjusted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Expected Next Release Holiday Adjusted"},"expected_next_release_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source"},"expected_next_release_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Source Url"},"expected_next_release_schedule_storage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Storage"},"expected_next_release_schedule_last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Next Release Schedule Last Updated"},"requested_window_has_data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Has Data"},"requested_window_latest_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Window Latest Date"},"requested_window_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requested Window Includes Latest Available"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/COTDataPoint"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["currency","instrument","source","source_url","provenance","fx_overlay","start_date","end_date","last_sync_status","data_quality","pagination","data"],"title":"COTResponse"},"CalendarReleaseRow":{"properties":{"announcement_datetime":{"type":"integer","title":"Announcement Datetime"},"release":{"type":"string","title":"Release"},"announcement_datetime_utc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Utc"},"announcement_datetime_local":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Local"},"announcement_datetime_requested_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcement Datetime Requested Timezone"},"release_date_confirmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Release Date Confirmed"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"additionalProperties":true,"type":"object","required":["announcement_datetime","release"],"title":"CalendarReleaseRow"},"CalendarResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"requested_timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requested Timezone"},"indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indicator"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/CalendarReleaseRow"},"type":"array","title":"Data"}},"additionalProperties":true,"type":"object","required":["currency","data_quality","data"],"title":"CalendarResponse"},"CommodityDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"pct_change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change"},"pct_change_12m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pct Change 12M"}},"additionalProperties":true,"type":"object","required":["date"],"title":"CommodityDataPoint"},"CommodityResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"indicator":{"type":"string","title":"Indicator"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"},"has_official_forecast":{"type":"boolean","title":"Has Official Forecast"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/CommodityDataPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","indicator","has_official_forecast","data_quality","start_date","end_date","pagination","data"],"title":"CommodityResponse"},"CurveNodePoint":{"properties":{"indicator":{"type":"string","title":"Indicator"},"maturity":{"type":"string","title":"Maturity"},"date":{"type":"string","title":"Date"},"val":{"type":"number","title":"Val"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"}},"type":"object","required":["indicator","maturity","date","val"],"title":"CurveNodePoint"},"CurveProxyPoint":{"properties":{"label":{"type":"string","title":"Label"},"short_maturity":{"type":"string","title":"Short Maturity"},"long_maturity":{"type":"string","title":"Long Maturity"},"short_indicator":{"type":"string","title":"Short Indicator"},"long_indicator":{"type":"string","title":"Long Indicator"},"short_val":{"type":"number","title":"Short Val"},"long_val":{"type":"number","title":"Long Val"},"slope":{"type":"number","title":"Slope"},"slope_bps":{"type":"number","title":"Slope Bps"},"inverted":{"type":"boolean","title":"Inverted"},"date":{"type":"string","title":"Date"},"short_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Short Announcement Datetime"},"long_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Long Announcement Datetime"}},"type":"object","required":["label","short_maturity","long_maturity","short_indicator","long_indicator","short_val","long_val","slope","slope_bps","inverted","date"],"title":"CurveProxyPoint"},"CurveProxyResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"curve_family":{"type":"string","title":"Curve Family"},"requested_date":{"type":"string","title":"Requested Date"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"},"node_count":{"type":"integer","title":"Node Count"},"slope_count":{"type":"integer","title":"Slope Count"},"inverted_count":{"type":"integer","title":"Inverted Count"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"official_forward_source_support":{"additionalProperties":true,"type":"object","title":"Official Forward Source Support"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/CurveProxyPoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","curve_family","requested_date","node_count","slope_count","inverted_count","sources","official_forward_source_support","data_quality","data"],"title":"CurveProxyResponse"},"CurveSnapshotResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"curve_family":{"type":"string","title":"Curve Family"},"metric":{"type":"string","title":"Metric"},"requested_date":{"type":"string","title":"Requested Date"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"},"node_count":{"type":"integer","title":"Node Count"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"official_forward_source_support":{"additionalProperties":true,"type":"object","title":"Official Forward Source Support"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/CurveNodePoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","curve_family","metric","requested_date","node_count","sources","official_forward_source_support","data_quality","data"],"title":"CurveSnapshotResponse"},"DataQuality":{"properties":{"is_official":{"type":"boolean","title":"Is Official"},"is_proxy":{"type":"boolean","title":"Is Proxy"},"is_fallback":{"type":"boolean","title":"Is Fallback"},"is_stale":{"type":"boolean","title":"Is Stale"},"has_announcement_datetime":{"type":"boolean","title":"Has Announcement Datetime"},"point_in_time_safe":{"type":"boolean","title":"Point In Time Safe"},"latest_available_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Available Date"},"last_updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Updated"},"data_lag_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Lag Days"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Name"},"source_type":{"type":"string","enum":["official","public","fallback","derived"],"title":"Source Type"},"is_derived":{"type":"boolean","title":"Is Derived","default":false},"row_count":{"type":"integer","title":"Row Count","default":0},"announcement_datetime_count":{"type":"integer","title":"Announcement Datetime Count","default":0},"missing_announcement_datetime_count":{"type":"integer","title":"Missing Announcement Datetime Count","default":0},"quality_scope":{"type":"string","title":"Quality Scope","default":"full_result"},"stale_after_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stale After Days"}},"additionalProperties":true,"type":"object","required":["is_official","is_proxy","is_fallback","is_stale","has_announcement_datetime","point_in_time_safe","source_type"],"title":"DataQuality"},"ForexDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"},"announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Announcement Datetime"},"observation_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Observation Datetime"},"observation_datetime_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observation Datetime Iso"},"observation_datetime_precision":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Observation Datetime Precision"},"source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Source"},"sma_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sma 20"},"sma_50":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sma 50"},"sma_200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sma 200"},"ema_12":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 12"},"ema_20":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 20"},"ema_26":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 26"},"ema_50":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 50"},"ema_200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 200"},"rsi_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi 14"},"atr_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Atr 14"},"adx_14":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Adx 14"},"macd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macd"},"macd_signal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macd Signal"},"macd_histogram":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Macd Histogram"},"bb_upper":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bb Upper"},"bb_middle":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bb Middle"},"bb_lower":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bb Lower"}},"type":"object","required":["date"],"title":"ForexDataPoint"},"ForexResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"source":{"type":"string","title":"Source"},"provenance":{"additionalProperties":true,"type":"object","title":"Provenance"},"pair_metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Pair Metadata"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/ForexDataPoint"},"type":"array","title":"Data"},"indicators":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Indicators"},"technical_indicator_basis":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Technical Indicator Basis"}},"type":"object","required":["base","quote","source","provenance","data_quality","start_date","end_date","pagination","data"],"title":"ForexResponse"},"ForwardCurvePoint":{"properties":{"label":{"type":"string","title":"Label"},"start_maturity":{"type":"string","title":"Start Maturity"},"end_maturity":{"type":"string","title":"End Maturity"},"start_indicator":{"type":"string","title":"Start Indicator"},"end_indicator":{"type":"string","title":"End Indicator"},"start_years":{"type":"number","title":"Start Years"},"end_years":{"type":"number","title":"End Years"},"horizon_years":{"type":"number","title":"Horizon Years"},"date":{"type":"string","title":"Date"},"val":{"type":"number","title":"Val"},"val_bps":{"type":"number","title":"Val Bps"},"start_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Announcement Datetime"},"end_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Announcement Datetime"}},"type":"object","required":["label","start_maturity","end_maturity","start_indicator","end_indicator","start_years","end_years","horizon_years","date","val","val_bps"],"title":"ForwardCurvePoint"},"ForwardCurveResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"curve_family":{"type":"string","title":"Curve Family"},"method":{"type":"string","title":"Method"},"requested_date":{"type":"string","title":"Requested Date"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"},"node_count":{"type":"integer","title":"Node Count"},"segment_count":{"type":"integer","title":"Segment Count"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"official_forward_source_support":{"additionalProperties":true,"type":"object","title":"Official Forward Source Support"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/ForwardCurvePoint"},"type":"array","title":"Data"}},"type":"object","required":["currency","curve_family","method","requested_date","node_count","segment_count","sources","official_forward_source_support","data_quality","data"],"title":"ForwardCurveResponse"},"ForwardDifferentialPoint":{"properties":{"date":{"type":"string","title":"Date"},"base_forward_val":{"type":"number","title":"Base Forward Val"},"quote_forward_val":{"type":"number","title":"Quote Forward Val"},"differential":{"type":"number","title":"Differential"},"differential_bps":{"type":"number","title":"Differential Bps"},"base_start_val":{"type":"number","title":"Base Start Val"},"base_end_val":{"type":"number","title":"Base End Val"},"quote_start_val":{"type":"number","title":"Quote Start Val"},"quote_end_val":{"type":"number","title":"Quote End Val"},"base_start_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Start Announcement Datetime"},"base_end_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base End Announcement Datetime"},"quote_start_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quote Start Announcement Datetime"},"quote_end_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quote End Announcement Datetime"}},"type":"object","required":["date","base_forward_val","quote_forward_val","differential","differential_bps","base_start_val","base_end_val","quote_start_val","quote_end_val"],"title":"ForwardDifferentialPoint"},"ForwardDifferentialResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"curve_family":{"type":"string","title":"Curve Family"},"start_tenor":{"type":"string","title":"Start Tenor"},"end_tenor":{"type":"string","title":"End Tenor"},"forward_label":{"type":"string","title":"Forward Label"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"matched_points":{"type":"integer","title":"Matched Points"},"latest_differential":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Differential"},"latest_differential_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Differential Bps"},"sources":{"additionalProperties":true,"type":"object","title":"Sources"},"official_forward_source_support":{"additionalProperties":true,"type":"object","title":"Official Forward Source Support"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/ForwardDifferentialPoint"},"type":"array","title":"Data"}},"type":"object","required":["base","quote","curve_family","start_tenor","end_tenor","forward_label","start_date","end_date","matched_points","sources","official_forward_source_support","data_quality","pagination","data"],"title":"ForwardDifferentialResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PaginationInfo":{"properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"offset":{"type":"integer","title":"Offset"},"returned_count":{"type":"integer","title":"Returned Count"},"total_count":{"type":"integer","title":"Total Count"},"has_more":{"type":"boolean","title":"Has More"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"page_includes_latest_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Page Includes Latest Available"}},"type":"object","required":["offset","returned_count","total_count","has_more"],"title":"PaginationInfo"},"PolicyFamilyEntry":{"properties":{"indicator":{"type":"string","title":"Indicator"},"value_name":{"type":"string","title":"Value Name"},"role":{"type":"string","title":"Role"}},"type":"object","required":["indicator","value_name","role"],"title":"PolicyFamilyEntry"},"PredictionItem":{"properties":{"predicted_value":{"type":"number","title":"Predicted Value"},"prediction_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Type","description":"Category of forecast — one of ``market_consensus``, ``market_prediction``, ``model_nowcast``, ``survey``, ``central_bank_forecast``, ``imf_weo``, or ``fxmacrodata``."},"prediction_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Source","description":"Stable source identifier slug (e.g. ``philly_fed_spf``, ``cleveland_fed_nowcast``, ``fomc_sep``, ``atlanta_fed_gdpnow``, ``ny_fed_sme``, ``ecb_spf``, ``imf_weo``, ``rbnz_mps``, ``fxmacrodata_blended``). Use this value when filtering via the ``prediction_source`` query parameter."},"prediction_source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Source Label","description":"Human-readable name for ``prediction_source`` (e.g. \"RBA Statement on Monetary Policy (Table J1)\", \"Philadelphia Fed Survey of Professional Forecasters\", \"IMF World Economic Outlook\"). Suitable for display in UI surfaces; use ``prediction_source`` for filtering and joins."},"generated_at":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Generated At","description":"Unix epoch seconds (UTC) when this prediction was generated. Present for any prediction stored in the multi-prediction list (``predictions`` field on the announcement row). Legacy single-prediction field rows do not carry this value."},"confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence","description":"Confidence score in ``[0.0, 1.0]`` indicating how strong this prediction is. ``1.0`` is maximally confident, ``0.0`` is no confidence. When the source did not record an explicit value, a per-source default is returned (central-bank publications and official surveys score higher than the FXMacroData blended forecast). Use this to weight or filter predictions in client applications."},"prediction_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Reason","description":"Short human-readable explanation of how this prediction was derived. Currently populated for FXMacroData-generated predictions (``prediction_source=fxmacrodata_blended``); it summarises the persistence anchor, momentum/trend extrapolation, cross-indicator pressure, and any external forecast that was blended in. Other prediction sources may omit this field."}},"type":"object","required":["predicted_value"],"title":"PredictionItem","description":"A single per-source forecast inside an announcement group."},"PredictionsResponse":{"properties":{"currency":{"type":"string","title":"Currency"},"indicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Indicator"},"prediction_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Type"},"prediction_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prediction Source"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"count":{"type":"integer","title":"Count","description":"Number of announcement groups returned in ``data``.","default":0},"prediction_count":{"type":"integer","title":"Prediction Count","description":"Total number of per-source predictions across all groups.","default":0},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/AnnouncementPredictions"},"type":"array","title":"Data"}},"type":"object","required":["currency","data_quality","data"],"title":"PredictionsResponse"},"RateDifferentialPoint":{"properties":{"date":{"type":"string","title":"Date"},"base_val":{"type":"number","title":"Base Val"},"quote_val":{"type":"number","title":"Quote Val"},"spread":{"type":"number","title":"Spread"},"spread_bps":{"type":"number","title":"Spread Bps"},"base_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Base Announcement Datetime"},"quote_announcement_datetime":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quote Announcement Datetime"}},"type":"object","required":["date","base_val","quote_val","spread","spread_bps"],"title":"RateDifferentialPoint"},"RateDifferentialResponse":{"properties":{"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"measure_requested":{"type":"string","title":"Measure Requested"},"measure_used":{"type":"string","title":"Measure Used"},"base_indicator":{"type":"string","title":"Base Indicator"},"quote_indicator":{"type":"string","title":"Quote Indicator"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"matched_points":{"type":"integer","title":"Matched Points"},"unit":{"type":"string","title":"Unit"},"latest_spread":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Spread"},"latest_spread_bps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latest Spread Bps"},"base_latest":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Base Latest"},"quote_latest":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quote Latest"},"sources":{"additionalProperties":true,"type":"object","title":"Sources"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"pagination":{"additionalProperties":true,"type":"object","title":"Pagination"},"data":{"items":{"$ref":"#/components/schemas/RateDifferentialPoint"},"type":"array","title":"Data"}},"type":"object","required":["base","quote","measure_requested","measure_used","base_indicator","quote_indicator","start_date","end_date","matched_points","unit","sources","data_quality","pagination","data"],"title":"RateDifferentialResponse"},"RevisionEntry":{"properties":{"epoch":{"type":"integer","title":"Epoch"},"val":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Val"}},"type":"object","required":["epoch"],"title":"RevisionEntry","description":"A single published value for a given period, identified by release epoch.\n\n``val`` is ``Optional`` because some upstream sources publish placeholder\nrevisions (e.g. NZ DMO inflation-linked bond yields on non-trading days)\nwhere the value is NaN; those are normalised to ``None`` by\n``make_json_safe`` before serialisation."},"SeasonalityResponse":{"properties":{"instrument":{"type":"string","title":"Instrument"},"base":{"type":"string","title":"Base"},"quote":{"type":"string","title":"Quote"},"source":{"type":"string","title":"Source"},"provenance":{"additionalProperties":true,"type":"object","title":"Provenance"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"lookback_years":{"type":"integer","title":"Lookback Years"},"month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"},"data_quality":{"$ref":"#/components/schemas/DataQuality"},"data":{"items":{"$ref":"#/components/schemas/SeasonalityRow"},"type":"array","title":"Data"}},"type":"object","required":["instrument","base","quote","source","provenance","start_date","end_date","lookback_years","data_quality","data"],"title":"SeasonalityResponse"},"SeasonalityReturn":{"properties":{"year":{"type":"integer","title":"Year"},"month":{"type":"integer","title":"Month"},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"start_value":{"type":"number","title":"Start Value"},"end_value":{"type":"number","title":"End Value"},"return_pct":{"type":"number","title":"Return Pct"}},"type":"object","required":["year","month","start_date","end_date","start_value","end_value","return_pct"],"title":"SeasonalityReturn"},"SeasonalityRow":{"properties":{"month":{"type":"integer","title":"Month"},"month_name":{"type":"string","title":"Month Name"},"sample_size":{"type":"integer","title":"Sample Size"},"avg_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Return Pct"},"median_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Return Pct"},"win_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Win Rate"},"best_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Best Return Pct"},"worst_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Worst Return Pct"},"std_dev_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Std Dev Pct"},"signal":{"type":"string","title":"Signal"},"seasonality_strength":{"type":"string","title":"Seasonality Strength"},"years":{"items":{"type":"integer"},"type":"array","title":"Years"},"returns":{"items":{"$ref":"#/components/schemas/SeasonalityReturn"},"type":"array","title":"Returns"}},"type":"object","required":["month","month_name","sample_size","signal","seasonality_strength","years","returns"],"title":"SeasonalityRow"},"SummarizeRequest":{"properties":{"text":{"type":"string","title":"Text"},"max_sentences":{"type":"integer","title":"Max Sentences","default":3}},"type":"object","required":["text"],"title":"SummarizeRequest"},"SummarizeResponse":{"properties":{"summary":{"type":"string","title":"Summary"},"source":{"type":"string","title":"Source","default":"extractive"}},"type":"object","required":["summary"],"title":"SummarizeResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookSubscriptionCreate":{"properties":{"url":{"type":"string","title":"Url","description":"HTTPS endpoint that receives webhook POSTs."},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events","description":"Webhook events. Currently only `announcement` is supported."},"currencies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Currencies","description":"Optional lowercase currency filters. Empty means all currencies."},"indicators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Indicators","description":"Optional indicator slug filters. Empty means all indicators."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Optional customer label for support and operations."}},"type":"object","required":["url"],"title":"WebhookSubscriptionCreate"},"WebhookSubscriptionUpdate":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"events":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Events"},"currencies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Currencies"},"indicators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Indicators"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status","description":"Use `active` or `disabled`."}},"type":"object","title":"WebhookSubscriptionUpdate"}}},"tags":[{"name":"health","description":"Service health status endpoint."},{"name":"announcements","description":"Primary product: macroeconomic announcement time series."},{"name":"predictions","description":"Forecasts/predictions for macroeconomic announcements, linked to the unique announcement they target via ``announcement_id``. Covers market consensus, central-bank forecasts, IMF WEO, and professional-forecaster surveys."},{"name":"calendar","description":"Standalone economic and policy release calendar endpoint spanning announcements and central-bank decision timing."},{"name":"monetary_policy","description":"Central bank decisions and policy transmission: rates/yields-related announcement subset, policy rules, and central bank officials."},{"name":"news","description":"Standalone official news and press-release feeds relevant to FX."},{"name":"press_releases","description":"Official central-bank press-release archive endpoints."},{"name":"webhooks","description":"Customer webhook subscription management and delivery logs."},{"name":"commodities","description":"Commodity and energy datasets, including OPEC and planned commodity price endpoints."},{"name":"fx_markets","description":"FX market-state datasets including spot FX, market sessions, risk sentiment, and COT positioning."},{"name":"data_catalogue","description":"Cross-domain metadata index for available indicators."},{"name":"graphql","description":"GraphQL query interface for the core public data surface."},{"name":"mcp","description":"Model Context Protocol endpoint for FXMacroData tools and resources."},{"name":"websocket","description":"WebSocket endpoint for real-time FXMacroData release-event streams."}],"servers":[{"url":"/api"}]}