Public observations
/v1/public/observations and /v1/public/observations/latest return only redistribution-safe official and public-domain data. Start here.Full observation surface
/v1/observations, /v1/observations/latest, and /v1/observations/changes add attribution, rights metadata, and revision tracking for a data:read key.The four endpoints
GET /v1/public/observations
Time series of public observations across vintages, by Conduit canonical indicator IDs. Paginated.
GET /v1/public/observations/latest
The single latest public reading per canonical indicator. The fastest way to get “where are things now.”
GET /v1/observations
The full observation surface: every series, with source attribution, freshness, and rights metadata inline.
GET /v1/observations/changes
Observations that changed (new prints and revisions), for incremental sync.
/v1/observations/latest is the latest-per-series counterpart of /v1/observations, exactly as /v1/public/observations/latest is to /v1/public/observations.
The
/v1/public/* surface returns only redistribution-safe official and public-domain data. Licensed vendor and market price data is classified internal_only and never appears on /v1/public. If you are unsure which surface to use, prefer /v1/public/*.Quickstart
Get the latest US CPI inflation reading. All requests go tohttps://data.quantoraresearch.com and send your key in the x-api-key header.
Observation fields
These are the fields on a public observation. The/v1/observations surface returns a richer record with raw value fields (valueNumeric, valueText), source and provider IDs, the full rights object, and revision status; see The full observation surface below.
Stable ID for this observation. Pass it to
/v1/provenance/observations/{observationId} for the full source chain.Conduit canonical indicator slug, for example
cpi_inflation_yoy. Use this to query and join across countries.Human-readable indicator name.
Indicator family, for example
inflation, labor, rates, growth.ISO 3166-1 alpha-3 country code, for example
USA, GBR, JPN. Null for instrument-keyed series.Currency context for the reading, where applicable.
The headline numeric value of the reading.
The prior-period value.
revisedPrevious and previousType describe whether the prior was revised.Forecast or consensus expectation for the release, where one exists.
consensus, surprise, and surprisePercent accompany it.Unit of the value, for example
percent, index, USD.Publication cadence:
daily, weekly, monthly, quarterly, or annual.Indicator importance:
low, medium, or high.Label for the period the value describes, for example
2026-05 or a start/end range.End of the described period (
YYYY-MM-DD). This is the value’s place on the period axis.When the source officially released the value, where known (ISO 8601).
The point on the period axis the value is observed at.
Knowledge-time: when Conduit ingested the value (ISO 8601).
True if this observation is a revision of a previously published value.
Vintage date of the value. Revisions are retained as separate vintages, never overwritten.
Freshness label:
fresh, stale, or unknown. Computed against a per-frequency age gate, independent of any source self-report.The official source URL for the series.
Required attribution string for the source, for example
U.S. Bureau of Labor Statistics.The provider name behind the source.
Conduit source identifier. Use it in the
source_id filter.Whether a raw payload reference is exposed for this observation through the provenance endpoint.
Within a response, marks the single best row for a given (country, indicator): the highest-quality, most-comparable, most-recent reading. Use it to dedupe when a fallback and an official series both appear.
Filters
All four observation endpoints accept the same filter set. Combine filters freely; they are AND-ed. Unknown query parameters are rejected withbad_request (Conduit fails closed rather than silently ignoring typos).
Identity filters
| Filter | Description |
|---|---|
country | ISO alpha-3 country code, for example USA, GBR. |
indicator / indicator_id | Canonical indicator slug, for example cpi_inflation_yoy. |
entity | Resolve an entity by id, slug, name, ticker, CIK, LEI, FIGI, ISIN, or CUSIP. |
entity_id | Exact Conduit entity id, for example country_usa. |
source_id | Conduit source id, for example source_bls_public_api. |
provider_id / provider | Conduit provider id or name. |
Shape filters
| Filter | Values | Description |
|---|---|---|
frequency | daily, weekly, monthly, quarterly, annual | Publication cadence. |
currency | ISO currency code | Filter by currency context. |
importance | low, medium, high | Indicator importance. |
freshness | fresh, stale, unknown | Keep only readings with a given freshness label. |
type | macro | Restrict to macro observations. |
numeric_only | boolean | Drop rows that carry no numeric value. |
Time filters
Conduit is bi-temporal. Two independent axes describe every value. Mixing them precisely is what makes the data point-in-time.- Period axis (what a value describes)
- Knowledge axis (when a value became known)
The period is the calendar window a value is about: May 2026 CPI, Q1 2026 GDP.
| Filter | Description |
|---|---|
period | Convenience filter accepting YYYY, YYYY-MM, or YYYY-Qn. |
period_start | Lower bound on the described period (YYYY-MM-DD). |
period_end | Upper bound on the described period (YYYY-MM-DD). |
Pagination and sorting
| Param | Default | Description |
|---|---|---|
limit | 100 | Page size, 1 to 500. |
cursor | none | Opaque cursor from meta.pagination.next_cursor. |
sort | endpoint default | Field to sort by, where supported. |
order | asc | asc or desc. |
next_cursor while meta.pagination.has_more is true. The TypeScript SDK does this for you with paginate().
Worked examples
Paginate a long series
The full observation surface
/v1/observations, /v1/observations/latest, and /v1/observations/changes require a data:read key and return a richer record than /v1/public/*. The same filters apply. The shape uses raw value fields and inline rights:
rights object whose exposureClass is one of public, internal_only, restricted, or blocked. Raw provider payload bodies are never exposed by the API; verbatim bodies from sources marked internal_only, or with redistributionAllowed set to blocked, are redacted even on this data:read surface.
Incremental sync with /changes
/v1/observations/changes returns new prints and revisions, so you can pull only what moved since your last sync rather than re-fetching whole series. Bound it on the knowledge axis with start_date and end_date.
Provenance
Every observation traces back to an official release. Pass anobservationId to the provenance endpoint for the named source, source URL, raw payload reference metadata, and the ingestion run.
Freshness and liveness
Each observation carries afreshnessStatus of fresh, stale, or unknown, set by a per-frequency age gate: a monthly series that has not printed in roughly 2.5 months is flagged stale, quarterly series get a wider budget to account for publication lag, and non-periodic rows return unknown. Pass freshness=fresh to drop anything behind its cadence.
For feed-level health rather than per-row freshness, a per-series liveness check at GET /v1/ops/liveness (requires ops:read) flags silently-frozen feeds across connectors.
Errors and rate limits
Non-2xx responses share one envelope with a stable, machine-readablecode.
| Code | Status | Meaning |
|---|---|---|
bad_request | 400 | Malformed query, or an unknown query parameter. |
unauthorized | 401 | Missing or invalid API key. |
forbidden | 403 | Key lacks the required scope. |
not_found | 404 | Resource does not exist. |
rate_limited | 429 | Rate limit exceeded; see details. |
internal_error | 500 | Unexpected server error. |
/v1 response includes x-ratelimit-policy, x-ratelimit-limit, x-ratelimit-remaining, and x-ratelimit-reset (ISO) headers. The default data:read budget is 1000 requests per 60-second window. On exceed you get 429 rate_limited with details carrying required_scope, limit, and window_seconds.
Next steps
Indicators, entities, and countries
Discover the catalog of indicators, resolve entities by ticker or CIK, and list what each country covers.
Macro screener
Filter countries by the latest values of canonical indicators with a compact filter DSL.