Skip to main content

Overview

World Monitor integrates 38 external APIs across 8 domains. This page documents the key API integrations, endpoints, authentication, and rate limits.

Geopolitical Data APIs

ACLED (Armed Conflict Location & Event Data)

Purpose: Conflict events, protests, violence against civilians
PropertyValue
Base URLhttps://api.acleddata.com/acled/read
AuthenticationQuery params: key + email
Env VarsACLED_ACCESS_TOKEN, ACLED_EMAIL
Rate LimitsGenerous (researcher tier)
Data FormatJSON
WM Endpoints/api/acled, /api/acled-conflict
Update Frequency5 min polling, 10 min cooldown
TierFree (researcher account)
Frontend Integration:
  • ConflictService → ConflictPanel, MapLayer
  • Dual-source deduplication with GDELT (ACLED takes precedence)
  • 0.5° spatial grid matching
Quirks:
  • Requires both key and email as separate query parameters
  • Data lags 1-2 weeks behind real-time events
  • Pagination via page param
Degradation: Returns empty data array; conflict panels display “no data available”
Sign up at developer.acleddata.com for a free researcher account.

UCDP (Uppsala Conflict Data Program)

Purpose: Armed conflict data, battle deaths, conflict classification
PropertyValue
Base URLhttps://ucdpapi.pcr.uu.se/api/
AuthenticationNone
Rate LimitsNo documented limit
Data FormatJSON
WM Endpoints/api/ucdp, /api/ucdp-events
TierPublic
Frontend Integration:
  • ConflictService → ConflictPanel
  • Country Brief CII floor scores (countries with 1,000+ battle deaths/year)
Quirks:
  • Academic data source; updates less frequently than ACLED
  • Supports versioned datasets
  • Automatic version discovery (probes multiple year-based API versions)
  • Negative caching (5-min backoff after failures)
  • Stale-on-error fallback

GDELT (Global Database of Events, Language, and Tone)

Purpose: Global event database, geopolitical tension metrics, news analysis
PropertyValue
Base URLhttps://api.gdeltproject.org/api/v2/
AuthenticationNone
Rate LimitsPublic; aggressive scraping will trigger 429
Data FormatJSON, GeoJSON, CSV
WM Endpoints/api/gdelt-doc, /api/gdelt-geo
Update Frequency5 min polling, 10 min cooldown
TierPublic
Frontend Integration:
  • NewsService → GdeltPanel, GeoHeatmap
  • Protest event deduplication with ACLED (Haversine distance)
  • Geopolitical tension pairs
Endpoints:
  • DOC 2.0 API: Full-text search across global news
  • GEO 2.0 API: Geographic heat-mapping
Quirks:
  • Large result sets can be slow
  • No explicit rate limit documentation
  • Upstream 502 passed through; panel shows error state

NGA MSI (Maritime Safety Information)

Purpose: NAVAREA warnings, HYDROLANT/HYDROPAC notices, cable advisories
PropertyValue
Base URLhttps://msi.gs.mil/api/publications/broadcast-warn
AuthenticationNone
Data FormatJSON
WM Endpoints/api/nga-warnings
TierPublic (U.S. DoD)
Frontend Integration:
  • MilitaryService → MaritimeWarningsPanel, MapLayer
  • Undersea cable health advisories
Quirks:
  • U.S. DoD-hosted; occasionally slow
  • Passthrough 502 error on outage

Markets & Finance APIs

Finnhub

Purpose: Stock market data, ETF flows, real-time quotes
PropertyValue
Base URLhttps://finnhub.io/api/v1/
AuthenticationQuery param token or header X-Finnhub-Token
Env VarsFINNHUB_API_KEY
Rate LimitsFree: 60 calls/min, 30 API calls/sec
Data FormatJSON
WM Endpoints/api/finnhub, /api/etf-flows
TierFree
Frontend Integration:
  • MarketService → MarketPanel, ETFFlowsPanel
  • BTC spot ETF flow tracker (IBIT, FBTC, GBTC, + 7 more)
Quirks:
  • WebSocket endpoint available but WM uses REST polling
  • ETF data requires specific symbol lookups
  • Free tier lacks institutional data
Degradation: Returns unavailable flag; panels show stale cached data with timestamp

CoinGecko

