API documentation
Fact-checked stories and newsroom data from World Space News, as JSON over HTTPS. Base address: https://worldspacenews.com/api/v1
Quick start
- Sign in and create a key (free).
- Send it with every request in the
X-API-Keyheader. - Read the JSON.
curl "https://worldspacenews.com/api/v1/articles?limit=3" -H "X-API-Key: wsk_your_key"
const r = await fetch("https://worldspacenews.com/api/v1/feed", { headers: { "X-API-Key": process.env.WSN_KEY } });
const { top, breaking, latest } = await r.json();import requests
r = requests.get("https://worldspacenews.com/api/v1/articles", params={"category": "space", "limit": 10}, headers={"X-API-Key": WSN_KEY})
for s in r.json()["items"]: print(s["title"], s["url"])Keys & authentication
| Key | Looks like | Send as | Who gets it |
|---|---|---|---|
| API key | wsk_xxxxxxxx_… | X-API-Key: … or Authorization: Bearer … | Anyone, at /developers — up to 10 per account. Its features come from your plan. |
| App key | wsa_… | X-WSN-App-Key: … or Authorization: Bearer … | Apps approved by the newsroom (video studios, partner sites, screens). More |
Keys work like passwords: keep them on your server. Revoke a key at /developers the moment it may have leaked. Browser code should call your own server, which adds the key.
Free, paid and app access
- Free: News API, Integrity ledger — 1,000 calls a month with a free key (30 a minute).
- Without a key: only the free features, 120 calls an hour per address.
- Paid plans: monthly or annual packages add features and allowance (300 calls a minute; unlimited plans more). Subscribe at /developers; your existing keys pick up the new plan immediately.
- Authorised apps: features and allowance set by the newsroom per app.
| Feature | What it covers | Access |
|---|---|---|
News APInews.read | Published, fact-checked stories, sections, the home feed, search and live suggestions | Free |
Members-only full textnews.premium | The complete text of members-only stories (others get a teaser) | Plans |
Live coverage & debateslive.read | Live blogs, launches, debates with timers, polls and claim checks | Plans |
World news mapworld.map | News intensity by place for maps and dashboards | Plans |
Polls & surveyspolls.run | Read live polls and submit answers from your own site or app | Plans |
Experts directoryexperts.directory | Verified experts and spokespersons by topic | Plans |
Law & guideline checklaw.check | Check any text or page against the rules the newsroom watches | Plans |
Space dataspace.data | Satellites (GP elements), tonight's sky and the space calendar | Plans |
Weather, air quality & currencyworld.tools | Weather by place, global air quality and exchange rates | Plans |
Eventsevents.read | Upcoming events with dates, places and registration links | Plans |
Integrity ledgerledger.verify | Verify a story's fingerprint and the ledger chain | Free |
Website & article trackertracker.watch | Watch any website for new articles and any article for edits; read the changes | Plans |
Plans & limits
| Plan | Price | Calls a month | Features |
|---|---|---|---|
| Starter (monthly) | ₹999 / month | 50,000 | News API, Live coverage & debates, Weather, air quality & currency, Space data, Events, Integrity ledger |
| Starter (annual) | ₹9,990 / year | 50,000 | News API, Live coverage & debates, Weather, air quality & currency, Space data, Events, Integrity ledger |
| Broadcast (monthly) | ₹3,999 / month | 250,000 | News API, Members-only full text, Live coverage & debates, World news map, Polls & surveys, Space data, Weather, air quality & currency, Events, Experts directory, Integrity ledger |
| Broadcast (annual) | ₹39,990 / year | 250,000 | News API, Members-only full text, Live coverage & debates, World news map, Polls & surveys, Space data, Weather, air quality & currency, Events, Experts directory, Integrity ledger |
| Newsroom Pro (monthly) | ₹11,999 / month | Unlimited | News API, Members-only full text, Live coverage & debates, World news map, Polls & surveys, Experts directory, Law & guideline check, Space data, Weather, air quality & currency, Events, Integrity ledger, Website & article tracker, studio.app, studio.desktop, newsroom.submit, app.access |
| Newsroom Pro (annual) | ₹1,19,990 / year | Unlimited | News API, Members-only full text, Live coverage & debates, World news map, Polls & surveys, Experts directory, Law & guideline check, Space data, Weather, air quality & currency, Events, Integrity ledger, Website & article tracker, studio.app, studio.desktop, newsroom.submit, app.access |
Every answer to a key carries X-API-Plan, and when limits apply X-Quota-Remaining (this month) and X-RateLimit-Limit (per minute). Allowances reset on the 1st of each month (UTC). Over a limit you get 429 with Retry-After when it helps.
Cache answers on your side: stories rarely change once published. Use the change feed to know when to fetch again instead of polling every endpoint.
Errors
| Status | Meaning | What to do |
|---|---|---|
| 400 | Bad parameter | Read error in the answer. |
| 401 | Key missing, invalid or revoked — or the endpoint needs a key | Send X-API-Key; create a key at /developers. |
| 402 | The feature is not in your plan | Upgrade at /developers (the answer names the feature). |
| 404 | Not found | Check the slug / id. |
| 429 | Per-minute limit or monthly allowance reached | Wait Retry-After seconds, or upgrade. |
{ "error": "Live coverage & debates is not in your plan. See the plans at /developers.", "feature": "live.read", "docs": "/developers/docs" }Endpoints
News API news.read free
Published, fact-checked stories, sections, the home feed, search and live suggestions
/api/v1/articlesLatest published stories. Newest first. Every story has passed the fact-check desk.
| Parameter | In | Type | Description |
|---|---|---|---|
category | query | string | Section slug, e.g. space |
q | query | string | Words in the headline or text |
sort | query | string | popular for most read |
page | query | integer | Page number (from 1) |
limit | query | integer | 1–50, default 20 |
Example
curl "https://worldspacenews.com/api/v1/articles?category=space" -H "X-API-Key: wsk_…"
{
"items": [
{
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module"
}
],
"page": 1,
"total": 318,
"pages": 16
}/api/v1/articles/{slug}One story with its full text. Members-only stories return a teaser (locked: true) unless your plan includes Members-only full text (news.premium).
| Parameter | In | Type | Description |
|---|---|---|---|
slug * | path | string | The story's web name |
Example
curl "https://worldspacenews.com/api/v1/articles/isro-tests-gaganyaan-crew-module" -H "X-API-Key: wsk_…"
{
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module",
"bodyHtml": "<p>…</p>",
"premium": false,
"locked": false,
"highlights": [
"Third successful drop test"
],
"tags": [
"isro",
"gaganyaan"
],
"imageCaption": "The crew module after splashdown",
"videoUrl": null,
"location": "Sriharikota",
"readMins": 4,
"factCheck": {
"checkedAt": "2026-10-24T05:10:00.000Z",
"checkedBy": "Fact desk",
"evidence": [
"ISRO press release"
]
},
"source": null,
"sponsoredBy": null
}/api/v1/feedThe home feed in one call. Top story, top stories, editor's picks, breaking and latest — what a news app or a ticker needs.
Example
curl "https://worldspacenews.com/api/v1/feed" -H "X-API-Key: wsk_…"
{
"hero": {
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module"
},
"top": [
{
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module"
}
],
"editorsPicks": [
{
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module"
}
],
"breaking": [
{
"id": 41,
"slug": "…",
"title": "…"
}
],
"latest": [
{
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module"
}
]
}/api/v1/categoriesSections.
Example
curl "https://worldspacenews.com/api/v1/categories" -H "X-API-Key: wsk_…"
{
"items": [
{
"id": 3,
"name": "Space",
"slug": "space",
"color": "#7048e8",
"parentId": null
}
]
}/api/v1/searchSearch with filters.
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | Words; "exact phrase"; -exclude |
cat | query | string | Section slug |
range | query | string | 24h, 7d, 30d, 1y or custom |
from | query | string | YYYY-MM-DD (range=custom) |
to | query | string | YYYY-MM-DD |
author | query | string | Author name |
tag | query | string | Tag |
loc | query | string | Place |
verified | query | boolean | 1 = fact-checked only |
media | query | string | video or photo |
breaking | query | boolean | 1 = breaking only |
sort | query | string | relevance, new, old or popular |
page | query | integer | Page |
Example
curl "https://worldspacenews.com/api/v1/search?q=space" -H "X-API-Key: wsk_…"
{
"items": [
{
"id": 42,
"slug": "isro-tests-gaganyaan-crew-module",
"title": "ISRO tests Gaganyaan crew module parachutes",
"dek": "Third drop test clears the way for the first uncrewed flight",
"excerpt": "…",
"image": "https://example.com/media/cover.jpg",
"category": {
"name": "Space",
"slug": "space",
"color": "#7048e8"
},
"author": "Asha Rao",
"publishedAt": "2026-10-24T05:30:00.000Z",
"views": 1820,
"breaking": false,
"video": false,
"verified": true,
"organisation": false,
"url": "https://example.com/news/isro-tests-gaganyaan-crew-module"
}
],
"total": 12,
"page": 1,
"pages": 1
}/api/v1/search/suggestSuggestions while typing (also finds stories by ID).
| Parameter | In | Type | Description |
|---|---|---|---|
q * | query | string | What has been typed |
Example
curl "https://worldspacenews.com/api/v1/search/suggest?q=space" -H "X-API-Key: wsk_…"
{
"q": "gagan",
"hits": [
{
"group": "Stories",
"title": "ISRO tests Gaganyaan crew module parachutes",
"url": "/news/isro-tests-gaganyaan-crew-module",
"id": "WSN-…"
}
]
}Live coverage & debates live.read plans
Live blogs, launches, debates with timers, polls and claim checks
World news map world.map plans
News intensity by place for maps and dashboards
Polls & surveys polls.run plans
Read live polls and submit answers from your own site or app
Experts directory experts.directory plans
Verified experts and spokespersons by topic
Law & guideline check law.check plans
Check any text or page against the rules the newsroom watches
Space data space.data plans
Satellites (GP elements), tonight's sky and the space calendar
Weather, air quality & currency world.tools plans
Weather by place, global air quality and exchange rates
Events events.read plans
Upcoming events with dates, places and registration links
Integrity ledger ledger.verify free
Verify a story's fingerprint and the ledger chain
/api/v1/ledgerVerify the integrity ledger or one story.
| Parameter | In | Type | Description |
|---|---|---|---|
story | query | string | WSN-… code: that story's sealed versions |
hash | query | string | One ledger entry |
Example
curl "https://worldspacenews.com/api/v1/ledger?story=space" -H "X-API-Key: wsk_…"
{
"ok": true,
"entries": 10234,
"head": "9f2c…"
}Website & article tracker tracker.watch plans
Watch any website for new articles and any article for edits; read the changes
Free endpoints (no key needed)
/api/v1/changesChange feed (free, no key): when to fetch again.
| Parameter | In | Type | Description |
|---|---|---|---|
poll | query | boolean | 1 = JSON instead of a server-sent event stream |
since | query | integer | Last id you saw |
Example
curl "https://worldspacenews.com/api/v1/changes?poll=1" -H "X-API-Key: wsk_…"
{
"last": 5120,
"items": [
{
"scope": "news",
"ref": "42"
},
{
"scope": "live",
"ref": "9"
}
]
}/api/v1/appSite name, sections and switched-on features (free, no key).
Example
curl "https://worldspacenews.com/api/v1/app" -H "X-API-Key: wsk_…"
{
"name": "World Space News",
"version": "1.6.2",
"sections": [
{
"name": "Space",
"slug": "space"
}
]
}Authorised apps
Apps that run the newsroom's stories on air, on screens or on partner sites — such as World Space Studio (news videos and tickers) or the Newspaper Studio — get an app key. Apply here; the newsroom chooses which features each app may use and approves it, and the key is emailed. App keys work on every endpoint above, plus:
/api/v1/apps/feedAuthorised apps: live feed of published and approved stories. For apps connected by the newsroom (app key). Newest change first, with which editions already used each story.
| Parameter | In | Type | Description |
|---|---|---|---|
status | query | string | published,approved |
since | query | string | ISO time of your last sync |
section | query | string | Section slug |
unused | query | boolean | 1 = not yet used by this app |
limit | query | integer | 1–200 |
Example
curl "https://worldspacenews.com/api/v1/apps/feed?status=space" -H "X-WSN-App-Key: wsa_…"
{
"items": [
{
"id": 42,
"uid": "WSN-…",
"title": "…",
"status": "published",
"bodyHtml": "<p>…</p>",
"usedIn": []
}
],
"next": "2026-10-25T03:00:00.000Z"
}/api/v1/apps/usageAuthorised apps: record which stories an edition / video used.
| Parameter | In | Type | Description |
|---|---|---|---|
editionId * | body | string | Your id for the edition or video |
editionName | body | string | Its title |
editionDate | body | string | YYYY-MM-DD |
stories * | body | object | [{ id | uid, page }] |
Example
curl -X POST "https://worldspacenews.com/api/v1/apps/usage" -H "X-WSN-App-Key: wsa_…" -H "Content-Type: application/json" \
-d '{"editionId":"…","editionName":"…","editionDate":"…","stories":[{"id":42,"page":"1"}]}'{
"ok": true,
"recorded": 6
}Webhooks & change feed
Change feed (free): GET /api/v1/changes?poll=1&since=LAST_ID answers which scopes changed (news, live, debate, poll…). Poll it every 5–10 seconds and refetch only what changed. Without poll=1 it is a server-sent event stream.
Webhooks (authorised apps): when the newsroom sets your webhook address, we POST story.published, story.updated, live.post, live.status and debate.update events. Each has X-WSN-Event and X-WSN-Signature = HMAC-SHA256 of the raw body, keyed with your app key. Tracker webhooks are signed with the webhookSecret returned when you create the tracker.
// Node / Express — verify a webhook
import crypto from "node:crypto";
app.post("/wsn-hook", express.raw({ type: "application/json" }), (req, res) => {
const want = crypto.createHmac("sha256", process.env.WSN_APP_KEY).update(req.body).digest("hex");
if (!crypto.timingSafeEqual(Buffer.from(want), Buffer.from(req.get("X-WSN-Signature") || ""))) return res.sendStatus(401);
const { event, data } = JSON.parse(req.body); // e.g. "live.post"
res.sendStatus(204);
});Guide: connect World Space Studio
World Space Studio turns published stories into news videos and on-air tickers. It already speaks this API — no code changes are needed.
- Get a key. Either apply for an app key (choose “Video / broadcast studio”; the newsroom approves it), or subscribe to a plan that includes the features you need (the Broadcast package covers news, members-only full text, live, polls, maps and space data) and create an API key at /developers.
- In World Space Studio open Admin → Settings → World News Studio.
- World News Studio address:
https://worldspacenews.com - App token: paste the key (
wsa_…orwsk_…). The studio sends it asAuthorization: Bearer …, which this API accepts. - Save. The News desk shows the stories; Make video and Ticker work from the feed, categories, articles and exchange rates.
What the studio calls: /api/v1/app, /api/v1/feed, /api/v1/categories, /api/v1/articles, /api/v1/articles/{slug} (full text — members-only stories need news.premium) and /api/v1/fx (needs world.tools). If a call answers 402, add that feature to the app (newsroom) or your plan.
Guide: a breaking-news ticker
// Refresh the ticker only when the newsroom publishes something
let since = 0;
async function tick() {
const ch = await (await fetch("https://worldspacenews.com/api/v1/changes?poll=1&since=" + since)).json();
if (since && ch.items.some(c => c.scope === "news" || c.scope === "site")) await redraw();
since = ch.last;
}
async function redraw() {
const f = await (await fetch("/my-server/wsn/feed")).json(); // your server adds X-API-Key
document.querySelector("#ticker").textContent = [...f.breaking, ...f.latest].slice(0, 10).map(s => s.title).join(" • ");
}
setInterval(tick, 8000); redraw();Guide: a headlines widget for your site
<div id="wsn-headlines"></div>
<script>
fetch("/api/wsn-latest") // a tiny route on your server that calls https://worldspacenews.com/api/v1/articles?limit=5 with your key
.then(r => r.json())
.then(({ items }) => document.getElementById("wsn-headlines").innerHTML =
items.map(s => `<a href="${s.url}" target="_blank" rel="noopener">${s.title}</a>`).join("<br>"));
</script>Please keep the link to the story and the source name (World Space News) visible.
Guide: website & article tracker
🔒 Part of plans with the website & article tracker. Sign in.
Try it
Runs from your browser with the key you type (it is not stored). Without a key you see what the free tier allows.
