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

  1. Sign in and create a key (free).
  2. Send it with every request in the X-API-Key header.
  3. 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

KeyLooks likeSend asWho gets it
API keywsk_xxxxxxxx_…X-API-Key: … or Authorization: Bearer …Anyone, at /developers — up to 10 per account. Its features come from your plan.
App keywsa_…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.
FeatureWhat it coversAccess
News API
news.read
Published, fact-checked stories, sections, the home feed, search and live suggestionsFree
Members-only full text
news.premium
The complete text of members-only stories (others get a teaser)Plans
Live coverage & debates
live.read
Live blogs, launches, debates with timers, polls and claim checksPlans
World news map
world.map
News intensity by place for maps and dashboardsPlans
Polls & surveys
polls.run
Read live polls and submit answers from your own site or appPlans
Experts directory
experts.directory
Verified experts and spokespersons by topicPlans
Law & guideline check
law.check
Check any text or page against the rules the newsroom watchesPlans
Space data
space.data
Satellites (GP elements), tonight's sky and the space calendarPlans
Weather, air quality & currency
world.tools
Weather by place, global air quality and exchange ratesPlans
Events
events.read
Upcoming events with dates, places and registration linksPlans
Integrity ledger
ledger.verify
Verify a story's fingerprint and the ledger chainFree
Website & article tracker
tracker.watch
Watch any website for new articles and any article for edits; read the changesPlans

Plans & limits

PlanPriceCalls a monthFeatures
Starter (monthly)₹999 / month50,000News API, Live coverage & debates, Weather, air quality & currency, Space data, Events, Integrity ledger
Starter (annual)₹9,990 / year50,000News API, Live coverage & debates, Weather, air quality & currency, Space data, Events, Integrity ledger
Broadcast (monthly)₹3,999 / month250,000News 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 / year250,000News 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 / monthUnlimitedNews 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 / yearUnlimitedNews 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

StatusMeaningWhat to do
400Bad parameterRead error in the answer.
401Key missing, invalid or revoked — or the endpoint needs a keySend X-API-Key; create a key at /developers.
402The feature is not in your planUpgrade at /developers (the answer names the feature).
404Not foundCheck the slug / id.
429Per-minute limit or monthly allowance reachedWait 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

GET/api/v1/articles

Latest published stories. Newest first. Every story has passed the fact-check desk.

ParameterInTypeDescription
categoryquerystringSection slug, e.g. space
qquerystringWords in the headline or text
sortquerystringpopular for most read
pagequeryintegerPage number (from 1)
limitqueryinteger1–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
}
GET/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).

ParameterInTypeDescription
slug *pathstringThe 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
}
GET/api/v1/feed

The 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"
    }
  ]
}
GET/api/v1/categories

Sections.

Example
curl "https://worldspacenews.com/api/v1/categories" -H "X-API-Key: wsk_…"
{
  "items": [
    {
      "id": 3,
      "name": "Space",
      "slug": "space",
      "color": "#7048e8",
      "parentId": null
    }
  ]
}
GET/api/v1/search/suggest

Suggestions while typing (also finds stories by ID).

ParameterInTypeDescription
q *querystringWhat 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

GET/api/v1/live

Live 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"
    }
  ]
}
GET/api/v1/live/{slug}

One live coverage with its posts.

ParameterInTypeDescription
slug *pathstringCoverage slug
sincequerystringISO 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
      }
    }
  ]
}
GET/api/v1/debates

Debates (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"
    }
  ]
}
GET/api/v1/debates/{slug}

One debate: round timer, speakers, polls, questions, claim checks.

ParameterInTypeDescription
slug *pathstringDebate 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

GET/api/v1/world

News intensity by place.

ParameterInTypeDescription
hoursqueryintegerLook-back window, default 24
catqueryintegerSection id
qquerystringWords
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

GET/api/v1/polls

Live polls and surveys.

