1
Resolve the name
Never filter by a company name string. Names are ambiguous, they change, and every surface spells
them differently. Ask the resolver instead:Take the
entity_id from the best match — an e_… spine id. That one string is the join key for
everything below.2
What is happening to it
sort=significance is the default and the one you want for monitoring — it ranks by how much the
event matters, not by how recently it arrived. Sorting by recency gives you a feed dominated by
whatever a wire service published in the last hour.Start wide. The most common mistake on this API is stacking four filters on the first call and
concluding the data is missing when the empty result is really your AND.3
Read the evidence
An event is a claim; the articles are why we made it. Every event links to the story it came from:Then
/stories/{story_id}/articles for the source URLs. Build citation into the feed from the
start — an alert nobody can verify gets ignored the second time it fires.4
Fan out with the same id
This is the payoff. The If you had filtered by name instead, each of these would have matched a different subset and you
would have silently dropped half the data — without any endpoint returning an error.
entity_id from step 1 works unchanged on every other surface:Doing the same thing through MCP
Same four steps, no HTTP. Point an agent at the MCP server and it discovers the tools itself:Four things worth knowing before you build
Event and story lists default to 7 days
Event and story lists default to 7 days
Not to all of history. Other families carry their own default, declared on each
days parameter in the API reference. Pass days or an explicit date_start/date_end window whenever the window matters to your answer. Windows are bounded
— an unbounded scan across the whole corpus is refused rather than served slowly.Read applied_filters on every response
Read applied_filters on every response
It echoes what the server actually applied, using canonical names whatever spelling you sent. If a
strict endpoint does not recognize a parameter, the request fails with
400 UNKNOWN_PARAM. On an
endpoint still using the compatibility contract, the request may succeed but list that parameter in
applied_filters.ignored. In either case, correct the request before using the returned data.null is not zero
null is not zero
A
null metric means the observable was not found. A 0 means it was found and measured as zero.
Charting null as 0 will invent a trend that is not there.Paginate with the cursor, not an offset
Paginate with the cursor, not an offset
List endpoints return a
cursor. Offset pagination drifts as new rows land mid-walk; the cursor does
not.Next
Recipes
Short copy-paste queries for the common shapes.
API reference
Every endpoint, parameter and value.