Purpose: Cryptocurrency prices, market data, stablecoin monitoring
PropertyValue
Base URLhttps://api.coingecko.com/api/v3/
AuthenticationNone (free tier)
Rate LimitsFree: 10-30 calls/min (fluctuates)
Data FormatJSON
WM Endpoints/api/coingecko, /api/stablecoin-markets, /api/macro-signals
TierFree
Frontend Integration:
  • CryptoService → CryptoPanel, StablecoinPanel
  • MacroService → MacroSignals (composite input)
  • Stablecoin peg health (USDT, USDC, DAI, FDUSD, USDe)
Quirks:
  • Rate limits fluctuate and are not well-documented
  • Stablecoin market-cap queries can be slow
Degradation: Returns unavailable flag; panels show last-known values

Polymarket (Gamma API)

Purpose: Prediction markets, event probabilities, geopolitical forecasting
PropertyValue
Base URLhttps://gamma-api.polymarket.com/
AuthenticationNone
Rate LimitsPublic; no documented limit
Data FormatJSON
WM Endpoints/api/polymarket (proxied via Railway relay)
Update Frequency5 min polling, 10 min cooldown
TierPublic
API Handler: api/polymarket.js:62 Frontend Integration:
  • PredictionService → PolymarketPanel
  • Country Brief pages (top 3 markets by volume)
  • 3-tier JA3 bypass: browser-direct → Tauri native TLS → cloud proxy
Quirks:
  • Gamma is the off-chain API for Polymarket
  • Market slugs/IDs can change
  • Filterable by tag for geopolitical/election markets
Degradation: CDN cache serves stale prediction data

FRED (Federal Reserve Economic Data)

Purpose: Economic indicators, interest rates, inflation metrics
PropertyValue
Base URLhttps://api.stlouisfed.org/fred/
AuthenticationQuery param api_key
Env VarsFRED_API_KEY
Rate Limits120 requests/min (free tier)
Data FormatJSON (via file_type=json)
WM Endpoints/api/fred-data, /api/macro-signals
Update Frequency5 min polling, 10 min cooldown
TierFree
Frontend Integration:
  • MacroService → MacroSignals, EconIndicatorsPanel
  • 7-signal macro radar (JPY liquidity, QQQ/XLP regime)
Quirks:
  • Series IDs must be known in advance (e.g., DGS10, T10Y2Y)
  • Data updates on Fed schedule (not real-time)
Degradation: Cached data served from Upstash; stale indicator shown
Sign up at fred.stlouisfed.org for a free API key.

Natural Events APIs

USGS Earthquake Hazards

Purpose: Real-time earthquake data, seismic activity monitoring
PropertyValue
Base URLhttps://earthquake.usgs.gov/earthquakes/feed/v1.0/
AuthenticationNone
Rate LimitsPublic; updated every 5 min by USGS
Data FormatGeoJSON
WM Endpoints/api/earthquakes
Update Frequency5 min polling, 10 min cooldown
TierPublic
Frontend Integration:
  • SeismicService → EarthquakePanel, MapLayer
  • Natural disaster aggregation (M4.5+ earthquakes)
  • Country Brief CII scoring
Pre-built Feeds:
  • all_day.geojson - All earthquakes, past 24 hours
  • significant_month.geojson - Significant quakes, past 30 days
  • 4.5_week.geojson - M4.5+ earthquakes, past 7 days
Quirks:
  • No query API — just static feed URLs regenerated by USGS
  • Pre-filtered by magnitude/time range
Degradation: CDN cache serves stale GeoJSON; map shows last-known quakes

NASA FIRMS (Fire Information for Resource Management System)

Purpose: Satellite fire detection, wildfire monitoring, thermal hotspots
PropertyValue
Base URLhttps://firms.modaps.eosdis.nasa.gov/api/
AuthenticationQuery param MAP_KEY
Env VarsNASA_FIRMS_API_KEY
Rate LimitsFree tier; transaction-based limits
Data FormatCSV (parsed server-side to JSON)
WM Endpoints/api/firms-fires
TierFree (EOSDIS Earthdata account)
Frontend Integration:
  • FireService → WildfiresPanel, MapLayer
  • Satellite fire detection layer
