Bikram Sambat dates
Bikram Sambat (BS) is Nepal’s official calendar. It is solar: each month starts when the Sun enters a sidereal sign, so month lengths vary from 29 to 32 days and change from year to year. There is no formula that gets every year right, which is why Navapatra uses a month-length table checked against the calendars published by the Nepal Panchanga Nirnayak Samiti.
BS is about 56 years and 8 months ahead of AD. BS 2083 Baishakh 1 is 14 April 2026.
Months
Section titled “Months”| Index | English | Nepali |
|---|---|---|
| 1 | Baishakh | वैशाख |
| 2 | Jestha | जेठ |
| 3 | Asar | असार |
| 4 | Shrawan | साउन |
| 5 | Bhadra | भदौ |
| 6 | Ashwin | असोज |
| 7 | Kartik | कात्तिक |
| 8 | Mangsir | मंसिर |
| 9 | Poush | पुस |
| 10 | Magh | माघ |
| 11 | Falgun | फागुन |
| 12 | Chaitra | चैत |
Dates are always written YYYY-MM-DD with the month as a number, in both calendars: BS 2050 Bhadra 12 is 2050-05-12.
Convert a date
Section titled “Convert a date”Pass date and the calendar it is in. The response always has both sides, the weekday and the BS status.
curl "https://api.navapatra.com/v1/calendar/convert?date=2050-05-12&calendar=BS&include=nepalSambat" \ -H "Authorization: Bearer $NAVAPATRA_API_KEY"const url = new URL('https://api.navapatra.com/v1/calendar/convert');url.search = new URLSearchParams({ date: '2050-05-12', calendar: 'BS', include: 'nepalSambat' }).toString();
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.NAVAPATRA_API_KEY}` } });const { ad, bs, nepalSambat } = await res.json();import osimport requests
res = requests.get( "https://api.navapatra.com/v1/calendar/convert", params={"date": "2050-05-12", "calendar": "BS", "include": "nepalSambat"}, headers={"Authorization": f"Bearer {os.environ['NAVAPATRA_API_KEY']}"},)data = res.json()<?phprequire 'vendor/autoload.php';
$client = new GuzzleHttp\Client();$res = $client->get('https://api.navapatra.com/v1/calendar/convert', [ 'query' => ['date' => '2050-05-12', 'calendar' => 'BS', 'include' => 'nepalSambat'], 'headers' => ['Authorization' => 'Bearer ' . getenv('NAVAPATRA_API_KEY')],]);$data = json_decode((string) $res->getBody(), true);{ "ad": { "date": "1993-08-28", "year": 1993, "month": 8, "day": 28, "weekday": { "index": 6, "name": "Saturday" } }, "bs": { "date": "2050-05-12", "year": 2050, "month": { "index": 5, "name": "Bhadra" }, "day": 12, "status": "published", "text": "12 Bhadra 2050" }, "nepalSambat": { "year": 1113, "month": { "index": 13, "name": "Anala" }, "paksha": { "index": 1, "name": "Thwa" }, "day": 12, "adhik": true, "text": "1113 Anala Thwa 12" }, "meta": { "bsTableVersion": "2026.10.1", "apiVersion": "2026-11-01" }}bs.text is ready to display. With lang=ne it reads १२ भदौ २०५०; with lang=ne&numerals=latin it keeps Latin digits.
Published and projected years
Section titled “Published and projected years”Every BS date carries a status, and month grids carry bsStatus:
published: the year’s month lengths come from the source-cited table of published calendars, which covers BS 1970 through BS 2083 (bsPublishedThroughinGET /v1/meta).projected: every other supported year, before BS 1970 or after BS 2083, comes from an astronomical projection of the Sun’s sign ingresses. A projected month can end up a day longer or shorter than the calendar eventually printed for that year.
Whenever a response contains a projected BS date, its meta also carries bsProjectionVersion, the version of the projection model that produced it. Responses with only published dates leave the field out.
If you store BS dates for projected years, store the AD date and bsProjectionVersion as well, or re-convert when the year is published. Table updates are announced in the changelog and show up as a new bsTableVersion.
Supported range
Section titled “Supported range”Every endpoint uses one window: AD 1900-01-01 to 2100-12-31, which is BS 1956-09-19 to 2157-09-15 (supportedRange in GET /v1/meta). Conversions work for every day in it, in both directions. A BS month grid is served when the whole month lies inside it. Anything outside fails with 422 out_of_range:
{ "type": "https://navapatra.com/docs/errors#out_of_range", "title": "Out of supported range", "status": 422, "detail": "2101-01-01 AD is outside the supported range, AD 1900-01-01 to 2100-12-31 (BS 1956-09-19 to 2157-09-15).", "code": "out_of_range", "requestId": "d29da36a-af66-4efd-b954-15aed8501d42"}A day that does not exist in a month, such as Bhadra 33, fails with 400 invalid_input and a message giving the month’s real length (BS 2050-5 has 31 days, got day 33).
BS birth dates
Section titled “BS birth dates”Any birth input can be given in BS. Set calendar: "BS":
{ "birth": { "calendar": "BS", "date": "2050-05-12", "time": "14:35", "place": { "query": "Pokhara" } } }The response’s subject.birth has both dates, { "ad": "1993-08-28", "bs": "2050-05-12" }. Every supported birth gets a BS date; for births before BS 1970 (about April 1913) it is projected rather than published, so a 1905 Kathmandu birth returns "bs": "1962-02-02".
Nepal Sambat
Section titled “Nepal Sambat”Nepal Sambat is the lunar calendar of the Newar community. Add include=nepalSambat to a conversion to get it. It is computed from the lunar month and tithi at sunrise, so it depends on place: Kathmandu by default, or the lat and lng you pass.
- Months run 1 = Kachhala to 12 = Kaula, with 13 = Anala for the intercalary month (
adhik: true). pakshais 1 = Thwa (bright half) or 2 = Ga (dark half), anddayis the tithi within it.
Daily panchang includes nepalSambat for every day automatically.
Month grids
Section titled “Month grids”For a calendar view, GET /v1/calendar/month returns every day of a BS month with its AD date, weekday and tithi at sunrise. See Panchang and calendar.