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 when the result is not fallback/prohibited data and has complete release timestamps for point-in-time workflows. |
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 NO_DATA_IN_REQUESTED_WINDOW
with coverage dates and recommended_start_date. Broad windows should be paged with
pagination.next_offset rather than split into custom retries.
{
"code": "NO_DATA_IN_REQUESTED_WINDOW",
"recommended_start_date": "2020-01-01",
"pagination": {
"next_offset": 500
}
}
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.