Skip to content

Response contract

Data quality and response fields

Source-backed endpoints expose standardized quality, timestamp, and provenance fields so research and production systems can separate point-in-time-safe observations from stale, inferred, or lower-frequency source data.

data_quality

Standard quality flags

Macro announcements, predictions, release calendars, FX, COT, commodities, and rates-and-curves endpoints expose data_quality at the top level where the OpenAPI schema declares it.

Field Type Meaning
data_quality object Standardized endpoint-level quality, source, freshness, and point-in-time safety metadata for the returned payload.
data_quality.is_official boolean True when the response is backed by an official source and is not proxy, fallback, derived, or prohibited-source data.
data_quality.is_proxy boolean True when the response is an explicit proxy for the requested concept rather than the primary official series.
data_quality.is_fallback boolean True when one or more returned rows are marked as fallback data.
data_quality.is_stale boolean True when the newest available observation is older than the endpoint's frequency-aware stale_after_days threshold.
data_quality.has_announcement_datetime boolean True when all rows in the quality scope carry the required announcement timestamp field or fields.
data_quality.point_in_time_safe boolean True only when every row in the quality scope carries a publication timestamp captured from the release itself, and the result is not fallback or prohibited-source data. One row with a missing or derived timestamp clears it for the whole response, so most full-history requests return false; gate a backtest on the per-row release_time_assumed flag.
data_quality.has_assumed_release_times boolean True when at least one row in scope carries a publication timestamp derived from the series' measured publication lag rather than captured from the release.
data_quality.assumed_release_time_count integer Number of rows in scope whose publication timestamp was derived. Compare against row_count to size the derived portion of the window.
data_quality.latest_available_date string | null Freshest observation date available for the quality scope before pagination-specific caveats.
data_quality.last_updated string | null Server-side refresh or update timestamp when the endpoint has one available.
data_quality.data_lag_days integer | null Calendar-day lag between today and latest_available_date; null when the latest date is missing, invalid, or future-dated.
data_quality.source_name string | null Human-readable source or publisher label used for the response.
data_quality.source_type official | public | fallback | derived Normalized source classification shared across source-backed REST and MCP responses.
data_quality.is_derived boolean True when the endpoint output is calculated from underlying source rows, such as spreads, slopes, forward curves, forecasts, or sentiment composites.
data_quality.row_count integer Number of rows considered in the data-quality scope.
data_quality.announcement_datetime_count integer Number of rows in scope with complete required announcement timestamp fields.
data_quality.missing_announcement_datetime_count integer Number of rows in scope missing at least one required announcement timestamp field.
data_quality.quality_scope string Scope used to compute the quality object, such as full_result, latest, recent, or scheduled_releases.
data_quality.stale_after_days integer | null Frequency-aware threshold used for is_stale; daily=7, weekly=21, monthly=62, quarterly=125, annual=550 by default.

FX provenance

FX rates identify source, observation date, and derivation path.

The /api/v1/forex/{base}/{quote} response exposes pair_metadata, data_quality.source_legs, and row-level data[].source.

Field Meaning
direct_available, inverse_available Whether the requested pair or its inverse exists as a stored pair document for the requested window.
is_derived, derivation_method, anchor_currency Whether the value was inverted, crossed through USD/EUR/CAD, sourced from a peg, or expanded from lower-frequency data.
source_legs Underlying source legs, including source provider, source URL where available, and source frequency.
source_frequency Frequency of the upstream source. Monthly and annual values expanded across business days remain labelled as lower-frequency data.
observation_datetime UTC midnight for the FX reference date. This is not a publication timestamp.
pair_consistency_check Direct/inverse consistency status for the pair window, allowing workflows to avoid false data-gap classifications.

Source priority is BIS XRU daily USD 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.

Windows and pagination

Handle empty windows and broad history requests explicitly.

Valid announcement series with no rows in the requested date window return 200 with an empty data array and a no_data object carrying coverage dates and recommended_start_date. Broad windows should be paged with pagination.next_offset rather than split into custom retries.

{
  "requested_window_has_data": false,
  "no_data": {
    "error_code": "NO_DATA_IN_REQUESTED_WINDOW",
    "recommended_start_date": "2020-01-01"
  },
  "data": [],
  "pagination": {
    "next_offset": null
  }
}

AI Answer-Ready

Key Facts

Page
Data Quality
Section
Documentation
Canonical URL
https://fxmacrodata.com/documentation/data-quality
Source
FXMacroData editorial and official publisher references
Last Updated
See page metadata

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains Data Quality with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.