Skip to content
kchakhabarehकेखबर

Developers

A public JSON feed of today’s Nepali news.

One endpoint. No auth. CORS-enabled. Returns the same set of clustered stories the homepage renders — with bilingual headlines, English and Nepali summaries, and a canonical link back to the K cha khabar story page where the original sources are listed. Suitable for agents, dashboards, embeds, research, and class projects.

Last updated: May 17, 2026 · API version v1

Quick start

Hit the endpoint with any HTTP client. There’s nothing to sign up for.

curl

curl -sS https://kchakhabar.com/api/v1/today.json | jq .

JavaScript (browser or Node 18+)

const res = await fetch('https://kchakhabar.com/api/v1/today.json')
const { generated_at, story_count, stories } = await res.json()
console.log(`${story_count} stories as of ${generated_at}`)

Response shape

A single JSON object. The stories array contains up to 24 items, ranked by coverage breadth and recency — newest, most-covered stories first.

Example response (truncated)

{
  "generated_at": "2026-05-16T08:00:00.000Z",
  "story_count": 24,
  "stories": [
    {
      "id": "25789",
      "slug": "sixty-year-old-grandmother-passes-see-exam-bhaktapur",
      "url": "https://kchakhabar.com/story/2026/05/15/sixty-year-old-grandmother-passes-see-exam-bhaktapur?utm_source=kchakhabar_api&utm_medium=api&utm_campaign=today_v1",
      "topic_en": "Sixty Year Old Grandmother Passes SEE Exam in Bhaktapur",
      "topic_ne": "भक्तपुरमा ६० वर्षीया हजुरआमाले गरिन् एसईई उत्तीर्ण",
      "summary_en": "Raminkumari Rai, a 60-year-old grandmother, has successfully passed the Secondary Education Examination (SEE) in Bhaktapur. She resumed her studies at Aastha Mahila Vidhyalaya in Gatthaghar after previously leaving school due to family responsibilities. Rai's achievement demonstrates that age is not a barrier to pursuing higher education and fulfilling personal goals.",
      "summary_ne": "भक्तपुरकी ६० वर्षीया हजुरआमा रमिनकुमारी राईले यस वर्षको माध्यमिक शिक्षा परीक्षा सफलतापूर्वक उत्तीर्ण गर्नुभएको छ। …",
      "source_count": 4,
      "first_reported": "2026-05-15T08:30:00.000Z",
      "updated_at": "2026-05-16T02:45:26.149Z"
    }
  ]
}

Field reference

Top-level object

FieldTypeDescription
generated_atstring (ISO 8601)Server timestamp at which this response was rendered. Useful for cache-busting and freshness checks.
story_countintegerNumber of stories in the array. Always equal to stories.length.
storiesarray<Story>Up to 24 stories, ranked by coverage + decay. May be empty during low-news windows; not an error.

Story object

FieldTypeDescription
idstringStable opaque identifier. Encoded as a string so JavaScript clients do not lose precision on large integers.
slugstringURL-safe slug used in the public story page path.
urlstringCanonical kchakhabar.com URL for this story, with UTM parameters identifying the API as the referrer. The story page lists every original source URL — link there if you need to attribute or follow back to publishers.
topic_enstringHeadline-style topic in English. Always present.
topic_nestring | nullHeadline-style topic in Nepali. Null if no Nepali headline was generated.
summary_enstring | null2–3 sentence English summary. Null if only a Nepali summary exists.
summary_nestring | null2–3 sentence Nepali summary. Null if only an English summary exists.
source_countintegerNumber of original articles backing this story across all tracked publishers.
first_reportedstring (ISO 8601) | nullTimestamp of the earliest article in the cluster — when this story was first reported by any tracked publisher. Null in the rare case where no article carries a usable timestamp.
updated_atstring (ISO 8601)When the story cluster was last updated (new article joined, summary regenerated, etc.).

Caching & freshness

The endpoint is served with Cache-Control: public, max-age=300, s-maxage=300, stale-while-revalidate=600. That means:

  • Fresh for 5 minutes. Browsers, CDNs, and edge caches may serve the same body for up to 5 minutes after the first miss. The ingest pipeline runs more often than that, so 5 minutes is a good freshness floor for clients.
  • Stale-while-revalidate 10 minutes. Past the freshness window, intermediaries may keep serving the cached response while a fresh fetch happens in the background. Plan for response timestamps to lag wall-clock time by up to ~15 minutes during high-traffic windows.
  • No published rate limit. Because every response is cacheable, we expect normal traffic to be absorbed by the CDN. Please don’t poll faster than once per minute — you’ll get the same bytes. If you need a webhook or push feed, get in touch.

CORS & access

  • No authentication. No API key, no signup, no token. The endpoint is fully public.
  • CORS open. The response sets Access-Control-Allow-Origin: * and answers preflight OPTIONS requests. Browsers on any origin can call this directly from client-side JavaScript.
  • HTTPS only in production. The http:// URL redirects.

Versioning & stability

  • The path includes a version segment — /api/v1/…. Any backwards-incompatible change ships under /api/v2/…;v1 stays available for a minimum of 90 days after a successor goes live.
  • New, optional fields may be added to v1 responses without notice. Treat any unfamiliar key as additive.
  • Existing field names and types are stable. We will not silently change a string to an integer.

Attribution & use

  • K cha khabar aggregates headlines from 35+ Nepali newsrooms. Each story’s url field points at our cluster page, which lists every original source — please send readers there so they can pick a publisher and read the full piece on the original site.
  • You’re welcome to render headlines, summaries, and topic labels in your own UI. If you do, a credit line like “via K cha khabar” linking back to kchakhabar.com is appreciated.
  • We add a default UTM tag (utm_source=kchakhabar_api) to the story url field so traffic from API integrations shows up separately in our analytics. Leave it as-is if you can.

Not in v1

This is intentionally a tiny surface. The following are not exposed in v1 and may or may not arrive later:

  • Single-story lookup by id or slug
  • Historical or date-ranged queries
  • Pagination beyond the top 24
  • Per-publisher feeds
  • Search, filters, or language scoping
  • Write endpoints, webhooks, or push

If one of those would unblock something you’re building, tell us what you need.

Get in touch

Found a bug, want a field added, or building something you’d like to show off? Email [email protected] or check out how the pipeline works for context on where the data comes from.

Developers · K cha khabar