openapi: 3.2.0 info: title: FX Macrodata Predictions API description: Official-source macroeconomic indicators, release calendars, central-bank policy rates, FX reference rates, COT positioning and commodities across 22 currencies. USD data is available without an API key; other currencies and datasets need an `X-API-Key` header. version: 1.0.0 servers: - url: https://api.fxmacrodata.com description: FXMacroData API security: - {} - APIKeyHeader: [] - HTTPBearer: [] tags: - 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. paths: /v1/predictions/coverage: get: tags: - Predictions summary: Which forecast publishers cover which currency (no API key) description: 'Free, key-free catalogue of forecast coverage across every served currency: which publishers we carry, what class of forecast each produces, and which currencies carry a genuine consensus source. Returns no forecast values -- those require a plan. Use ``/v1/predictions/coverage/{currency}`` for per-indicator detail.' operationId: get_prediction_coverage_index_v1_predictions_coverage_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/predictions/coverage/{currency}: get: tags: - Predictions summary: Per-indicator forecast coverage for one currency (no API key) description: 'Free, key-free per-indicator catalogue for one currency: the publishers covering each indicator, the ``prediction_class`` each produces, whether any of them is a genuine consensus, and the verified archive depth where it has been confirmed. Returns no forecast values -- those require a plan.' operationId: get_prediction_coverage_for_currency_v1_predictions_coverage__currency__get parameters: - name: currency in: path required: true schema: type: string minLength: 2 maxLength: 8 title: Currency description: Required path parameter. responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/predictions/{currency}: get: tags: - Predictions summary: Page official forecast vintages from one publisher description: 'Read one explicitly named source; bare currency listings stay disabled. This path never fans out to announcement indicators. Native variables, publication precision and horizons remain those of the publisher.' operationId: get_predictions_missing_indicator_v1_predictions__currency__get parameters: - name: currency in: path required: true schema: type: string title: Currency description: Required path parameter. - name: prediction_source in: query required: false schema: anyOf: - type: string maxLength: 160 - type: 'null' description: Required publisher identifier for source-scoped native forecast history. title: Prediction Source description: Optional query parameter. Required publisher identifier for source-scoped native forecast history. - name: prediction_class in: query required: false schema: anyOf: - enum: - compiled_consensus - forecaster_survey - expectations_survey - market_implied - model_nowcast - central_bank_projection - institutional_projection - fxmacrodata type: string - type: 'null' title: Prediction Class description: Optional query parameter. - name: statistic in: query required: false schema: anyOf: - type: string maxLength: 80 - type: 'null' title: Statistic description: Optional query parameter. - name: respondent_population in: query required: false schema: anyOf: - type: string maxLength: 120 - type: 'null' title: Respondent Population description: Optional query parameter. - name: start_date in: query required: false schema: anyOf: - type: string pattern: ^\d{4}-\d{2}-\d{2}$ - type: 'null' title: Start Date description: Optional query parameter. - name: end_date in: query required: false schema: anyOf: - type: string pattern: ^\d{4}-\d{2}-\d{2}$ - type: 'null' title: End Date description: Optional query parameter. - name: variable in: query required: false schema: anyOf: - type: string maxLength: 250 - type: 'null' title: Variable description: Optional query parameter. - name: target_period in: query required: false schema: anyOf: - type: string maxLength: 160 - type: 'null' title: Target Period description: Optional query parameter. - name: publication_precision in: query required: false schema: anyOf: - enum: - exact - date - unknown type: string - type: 'null' title: Publication Precision description: Optional query parameter. - name: before_id in: query required: false schema: anyOf: - type: string maxLength: 256 - type: 'null' title: Before Id description: Optional query parameter. - name: limit in: query required: false schema: type: integer maximum: 1000 minimum: 1 default: 100 title: Limit description: Optional query parameter. responses: '200': description: Successful Response content: application/json: schema: {} '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. Each row is stamped with its original ``generated_at`` and full source provenance (real archived vintage vs FXMacroData''s own live-generated forecast, never reconstructed with later data). Per-source archive start dates and market-consensus coverage vary by indicator: see https://fxmacrodata.com/documentation/point-in-time-backtesting for the exact earliest date per source and indicator before assuming multi-year depth exists for every series. **Authentication:** this endpoint requires an API key on every currency, including USD. Anonymous callers receive 401 `api_key_required`. A 14-day free trial at https://fxmacrodata.com/subscribe opens the full history on every supported currency.' operationId: get_indicator_predictions_v1_predictions__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 - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD example: AUD description: 'Required path parameter. Allowed values: AUD, BRL, CAD, CHF, CNH, CNY, DKK, EUR, GBP, HUF, ILS, JPY, KRW, MYR, NGN, NOK, NZD, PEN, SEK, THB, TWD, USD.' - name: indicator in: path required: true schema: type: string description: Indicator slug examples: - inflation title: Indicator enum: - afe_dollar_index - average_hourly_earnings - average_hourly_earnings_mom - balance_on_goods - balance_on_services - bgcr - breakeven_inflation_rate - broad_dollar_index - broad_money - 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 - core_pce_mom - credit_growth - crude_oil_inventories - current_account_balance - dairy_exports - deposit_rates - durable_goods_orders - effr - eme_dollar_index - employment - exports - financial_account_balance - foreign_reserves - full_time_employment - fx_reserves - gdp - gdp_growth_q4_yoy - gold_reserves - gov_bond_10y - gov_bond_15y - gov_bond_1_5m - gov_bond_1m - gov_bond_1y - gov_bond_20y - gov_bond_25y - gov_bond_2m - gov_bond_2y - gov_bond_30y - gov_bond_3m - gov_bond_3y - gov_bond_40y - gov_bond_4m - gov_bond_4y - gov_bond_5y - gov_bond_6m - gov_bond_6y - gov_bond_7y - gov_bond_8y - gov_bond_9y - government_debt - house_price_index - house_prices - household_credit - household_spending - housing_starts - import_prices - imports - industrial_production - inflation - inflation_linked_bond - inflation_mom - initial_jobless_claims - international_assets - international_liabilities - job_openings - m1 - m2 - m3 - nairu - natural_gas_storage - net_foreign_asset_position - non_farm_payrolls - non_farm_payrolls_change - obfr - part_time_employment - participation_rate - pce - pce_mom - policy_rate - policy_rate_midpoint - policy_rate_mlf - policy_rate_mro - policy_rate_target_lower - ppi - primary_income_balance - productivity - real_yield_20y - real_yield_30y - real_yield_5y - real_yield_7y - retail_sales - retail_sales_control_group - retail_sales_ex_autos - retail_sales_ex_autos_and_gas - risk_free_rate - secondary_income_balance - sight_deposits - snb_balance_sheet - sofr_average_180d - sofr_average_30d - sofr_average_90d - sofr_index - terms_of_trade - tgcr - trade_balance - trade_weighted_index - trimmed_mean_inflation - unemployment - wage_price_index - wages example: afe_dollar_index description: 'Required path parameter. Indicator slug Allowed values: afe_dollar_index, average_hourly_earnings, average_hourly_earnings_mom, balance_on_goods, balance_on_services, bgcr, breakeven_inflation_rate, broad_dollar_index, broad_money, 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, core_pce_mom, credit_growth, crude_oil_inventories, current_account_balance, dairy_exports, deposit_rates, durable_goods_orders, effr, eme_dollar_index, employment, exports, financial_account_balance, foreign_reserves, full_time_employment, fx_reserves, gdp, gdp_growth_q4_yoy, gold_reserves, gov_bond_10y, gov_bond_15y, gov_bond_1_5m, gov_bond_1m, gov_bond_1y, gov_bond_20y, gov_bond_25y, gov_bond_2m, gov_bond_2y, gov_bond_30y, gov_bond_3m, gov_bond_3y, gov_bond_40y, gov_bond_4m, gov_bond_4y, gov_bond_5y, gov_bond_6m, gov_bond_6y, gov_bond_7y, gov_bond_8y, gov_bond_9y, government_debt, house_price_index, house_prices, household_credit, household_spending, housing_starts, import_prices, imports, industrial_production, inflation, inflation_linked_bond, inflation_mom, initial_jobless_claims, international_assets, international_liabilities, job_openings, m1, m2, m3, nairu, natural_gas_storage, net_foreign_asset_position, non_farm_payrolls, non_farm_payrolls_change, obfr, part_time_employment, participation_rate, pce, pce_mom, policy_rate, policy_rate_midpoint, policy_rate_mlf, policy_rate_mro, policy_rate_target_lower, ppi, primary_income_balance, productivity, real_yield_20y, real_yield_30y, real_yield_5y, real_yield_7y, retail_sales, retail_sales_control_group, retail_sales_ex_autos, retail_sales_ex_autos_and_gas, risk_free_rate, secondary_income_balance, sight_deposits, snb_balance_sheet, sofr_average_180d, sofr_average_30d, sofr_average_90d, sofr_index, terms_of_trade, tgcr, trade_balance, trade_weighted_index, trimmed_mean_inflation, unemployment, wage_price_index, wages.' - name: prediction_class in: query required: false schema: anyOf: - enum: - compiled_consensus - forecaster_survey - expectations_survey - market_implied - model_nowcast - central_bank_projection - institutional_projection - fxmacrodata type: string - type: 'null' description: 'Filter by how the forecast was produced. Prefer this over `prediction_type`: one class can span several legacy types, which is how `forecaster_survey` returns both the ECB and Philadelphia Fed Surveys of Professional Forecasters.' title: Prediction Class description: 'Optional query parameter. Filter by how the forecast was produced. Prefer this over `prediction_type`: one class can span several legacy types, which is how `forecaster_survey` returns both the ECB and Philadelphia Fed Surveys of Professional Forecasters.' - name: prediction_type in: query required: false schema: anyOf: - enum: - market_consensus - market_prediction - model_nowcast - survey - central_bank_forecast - central_bank_projection - imf_weo - oecd_eo - fxmacrodata type: string - type: 'null' description: Optional legacy prediction-type filter, retained unchanged for existing clients. Superseded by `prediction_class`. title: Prediction Type description: Optional query parameter. Optional legacy prediction-type filter, retained unchanged for existing clients. Superseded by `prediction_class`. - 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: official_limit in: query required: false schema: type: integer maximum: 2000 minimum: 0 description: Maximum rows in ``official_forecasts`` (native-period official forecasts and surveys). 0 omits them. default: 500 title: Official Limit description: Optional query parameter. Maximum rows in ``official_forecasts`` (native-period official forecasts and surveys). 0 omits them. - name: pre_release_only in: query required: false schema: type: boolean description: 'Return only forecasts with `generated_at` strictly before the linked `announcement_datetime` (default: true). FXMacroData only publishes forecasts generated before the announcement, so this flag is informational: setting it to false does not return additional rows.' default: true title: Pre Release Only description: 'Optional query parameter. Return only forecasts with `generated_at` strictly before the linked `announcement_datetime` (default: true). FXMacroData only publishes forecasts generated before the announcement, so this flag is informational: setting it to false does not return additional rows.' - name: seasonality in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional seasonal adjustment selector, matching /v1/announcements. title: Seasonality enum: - sa - nsa example: sa description: 'Optional query parameter. Optional seasonal adjustment selector, matching /v1/announcements. Allowed values: sa, nsa.' - name: frequency in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional returned change basis selector, matching /v1/announcements. title: Frequency enum: - level - yoy - qoq - mom example: level description: 'Optional query parameter. Optional returned change basis selector, matching /v1/announcements. Allowed values: level, yoy, qoq, mom.' - name: annualization in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional annualization selector, matching /v1/announcements. title: Annualization enum: - not_annualized - saar example: not_annualized description: 'Optional query parameter. Optional annualization selector, matching /v1/announcements. Allowed values: not_annualized, saar.' - name: period_aggregation in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional period aggregation selector, matching /v1/announcements. title: Period Aggregation enum: - monthly - quarterly_average example: monthly description: 'Optional query parameter. Optional period aggregation selector, matching /v1/announcements. Allowed values: monthly, quarterly_average.' - name: basis in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional real/nominal selector, matching /v1/announcements. title: Basis enum: - real - nominal example: real description: 'Optional query parameter. Optional real/nominal selector, matching /v1/announcements. Allowed values: real, nominal.' - name: start_date in: query required: false schema: anyOf: - type: string - type: 'null' description: Start date YYYY-MM-DD (period date). Defaults to 180 days before today when omitted. title: Start Date description: Optional query parameter. Start date YYYY-MM-DD (period date). Defaults to 180 days 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 90 days ahead when omitted. title: End Date description: Optional query parameter. End date YYYY-MM-DD (period date). Defaults to 90 days ahead when omitted. - 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: before_date in: query required: false schema: anyOf: - type: string - type: 'null' description: Return groups strictly before this YYYY-MM-DD period date. Use the previous response's `next_cursor` for bounded pagination. title: Before Date description: Optional query parameter. Return groups strictly before this YYYY-MM-DD period date. Use the previous response's `next_cursor` for bounded pagination. - name: as_of in: query required: false schema: anyOf: - type: string - type: 'null' title: As Of description: Optional query parameter. - name: event_compatible_only in: query required: false schema: type: boolean default: false title: Event Compatible Only description: Optional query parameter. - name: api_key in: query required: false schema: type: string description: Your Individual or Business API key title: Api Key description: 'Deprecated: legacy query-string API key. Still accepted so existing integrations keep working, but new integrations must send the key in the X-API-Key header (or Authorization: Bearer). A key is required for non-USD, paid-only, or full-history requests. Responses to requests authenticated this way carry a Deprecation header.' deprecated: true 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' x-parameter-availability: currency: - AUD - BRL - CAD - CHF - CNH - CNY - DKK - EUR - GBP - HUF - ILS - JPY - KRW - MYR - NGN - NOK - NZD - PEN - SEK - THB - TWD - USD indicator: - afe_dollar_index - average_hourly_earnings - average_hourly_earnings_mom - balance_on_goods - balance_on_services - bgcr - breakeven_inflation_rate - broad_dollar_index - broad_money - 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 - core_pce_mom - credit_growth - crude_oil_inventories - current_account_balance - dairy_exports - deposit_rates - durable_goods_orders - effr - eme_dollar_index - employment - exports - financial_account_balance - foreign_reserves - full_time_employment - fx_reserves - gdp - gdp_growth_q4_yoy - gold_reserves - gov_bond_10y - gov_bond_15y - gov_bond_1_5m - gov_bond_1m - gov_bond_1y - gov_bond_20y - gov_bond_25y - gov_bond_2m - gov_bond_2y - gov_bond_30y - gov_bond_3m - gov_bond_3y - gov_bond_40y - gov_bond_4m - gov_bond_4y - gov_bond_5y - gov_bond_6m - gov_bond_6y - gov_bond_7y - gov_bond_8y - gov_bond_9y - government_debt - house_price_index - house_prices - household_credit - household_spending - housing_starts - import_prices - imports - industrial_production - inflation - inflation_linked_bond - inflation_mom - initial_jobless_claims - international_assets - international_liabilities - job_openings - m1 - m2 - m3 - nairu - natural_gas_storage - net_foreign_asset_position - non_farm_payrolls - non_farm_payrolls_change - obfr - part_time_employment - participation_rate - pce - pce_mom - policy_rate - policy_rate_midpoint - policy_rate_mlf - policy_rate_mro - policy_rate_target_lower - ppi - primary_income_balance - productivity - real_yield_20y - real_yield_30y - real_yield_5y - real_yield_7y - retail_sales - retail_sales_control_group - retail_sales_ex_autos - retail_sales_ex_autos_and_gas - risk_free_rate - secondary_income_balance - sight_deposits - snb_balance_sheet - sofr_average_180d - sofr_average_30d - sofr_average_90d - sofr_index - terms_of_trade - tgcr - trade_balance - trade_weighted_index - trimmed_mean_inflation - unemployment - wage_price_index - wages indicator_by_currency: AUD: - balance_on_services - broad_money - building_approvals - capital_account_balance - cb_assets - commodity_prices - 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 - household_spending - imports - inflation - inflation_linked_bond - inflation_mom - international_assets - international_liabilities - m1 - m3 - net_foreign_asset_position - part_time_employment - participation_rate - policy_rate - ppi - primary_income_balance - risk_free_rate - secondary_income_balance - terms_of_trade - trade_balance - trade_weighted_index - trimmed_mean_inflation - unemployment - wage_price_index - wages BRL: - foreign_reserves - gdp - inflation - inflation_mom - policy_rate - ppi - retail_sales - risk_free_rate - trade_weighted_index - unemployment CAD: - building_permits - business_confidence - commodity_price_energy - commodity_price_ex_energy - commodity_price_index - core_inflation - core_inflation_median - core_inflation_trim - current_account_balance - employment - full_time_employment - gdp - 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 - ppi - retail_sales - risk_free_rate - trade_balance - trade_weighted_index - unemployment - wages CHF: - broad_money - business_confidence - cb_assets - consumer_confidence - core_inflation - current_account_balance - employment - exports - foreign_reserves - full_time_employment - fx_reserves - 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 - imports - inflation - m1 - m2 - m3 - part_time_employment - participation_rate - policy_rate - ppi - retail_sales - risk_free_rate - sight_deposits - snb_balance_sheet - trade_balance - trade_weighted_index - unemployment CNH: - business_confidence - cb_assets - core_inflation - current_account_balance - gdp - gov_bond_10y - gov_bond_1y - gov_bond_2y - gov_bond_30y - gov_bond_3y - gov_bond_5y - gov_bond_7y - 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_1y - gov_bond_2y - gov_bond_30y - gov_bond_3y - gov_bond_5y - gov_bond_7y - inflation - m1 - m2 - policy_rate - ppi - retail_sales - risk_free_rate - trade_weighted_index - unemployment DKK: - business_confidence - consumer_confidence - core_inflation - current_account_balance - gdp - gov_bond_10y - house_prices - industrial_production - inflation - inflation_mom - ppi - risk_free_rate - trade_balance - trade_weighted_index - unemployment 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_1y - gov_bond_20y - gov_bond_2y - gov_bond_30y - gov_bond_3y - gov_bond_4y - gov_bond_5y - gov_bond_7y - inflation - inflation_linked_bond - inflation_mom - m1 - m2 - m3 - part_time_employment - participation_rate - policy_rate - policy_rate_mlf - policy_rate_mro - ppi - retail_sales - risk_free_rate - trade_balance - trade_weighted_index - unemployment - wages GBP: - broad_money - consumer_confidence - core_inflation - current_account_balance - employment - exports - full_time_employment - gdp - 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 - imports - inflation - inflation_linked_bond - inflation_mom - m1 - m2 - m3 - part_time_employment - participation_rate - policy_rate - ppi - retail_sales - risk_free_rate - trade_balance - trade_weighted_index - unemployment - wages HUF: - inflation - policy_rate - ppi - retail_sales - risk_free_rate - trade_weighted_index - wages ILS: - gdp - gov_bond_10y - gov_bond_2y - gov_bond_3y - gov_bond_5y - inflation - inflation_linked_bond - policy_rate - risk_free_rate - trade_weighted_index JPY: - business_confidence - consumer_confidence - core_inflation - current_account_balance - employment - foreign_reserves - full_time_employment - gdp - gold_reserves - gov_bond_10y - gov_bond_15y - gov_bond_1y - gov_bond_20y - gov_bond_25y - gov_bond_2y - gov_bond_30y - gov_bond_3y - gov_bond_40y - gov_bond_4y - gov_bond_5y - gov_bond_6y - gov_bond_7y - gov_bond_8y - gov_bond_9y - housing_starts - inflation - m1 - m2 - m3 - part_time_employment - participation_rate - policy_rate - ppi - retail_sales - risk_free_rate - trade_balance - trade_weighted_index - unemployment KRW: - business_confidence - consumer_confidence - core_inflation - current_account_balance - employment - gdp - gov_bond_10y - gov_bond_2y - gov_bond_3y - gov_bond_5y - house_price_index - household_credit - inflation - inflation_mom - m1 - m2 - participation_rate - policy_rate - ppi - retail_sales - risk_free_rate - trade_balance - unemployment MYR: - gov_bond_10y - gov_bond_2y - gov_bond_3y - gov_bond_5y - m1 - m2 - m3 - retail_sales NGN: - cb_assets - deposit_rates - foreign_reserves - policy_rate NOK: - business_confidence - core_inflation - current_account_balance - employment - exports - full_time_employment - gdp - gov_bond_10y - gov_bond_2y - gov_bond_3y - gov_bond_5y - gov_bond_7y - house_prices - imports - inflation - m1 - m2 - m3 - part_time_employment - participation_rate - policy_rate - ppi - retail_sales - risk_free_rate - trade_balance - trade_weighted_index - unemployment - wages NZD: - core_inflation - current_account_balance - dairy_exports - deposit_rates - employment - foreign_reserves - gdp - gov_bond_10y - gov_bond_1y - gov_bond_2y - gov_bond_5y - inflation - inflation_linked_bond - participation_rate - policy_rate - risk_free_rate - terms_of_trade - trade_balance - trade_weighted_index - unemployment - wages PEN: - foreign_reserves - gov_bond_10y - risk_free_rate - trade_weighted_index SEK: - employment - gdp - gov_bond_10y - gov_bond_2y - gov_bond_5y - gov_bond_7y - inflation - participation_rate - policy_rate - risk_free_rate - trade_balance - trade_weighted_index - unemployment THB: - core_inflation - 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 - trade_balance - unemployment TWD: - employment - foreign_reserves - participation_rate - risk_free_rate - trade_weighted_index - unemployment USD: - afe_dollar_index - average_hourly_earnings - average_hourly_earnings_mom - bgcr - breakeven_inflation_rate - broad_dollar_index - building_permits - business_confidence - cb_assets - consumer_confidence - core_inflation - core_inflation_mom - core_pce - core_pce_mom - crude_oil_inventories - current_account_balance - durable_goods_orders - effr - eme_dollar_index - employment - foreign_reserves - full_time_employment - gdp - gdp_growth_q4_yoy - gold_reserves - gov_bond_10y - gov_bond_1_5m - gov_bond_1m - gov_bond_1y - gov_bond_20y - gov_bond_2m - gov_bond_2y - gov_bond_30y - gov_bond_3m - gov_bond_3y - gov_bond_4m - gov_bond_5y - gov_bond_6m - gov_bond_7y - government_debt - house_price_index - housing_starts - import_prices - industrial_production - inflation - inflation_linked_bond - inflation_mom - initial_jobless_claims - job_openings - m1 - m2 - nairu - natural_gas_storage - non_farm_payrolls - non_farm_payrolls_change - obfr - part_time_employment - participation_rate - pce - pce_mom - policy_rate - policy_rate_midpoint - policy_rate_target_lower - ppi - productivity - real_yield_20y - real_yield_30y - real_yield_5y - real_yield_7y - retail_sales - retail_sales_control_group - retail_sales_ex_autos - retail_sales_ex_autos_and_gas - risk_free_rate - sofr_average_180d - sofr_average_30d - sofr_average_90d - sofr_index - tgcr - trade_balance - trade_weighted_index - unemployment - wages seasonality: - sa - nsa frequency: - level - yoy - qoq - mom annualization: - not_annualized - saar period_aggregation: - monthly - quarterly_average basis: - real - nominal components: schemas: CommodityCoverageSegment: properties: start_date: anyOf: - type: string - type: 'null' title: Start Date end_date: anyOf: - type: string - type: 'null' title: End Date row_count: type: integer title: Row Count type: object required: - row_count title: CommodityCoverageSegment CommodityMissingWeekdayRange: properties: start_date: type: string title: Start Date end_date: type: string title: End Date weekday_count: type: integer title: Weekday Count type: object required: - start_date - end_date - weekday_count title: CommodityMissingWeekdayRange DataQuality: properties: source_freshness: anyOf: - type: string - type: 'null' title: Source Freshness source_monitoring_complete: anyOf: - type: boolean - type: 'null' title: Source Monitoring Complete known_source_gap: anyOf: - type: boolean - type: 'null' title: Known Source Gap source_checked_at: anyOf: - type: integer - type: 'null' title: Source Checked At source_check_expires_at: anyOf: - type: integer - type: 'null' title: Source Check Expires At latest_published_period: anyOf: - type: string - type: 'null' title: Latest Published Period source_permission_status: anyOf: - type: string - type: 'null' title: Source Permission Status commodity_coverage: anyOf: - $ref: '#/components/schemas/CommodityCoverage' - type: 'null' stored_history_coverage: anyOf: - $ref: '#/components/schemas/CommodityCoverage' - type: 'null' point_in_time_basis: anyOf: - type: string - type: 'null' title: Point In Time Basis 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 description: Whether the returned values have verified availability and vintage evidence; estimated release times do not qualify. unverified_vintage_count: type: integer title: Unverified Vintage Count default: 0 unknown_publication_time_count: type: integer title: Unknown Publication Time Count default: 0 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 has_assumed_release_times: type: boolean title: Has Assumed Release Times description: True when at least one row in the quality scope carries a publication timestamp derived from the publication lag measured on that series' own confirmed releases, because no official release calendar reaches the period. default: false assumed_release_time_count: type: integer title: Assumed Release Time Count description: Number of rows in the quality scope whose publication timestamp was derived rather than captured. Compare against row_count to size the derived portion of the requested window. default: 0 bounded_release_time_count: type: integer title: Bounded Release Time Count description: Legacy rows carrying an upper-bound estimate flag; this does not certify replay safety. default: 0 unbounded_release_time_count: type: integer title: Unbounded Release Time Count description: Assumed timestamps without proven availability bounds. default: 0 quality_scope: type: string title: Quality Scope default: full_result stale_after_days: anyOf: - type: integer - type: 'null' title: Stale After Days 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 returned_latest_available_before_window: anyOf: - type: boolean - type: 'null' title: Returned Latest Available Before Window staleness_days: anyOf: - type: integer - type: 'null' title: Staleness Days reason: anyOf: - type: string - type: 'null' title: Reason datetime_field: anyOf: - type: string - type: 'null' title: Datetime Field datetime_precision: anyOf: - type: string - type: 'null' title: Datetime Precision datetime_semantics: anyOf: - type: string - type: 'null' title: Datetime Semantics source_legs: anyOf: - items: additionalProperties: true type: object type: array - type: 'null' title: Source Legs historical_point_in_time: anyOf: - $ref: '#/components/schemas/PointInTimeCompleteness' - type: 'null' type: object required: - is_official - is_proxy - is_fallback - is_stale - has_announcement_datetime - point_in_time_safe - source_type title: DataQuality PredictionsResponse: properties: as_of: anyOf: - type: string - type: 'null' title: As Of event_compatible_only: type: boolean title: Event Compatible Only default: false currency: type: string title: Currency indicator: anyOf: - type: string - type: 'null' title: Indicator filters: properties: seasonality: anyOf: - type: string - type: 'null' title: Seasonality basis: anyOf: - type: string - type: 'null' title: Basis annualization: anyOf: - type: string - type: 'null' title: Annualization period_aggregation: anyOf: - type: string - type: 'null' title: Period Aggregation frequency: anyOf: - type: string - type: 'null' title: Frequency revisions: anyOf: - type: string - type: 'null' title: Revisions type: object title: SeriesFilters description: 'The series-variant filters this request was resolved with. A null means the caller did not constrain that dimension.' selected_series_id: anyOf: - type: string - type: 'null' title: Selected Series Id selected_series: properties: series_id: anyOf: - type: string - type: 'null' title: Series Id label: anyOf: - type: string - type: 'null' title: Label source_series_id: anyOf: - type: string - type: 'null' title: Source Series Id seasonality: anyOf: - type: string - type: 'null' title: Seasonality basis: anyOf: - type: string - type: 'null' title: Basis annualization: anyOf: - type: string - type: 'null' title: Annualization period_aggregation: anyOf: - type: string - type: 'null' title: Period Aggregation frequency: anyOf: - type: string - type: 'null' title: Frequency revisions: anyOf: - type: string - type: 'null' title: Revisions type: object title: SelectedSeries description: The concrete series variant chosen for this response. supported_options: anyOf: - additionalProperties: items: type: string type: array type: object - type: 'null' title: Supported Options prediction_type: anyOf: - type: string - type: 'null' title: Prediction Type prediction_class: anyOf: - type: string - type: 'null' title: Prediction Class prediction_source: anyOf: - type: string - type: 'null' title: Prediction Source pre_release_only: type: boolean title: Pre Release Only default: true start_date: anyOf: - type: string - type: 'null' title: Start Date end_date: anyOf: - type: string - type: 'null' title: End Date next_cursor: anyOf: - type: string - type: 'null' title: Next Cursor description: Exclusive `before_date` cursor for the next page. Prefer this over deep offset pagination to keep reads bounded. has_more: type: boolean title: Has More default: false 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' availability: anyOf: - additionalProperties: true type: object - type: 'null' title: Availability description: Why a filter returned what it returned. ``classes_with_sources`` and ``types_with_sources`` list what any caller could ever get for this pair; ``reason`` explains a requested filter that came back empty. ``no_source_for_pair`` means no publisher provides it and no plan adds it. official_forecasts: items: additionalProperties: true type: object type: array title: Official Forecasts description: Official forecasts and surveys for this indicator in the publisher's own period and unit (quarterly averages, annual rates, survey horizons), newest publication first, every vintage. Not merged into ``data`` because their period basis differs from the monthly announcement; ``target_period``, ``period_basis`` and ``unit`` say exactly what each number is. Same ``prediction_class`` vocabulary as ``data``; filtered by ``prediction_class``, ``prediction_source``, ``start_date`` and ``end_date`` (on the publication date). official_forecast_count: type: integer title: Official Forecast Count description: Number of rows in ``official_forecasts``. default: 0 official_forecast_calendar: items: additionalProperties: true type: object type: array title: Official Forecast Calendar description: Confirmed official forecast publication times for this currency over the next 366 days. These are publisher releases, separate from the indicator's announcement times. official_forecasts_truncated: type: boolean title: Official Forecasts Truncated description: True when more official forecast vintages exist than the ``official_limit`` returned; narrow ``start_date``/``end_date`` or ``prediction_source`` to see the rest. default: false data: items: $ref: '#/components/schemas/AnnouncementPredictions' type: array title: Data type: object required: - currency - data_quality - data title: PredictionsResponse PredictionProvenance: properties: value_origin: type: string title: Value Origin description: Whether the value is a publisher historical vintage or an FXMacroData model output. capture_mode: type: string title: Capture Mode description: Whether FXMacroData recorded the value when it was published or later imported it from the publisher's official archive. archived_in_real_time_by_fxmacrodata: type: boolean title: Archived In Real Time By Fxmacrodata description: True only when FXMacroData captured the prediction at the time it was generated or published. generated_at_basis: type: string title: Generated At Basis description: The source fact used to construct `generated_at`. generated_at_precision: type: string title: Generated At Precision description: Precision of the underlying source timestamp. `date` means an official source date was normalized to a documented source-local time. reconstructed_with_later_data: type: boolean title: Reconstructed With Later Data description: Whether the prediction value was recomputed using later data or a newer model version. vintage_selection: anyOf: - type: string - type: 'null' title: Vintage Selection description: Which publisher or model vintages are retained in this feed. type: object required: - value_origin - capture_mode - archived_in_real_time_by_fxmacrodata - generated_at_basis - generated_at_precision - reconstructed_with_later_data title: PredictionProvenance description: Documented origin and timestamp semantics for a forecast value. PredictionItem: properties: predicted_value: type: number title: Predicted Value event_compatible: type: boolean title: Event Compatible default: false event_compatibility_reason: anyOf: - type: string - type: 'null' title: Event Compatibility Reason source_url: anyOf: - type: string - type: 'null' title: Source Url target_period: anyOf: - type: string - type: 'null' title: Target Period period_basis: anyOf: - type: string - type: 'null' title: Period Basis unit: anyOf: - type: string - type: 'null' title: Unit statistic: anyOf: - type: string - type: 'null' title: Statistic publication_date: anyOf: - type: string - type: 'null' title: Publication Date publication_datetime: anyOf: - type: string - type: 'null' title: Publication Datetime publication_precision: anyOf: - type: string - type: 'null' title: Publication Precision forecast_observation_id: anyOf: - type: string - type: 'null' title: Forecast Observation Id seasonal_adjustment: anyOf: - type: string - type: 'null' title: Seasonal Adjustment geography: anyOf: - type: string - type: 'null' title: Geography announcement_mapping_verified: type: boolean title: Announcement Mapping Verified default: false prediction_class: anyOf: - type: string - type: 'null' title: Prediction Class description: How the forecast was produced, and the field to filter on. One of ``compiled_consensus`` (a publisher's compilation of independent forecasters), ``forecaster_survey`` (an official survey of forecasters or market participants), ``expectations_survey`` (households or businesses), ``market_implied`` (derived from traded prices), ``model_nowcast`` (a published statistical model), ``central_bank_projection`` (the central bank's own projection), ``institutional_projection`` (IMF, OECD), or ``fxmacrodata`` (an FXMacroData estimate, never a market consensus). prediction_class_label: anyOf: - type: string - type: 'null' title: Prediction Class Label description: Human-readable name for ``prediction_class``, for display. Filter on ``prediction_class``, not on this. prediction_type: anyOf: - type: string - type: 'null' title: Prediction Type description: 'Original per-source category, retained unchanged for backward compatibility: ``market_consensus``, ``market_prediction``, ``model_nowcast``, ``survey``, ``central_bank_forecast``, ``central_bank_projection``, ``imf_weo``, ``oecd_eo`` or ``fxmacrodata``. These slugs split identical instruments (the ECB and Philadelphia Fed Surveys of Professional Forecasters landed in different values) and two of them name a publisher rather than a category. Prefer ``prediction_class``.' 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) for the prediction''s known-at marker. Inspect `provenance.generated_at_basis` and `provenance.generated_at_precision`: publisher archives may provide a date that FXMacroData normalizes to a documented source-local publication time rather than an original intraday timestamp.' provenance: anyOf: - $ref: '#/components/schemas/PredictionProvenance' - type: 'null' description: Documented origin, capture, timestamp, reconstruction, and vintage semantics for this source. Omitted for sources whose provenance is not yet documented. is_pre_release: anyOf: - type: boolean - type: 'null' title: Is Pre Release description: Whether `generated_at` is strictly earlier than the linked `announcement_datetime`. Null when the source did not provide a generation timestamp. 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. CommodityCoverage: properties: scope: type: string title: Scope requested_start: anyOf: - type: string - type: 'null' title: Requested Start requested_end: anyOf: - type: string - type: 'null' title: Requested End available_start: anyOf: - type: string - type: 'null' title: Available Start available_end: anyOf: - type: string - type: 'null' title: Available End input_row_count: type: integer title: Input Row Count row_count: type: integer title: Row Count distinct_date_count: type: integer title: Distinct Date Count duplicate_date_row_count: type: integer title: Duplicate Date Row Count excluded_weekend_row_count: type: integer title: Excluded Weekend Row Count invalid_date_row_count: type: integer title: Invalid Date Row Count expected_weekday_label_count: type: integer title: Expected Weekday Label Count missing_weekday_label_count: type: integer title: Missing Weekday Label Count largest_missing_weekday_run: type: integer title: Largest Missing Weekday Run largest_calendar_gap_days: type: integer title: Largest Calendar Gap Days missing_weekday_ranges: items: $ref: '#/components/schemas/CommodityMissingWeekdayRange' type: array title: Missing Weekday Ranges longest_continuous_weekday_segment: $ref: '#/components/schemas/CommodityCoverageSegment' latest_continuous_weekday_segment: $ref: '#/components/schemas/CommodityCoverageSegment' sparse_history: type: boolean title: Sparse History coverage_basis: type: string title: Coverage Basis continuous_coverage_verified: type: boolean title: Continuous Coverage Verified default: false reference_only: type: boolean title: Reference Only default: true executable_quotes: type: boolean title: Executable Quotes default: false provenance_version: type: integer title: Provenance Version repaired_excluded_weekend_row_count: type: integer title: Repaired Excluded Weekend Row Count default: 0 repaired_invalid_date_row_count: type: integer title: Repaired Invalid Date Row Count default: 0 type: object required: - scope - input_row_count - row_count - distinct_date_count - duplicate_date_row_count - excluded_weekend_row_count - invalid_date_row_count - expected_weekday_label_count - missing_weekday_label_count - largest_missing_weekday_run - largest_calendar_gap_days - missing_weekday_ranges - longest_continuous_weekday_segment - latest_continuous_weekday_segment - sparse_history - coverage_basis - provenance_version title: CommodityCoverage ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError 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 observation_id: anyOf: - type: string - type: 'null' title: Observation Id description: Variant-safe identifier for the selected series observation. Use this with `selected_series_id` when query selectors choose a non-default series. selected_series_id: anyOf: - type: string - type: 'null' title: Selected Series Id description: Stable identifier of the selected announcement series. 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: type: integer 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 - announcement_datetime title: AnnouncementPredictions description: 'All available forecasts targeting a single announcement. ``announcement_id`` matches the value surfaced on the corresponding row in ``/v1/announcements/{currency}/{indicator}``, allowing clients to join predictions with realised observations. ``predictions`` contains one sub-entry per source (e.g. central-bank projection, IMF WEO, market consensus survey, FXMacroData prediction).' HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError PointInTimeCompleteness: properties: row_count: type: integer title: Row Count announcement_datetime_count: type: integer title: Announcement Datetime Count missing_announcement_datetime_count: type: integer title: Missing Announcement Datetime Count assumed_release_time_count: type: integer title: Assumed Release Time Count default: 0 bounded_release_time_count: type: integer title: Bounded Release Time Count default: 0 unbounded_release_time_count: type: integer title: Unbounded Release Time Count default: 0 unverified_vintage_count: type: integer title: Unverified Vintage Count default: 0 unknown_publication_time_count: type: integer title: Unknown Publication Time Count default: 0 point_in_time_safe: type: boolean title: Point In Time Safe type: object required: - row_count - announcement_datetime_count - missing_announcement_datetime_count - point_in_time_safe title: PointInTimeCompleteness description: Coverage of source-confirmed publication timestamps for a dataset. securitySchemes: APIKeyHeader: type: apiKey in: header name: X-API-Key description: 'FXMacroData API key. Preferred transport for server-side clients: the key stays out of URLs and access logs.' HTTPBearer: type: http scheme: bearer description: 'FXMacroData API key or OAuth access token supplied as ``Authorization: Bearer ``.' APIKeyQuery: type: apiKey in: query name: api_key x-deprecated: true description: 'Deprecated. FXMacroData API key as a query parameter. Still accepted so existing integrations keep working, but new integrations must use the X-API-Key header (APIKeyHeader) or Authorization: Bearer. The only exception is browser EventSource clients of the live-delivery streams, which cannot set request headers.'