Satellites:
  • VIIRS (Visible Infrared Imaging Radiometer Suite) - 375m resolution
  • MODIS (Moderate Resolution Imaging Spectroradiometer) - 1km resolution
Quirks:
  • CSV rows can be very large for global queries
  • WM limits to specific regions or short time windows
  • Area/country queries supported
Degradation: Cached data served; empty array on sustained outage
Sign up for a free EOSDIS Earthdata account at firms.modaps.eosdis.nasa.gov.

NOAA Climate Monitoring

Purpose: Global temperature anomalies, climate trends
PropertyValue
Base URLVarious NOAA endpoints
AuthenticationNone
Data FormatJSON
WM Endpoints/api/climate-anomalies
TierPublic (U.S. government)
Frontend Integration:
  • ClimateService → ClimateAnomaliesPanel
  • 15 conflict-prone zones monitored
  • Temperature/precipitation deviations vs 30-day ERA5 baselines
Quirks:
  • Monthly/annual resolution — not real-time
  • Multiple NOAA sub-endpoints aggregated
Degradation: Cached data served with 6h TTL

Military & Security APIs

OpenSky Network

Purpose: ADS-B aircraft tracking, military flight monitoring
PropertyValue
Base URLhttps://opensky-network.org/api/
AuthenticationNone (optional Basic auth for higher limits)
Rate LimitsAnonymous: 100 requests/day; Authenticated: 4000/day
Data FormatJSON
WM Endpoints/api/opensky, /api/theater-posture
TierFree
Frontend Integration:
  • AviationService → FlightTracker
  • TheaterService → TheaterPosture (9 operational theaters)
  • Military surge detection
Quirks:
  • State vectors update every ~10 seconds (WM polls less frequently)
  • Returns all aircraft in bounding box
  • Anonymous rate limit is tight — caching critical
Degradation: CDN cache serves stale snapshot; theater posture uses last-known positions

GPS Jamming (gpsjam.org)

Purpose: GNSS interference detection, H3 hex grid classification
PropertyValue
Base URLhttps://gpsjam.org/data
AuthenticationNone
Data FormatCSV
WM Endpoints/api/gpsjam
TierPublic
API Handler: api/gpsjam.js:5-14 Frontend Integration:
  • GPS/GNSS jamming zones layer
  • Country Brief CII Security scoring (up to +35 points)
  • 12 conflict zone regions tagged
Processing:
  1. Fetch latest date from manifest.csv
  2. Download H3 resolution 4 hex data
  3. Filter cells with ≥3 aircraft
  4. Classify: >10% interference = high (red), ≥2% = medium (amber)
Data Structure:
{
  "date": "2026-02-28",
  "stats": {
    "highCount": 42,
    "mediumCount": 187
  },
  "hexes": [
    {
      "h3": "842b90fffffffff",
      "pct": 15.3,
      "good": 220,
      "bad": 40,
      "total": 260,
      "level": "high"
    }
  ]
}
Quirks:
  • 1-hour in-memory cache (per-isolate)
  • H3 hex resolution 4 (average area ~1,770 km²)
  • Minimum 3 aircraft per cell required

OREF (Israeli Home Front Command)

Purpose: Rocket/missile alert system, siren data
PropertyValue
Base URLoref.org.il (via Railway relay)
AuthenticationResidential proxy (Akamai WAF blocks datacenter IPs)
Data FormatJSON
WM Endpoints/api/oref-alerts
TierPublic (via relay)
API Handler: api/oref-alerts.js:60 Frontend Integration:
  • Near-real-time Israeli rocket alerts
  • 24-hour rolling history with wave detection
  • Country Brief CII Conflict component (up to +50 score boost for Israel)
Relay Endpoints:
  • /oref/alerts - Current active alerts
  • /oref/history - Rolling 24h history count
Quirks:
  • Requires Railway relay with residential proxy
  • Akamai WAF blocks direct datacenter connections
  • 5-second cache for live alerts, 30-second for history

Custom AIS Relay

