J-Navi API

Read-only feed API behind the J-Navi app (Burmese-language news for residents of Japan). One endpoint, no auth, JSON in, JSON out.

GET /api/feed

GET/api/feed

Returns posts newest-first, optionally filtered by channel and paginated.

ParamTypeDefaultDescription
channelstring— (all channels)jblog, jcrime, or jfinance
offsetinteger0Number of posts to skip
limitintegerall matching postsMax posts to return

Example

curl "https://j-navi.pages.dev/api/feed?channel=jblog&offset=0&limit=2"
[
  {
    "id": "jblog:111_222",
    "channel": "jblog",
    "title": "Headline text",
    "excerpt": "Full or truncated post text…",
    "media": {
      "kind": "photo",
      "url": "https://scontent.example.com/photo.jpg",
      "durationLabel": null
    },
    "publishedAt": "2026-01-15T10:30:00.000Z",
    "sourceUrl": "https://facebook.com/111/posts/222"
  }
]

Post fields

FieldTypeNotes
idstringUnique, stable
channelstringjblog / jcrime / jfinance
titlestringFirst line of the source post, truncated to 80 chars
excerptstringFull post text, truncated to 280 chars
media.kindstringphoto or video — always present
media.urlstring?Hotlinked image; absent for text-only source posts
media.durationLabelstring?e.g. "1:24", video only
publishedAtstringISO 8601 UTC
sourceUrlstring?Permalink to the original Facebook post

Notes

CORS is open (Access-Control-Allow-Origin: *) — this exists for the native iOS/Android app, which calls it as an absolute cross-origin URL. Content refreshes automatically every 6 hours from the source Facebook Pages; there's no write access.