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
Frontend Integration:
ConflictService→ ConflictPanel, MapLayer- Dual-source deduplication with GDELT (ACLED takes precedence)
- 0.5° spatial grid matching
- Requires both
keyandemailas separate query parameters - Data lags 1-2 weeks behind real-time events
- Pagination via
pageparam
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
Frontend Integration:
ConflictService→ ConflictPanel- Country Brief CII floor scores (countries with 1,000+ battle deaths/year)
- 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
Frontend Integration:
NewsService→ GdeltPanel, GeoHeatmap- Protest event deduplication with ACLED (Haversine distance)
- Geopolitical tension pairs
- DOC 2.0 API: Full-text search across global news
- GEO 2.0 API: Geographic heat-mapping
- 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
Frontend Integration:
MilitaryService→ MaritimeWarningsPanel, MapLayer- Undersea cable health advisories
- U.S. DoD-hosted; occasionally slow
- Passthrough 502 error on outage
Markets & Finance APIs
Finnhub
Purpose: Stock market data, ETF flows, real-time quotes
Frontend Integration:
MarketService→ MarketPanel, ETFFlowsPanel- BTC spot ETF flow tracker (IBIT, FBTC, GBTC, + 7 more)
- WebSocket endpoint available but WM uses REST polling
- ETF data requires specific symbol lookups
- Free tier lacks institutional data
unavailable flag; panels show stale cached data with timestamp
CoinGecko
Purpose: Cryptocurrency prices, market data, stablecoin monitoring
Frontend Integration:
CryptoService→ CryptoPanel, StablecoinPanelMacroService→ MacroSignals (composite input)- Stablecoin peg health (USDT, USDC, DAI, FDUSD, USDe)
- Rate limits fluctuate and are not well-documented
- Stablecoin market-cap queries can be slow
unavailable flag; panels show last-known values
Polymarket (Gamma API)
Purpose: Prediction markets, event probabilities, geopolitical forecasting
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
- Gamma is the off-chain API for Polymarket
- Market slugs/IDs can change
- Filterable by tag for geopolitical/election markets
FRED (Federal Reserve Economic Data)
Purpose: Economic indicators, interest rates, inflation metrics
Frontend Integration:
MacroService→ MacroSignals, EconIndicatorsPanel- 7-signal macro radar (JPY liquidity, QQQ/XLP regime)
- Series IDs must be known in advance (e.g.,
DGS10,T10Y2Y) - Data updates on Fed schedule (not real-time)
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
Frontend Integration:
SeismicService→ EarthquakePanel, MapLayer- Natural disaster aggregation (M4.5+ earthquakes)
- Country Brief CII scoring
all_day.geojson- All earthquakes, past 24 hourssignificant_month.geojson- Significant quakes, past 30 days4.5_week.geojson- M4.5+ earthquakes, past 7 days
- No query API — just static feed URLs regenerated by USGS
- Pre-filtered by magnitude/time range
NASA FIRMS (Fire Information for Resource Management System)
Purpose: Satellite fire detection, wildfire monitoring, thermal hotspots
Frontend Integration:
FireService→ WildfiresPanel, MapLayer- Satellite fire detection layer
- VIIRS (Visible Infrared Imaging Radiometer Suite) - 375m resolution
- MODIS (Moderate Resolution Imaging Spectroradiometer) - 1km resolution
- CSV rows can be very large for global queries
- WM limits to specific regions or short time windows
- Area/country queries supported
Sign up for a free EOSDIS Earthdata account at firms.modaps.eosdis.nasa.gov.
NOAA Climate Monitoring
Purpose: Global temperature anomalies, climate trends
Frontend Integration:
ClimateService→ ClimateAnomaliesPanel- 15 conflict-prone zones monitored
- Temperature/precipitation deviations vs 30-day ERA5 baselines
- Monthly/annual resolution — not real-time
- Multiple NOAA sub-endpoints aggregated
Military & Security APIs
OpenSky Network
Purpose: ADS-B aircraft tracking, military flight monitoring
Frontend Integration:
AviationService→ FlightTrackerTheaterService→ TheaterPosture (9 operational theaters)- Military surge detection
- State vectors update every ~10 seconds (WM polls less frequently)
- Returns all aircraft in bounding box
- Anonymous rate limit is tight — caching critical
GPS Jamming (gpsjam.org)
Purpose: GNSS interference detection, H3 hex grid classification
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
- Fetch latest date from
manifest.csv - Download H3 resolution 4 hex data
- Filter cells with ≥3 aircraft
- Classify: >10% interference = high (red), ≥2% = medium (amber)
- 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
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)
/oref/alerts- Current active alerts/oref/history- Rolling 24h history count
- 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
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)
- 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
Cyber Threat Intelligence (5 Sources)
Purpose: C2 servers, malware hosts, phishing, IoCs- Feodo Tracker
- URLhaus
- C2IntelFeeds
- AlienVault OTX
- AbuseIPDB
/api/cyber-threats
Frontend Integration:
CyberService→ CyberThreatsPanel- Cyber threat IOCs geo-located on globe
- APT threat actor attribution
AI / ML APIs
Groq
Purpose: Primary LLM provider for summarization and classification
Frontend Integration:
SummaryService- World Brief generationClassificationService- Event threat classificationCountryIntelService- Country brief AI analysis
- Llama 3.1 8B (default)
- Temperature 0.3 for summaries, 0 for classification
- 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)
Free Models Used:
mistralai/mistral-7b-instruct:free
- Supports
HTTP-RefererandX-Titleheaders 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
Frontend Integration:
InfraService→ CloudflareOutagesPanel- Internet outages layer on map
- Country Brief infrastructure signals
- Token needs
radar:readpermission
FAA ASWS (Airport Status Web Service)
Purpose: Airport delays, ground stops, closures
Frontend Integration:
AviationService→ FAAStatusPanel- Airport delays layer (128 monitored airports)
- XML response parsed to JSON
- U.S. airports only
- Returns ground delays, ground stops, closures
Service Status Pages (33 Services)
Purpose: Status monitoring for cloud providers, AI services, dev tools
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
InfraService→ ServiceStatusPanel- Per-service circuit breakers
- Atlassian Statuspage JSON format is standard
- Each service polled independently
- Individual failures don’t affect other services
Humanitarian APIs
UNHCR Population API
Purpose: Refugee and displaced population statistics
Frontend Integration:
HumanitarianService→ RefugeePanel- Displacement flows layer
- Annual data granularity
- Large datasets; WM queries specific country/year combos
HDX HAPI (Humanitarian API)
Purpose: OCHA humanitarian data - food security, operational presence
Frontend Integration:
HumanitarianService→ HAPIPanel- Country Brief humanitarian signals
- Without
app_identifier, lower rate limits apply - Covers food security, population, operational presence
WorldPop
Purpose: Population density for exposure analysis
Frontend Integration:
HumanitarianService→ ExposureAnalysis- Estimates civilian population within event radii (50-100km)
- Earthquake exposure estimates
- Conflict zone population
- Flood impact assessment
- Wildfire proximity
- 7-day cache TTL (population changes slowly)
World Bank
Purpose: Development indicators (GDP, population, etc.)
Frontend Integration:
EconService→ WorldBankPanel, CountryProfile
- Default format is XML — must specify
format=json - Pagination via
page/per_page - Annual data; not real-time
Content & Research APIs
Hacker News (Firebase API)
Purpose: Tech community news and discussion
Frontend Integration:
TechService→ HackerNewsPanel (Tech variant)
- Official HN API via Firebase
- Each story requires separate fetch by ID
- WM fetches top N story IDs then batch-fetches details
GitHub API
Purpose: Trending repositories, release tracking, version checks
Frontend Integration:
TechService→ GitHubTrendingPanelAppService→ VersionCheck (desktop app updates)
- 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
ArXiv
Purpose: Academic paper search and discovery
Frontend Integration:
ResearchService→ ArXivPanel (Tech variant)
ti:- Titleau:- Authorcat:- Category
- ArXiv requests polite rate limiting (≥3s between requests)
- Atom XML parsed server-side
EIA (Energy Information Administration)
Purpose: U.S. energy production, oil inventory, natural gas pricing
Frontend Integration:
- Oil & energy analytics panel
- WTI/Brent crude prices
- U.S. production (Mbbl/d)
- Weekly inventory levels
- 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)
Optional Keys (Enhanced Features)
Enterprise/Commercial Tier Required
- 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:Related Resources
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