Jyotish API (Node.js port)

Vedic astrology calculation service ported from PHP/Symfony to Node.js + Express. Uses sweph npm package (Swiss Ephemeris) for astronomical calculations.

Endpoints

GET /api/ping

Health check. Verifies the server is running.

ParameterTypeRequiredDescription
noneNo parameters required
Example response
HTTP 200
{"pong":"success"}
GET /api/calculate

Full chart calculation. Returns planetary positions, houses, and optional detailed analysis.

ParameterTypeRequiredDescription
latitudefloatrequiredGeographic latitude of location (e.g. 28.6139)
longitudefloatrequiredGeographic longitude of location (e.g. 77.2090)
yearintrequiredYear (e.g. 2023)
monthintrequiredMonth (1-12)
dayintrequiredDay of month (1-31)
hourintrequiredHour (0-23)
minintrequiredMinute (0-59)
secintrequiredSecond (0-59)
time_zonestringrequiredTimezone offset (e.g. +05:30) or IANA name (e.g. Asia/Kolkata)
vargastringoptionalComma-separated varga divisions. Default D1. E.g. D1,D9
infolevelstringoptionalComma-separated info sections. Values: basic, panchanga, ashtakavarga, grahabala, rashibala, yogas, transit, avatamsa, divisional, bhava
nestingintoptionalNesting level for divisional charts. Default 0
dst_hourintoptionalDST hour offset. Default 0
dst_minintoptionalDST minute offset. Default 0
Example response (truncated structure)
HTTP 200
{
  "chart": {
    "data": {
      "graha": { ... },        // planet positions, speed, sign, nakshatra, etc.
      "bhava": { ... },        // house cusps, bhavas
      "lagna": { ... },        // ascendant details
      "varga": { "D1": ..., "D9": ... },  // divisional charts
      "panchanga": { ... },    // tithi, nakshatra, yoga, karana, vaara
      "ashtakavarga": { ... }, // Sarvashtakavarga, Bhinna ashtakavarga
      "grahabala": { ... },    // Shadbala, six-fold strength
      "rashibala": { ... },    // sign strengths
      "yogas": { ... },        // planetary combinations
      "transit": { ... }       // current transit analysis
    },
    "params": { ... },         // input parameters used
    "errors": { ... }          // any calculation warnings/errors
  },
  "duration_of_response": 0.452,
  "created_at": "2026-06-10 12:00:00"
}
GET /api/now

Current moment chart. Same calculation as /api/calculate but uses the current time.

ParameterTypeRequiredDescription
latitudefloatoptionalDefault 35.7219 (Tehran)
longitudefloatoptionalDefault 51.3347 (Tehran)
time_zonestringoptionalDefault +03:30 (Tehran)

All other parameters (varga, infolevel, etc.) are the same as /api/calculate.

Example
curl "http://localhost:8080/api/now?latitude=28.6139&longitude=77.2090&time_zone=%2B05:30"
GET /api/chart/svg

Chart SVG rendering. Generates a visual Vedic astrology chart as SVG.

ParameterTypeRequiredDescription
latitudefloatrequiredGeographic latitude
longitudefloatrequiredGeographic longitude
yearintrequiredYear
monthintrequiredMonth (1-12)
dayintrequiredDay of month (1-31)
hourintrequiredHour (0-23)
minintrequiredMinute (0-59)
secintrequiredSecond (0-59)
time_zonestringrequiredTimezone offset or IANA name
stylestringoptionalChart style: north (default), south, or east
vargastringoptionalVarga division. Default D1
sizeintoptionalChart size in pixels. Default 500
Example
curl "http://localhost:8080/api/chart/svg?latitude=28.6139&longitude=77.2090&year=2023&month=12&day=25&hour=12&min=0&sec=0&time_zone=%2B05:30&style=north&size=500"

Info Levels

When calling /api/calculate or /api/now, specify infolevel as a comma-separated list to control which analysis sections are included:

LevelDescriptionStatus
basicBasic planetary data: longitude, speed, sign, nakshatra, lord, etc.Working
panchangaFive limbs of time: tithi, nakshatra, yoga, karana, vaaraWorking
ashtakavargaSarvashtakavarga and planet-wise Bhinna ashtakavargaWorking
grahabalaPlanetary strengths (Shadbala, digbala, etc.)Working
rashibalaSign strengthsWorking
yogasPlanetary combinations (Raja yoga, Dhana yoga, etc.)Working
transitCurrent transit analysis with house placementWorking

Varga Divisions

When calling /api/calculate, the varga parameter accepts comma-separated varga codes. Each varga produces a full divisional chart:

VargaDivisionSigns Part
D1Rashi (birth chart)1/1
D2Hora1/2
D3Drekkana1/3
D4Chaturthamsa1/4
D5Panchamsa1/5
D6Shasthamsa1/6
D7Saptamsa1/7
D8Ashtamsa1/8
D9Navamsa1/9
D10Dasamsa1/10
D12Dwadasamsa1/12
D16Shodasamsa1/16
D20Vimsamsa1/20
D24Chaturvimsa1/24
D27Saptavimsamsa1/27
D30Trimsamsa1/30
D40Chatvarimsamsa1/40
D45Panchachatvarimsamsa1/45
D60Shashtiamsa1/60

Chart Styles

StyleDescriptionStatus
northNorth Indian diamond style (Bhava-based, houses fixed)Working
southSouth Indian style (Rashi fixed, houses rotate)Working
eastEast Indian style (rectangle, Rashi fixed around Lagna)Working
Note: All calculations use the sidereal zodiac with Lahiri ayanamsha. House cusps are computed with Placidus system from Swiss Ephemeris.

Quick Start

Health Check

curl http://localhost:8080/api/ping

Full Chart for Delhi

curl "http://localhost:8080/api/calculate?latitude=28.6139&longitude=77.2090&year=2023&month=12&day=25&hour=12&min=0&sec=0&time_zone=%2B05:30&varga=D1,D9&infolevel=basic,panchanga,transit"

Current Chart

curl "http://localhost:8080/api/now?latitude=28.6139&longitude=77.2090&time_zone=%2B05:30"

SVG Chart

curl "http://localhost:8080/api/chart/svg?latitude=28.6139&longitude=77.2090&year=2023&month=12&day=25&hour=12&min=0&sec=0&time_zone=%2B05:30&style=north"

Technical

ItemValue
Port8080
FrameworkExpress.js
Ephemerissweph@2.10.3-5 (Swiss Ephemeris)
ZodiacSidereal (Lahiri ayanamsha)
House SystemPlacidus
Module SystemESM
LicenseGPL-3.0