Purpose: Ship tracking via AIS, naval vessel monitoring
PropertyValue
Base URLConfigurable via WS_RELAY_URL
AuthenticationURL-based credentials
Env VarsWS_RELAY_URL, RELAY_SHARED_SECRET
Data FormatJSON over WebSocket
WM Endpoints/api/ais-snapshot
TierSelf-hosted
Frontend Integration:
  • MaritimeService → VesselTracker, MapLayer
  • Chokepoint detection (8 strategic straits)
  • Naval vessel classification (MMSI prefixes, ship types)
  • AIS density grid (2°×2° cells, 30-min windows)
WebSocket Relay:
  • Decodes AIS NMEA sentences into JSON
  • Persistent connection maintained by scripts/ais-relay.cjs
  • Snapshot endpoint aggregates latest positions
  • See deploy/ for systemd service config
Degradation: Returns empty vessel array; maritime layer shows no ship positions

Cyber Threat Intelligence (5 Sources)

Purpose: C2 servers, malware hosts, phishing, IoCs
PropertyValue
URLhttps://feodotracker.abuse.ch/
AuthNone
FormatCSV
FocusC2 botnet infrastructure
Aggregation: /api/cyber-threats Frontend Integration:
  • CyberService → CyberThreatsPanel
  • Cyber threat IOCs geo-located on globe
  • APT threat actor attribution
Degradation: Source omitted from aggregation; other sources continue

AI / ML APIs

Groq

Purpose: Primary LLM provider for summarization and classification
PropertyValue
Base URLhttps://api.groq.com/openai/v1/
AuthenticationBearer token in Authorization header
Env VarsGROQ_API_KEY
Rate LimitsFree: ~30 req/min (varies by model); Paid: higher
Data FormatJSON (OpenAI-compatible)
WM Endpoints/api/groq-summarize, /api/classify-batch, /api/classify-event, /api/country-intel
TierFree / Paid
Frontend Integration:
  • SummaryService - World Brief generation
  • ClassificationService - Event threat classification
  • CountryIntelService - Country brief AI analysis
Models Used:
  • Llama 3.1 8B (default)
  • Temperature 0.3 for summaries, 0 for classification
Fallback Chain:
Groq → OpenRouter → Transformers.js (browser)
Quirks:
  • Ultra-fast inference via custom LPU hardware
  • OpenAI-compatible API
  • Results cached in Redis (24h TTL) by content hash

OpenRouter

Purpose: Multi-model LLM aggregator (fallback from Groq)
PropertyValue
Base URLhttps://openrouter.ai/api/v1/
AuthenticationBearer token in Authorization header
Env VarsOPENROUTER_API_KEY
Rate LimitsVaries by model
Data FormatJSON (OpenAI-compatible)
WM Endpoints/api/openrouter-summarize
TierFree (select models only)
Free Models Used:
  • mistralai/mistral-7b-instruct:free
Quirks:
  • Supports HTTP-Referer and X-Title headers for attribution
  • Routes to multiple LLM providers
  • Final fallback before browser-based Transformers.js

Infrastructure & Status APIs

Cloudflare Radar

Purpose: Internet outage detection, network anomalies
PropertyValue
Base URLhttps://api.cloudflare.com/client/v4/radar/
AuthenticationBearer token in Authorization header
Env VarsCLOUDFLARE_API_TOKEN
Rate LimitsEnterprise API; generous limits
Data FormatJSON
WM Endpoints/api/cloudflare-outages
Update Frequency5 min polling, 10 min cooldown
TierEnterprise (Radar API token required)
Frontend Integration:
  • InfraService → CloudflareOutagesPanel
  • Internet outages layer on map
  • Country Brief infrastructure signals
Required Permissions:
  • Token needs radar:read permission
Degradation: Returns empty outage list; panel shows “no active outages” (may be false negative)
Requires Cloudflare Enterprise plan or standalone Radar API access.

FAA ASWS (Airport Status Web Service)

Purpose: Airport delays, ground stops, closures
PropertyValue
Base URLhttps://soa.smext.faa.gov/asws/api/
AuthenticationNone
Data FormatXML (parsed server-side)
WM Endpoints/api/faa-status
Update Frequency5 min polling, 5 min cooldown
TierPublic (U.S. government)
Frontend Integration:
  • AviationService → FAAStatusPanel
  • Airport delays layer (128 monitored airports)
Quirks:
  • XML response parsed to JSON
  • U.S. airports only
  • Returns ground delays, ground stops, closures
Degradation: CDN cache serves stale data; panel shows last-known status

