Skip to main content
A value can be wrong in two ways: it can be old, or its source can have quietly died. Conduit addresses both. Every observation carries a freshness label computed against a per-frequency gate, and a separate liveness check watches every series for sources that have silently stopped updating. The first tells you about a single value. The second tells you about the health of the pipe feeding it.

The freshness label

Every observation includes a freshness label with one of three values:

fresh

The value is recent enough for its frequency. The source is delivering on cadence.

stale

The value is older than its frequency gate allows. Usable, but treat with caution.

unknown

Freshness could not be determined for this value.
The label travels inline on the observation, so you can branch on it without a second request.
# Latest US inflation, with its freshness label inline
curl -G "https://data.quantoraresearch.com/v1/observations/latest" \
  -H "x-api-key: $CONDUIT_API_KEY" \
  --data-urlencode "country=USA" \
  --data-urlencode "indicator=cpi_inflation_yoy"

Filtering by freshness

Most observation routes accept a freshness filter, so you can ask for only the values that pass the gate.
freshness
string
One of fresh, stale, or unknown. Returns only observations with the matching label.
curl -G "https://data.quantoraresearch.com/v1/observations" \
  -H "x-api-key: $CONDUIT_API_KEY" \
  --data-urlencode "country=USA" \
  --data-urlencode "indicator=cpi_inflation_yoy" \
  --data-urlencode "freshness=fresh"
The public screener also accepts freshness=fresh, so you can screen countries on values that are confirmed current. See the screener guide for the filter DSL.

Per-frequency freshness gates

“Recent” means different things for different series. A daily FX reference rate that is a week old is badly stale; a quarterly GDP figure that is a week old is brand new. Conduit applies the freshness gate per frequency, so each series is judged against a window appropriate to how often it is published.
A daily series and a quarterly series can both be labeled fresh while having very different ages, because each is measured against its own gate. The label answers “is this on cadence for its frequency?”, not “how many days old is this in absolute terms?”
This is why freshness is a label rather than a raw age: the gate encodes the expected cadence so you do not have to maintain a table of acceptable staleness per indicator yourself.

Liveness: catching silently-frozen feeds

Freshness tells you whether a value is recent. It does not, on its own, tell you whether a source has stopped. A feed that froze last month can keep returning the same last-known value, and each individual observation might still look defensible. Liveness exists to catch exactly that failure mode. Conduit runs a per-series liveness check that detects feeds which have silently stopped updating, across the connector fleet. You can read its results:
GET /v1/ops/liveness
The operational routes require the ops:read scope. A key scoped only for data:read will receive 403 forbidden. Request ops:read if you need to monitor feed health programmatically.
curl -G "https://data.quantoraresearch.com/v1/ops/liveness" \
  -H "x-api-key: $CONDUIT_API_KEY"
Freshness and liveness answer different questions and you should monitor both. A value can be labeled stale simply because nothing new was due yet, and a value can look fresh while the source behind it has frozen. Use the freshness label per observation and the liveness check per series.

Choosing the right signal

Read the inline freshness label, or pass freshness=fresh to exclude anything past its gate. This is the per-value check.
Poll GET /v1/ops/liveness to catch sources that have silently frozen before they quietly corrupt your inputs. This is the per-series, fleet-wide check.
GET /v1/source-health reports source and connector freshness at the source level, complementing the per-series liveness check.
Use the freshness label to judge a value and the liveness check to judge the pipe. Together they keep stale numbers and dead feeds out of your decisions.

The time model

How knowledge time and vintage relate to when a value became known.

Provenance

Trace any observation back to its source and ingestion run.