curl --request GET \
--url https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"allTheatersFailed": true,
"completionStatus": "example",
"eligibleTheaterCount": 1,
"error": "example",
"failedTheaterCount": 1
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"code": "renewal_verification_pending",
"requiredTier": 123
}{
"message": "<string>"
}GetSimulationOutcome
GetSimulationOutcome returns the latest forecast simulation outcome, refreshed about hourly. The response note is set when a supplied runId does not match.
curl --request GET \
--url https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/forecast/v1/get-simulation-outcome")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"allTheatersFailed": true,
"completionStatus": "example",
"eligibleTheaterCount": 1,
"error": "example",
"failedTheaterCount": 1
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"code": "renewal_verification_pending",
"requiredTier": 123
}{
"message": "<string>"
}Authorizations
User-issued WorldMonitor API key.
Query Parameters
Optional run ID (epoch ms, hyphen, 1-64 char suffix; max 128). Returns that run's outcome within 24h retention, processing=true while it is queued, or the latest outcome with a note. Empty returns the latest outcome.
128^([0-9]{13,}-[A-Za-z0-9-]{1,64})?$"1789387200000-abc123"
Optional JMESPath expression applied server-side to project or reduce the JSON response before it is returned (mirrors the MCP jmespath argument). Invalid expressions, expressions larger than 1024 UTF-8 bytes, or projections that exceed the 256 KB output cap return HTTP 400 with a {_jmespath_error, original_keys} envelope. Grammar and worked examples: https://www.worldmonitor.app/docs/mcp-jmespath.
Response
Successful response
Unix timestamp in milliseconds.. Warning: Values > 2^53 may lose precision in JavaScript
Set when run_id was supplied but the latest outcome is returned instead; the text says why (run expired or not found, or its by-run record failed).
Populated when the Redis lookup failed. Distinguish from healthy not-found (found=false, error=""). Value: "redis_unavailable" on Redis errors.
JSON-encoded Array<{ theaterId, theaterLabel, stateKind, topPaths: [{label, summary, confidence, keyActors}], dominantReactions, stabilizers, invalidators }>; empty when found=false.
True when the supplied runId is still queued, as opposed to expired.
Number of theaters eligible for simulation in the package used by this outcome.
Number of eligible theaters that failed before producing a Round 2 result.
True when eligible_theater_count > 0 and no theater produced an outcome.
Machine-readable completion status. Current values: "completed", "partial", "no_eligible_theaters", or "all_theaters_failed".
Was this page helpful?
