Skip to main content

Time and point in time

Every answer states its own time: the value's own timestamp, when it was last stored or confirmed, and, where a route supports it, what was known at an earlier instant.

Time conventions​

kind of timehow it is written
a dateYYYY-MM-DD, for every daily-or-coarser fact: a bar's session date, a period's start and end, a close's session_date
an instantUTC with microseconds: YYYY-MM-DDTHH:MM:SS.ffffffZ, for example 2026-09-25T20:00:02.000000Z. It sorts as a string and can be passed back as known_at. An intraday bar carries its opening instant as start

The OpenAI-compatible AI routes keep OpenAI's integer Unix timestamps (created, created_at).

Periods​

A value series states its period kind in period_kind: calendar_day, week, month, quarter, calendar_year or marketing_year. Each value carries its period's label, start, and end. Daily market facts are dated by their session (session calendars).

source_time and refreshed_at​

fieldanswers
source_time"How old is this value?": the value's own timestamp (a quote's trade time, an exchange tick)
refreshed_at"Is the stored copy current?": when the served fact was last stored or confirmed

A timestamp that is not given is null, or the field is not served where no value of that kind carries one (series observations, positioning reports).

known_at​

known_at must be an instant with a timezone (2026-09-20T12:00:00Z). A date alone, or an instant without an offset, is 422 invalid_request. The routes that take it are listed under point in time.

Freshness​

Besides source_time and refreshed_at, answers state how current they are with these fields:

fieldmeaning
source_lag_seconds (quotes)how old the price already was when it was recorded
observed_through (value series)the end of the newest period with a value published when refreshed_at last confirmed the series
source_lag_days (value series)calendar days from observed_through to refreshed_at: the publication delay
freshness.staletrue when the stored copy is behind its source

stale is never about publication frequency: a monthly series whose newest month is old by design is not stale, and source_lag_days carries that delay. When stale cannot be judged, it is null and freshness.field_states.stale says why (for example not_assessed). How each bar family is judged is on price history.

A whole answer whose stored data is too old to serve is refused 503 temporarily_unavailable instead (error codes).

Point in time​

A point-in-time answer gives the data as it was knowable at the instant you pass as known_at, on a route that declares it:

routeas-of meaning
/v1/series/{key}/observations, /v1/series/{key}/projectionseach period's value as known at the instant (series values)
/v1/securities/{symbol}/financials, /filings, /insider-transactionswhat the filings accepted at or before the instant asserted (filings and financials)
/v1/futures/{root}/positioningthe reports as they were held at the instant (positioning)
/v1/securities/{symbol}/thesis, /v1/themesthe thesis written latest at or before the instant, and the themes snapshot of then (digests, theses, and themes)

On any other route known_at is refused 422 invalid_request, and the message names the routes that honor it. A dataset's point_in_time in GET /v1/datasets says the same machine-readably (the dataset catalog).

curl "https://api.tauric.ai/v1/series/us.cpi.all_items.sa/observations?known_at=2026-09-20T12:00:00Z" \
-H "Authorization: Bearer $TAURIC_API_KEY"

What a point-in-time answer states​

A series answer (observations, projections, the latest value), a supply-and-demand member, and a positioning answer carry a point_in_time block; the other routes that take known_at state the instant they answer as known_at:

fieldmeaning
known_atthe instant asked; null on a current read
supportedtrue: the route answers known_at
sincethe earliest instant the route can answer for this data
completeunder known_at: true when the instant is at or after since. Null on a current read

An instant before since is answered with complete false and no values before since, with the reason before_point_in_time_history; that does not mean no data existed then.