Data quality
Quality flags are standardized across source-backed endpoints.
Use data_quality before treating a payload as analysis-ready. It describes the whole requested window,
not the current page, so the same object is returned for every page of one query.
point_in_time_safe is true when no row in that window can surface earlier than it was actually public.
Official release calendars do not reach the full length of most macro series. Where a calendar stops, the publication
timestamp is derived from the largest publication lag and the latest release clock that same series has shown,
snapped to a valid trading day, and the row is flagged release_time_assumed. Because that bound is the
slowest release the series has ever produced, a derived row cannot appear before the real one did, and it does not
clear point_in_time_safe. Those rows also carry release_time_upper_bound.
A derived timestamp is still not an observed one: it is calibrated, not exact, and it is deliberately late rather
than early. Read assumed_release_time_count against row_count to size how much of the window
is derived, and gate per row on release_time_assumed when a study needs captured timestamps only.
point_in_time_safe still goes false when a row has no timestamp at all, or when its timestamp predates
the upper-bound rule and may land early; unbounded_release_time_count counts those. For reporting, also
store source_type, source_name, latest_available_date, and the fallback/proxy
flags.
Worked example: /v1/announcements/usd/inflation over its full history returns
row_count 1349 with assumed_release_time_count 997. Those 997 rows are dated from the
slowest release this series has shown, so none of them can appear early and the response stays point-in-time safe.
The count is what tells you how much of the window is calibrated rather than captured; gate on
release_time_assumed if your study needs only the 352 captured rows.
Source flags
is_official
source_type
source_name
is_proxy
is_fallback
is_derived
source_type is normalized to official, public, fallback, or derived.
Freshness flags
latest_available_date
last_updated
data_lag_days
is_stale
stale_after_days
Staleness thresholds are frequency-aware: daily, weekly, monthly, quarterly, and annual series use different default windows.
Backtest flags
has_announcement_datetime
point_in_time_safe
has_assumed_release_times
assumed_release_time_count
announcement_datetime_count
missing_announcement_datetime_count
quality_scope
A missing timestamp and a derived timestamp both clear point_in_time_safe. The two counts separate them: missing_announcement_datetime_count is rows with no publication time, assumed_release_time_count is rows whose publication time was derived.
Sample payload
USD GDP real-basis response shape.
Values below are illustrative of the contract. Always read supported_options from the live response
before requesting a non-default variant.
{
"currency": "USD",
"indicator": "gdp",
"name": "GDP",
"source": "BEA",
"source_series_id": "BEA:real_gdp",
"source_series_name": "Real Gross Domestic Product",
"seasonal_adjustment": "SA",
"price_basis": "REAL",
"requested_start_date": "2020-01-01",
"requested_end_date": "2026-06-22",
"requested_window_has_data": true,
"page_includes_latest_available": true,
"earliest_available_date": "2020-03-31",
"latest_available_date": "2026-03-31",
"filters": {
"basis": "real",
"frequency": "level",
"revisions": "latest"
},
"selected_series_id": "usd_gdp_real_sa_level",
"selected_series": {
"basis": "real",
"frequency": "level",
"seasonality": "sa",
"source_series_id": "BEA:real_gdp"
},
"supported_options": {
"basis": ["real", "nominal"],
"frequency": ["level", "qoq", "yoy"],
"seasonality": ["sa"],
"revisions": ["latest", "first", "final", "all"]
},
"pagination": {
"limit": 20,
"offset": 0,
"returned_count": 20,
"total_count": 63,
"has_more": true,
"next_offset": 20,
"page_includes_latest_available": true
},
"data_quality": {
"is_official": true,
"is_proxy": false,
"is_fallback": false,
"is_stale": false,
"has_announcement_datetime": true,
"point_in_time_safe": true,
"has_assumed_release_times": false,
"assumed_release_time_count": 0,
"latest_available_date": "2026-03-31",
"last_updated": null,
"data_lag_days": 83,
"source_name": "BEA",
"source_type": "official",
"is_derived": false,
"row_count": 63,
"announcement_datetime_count": 63,
"missing_announcement_datetime_count": 0,
"quality_scope": "full_result",
"stale_after_days": 125,
"requested_window_has_data": true,
"page_includes_latest_available": true
},
"data": [
{
"announcement_id": "usd_gdp_2026-03-31",
"date": "2026-03-31",
"val": 6038.164,
"pct_change_qoq": 0.4,
"pct_change_yoy": 2.57,
"announcement_datetime": 1777552200,
"announcement_datetime_local": "2026-04-30T08:30:00-04:00",
"revisions": [{ "epoch": 1777552200, "val": 6038.164 }]
}
]
}