curl --request GET \
--url https://api.worldmonitor.app/api/news/v1/list-label-changesimport requests
url = "https://api.worldmonitor.app/api/news/v1/list-label-changes"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.worldmonitor.app/api/news/v1/list-label-changes', 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/news/v1/list-label-changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/news/v1/list-label-changes"
req, _ := http.NewRequest("GET", url, nil)
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/news/v1/list-label-changes")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/news/v1/list-label-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"changes": [
{
"at": 1767182400000,
"credibilityScore": 72,
"field": "corroboration",
"link": "https://example.com/news/synthetic-example",
"next": "corroborated",
"nextPublishers": 2,
"previous": "single-publisher",
"previousPublishers": 1,
"reason": "2 publisher families now carry this story (was 1).",
"sources": [
{
"name": "Example Wire (synthetic)",
"tier": 1
},
{
"name": "Example Daily (synthetic)",
"tier": 2
}
],
"storyId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"title": "Synthetic example story",
"trigger": "digest"
}
],
"counts": {
"at": 1767182400000,
"corroborated": 64,
"singlePublisher": 51,
"stories": 120,
"tier4Only": 3,
"unknown": 2
},
"retentionDays": 7,
"state": "ok"
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}ListLabelChanges
ListLabelChanges returns stories whose corroboration label moved between single-publisher and corroborated in the last seven days, with the publishers behind each change.
curl --request GET \
--url https://api.worldmonitor.app/api/news/v1/list-label-changesimport requests
url = "https://api.worldmonitor.app/api/news/v1/list-label-changes"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.worldmonitor.app/api/news/v1/list-label-changes', 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/news/v1/list-label-changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/news/v1/list-label-changes"
req, _ := http.NewRequest("GET", url, nil)
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/news/v1/list-label-changes")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/news/v1/list-label-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"changes": [
{
"at": 1767182400000,
"credibilityScore": 72,
"field": "corroboration",
"link": "https://example.com/news/synthetic-example",
"next": "corroborated",
"nextPublishers": 2,
"previous": "single-publisher",
"previousPublishers": 1,
"reason": "2 publisher families now carry this story (was 1).",
"sources": [
{
"name": "Example Wire (synthetic)",
"tier": 1
},
{
"name": "Example Daily (synthetic)",
"tier": 2
}
],
"storyId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"title": "Synthetic example story",
"trigger": "digest"
}
],
"counts": {
"at": 1767182400000,
"corroborated": 64,
"singlePublisher": 51,
"stories": 120,
"tier4Only": 3,
"unknown": 2
},
"retentionDays": 7,
"state": "ok"
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}Query Parameters
Story identity hash (64 hex characters). Empty lists changes across all stories.
Maximum changes returned, newest first. 0 uses the default of 50; at most 200.
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
ListLabelChangesResponse lists changes from the last seven days, newest first.
Show child attributes
Show child attributes
ok | unavailable. Unavailable means the log could not be read, not that it is empty.
Retention window in days.
LabelCounts is how many stories in the latest full English digest carry each label.
Show child attributes
Show child attributes
Was this page helpful?
