Skip to content

News API

The news namespace exposes the Mukoko news read surface—articles, journalists, and media organisations—plus a small write surface for engagement actions (like, bookmark, comment, follow). It is backed by the mukoko_news_db Supabase project.

Articles and metadata are scored and curated upstream. The router serves the curated read surface to consumer apps and accepts engagement events from authenticated readers.

Base path: /v1/news

MethodPathAuthPurpose
GET/v1/news/articlesOptionalList articles. Supports organization_id, journalist_id, limit, offset.
GET/v1/news/articles/{article_id}OptionalFetch a single article.
GET/v1/news/organizationsOptionalList media organisations.
GET/v1/news/journalistsOptionalList journalists. Supports organization_id.
POST/v1/news/articles/{article_id}/likeRequiredLike an article (idempotent upsert).
POST/v1/news/articles/{article_id}/bookmarkRequiredBookmark an article (idempotent upsert).
POST/v1/news/commentsRequiredPost a comment on an article. Supports threaded replies via parent_id.
POST/v1/news/journalists/{journalist_id}/followRequiredFollow a journalist.
POST/v1/news/organizations/{organization_id}/followRequiredFollow a media organisation.

Articles are ordered by published_at descending.

Terminal window
curl "https://api.nyuchi.com/v1/news/articles?limit=10"

Like, bookmark, and follow endpoints are idempotent—calling them twice is safe. The caller’s identity is recorded automatically.

Terminal window
curl -X POST https://api.nyuchi.com/v1/news/articles/art_01/like \
-H "Authorization: Bearer $TOKEN"
Terminal window
curl -X POST https://api.nyuchi.com/v1/news/comments \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"article_id": "art_01",
"text": "Great reporting on this story.",
"parent_id": null
}'

Set parent_id to a comment ID to post a threaded reply.