Data versions
Available starting 2026-10-12
The dataVersion parameter and data version v2026-11-10 are available starting
2026-10-12.
As Clarity develops better techniques for processing and aggregating measurements, we may choose to reprocess your data. When we expect reprocessing to have a large impact, we may give you a way to control when you adopt the new values. That lets you try the new values and give us feedback for weeks before they become the default. You can choose to accelerate the adoption or delay it until the expected retirement.
A new version is rolled out in stages: preview, go live, deprecation and retirement. At any time there are only one or two versions available. One is the default, and there may be another in preview or deprecated.
When you request measurements, recent
or historical, the dataVersion
parameter chooses which version of the data you receive.
| date | "legacy" |
"v2026-11-10" |
|---|---|---|
| 2023 | default | |
| 2026-10-12 | default | in preview |
| 2026-11-10 | deprecated | default |
| 2027-01-11 | retired | default |
A data version does not change the shape of a response. The same metrics come back
with the same attributes, and a CSV or Parquet file has the same columns, under
every version. Only what value, qcAssessment and qcFlags carry can differ.
raw and status are the same under every version.
v2026-11-10
This version introduces three new QC flags that apply only to 24-hour rolling means, NowCast aggregates, and their associated AQIs. No other metrics are affected.
QC.I.AGG.001 — too few hours reported
A 24-hour rolling mean where the device reported fewer than 18 of the 24 hours. The
metric reports invalid, with QC.I.AGG.001 in qcFlags. value is unchanged.
Under legacy, the same period reports valid, with no flags.
For example, a pm2_5ConcMass24HourRollingMean for a device that reported 12 of the last 24 hours:
| field | legacy |
v2026-11-10 |
|---|---|---|
qcAssessment |
"valid" |
"invalid" |
qcFlags |
[] |
["QC.I.AGG.001"] |
QC.I.AGG.002 — too few hours calibrated
A 24-hour rolling mean where the device reported at least 18 hours, but fewer than
18 of them have a calibrated value. The metric reports invalid, with
QC.I.AGG.002 in qcFlags. value is unchanged. Under legacy, the same period
reports valid, with no flags.
This flag concerns the calibrated value only. If you read raw, you may disregard
it.
For example, a pm2_5ConcMass24HourRollingMean for a device that reported 22 of the last 24 hours, of which only 10 have a calibrated value:
| field | legacy |
v2026-11-10 |
|---|---|---|
qcAssessment |
"valid" |
"invalid" |
qcFlags |
[] |
["QC.I.AGG.002"] |
QC.W.FLT.001 — hours filtered out
Some hours in the period failed QC, but enough remain for a complete aggregate. The metric then reports:
value: the aggregate over the hours that passed, leaving out the ones that failedqcAssessment:validqcFlags:["QC.W.FLT.001"], in place of the flags of the hours left out
The W in the flag means it is a warning. Warnings do not invalidate a value, so the
metric stays valid.
Under legacy, the same period reports the aggregate over every hour, invalid,
and the flags that occurred.
For example, a pm2_5ConcMass24HourRollingMean where 3 of the 24 hours failed an out-of-bounds check:
| field | legacy |
v2026-11-10 |
|---|---|---|
value |
14.86 |
9.73 |
qcAssessment |
"invalid" |
"valid" |
qcFlags |
["QC.I.OOB.001"] |
["QC.W.FLT.001"] |
An aggregate is complete when it has enough hours that passed QC and calibration:
| metric | complete when |
|---|---|
| 24-hour rolling mean | at least 18 of the 24 hours |
| PM NowCast | at least 2 of the 3 most recent hours |
| Ozone NowCast | the EPA's completeness rules for the ozone NowCast |
When too few hours remain, the metric matches the legacy response: value is
calculated using all hours, qcFlags is the union of all the hours' flags, and
qcAssessment is invalid.
How to request versions
Send dataVersion beside your usual parameters:
{
"org": "myorg1234",
"datasourceIds": ["DS123456"],
"outputFrequency": "hour",
"dataVersion": "v2026-11-10",
"qcAssessment": true,
"qcFlags": true
}
qcAssessment and qcFlags are optional. value is quality-controlled whether or
not you request them, but without them you cannot see which periods are incomplete.
What you get depends on what you send:
| you send | you get |
|---|---|
no dataVersion |
the default version. Your requests move to a new version on the date it becomes the default |
| an available version | that version, until it is retired |
| a retired version | the default version |
| a version that does not exist | an error |
We will announce any change to the default on the Revisions page in advance.
A continuation token remembers the
dataVersion of the request that created it. If that request omitted it, continuing
the token follows the default, as the request would have.