POST V2 $0.006

Kundli API

Generate complete Vedic kundli (Janam Patri) with all 12 houses, planetary positions, aspects, nakshatras, and yogas.

/v2/astrology/kundli

Overview

The Kundli API generates a comprehensive Vedic birth chart (Janam Kundli) using Swiss Ephemeris calculations with Lahiri ayanamsa. It returns:

  • All 9 planetary positions (Sun through Ketu) with degrees, signs, and nakshatras
  • 12 house cusps with sign placements
  • Ascendant (Lagna) and Moon sign details
  • Planetary aspects and conjunctions
  • Major yogas formed in the chart
  • Vimshottari Dasha balance at birth

Request

cURL

curl -X POST "https://api.vedika.io/v2/astrology/kundli" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "datetime": "1990-05-15T10:30:00+05:30",
    "latitude": 28.6139,
    "longitude": 77.2090,
    "timezone": "Asia/Kolkata",
    "ayanamsa": "lahiri"
  }'

JavaScript

const response = await fetch('https://api.vedika.io/v2/astrology/kundli', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    datetime: '1990-05-15T10:30:00+05:30',
    latitude: 28.6139,
    longitude: 77.2090,
    timezone: 'Asia/Kolkata',
    ayanamsa: 'lahiri'
  })
});

const data = await response.json();
console.log(data);

Python

import requests

response = requests.post(
    'https://api.vedika.io/v2/astrology/kundli',
    headers={
        'Content-Type': 'application/json',
        'x-api-key': 'YOUR_API_KEY'
    },
    json={
        'datetime': '1990-05-15T10:30:00+05:30',
        'latitude': 28.6139,
        'longitude': 77.2090,
        'timezone': 'Asia/Kolkata',
        'ayanamsa': 'lahiri'
    }
)

data = response.json()
print(data)

Parameters

Parameter Type Required Description
datetime string Required Birth date and time in ISO 8601 format (e.g., "1990-05-15T10:30:00+05:30")
latitude number Required Birth location latitude (-90 to 90)
longitude number Required Birth location longitude (-180 to 180)
timezone string Optional IANA timezone (e.g., "Asia/Kolkata"). Defaults to UTC offset from datetime.
ayanamsa string Optional Ayanamsa system: "lahiri" (default), "raman", "krishnamurti", "yukteshwar"

Response

{
  "success": true,
  "data": {
    "ascendant": {
      "sign": "Cancer",
      "signIndex": 4,
      "degree": 15.234,
      "nakshatra": "Pushya",
      "nakshatraPada": 2,
      "lord": "Moon"
    },
    "planets": [
      {
        "name": "Sun",
        "sign": "Taurus",
        "signIndex": 2,
        "degree": 0.639,
        "nakshatra": "Krittika",
        "nakshatraPada": 4,
        "house": 11,
        "isRetrograde": false,
        "signLord": "Venus",
        "nakshatraLord": "Sun"
      },
      {
        "name": "Moon",
        "sign": "Aquarius",
        "signIndex": 11,
        "degree": 12.456,
        "nakshatra": "Shatabhisha",
        "nakshatraPada": 2,
        "house": 8,
        "isRetrograde": false,
        "signLord": "Saturn",
        "nakshatraLord": "Rahu"
      },
      // ... Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu
    ],
    "houses": [
      { "house": 1, "sign": "Cancer", "signIndex": 4, "degree": 15.234, "lord": "Moon" },
      { "house": 2, "sign": "Leo", "signIndex": 5, "degree": 12.567, "lord": "Sun" },
      { "house": 3, "sign": "Virgo", "signIndex": 6, "degree": 10.891, "lord": "Mercury" },
      // ... houses 4-12
    ],
    "aspects": [
      { "planet1": "Sun", "planet2": "Saturn", "aspect": "opposition", "orb": 2.3 },
      { "planet1": "Moon", "planet2": "Mars", "aspect": "trine", "orb": 1.8 }
    ],
    "yogas": [
      { "name": "Budh-Aditya Yoga", "planets": ["Sun", "Mercury"], "house": 11 },
      { "name": "Gajakesari Yoga", "planets": ["Moon", "Jupiter"], "strength": "moderate" }
    ],
    "dashaBalance": {
      "currentDasha": "Rahu",
      "startDate": "1985-03-21",
      "endDate": "2003-03-21",
      "balanceYears": 13,
      "balanceMonths": 2,
      "balanceDays": 6
    }
  },
  "metadata": {
    "requestId": "req_kundli_abc123",
    "calculatedAt": "2026-01-07T12:00:00Z",
    "ayanamsaUsed": "lahiri",
    "ayanamsaValue": 24.123,
    "cost": 0.006
  }
}

Response Fields

Ascendant Object

FieldTypeDescription
signstringZodiac sign name
signIndexnumberSign index (1-12, Aries=1)
degreenumberDegree within sign (0-30)
nakshatrastringNakshatra name
nakshatraPadanumberPada (1-4)
lordstringSign lord planet

Planet Object

FieldTypeDescription
namestringPlanet name
signstringCurrent zodiac sign
degreenumberDegree within sign
nakshatrastringCurrent nakshatra
housenumberHouse placement (1-12)
isRetrogradebooleanWhether planet is retrograde

Error Handling

{
  "success": false,
  "error": {
    "code": "INVALID_COORDINATES",
    "message": "Latitude must be between -90 and 90",
    "field": "latitude"
  }
}

Error Codes

CodeHTTP StatusDescription
INVALID_DATETIME400Invalid date/time format
INVALID_COORDINATES400Latitude/longitude out of range
INVALID_AYANAMSA400Unknown ayanamsa system
UNAUTHORIZED401Invalid or missing API key
INSUFFICIENT_BALANCE402Not enough credits
RATE_LIMITED429Too many requests

SDK Examples

JavaScript SDK

import { VedikaClient } from '@anthropic/vedika-sdk';

const client = new VedikaClient('YOUR_API_KEY');

const kundli = await client.astrology.kundli({
  datetime: '1990-05-15T10:30:00+05:30',
  latitude: 28.6139,
  longitude: 77.2090
});

console.log(kundli.data.ascendant);
console.log(kundli.data.planets);

Python SDK

from vedika import VedikaClient

client = VedikaClient('YOUR_API_KEY')

kundli = client.astrology.kundli(
    datetime='1990-05-15T10:30:00+05:30',
    latitude=28.6139,
    longitude=77.2090
)

print(kundli.data.ascendant)
print(kundli.data.planets)

Pricing

$0.006 per request

Billed from your prepaid balance. No minimum commitment.

View full pricing details

Start Building with Vedika

Get your API key and integrate Vedic astrology in minutes.