REST calls go to
https://api.worldmonitor.app with an X-WorldMonitor-Key: wm_... header. See Authentication for keys and Rate limits for per-plan quotas.
The record each feed returns
Field names below are the JSON names the routes return. Unrest, news and history records link to the original report when the producer had one; UCDP events name their original source in text.UCDP event (list-ucdp-events)
Unrest event (list-unrest-events)
A GDELT-derived row is a media signal, not a verified event. The route serves it with
confidence: CONFIDENCE_LEVEL_LOW, an unspecified type and severity, and a summary that says the local event is not verified.
News cluster (get_news_clusters, MCP)
A cluster groups headlines from different outlets that report the same story.
The REST digest returns the underlying headlines rather than clusters. Each item has
title, source, link, publishedAt, threat, location and locationName when a place was extracted, importanceScore, corroborationCount and credibilityScore.
History record (get-intel-timeline, search-intel-history)
History records carry a country but no coordinates.
Filters
The list routes return the whole current snapshot in one response; there is no cursor pagination. The history routes set
partial: true when a bounded read may have omitted older matches, and upstreamUnavailable: true when the store could not be reached. An empty list in that case is a failed read, not a quiet period.
Retention: how far back each feed goes
Checked against the code on October 17, 2026.
To keep a longer record, poll the feeds and store the items yourself. De-duplicate history records on
id, and unrest and UCDP rows on their producer id. A news cluster id can change when an earlier headline joins the cluster, so do not use it as a durable key.
Webhooks for new items
Alert rules push matching events to a webhook as they happen, or as daily, twice-daily or weekly digests. A rule filters by event type, severity (all, high, critical) and country. Each delivery is signed with HMAC-SHA256 in X-WM-Signature. You set up the webhook and rules in the dashboard’s notification settings, signed in with a paid plan.
A real-time delivery carries eventType, severity, timestamp and a payload whose fields depend on the event type. Treat every payload field as optional. News alerts (rss_alert) carry title, source, link, publishedAt, importanceScore and corroborationCount. Conflict alerts (conflict_escalation) carry title and source, plus countryCode when the country resolved, and no link. Payloads carry no stable event id and no coordinates. The notifications reference has the envelope and a verification example.
Code
Python, with the official SDK:client.Get, client.CallTool) and Ruby (client.get, client.call_tool) SDKs expose the same calls. From a shell, the npm CLI does the same:
Plans and price
These plans are self-serve with published prices on the pricing page. Checkout runs in the browser; you do not need to talk to sales.
Before you build
- World Monitor aggregates published reports. It does not verify events on the ground, and a GDELT-derived row is a media signal.
- Not every upstream source has completed a terms review. Check reuse terms before you redistribute data. The free
get_sourcesMCP tool lists each outlet’s tier and review status. - There is no published availability SLA.
- Planned work: a cursor-paginated history endpoint with longer retention is tracked in issue #4276 and issue #5745.
