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 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 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 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 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 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 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 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 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 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 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 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 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 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:
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 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 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
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 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:
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) 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 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 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 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 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 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 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.) 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 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 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 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 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)

Optional Keys (Enhanced Features)

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:

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