Sync & Freshness

The Graph Service is read-heavy: you query it; you don’t push to it. Underneath, an hourly ingestion pipeline pulls new and updated content records from upstream scanning systems into the canonical Postgres store. This page explains the data-freshness guarantees and how to monitor them.

Freshness signal: GET /health

The fastest way to check data freshness:

$curl -H "x-api-key: $API_KEY" "$API_BASE/health"
1{
2 "ok": true,
3 "lastSyncedAt": "2026-04-28T17:32:11.000Z",
4 "syncFreshSeconds": 1432
5}

lastSyncedAt is the ISO timestamp of the last successful ingestion run. syncFreshSeconds is how long ago that was.

Window filtering

Most endpoints accept a window parameter to restrict results by published_at:

ValueMeaning
7dLast 7 days
30dLast 30 days
allNo time filter (live retrieval jobs only)

Precomputed narrative endpoints only support 7d | 30d. The all window exists because most ingested content has older published_at values and a 7-day cutoff was filtering nearly all matches — use a bounded window only when you specifically want fresh content.

Live retrieval jobs (POST /intelligence/jobs) accept 7d, 30d or all, and the window is required — there is no default. See Intelligence Jobs.