Manifest
GET /manifest is a cheap state fingerprint: a hash, the latest run, freshness markers, and source health.Changes
GET /observations/changes returns only observations that became known since a knowledge-time bound.Snapshot
GET /snapshot returns the current public observation set plus the matching manifest hash.Source health
GET /source-health reports per-connector freshness so you can detect silently-frozen feeds.The sync loop
Seed once with a snapshot
Pull
GET /snapshot to load the current public observation set, and store the manifestHash and asOf it returns.Poll the manifest
On a schedule, call
GET /manifest. If manifestHash is unchanged from your stored value, nothing moved and you can stop early.Pull only changes
When the hash changes, call
GET /observations/changes?start_date=<your last sync date> to fetch only observations that became known on or after that date. Page through with the cursor.Watch source health
Periodically read
GET /source-health to catch stale or failing connectors before they show up as silently missing data.1. Check the manifest
The manifest is the cheapest way to ask “did anything change?”. Compare the returnedmanifestHash to the one you stored last; if it matches, you are up to date.
string
Scope health and freshness to one source.
string
Scope health and freshness to one provider.
Response
string
Fingerprint of current state. Store it; an unchanged hash means nothing moved.
string
Timestamp the manifest was generated (ISO). Record it so you know the date to pass as
start_date on your next incremental pull.string
Id of the most recent ingestion run. May be null.
integer
Total observations in scope.
string
Most recent
observedAt (when a value became known) across the set.string
Most recent ingestion timestamp across the set.
array
Per-connector health summaries (same shape as
/source-health).Full snapshot
GET /snapshot returns the current public observation set together with the manifest hash that describes it. Use it to seed a fresh downstream copy, or to reconcile if you suspect drift.
Response
string
When the snapshot was generated (ISO).
string
Hash describing exactly this snapshot. Store it as your sync baseline.
array
The public observation set in scope. Each observation carries attribution, freshness, and rights metadata.
array
Per-connector health summaries.
The snapshot returns only redistribution-safe public observations. Licensed vendor data is never included. Filter the scope with the standard observation filters (for example
country, indicator_id).3. Sync incrementally
GET /observations/changes returns only observations whose knowledge time falls on or after a start_date bound, newest first. Pass the date of your last successful sync to fetch just the delta.
string
Knowledge-time lower bound (date,
YYYY-MM-DD). Returns observations whose observedAt is on or after this date. as_of is also accepted to retrieve the latest vintage known on or before a timestamp.string
Scope to one country (ISO 3).
string
Scope to one or more canonical indicators (comma-separated).
integer
default:"100"
Page size, 1 to 500.
string
Opaque pagination cursor from
meta.pagination.next_cursor.Honest caveat on knowledge time:
as_of currently approximates the ingestion timestamp rather than full provider-vintage reconstruction. The changes feed reflects when Financial Data API learned of a value, which is the right basis for incremental sync.Monitor source health
GET /source-health reports per-connector status and freshness so you can detect a feed that has gone stale or started failing, before it shows up downstream as quietly missing data.
string
Filter to one source.
string
Filter to one provider.
integer
default:"100"
Page size, 1 to 500.
Response
string
Connector identifier.
string
Connector status, e.g.
healthy, degraded, stale, disabled, never_run, unknown.string
Per-frequency freshness verdict for the feed:
fresh, stale, or unknown.string
When the last run finished (ISO). May be null.
string
When the connector last succeeded. Null if it has not succeeded recently.
array
Machine-readable issue codes, e.g.
stale_source, connector_errors, connector_warnings.string
Most recent error message, when present.
string
Newest knowledge-time the connector has produced.
string
Newest period the connector has covered.
string
When the connector is next scheduled to run. May be null.
Putting it together
Recommended cadence
Recommended cadence
Seed with one snapshot. Poll the manifest on your refresh interval. When the hash changes, pull
observations/changes?start_date=<last sync date> and upsert by observationId. Read source health on a slower cadence (for example hourly) to catch stalled feeds.Idempotent upserts
Idempotent upserts
Always key your store by
observationId. The changes feed can re-deliver an observation (for example after a revision), so upsert rather than insert, and never assume a value is final.Rights stay enforced
Rights stay enforced
Snapshot and changes return only redistribution-safe public observations. Licensed vendor data never appears, so a synced copy inherits the same redistribution-safe boundary.
Pagination
Pagination
Every list response carries
meta.pagination. Follow next_cursor while has_more is true. The TypeScript SDK does this for you via async iteration.Related
Derived analytics
Derived datasets sync alongside raw observations and carry their own provenance.
SEC fundamentals
Keep a downstream copy of company fundamentals fresh the same way.

