Skip to content
unzoi docs
Search and navigation
Start here
REST API
MCP
Limits and plans
Agent clients
SDKs
Guides

Recipes / Stop one wire report arriving as forty results

Stop one wire report arriving as forty results

/stories in hybrid mode. This page is the operational half — what comes back, how it breaks, and what running it for real takes.

The request

GET /stories
  ?q=<topic>
  &mode=hybrid
  &from=2026-07-29

As a call you can paste:

curl -s -G "https://api.unzoi.com/stories" \
  -H "x-api-key: $UNZOI_KEY" \
  --data-urlencode "q=<topic>" \
  --data-urlencode "mode=hybrid" \
  --data-urlencode "from=2026-07-29"

For an agent rather than a script, the same query is the list_stories MCP tool with these as its arguments.

Parameters used here

What comes back

One row per event with a count and the outlets attached. Deduplicate downstream on the story identifier, never on the headline: headlines get rewritten between editions, so headline-based deduplication silently re-admits the same story every time an editor changes a word.

Field by field: the /stories response reference.

How this goes wrong

Writing your own title-similarity clustering. It handles the easy cases and fails on exactly the hard one — near-identical headlines across editions of the same story are what naive similarity handles worst — and you own it forever.

Adapting it

When you do want the duplicates — studying propagation, framing shifts between wire copy and regional rewrites, or which markets picked something up — use /search instead and keep every article. That is the one case where collapsing destroys the data you came for. Everything else, including anything feeding a model or an alert, wants the collapsed form.

Running it for real

The outlet count on a story is a usable importance signal with no model behind it, and it is more robust than article volume because it cannot be inflated by one prolific publisher. If you persist results, store the story identifier as the primary key and treat articles as children of it; retrofitting that later is painful because you will have already written deduplication logic that the schema now contradicts.

Why this approach

The case for these parameters over the obvious alternatives — and when this recipe is the wrong tool entirely — is on the recipe's page on unzoi.com. It is kept there rather than repeated here, so the argument and the operations cannot drift apart.