ParameterInTypeDescription
placementquerystringhome, sidebar, story, popup or app
limitqueryintegerUp to 10
kquerystringYour 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
    }
  ]
}
POST/api/v1/polls/{uid}

Send an answer.

ParameterInTypeDescription
uid *pathstringPoll code
answers *bodyobject{ q1: 0, q2: [1,2], q3: "text" }
kbodystringYour user's private key (one answer per person)
viabodystringembed, 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

GET/api/v1/experts

Verified experts and spokespersons.

ParameterInTypeDescription
qquerystringName or organisation
topicquerystringTopic
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

POST/api/v1/tools/law-check

Check text or a page against watched laws and guidelines.

ParameterInTypeDescription
textbodystringText to check
urlbodystringOr 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

GET/api/v1/space/gp

Satellite orbital elements (CelesTrak GP).

ParameterInTypeDescription
groupsquerystringstations,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
        ]
      ]
    }
  }
}
GET/api/v1/space/sky

Tonight's sky for a place.

ParameterInTypeDescription
latquerynumberLatitude
lonquerynumberLongitude
atquerystringISO 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": "…"
    }
  ]
}
GET/api/v1/space/calendar

Space calendar: launches, missions, sky events, events.

ParameterInTypeDescription
fromquerystringISO date (default yesterday)
toquerystringISO date (default +120 days, max 400)
kindsquerystringlaunch,sky,event,outside
formatquerystringics 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

GET/api/v1/weather

Weather now, 24 hours and 7 days, with air quality.

ParameterInTypeDescription
latquerynumberLatitude
lonquerynumberLongitude
namequerystringPlace 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
    }
  }
}
GET/api/v1/aqi

Air quality for 90+ cities, or one place.

ParameterInTypeDescription
latquerynumberWith lng: one place
lngquerynumberLongitude
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"
}
GET/api/v1/fx

Exchange 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

GET/api/v1/events

Upcoming events.

ParameterInTypeDescription
limitqueryinteger1–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

GET/api/v1/ledger

Verify the integrity ledger or one story.

ParameterInTypeDescription
storyquerystringWSN-… code: that story's sealed versions
hashquerystringOne 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

GET/api/v1/tracker

Your 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
    }
  ]
}
POST/api/v1/tracker

Watch 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.

ParameterInTypeDescription
url *bodystringWebsite or article address
modebodystringsite or page (default: guessed from the address)
intervalMinbodyintegerHow often to check: 15–1440 minutes
includebodystringOnly report new articles with these words (comma separated)
webhookUrlbodystringWe 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
}
GET/api/v1/tracker/{id}

What changed: new articles and edits.

ParameterInTypeDescription
id *pathintegerTracker id
sincequerystringISO time — only changes after it
checkqueryboolean1 = 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)

GET/api/v1/changes

Change feed (free, no key): when to fetch again.

ParameterInTypeDescription
pollqueryboolean1 = JSON instead of a server-sent event stream
sincequeryintegerLast 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"
    }
  ]
}
GET/api/v1/app

Site 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:

GET/api/v1/apps/feed

Authorised 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.

ParameterInTypeDescription
statusquerystringpublished,approved
sincequerystringISO time of your last sync
sectionquerystringSection slug
unusedqueryboolean1 = not yet used by this app
limitqueryinteger1–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"
}
POST/api/v1/apps/usage

Authorised apps: record which stories an edition / video used.

ParameterInTypeDescription
editionId *bodystringYour id for the edition or video
editionNamebodystringIts title
editionDatebodystringYYYY-MM-DD
stories *bodyobject[{ 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.

  1. 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.
  2. In World Space Studio open Admin → Settings → World News Studio.
  3. World News Studio address: https://worldspacenews.com
  4. App token: paste the key (wsa_… or wsk_…). The studio sends it as Authorization: Bearer …, which this API accepts.
  5. 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.

Questions or higher limits: .