> ## Documentation Index
> Fetch the complete documentation index at: https://www.worldmonitor.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# API Reference

> Catalog of documented World Monitor REST service groups. Every endpoint follows /api/<service>/v1/<rpc-name> and returns consistent envelopes.

WorldMonitor exposes its data through a family of versioned REST services. Every endpoint follows the same shape:

```
https://api.worldmonitor.app/api/<service>/v1/<rpc-name>
```

`<rpc-name>` is kebab-case (e.g. `list-acled-events`, `get-resilience-ranking`). Auth is the same on every service — pass a user API key such as `X-WorldMonitor-Key: wm_0123456789abcdef0123456789abcdef01234567`, an operator-issued enterprise key, or use the dashboard's browser session where supported. See [Authentication](/docs/usage-auth) for details.

The grouped pages in the left sidebar render OpenAPI specs — request parameters, response schemas, and try-it-out — for the documented service groups. The bundled spec remains the complete machine-readable source.

Prefer the terminal? The official [`worldmonitor` CLI](/docs/cli) hits any of these paths (`worldmonitor get /api/<service>/v1/<rpc-name>`) and lists the live catalog with `worldmonitor list`.

## Machine-readable discovery

Building an agent or codegen pipeline? Point at `https://worldmonitor.app/` and follow the `Link:` header — every OpenAPI spec, MCP server card, OAuth endpoint, and agent-skill bundle is discoverable from one root URL via standard `.well-known` paths. See [Agent Discovery](/docs/agent-discovery) for the full walkthrough.

The single bundled spec is at [`/openapi.yaml`](https://www.worldmonitor.app/openapi.yaml) — feed it to any OpenAPI generator to produce typed clients for all 35 generated services in one pass, including platform services that do not have dedicated sidebar pages.

## Service catalog

**Geopolitical** — Conflicts, Military, Unrest, Intelligence, Displacement, Cyber, Sanctions

**Natural events** — Natural Disasters, Seismology, Climate, Wildfires, Radiation, Thermal

**Economy and markets** — Economic (FRED / IMF / BIS / country macro), Markets (quotes / indices / FX / commodities), Trade, Supply Chain, Consumer Prices, Predictions (prediction markets), Forecasts

**Infrastructure and transport** — Aviation (aircraft tracking, flight search), Maritime (vessels, density zones), Infrastructure, Resilience (country resilience score and ranking)

**Health and environment** — Public Health, Imagery, Webcams

**Other** — News (feed digest, article summaries), Research, Positive Events, Giving, Batch (bulk read fan-out), Leads (contact and Pro-waitlist mutations documented under Platform Endpoints)

Open any group in the sidebar to browse its operations.

## Batch requests

Acting on many items? `POST /api/batch/v1/execute` accepts an **array of operations** and runs up to 20 documented GET endpoints concurrently in a single request, returning per-operation statuses and bodies:

```bash theme={null}
curl -X POST https://api.worldmonitor.app/api/batch/v1/execute \
  -H "X-WorldMonitor-Key: wm_..." \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      { "id": "fear-greed", "path": "/api/market/v1/get-fear-greed-index" },
      { "id": "risk-de",    "path": "/api/intelligence/v1/get-country-risk?country=DE&jmespath=score" }
    ]
  }'
```

Each operation runs with the batch request's own credentials and counts against your rate limits individually — batching saves round trips, not quota. Query strings pass through untouched, so per-operation [`jmespath` projections](/docs/mcp-jmespath) keep the combined response small. Responses over 1 MB per operation are rejected with `response_too_large`; nested batches are refused.

## MCP equivalents

If you're moving between REST and the [MCP server](/docs/mcp-overview), treat them as related but distinct catalogs. REST coverage is defined by OpenAPI. MCP coverage is narrower: an endpoint is **MCP-exposed** only when the exact `METHOD /api/...` path is declared in a tool's registry `_apiPaths` entry.

Use the [MCP API coverage table](/docs/mcp-overview#api-coverage) as the human-facing reverse lookup. It maps each MCP tool to the REST endpoints it explicitly serves. If a REST route is not in that table, it is REST-only as an API equivalence, even if a cache-backed MCP tool returns similar domain data.

Common shapes:

* **Declared REST-backed tools** — the tool's registry names one or more exact REST paths, such as `get_market_data` covering market quote and sector endpoints.
* **Bundled cache reads** — the tool reads one or more pre-seeded Redis keys and may not have a single REST equivalent, such as `get_country_macro`, the EU macro tools, `get_aviation_status`, and `get_cyber_threats`.
* **Live/composite tools** — the tool fans out, filters geographically, or invokes LLM analysis; use the coverage table for the exact REST paths it claims.

Important non-equivalences:

| REST endpoint                                                                                                                      | MCP status                                                                                                                             |
| ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `GET /api/conflict/v1/list-acled-events`                                                                                           | REST-only. `get_conflict_events` covers `list-iran-events`, `list-ucdp-events`, and `list-unrest-events`, not ACLED.                   |
| `GET /api/cyber/v1/list-cyber-threats`                                                                                             | REST-only for now. `get_cyber_threats` is a cache-backed MCP tool with no declared REST path.                                          |
| `GET /api/infrastructure/v1/list-service-statuses`                                                                                 | REST-only. `get_infrastructure_status` declares `list-internet-outages` only.                                                          |
| `GET /api/supply-chain/v1/get-critical-minerals`                                                                                   | REST-only. `get_supply_chain_data` declares shipping stress and customs revenue only.                                                  |
| `GET /api/research/v1/list-arxiv-papers`, `GET /api/research/v1/list-trending-repos`, `GET /api/research/v1/list-hackernews-items` | REST-only. `get_research_signals` declares `list-tech-events` only.                                                                    |
| `GET /api/aviation/v1/list-airport-delays`, `GET /api/aviation/v1/get-flight-status`                                               | REST-only. MCP aviation coverage is via `get_airspace`, flight-search tools, and cache-backed `get_aviation_status`, not these routes. |

Always cross-check against [the bundled OpenAPI spec](https://www.worldmonitor.app/openapi.yaml) for REST path names, parameters, and response shapes, and against [MCP API coverage](/docs/mcp-overview#api-coverage) for MCP exposure.

## Platform endpoints

Bootstrap, health, version, and cache-purge live outside the per-service catalog — see [Platform Endpoints](/docs/api-platform).