Service Status Pages (33 Services)

Purpose: Status monitoring for cloud providers, AI services, dev tools
PropertyValue
Base URLVarious: *.statuspage.io, status.* domains
AuthenticationNone
Data FormatJSON (Atlassian Statuspage API)
WM Endpoints/api/service-status
TierPublic
Monitored Services:
  • Cloud: AWS, Azure, GCP, Cloudflare, Vercel, Netlify, Fastly, DigitalOcean, Heroku
  • DevOps: GitHub, GitLab, Datadog, PagerDuty, HashiCorp
  • SaaS: Slack, Discord, Zoom, Atlassian, Stripe, Twilio
  • Databases: MongoDB Atlas, Redis Cloud, Supabase
  • AI: OpenAI, Anthropic
Frontend Integration:
  • InfraService → ServiceStatusPanel
  • Per-service circuit breakers
Quirks:
  • Atlassian Statuspage JSON format is standard
  • Each service polled independently
  • Individual failures don’t affect other services
Degradation: Individual services shown as “unknown” status; others continue

Humanitarian APIs

UNHCR Population API

Purpose: Refugee and displaced population statistics
PropertyValue
Base URLhttps://api.unhcr.org/population/v1/
AuthenticationNone
Data FormatJSON
WM Endpoints/api/unhcr-population
TierPublic
Frontend Integration:
  • HumanitarianService → RefugeePanel
  • Displacement flows layer
Quirks:
  • Annual data granularity
  • Large datasets; WM queries specific country/year combos
Degradation: Cached data served with 24h TTL

HDX HAPI (Humanitarian API)

Purpose: OCHA humanitarian data - food security, operational presence
PropertyValue
Base URLhttps://hapi.humdata.org/api/v2/
AuthenticationOptional app_identifier query param
Env VarsHDX_APP_IDENTIFIER (optional)
Rate LimitsHigher limits with identifier
Data FormatJSON
WM Endpoints/api/hapi
TierFree
Frontend Integration:
  • HumanitarianService → HAPIPanel
  • Country Brief humanitarian signals
Quirks:
  • Without app_identifier, lower rate limits apply
  • Covers food security, population, operational presence
Degradation: Cached data served with 6h TTL

WorldPop

Purpose: Population density for exposure analysis
PropertyValue
Base URLWorldPop raster/API endpoints
AuthenticationNone
Data FormatJSON
WM Endpoints/api/worldpop-exposure
TierPublic
Frontend Integration:
  • HumanitarianService → ExposureAnalysis
  • Estimates civilian population within event radii (50-100km)
Use Cases:
  • Earthquake exposure estimates
  • Conflict zone population
  • Flood impact assessment
  • Wildfire proximity
Quirks:
  • 7-day cache TTL (population changes slowly)
Degradation: Cached data served with 7-day TTL

World Bank

Purpose: Development indicators (GDP, population, etc.)
PropertyValue
Base URLhttps://api.worldbank.org/v2/
AuthenticationNone
Data FormatJSON (via format=json param)
WM Endpoints/api/worldbank
TierPublic
Frontend Integration:
  • EconService → WorldBankPanel, CountryProfile
Quirks:
  • Default format is XML — must specify format=json
  • Pagination via page/per_page
  • Annual data; not real-time
Degradation: Cached data served with 24h TTL

Content & Research APIs

Hacker News (Firebase API)

Purpose: Tech community news and discussion
PropertyValue
Base URLhttps://hacker-news.firebaseio.com/v0/
AuthenticationNone
Data FormatJSON
WM Endpoints/api/hackernews
TierPublic
Frontend Integration:
  • TechService → HackerNewsPanel (Tech variant)
Quirks:
  • Official HN API via Firebase
  • Each story requires separate fetch by ID
  • WM fetches top N story IDs then batch-fetches details
Degradation: CDN cache serves stale stories

GitHub API

Purpose: Trending repositories, release tracking, version checks
PropertyValue
Base URLhttps://api.github.com/
AuthenticationOptional Bearer token
Env VarsGITHUB_TOKEN (optional)
Rate LimitsUnauthenticated: 60/hour; Authenticated: 5000/hour
Data FormatJSON
WM Endpoints/api/github-trending, /api/version, /api/download
TierFree
Frontend Integration:
  • TechService → GitHubTrendingPanel
  • AppService → VersionCheck (desktop app updates)
