A narrative in the KINETK Graph is a cluster of related social-media content unified by a shared idea — a topic, framing, or moment. Narratives are computed by combining semantic similarity (multimodal vector embeddings) with tag and creator co-occurrence, then labeled and summarized by an LLM.
There are two ways to access narratives:
/narratives/trending, /narratives/search, /narratives/{id}. Sub-second. Refreshed on a 6-hour schedule. Best for dashboards.POST /intelligence/jobs with kind: "intelligence_discover". 5–20 seconds. Runs the full retrieval + clustering + analytics pipeline against a free-text query.Returns the top narrative clusters for the window, ranked by trendScore (engagement velocity × content volume × creator diversity). Use this for the “what’s hot right now” dashboard panel.
Filters the precomputed narrative set by free-text match across labels, summaries, and top tags. Same response shape as /narratives/trending.
Returns one narrative plus its content list, top creators, per-platform breakdown, and any duplicate groups inside the cluster.
When the precomputed set doesn’t have what you need — e.g. you want to slice by a custom query, a different time window, or specific platforms — submit an async intelligence_discover job:
The discover pipeline runs all of the following before returning:
limit rows, broadens via Postgres tag-overlap on hashtags from the query or top tags from Phase 1.The response is a single QueryNarrativeDiscoveryResponse — see the API Reference for the full schema.
Both intelligence_search and intelligence_discover start with the same retrieval pipeline. The difference is what they return on top:
Pick intelligence_search if you’re feeding a search UI; pick intelligence_discover if you’re feeding an analyst or agent that wants the “shape” of the conversation.
The retrieval kinds (intelligence_search, intelligence_discover) accept a free-text query. The campaign-shaped kinds (campaign_brief, llm_context) accept a structured campaign object instead:
Both run the same discovery pipeline under the hood; the campaign kinds layer a campaign-context adapter on top and (for campaign_brief) persist the result. See the API Reference for full input shapes.