Returns the caller's merged world-news feed: every source their project's…
Returns the caller's merged world-news feed: every source their project's pipeline names — GDELT once per keyword, plus each allowlisted RSS or Atom feed…
GET /v1/world/news
| Address | https://api.hanzo.ai/v1/world/news |
| Method | GET |
| Operation | get_world_news |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Returns the caller's merged world-news feed: every source their project's pipeline names — GDELT once per keyword, plus each allowlisted RSS or Atom feed — fetched concurrently, narrowed by the pipeline's keyword/region/source filters, deduplicated by link and sorted freshest first, capped at 50 items.
A project with no stored pipeline gets a sensible default set of world feeds rather than an empty answer. A source that fails or times out is SKIPPED: the feed degrades to honest partial results and never 5xxs because one outlet was down. Reading also publishes the result to the /v1/world/stream subscribers of the same (org, project), so a dashboard's own refresh updates every open tab.
Request
GET /v1/world/news takes no parameters and no body — the credential is the whole request.
Response
| Status | Body | Meaning |
|---|---|---|
200 | newsResponse | ok |
200 body — 8 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
items | body | NewsItem[] | — | Items is the merged, filtered, deduped feed, freshest first and capped at 50. |
items[].image | body | string | — | Image is a lead-image URL when the upstream carried one. |
items[].lang | body | string | — | Lang is the article's language code when the upstream reported one. |
items[].link | body | string | — | Link is the article's URL at the outlet. |
items[].pubDate | body | string | — | PubDate is when the outlet published it, RFC3339 UTC. |
items[].source | body | string | — | Source is the outlet the item came from, as the upstream named it. |
items[].title | body | string | — | Title is the headline. |
items[].tone | body | string | — | Tone is GDELT's own sentiment score for the article, as text. |
Failure carries the platform error shape — see Errors.
Examples
hanzo world newsimport { Configuration, WorldApi } from 'hanzoai';
const api = new WorldApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getWorldNews();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import WorldApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = WorldApi(client).get_world_news()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.WorldAPI.GetWorldNews(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, world_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = world_api::get_world_news(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.WorldApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new WorldApi(client).getWorldNews();curl https://api.hanzo.ai/v1/world/news \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches world through the world tool, which names its 6 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "get_world"
}
}
}'How is this guide?