Quirks:
  • No official trending API - WM uses search API with date filters
  • Fallback to HTML scraping github.com/trending
  • Version endpoint checks latest release tag
  • Without token, 60 req/h exhausted quickly in dev
Degradation: HTML scrape fallback for trending; version check fails gracefully

ArXiv

Purpose: Academic paper search and discovery
PropertyValue
Base URLhttps://export.arxiv.org/api/
AuthenticationNone
Rate LimitsRequests should be spaced ≥3 seconds apart
Data FormatXML (Atom feed)
WM Endpoints/api/arxiv
TierPublic
Frontend Integration:
  • ResearchService → ArXivPanel (Tech variant)
Search Syntax:
  • ti: - Title
  • au: - Author
  • cat: - Category
Quirks:
  • ArXiv requests polite rate limiting (≥3s between requests)
  • Atom XML parsed server-side
Degradation: CDN cache serves stale results

EIA (Energy Information Administration)

Purpose: U.S. energy production, oil inventory, natural gas pricing
PropertyValue
Base URLhttps://api.eia.gov/v2/
AuthenticationQuery param api_key
Env VarsEIA_API_KEY
Rate LimitsUnspecified
Data FormatJSON
WM Endpoints/api/eia/[[...path]] (catch-all proxy)
TierFree
Frontend Integration:
  • Oil & energy analytics panel
  • WTI/Brent crude prices
  • U.S. production (Mbbl/d)
  • Weekly inventory levels
Quirks:
  • Catch-all proxy forwards all sub-paths
  • Weekly trend detection
Sign up at eia.gov/opendata for a free API key.

API Key Environment Variables

Required Keys (Minimum Viable Setup)

ACLED_ACCESS_TOKEN=           # ACLED conflict data
ACLED_EMAIL=                  # ACLED registered email
FINNHUB_API_KEY=              # Stock market data
FRED_API_KEY=                 # Federal Reserve economic data
GROQ_API_KEY=                 # Groq LLM (primary AI)

Optional Keys (Enhanced Features)

# AI Providers
OPENROUTER_API_KEY=           # LLM fallback

# Data Sources
NASA_FIRMS_API_KEY=           # Satellite fire detection
CLOUDFLARE_API_TOKEN=         # Internet outages (Enterprise)
ABUSEIPDB_API_KEY=            # IP reputation
WINGBITS_API_KEY=             # Premium aircraft data (commercial)
EIA_API_KEY=                  # U.S. energy data

# Humanitarian
HDX_APP_IDENTIFIER=           # OCHA HAPI (higher rate limits)

# Development
GITHUB_TOKEN=                 # 5000 req/h vs 60 unauthenticated

# Self-Hosted Services
WS_RELAY_URL=                 # AIS relay WebSocket URL
RELAY_SHARED_SECRET=          # Relay authentication

Enterprise/Commercial Tier Required

These services require paid plans:
  • Cloudflare Radar - Enterprise plan or standalone Radar API
  • Wingbits - Commercial agreement (premium ADS-B data)

Degradation Matrix

When external APIs fail, World Monitor degrades gracefully:
APIFallback StrategyUser Impact
ACLEDEmpty data arrayConflict panels blank
UCDP24h cached dataStale conflict classification
GDELT502 passthroughPanel error state
FinnhubStale cached dataMarket data delayed
CoinGeckoLast-known valuesCrypto prices outdated
PolymarketCDN cacheStale predictions
FREDUpstash cacheEconomic data delayed
USGSCDN GeoJSONEarthquake data delayed
NASA FIRMSCached/emptyFire data missing
OpenSkyCDN snapshotAircraft positions stale
Cloudflare RadarEmpty outage listMay miss outages
GroqOpenRouter fallbackSlower LLM responses
OpenRouterTransformers.jsBrowser-side inference
AIS RelayEmpty vessel arrayNo ship positions
Cyber Threat SourcesSource omittedOther sources continue

Data Sources Overview

Source types and update frequencies

RSS Feeds

150+ feed domains and categories

Configuration

Environment variable setup guide

API Reference

Complete endpoint documentation

Build docs developers (and LLMs) love