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 |
| 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 |
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
/api/v1/liveLive coverage: live now, coming up, finished.
Example
curl "https://worldspacenews.com/api/v1/live" -H "X-API-Key: wsk_…"
{
"items": [
{
"slug": "pslv-c62-launch",
"title": "PSLV-C62 launch",
"kind": "launch",
"status": "live",
"startsAt": "2026-10-25T04:30:00.000Z"
}
]
}/api/v1/live/{slug}One live coverage with its posts.
| Parameter | In | Type | Description |
|---|---|---|---|
slug * | path | string | Coverage slug |
since | query | string | ISO time — only posts added or edited after it (for polling) |
Example
curl "https://worldspacenews.com/api/v1/live/isro-tests-gaganyaan-crew-module?since=space" -H "X-API-Key: wsk_…"
{
"event": {
"slug": "pslv-c62-launch",
"title": "PSLV-C62 launch",
"status": "live"
},
"updates": [
{
"id": 9,
"kind": "key",
"title": "Liftoff",
"bodyHtml": "<p>…</p>",
"at": "2026-10-25T04:30:12.000Z",
"reactions": {
"🚀": 120
}
}
]
}/api/v1/debatesDebates (live first).
Example
curl "https://worldspacenews.com/api/v1/debates" -H "X-API-Key: wsk_…"
{
"items": [
{
"slug": "space-station-2035",
"title": "Should India build its own space station by 2035?",
"status": "scheduled"
}
]
}/api/v1/debates/{slug}One debate: round timer, speakers, polls, questions, claim checks.
| Parameter | In | Type | Description |
|---|---|---|---|
slug * | path | string | Debate slug |
Example
curl "https://worldspacenews.com/api/v1/debates/isro-tests-gaganyaan-crew-module" -H "X-API-Key: wsk_…"
{
"debate": {
"title": "…",
"status": "live",
"round": {
"name": "Opening — For",
"endsAt": "…"
}
},
"speakers": [],
"polls": [],
"questions": []
}World news map world.map plans
News intensity by place for maps and dashboards
/api/v1/worldNews intensity by place.
| Parameter | In | Type | Description |
|---|---|---|---|
hours | query | integer | Look-back window, default 24 |
cat | query | integer | Section id |
q | query | string | Words |
Example
curl "https://worldspacenews.com/api/v1/world?hours=10" -H "X-API-Key: wsk_…"
{
"hours": 24,
"spots": [
{
"name": "Bengaluru",
"country": "IN",
"lat": 12.97,
"lng": 77.59,
"level": 3,
"items": [
{
"title": "…",
"url": "/news/…"
}
]
}
]
}Polls & surveys polls.run plans
Read live polls and submit answers from your own site or app
/api/v1/pollsLive polls and surveys.
| Parameter | In | Type | Description |
|---|---|---|---|
placement | query | string | home, sidebar, story, popup or app |
limit | query | integer | Up to 10 |
k | query | string | Your user's private answer key (so results show after answering) |
Example
curl "https://worldspacenews.com/api/v1/polls?placement=space" -H "X-API-Key: wsk_…"
{
"items": [
{
"poll": {
"uid": "P-7QX2",
"title": "Have your say",
"questions": [
{
"id": "q1",
"type": "single",
"label": "…",
"options": [
"Yes",
"No"
]
}
],
"status": "live"
},
"answered": false,
"results": null
}
]
}/api/v1/polls/{uid}Send an answer.
| Parameter | In | Type | Description |
|---|---|---|---|
uid * | path | string | Poll code |
answers * | body | object | { q1: 0, q2: [1,2], q3: "text" } |
k | body | string | Your user's private key (one answer per person) |
via | body | string | embed, app, screen… |
Example
curl -X POST "https://worldspacenews.com/api/v1/polls/P-7QX2" -H "X-API-Key: wsk_…" -H "Content-Type: application/json" \
-d '{"answers":{"q1":0},"k":"…","via":"…"}'{
"answered": true,
"results": {
"total": 512,
"questions": [
{
"id": "q1",
"counts": [
300,
212
]
}
]
}
}Experts directory experts.directory plans
Verified experts and spokespersons by topic
/api/v1/expertsVerified experts and spokespersons.
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | Name or organisation |
topic | query | string | Topic |
Example
curl "https://worldspacenews.com/api/v1/experts?q=space" -H "X-API-Key: wsk_…"
{
"items": [
{
"slug": "dr-meera-iyer",
"title": "Dr Meera Iyer",
"role": "scientist",
"organisation": "IISc",
"tags": [
"astrophysics"
]
}
]
}Law & guideline check law.check plans
Check any text or page against the rules the newsroom watches
/api/v1/tools/law-checkCheck text or a page against watched laws and guidelines.
| Parameter | In | Type | Description |
|---|---|---|---|
text | body | string | Text to check |
url | body | string | Or a page address |
Example
curl -X POST "https://worldspacenews.com/api/v1/tools/law-check" -H "X-API-Key: wsk_…" -H "Content-Type: application/json" \
-d '{"text":"…","url":"https://agency.example/news"}'{
"flags": [
{
"rule": "IT Rules 2021 — 3(1)(b)",
"reason": "Mentions a private person's phone number",
"excerpt": "…"
}
]
}Space data space.data plans
Satellites (GP elements), tonight's sky and the space calendar
/api/v1/space/gpSatellite orbital elements (CelesTrak GP).
| Parameter | In | Type | Description |
|---|---|---|---|
groups | query | string | stations,visual,gps-ops,starlink… |
Example
curl "https://worldspacenews.com/api/v1/space/gp?groups=space" -H "X-API-Key: wsk_…"
{
"groups": {
"stations": {
"items": [
[
"ISS (ZARYA)",
25544,
"1998-067A",
"2026-10-24T…",
15.5
]
]
}
}
}/api/v1/space/skyTonight's sky for a place.
| Parameter | In | Type | Description |
|---|---|---|---|
lat | query | number | Latitude |
lon | query | number | Longitude |
at | query | string | ISO time (default now) |
Example
curl "https://worldspacenews.com/api/v1/space/sky?lat=space" -H "X-API-Key: wsk_…"
{
"moon": {
"phase": "Waxing gibbous",
"illumination": 0.78
},
"planets": [
{
"name": "Jupiter",
"visible": true,
"rise": "…",
"set": "…"
}
]
}/api/v1/space/calendarSpace calendar: launches, missions, sky events, events.
| Parameter | In | Type | Description |
|---|---|---|---|
from | query | string | ISO date (default yesterday) |
to | query | string | ISO date (default +120 days, max 400) |
kinds | query | string | launch,sky,event,outside |
format | query | string | ics for a calendar file |
Example
curl "https://worldspacenews.com/api/v1/space/calendar?from=space" -H "X-API-Key: wsk_…"
{
"items": [
{
"id": "sky-Full Moon-2026-10-26",
"at": "2026-10-26T04:11:00.000Z",
"title": "Full Moon",
"kind": "sky",
"icon": "🌕"
}
]
}Weather, air quality & currency world.tools plans
Weather by place, global air quality and exchange rates
/api/v1/weatherWeather now, 24 hours and 7 days, with air quality.
| Parameter | In | Type | Description |
|---|---|---|---|
lat | query | number | Latitude |
lon | query | number | Longitude |
name | query | string | Place name to show |
Example
curl "https://worldspacenews.com/api/v1/weather?lat=space" -H "X-API-Key: wsk_…"
{
"current": {
"temperature_2m": 29.4,
"weather_code": 2
},
"daily": {
"time": [
"2026-10-25"
],
"temperature_2m_max": [
31
]
},
"air": {
"current": {
"us_aqi": 142
}
}
}/api/v1/aqiAir quality for 90+ cities, or one place.
| Parameter | In | Type | Description |
|---|---|---|---|
lat | query | number | With lng: one place |
lng | query | number | Longitude |
Example
curl "https://worldspacenews.com/api/v1/aqi?lat=space" -H "X-API-Key: wsk_…"
{
"items": [
{
"name": "New Delhi",
"country": "IN",
"aqi": 182,
"pm25": 81,
"band": {
"name": "Unhealthy",
"color": "#ef4444"
}
}
],
"at": "2026-10-25T03:00:00.000Z"
}/api/v1/fxExchange rates against the US dollar.
Example
curl "https://worldspacenews.com/api/v1/fx" -H "X-API-Key: wsk_…"
{
"base": "USD",
"rates": {
"INR": 84.1,
"EUR": 0.92
},
"updated": "2026-10-25"
}Events events.read plans
Upcoming events with dates, places and registration links
/api/v1/eventsUpcoming events.
| Parameter | In | Type | Description |
|---|---|---|---|
limit | query | integer | 1–50 |
Example
curl "https://worldspacenews.com/api/v1/events?limit=10" -H "X-API-Key: wsk_…"
{
"items": [
{
"slug": "space-summit-2026",
"title": "Space Summit 2026",
"startAt": "2026-11-20T04:30:00.000Z",
"city": "Bengaluru",
"pricePaise": 0,
"seatsLeft": 140,
"url": "https://example.com/events/space-summit-2026"
}
]
}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
/api/v1/trackerYour trackers.
Example
curl "https://worldspacenews.com/api/v1/tracker" -H "X-API-Key: wsk_…"
{
"items": [
{
"id": 7,
"url": "https://agency.example/news",
"mode": "site",
"status": "active",
"lastCheckAt": "…",
"newToday": 4
}
]
}/api/v1/trackerWatch a website or an article. Mode site finds the site's feeds and sitemaps and reports every new article; mode page watches one article and reports every edit with what changed.
| Parameter | In | Type | Description |
|---|---|---|---|
url * | body | string | Website or article address |
mode | body | string | site or page (default: guessed from the address) |
intervalMin | body | integer | How often to check: 15–1440 minutes |
include | body | string | Only report new articles with these words (comma separated) |
webhookUrl | body | string | We POST each new article / edit here (signed) |
Example
curl -X POST "https://worldspacenews.com/api/v1/tracker" -H "X-API-Key: wsk_…" -H "Content-Type: application/json" \
-d '{"url":"https://agency.example/news","mode":"…","intervalMin":30,"include":"…","webhookUrl":"…"}'{
"id": 7,
"mode": "site",
"feeds": [
"https://agency.example/feed.xml"
],
"sitemaps": [
"https://agency.example/sitemap.xml"
],
"baseline": 120
}/api/v1/tracker/{id}What changed: new articles and edits.
| Parameter | In | Type | Description |
|---|---|---|---|
id * | path | integer | Tracker id |
since | query | string | ISO time — only changes after it |
check | query | boolean | 1 = check now first (at most every 15 seconds) |
Example
curl "https://worldspacenews.com/api/v1/tracker/7?since=space" -H "X-API-Key: wsk_…"
{
"tracker": {
"id": 7,
"url": "https://agency.example/news"
},
"events": [
{
"kind": "new",
"title": "Minister announces…",
"url": "https://agency.example/news/123",
"at": "…"
},
{
"kind": "updated",
"title": "…",
"summary": "+2 sentences, −1 · headline changed",
"at": "…"
}
]
}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
With tracker.watch in your plan, watch any public website for new articles, or any article for edits. A website is read through its RSS/Atom feeds and sitemaps (found automatically) or its home page; an article is kept as versions with the sentences added and removed.
curl -X POST "https://worldspacenews.com/api/v1/tracker" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "url": "https://agency.example/news", "intervalMin": 30, "include": "space, isro", "webhookUrl": "https://you.example/hook" }'
# → { "id": 7, "mode": "site", "baseline": 120, "webhookSecret": "…" }
curl "https://worldspacenews.com/api/v1/tracker/7?since=2026-10-25T00:00:00Z" -H "X-API-Key: $KEY"
# → { "events": [ { "kind": "new", "title": "…", "url": "…" }, { "kind": "updated", "summary": "+2 sentences, −1 · headline changed" } ] }Up to 50 trackers per account, checked every 15 minutes or slower. Only public addresses can be tracked.
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.