PYTHON TUTORIAL
Vedic Astrology API Python Guide
Complete Python tutorial for integrating Vedic astrology calculations. Birth charts, dashas, doshas, and AI chatbot with production-ready code.
January 7, 2026
-
20 min read
Installation
# Install the official Vedika Python SDK
pip install vedika
# Or install with async support
pip install vedika[async]
# For data analysis features
pip install vedika[pandas]
Quick Start
from vedika import VedikaClient
# Initialize client
client = VedikaClient(api_key='YOUR_API_KEY')
# Generate birth chart
chart = client.birth_chart(
datetime='1990-05-15T14:30:00+05:30',
latitude=28.6139,
longitude=77.2090
)
print(f"Ascendant: {chart.ascendant.sign}")
print(f"Moon Sign: {chart.moon.sign}")
print(f"Sun Sign: {chart.sun.sign}")
# Access all planets
for planet in chart.planets:
print(f"{planet.name}: {planet.sign} at {planet.degree}°")
Birth Chart Analysis
from vedika import VedikaClient
from datetime import datetime
client = VedikaClient(api_key='YOUR_API_KEY')
def analyze_birth_chart(dob, tob, place_lat, place_lng):
"""Generate and analyze a complete birth chart."""
# Get full birth chart
chart = client.birth_chart(
datetime=f"{dob}T{tob}",
latitude=place_lat,
longitude=place_lng,
ayanamsa='lahiri'
)
analysis = {
'ascendant': chart.ascendant,
'planets': {},
'houses': {},
'yogas': [],
'doshas': []
}
# Analyze each planet
for planet in chart.planets:
analysis['planets'][planet.name] = {
'sign': planet.sign,
'house': planet.house,
'nakshatra': planet.nakshatra,
'degree': planet.degree,
'retrograde': planet.retrograde
}
# Check for yogas
analysis['yogas'] = chart.yogas
# Check for doshas
if chart.has_mangal_dosha:
analysis['doshas'].append('Mangal Dosha')
if chart.has_kaal_sarp_dosha:
analysis['doshas'].append('Kaal Sarp Dosha')
return analysis
# Example usage
result = analyze_birth_chart(
dob='1990-05-15',
tob='14:30:00+05:30',
place_lat=28.6139,
place_lng=77.2090
)
print(f"Moon in {result['planets']['Moon']['sign']}")
print(f"Yogas found: {len(result['yogas'])}")
Dasha Calculations
from vedika import VedikaClient
from datetime import date
client = VedikaClient(api_key='YOUR_API_KEY')
def get_current_dasha(birth_datetime, lat, lng):
"""Get current Vimshottari dasha periods."""
dasha = client.dasha(
datetime=birth_datetime,
latitude=lat,
longitude=lng,
system='vimshottari'
)
return {
'mahadasha': dasha.current_mahadasha,
'antardasha': dasha.current_antardasha,
'pratyantardasha': dasha.current_pratyantardasha,
'mahadasha_ends': dasha.mahadasha_end_date,
'all_periods': dasha.all_mahadashas
}
# Get dasha for someone born in 1990
dasha_info = get_current_dasha(
'1990-05-15T14:30:00+05:30',
28.6139,
77.2090
)
print(f"Current Mahadasha: {dasha_info['mahadasha'].planet}")
print(f"Current Antardasha: {dasha_info['antardasha'].planet}")
print(f"Mahadasha ends: {dasha_info['mahadasha_ends']}")
Async Support
import asyncio
from vedika import AsyncVedikaClient
async def main():
client = AsyncVedikaClient(api_key='YOUR_API_KEY')
# Fetch multiple charts concurrently
tasks = [
client.birth_chart(
datetime='1990-05-15T14:30:00+05:30',
latitude=28.6139,
longitude=77.2090
),
client.panchang(
date='2026-01-15',
latitude=28.6139,
longitude=77.2090
),
client.dasha(
datetime='1990-05-15T14:30:00+05:30',
latitude=28.6139,
longitude=77.2090
)
]
chart, panchang, dasha = await asyncio.gather(*tasks)
print(f"Chart Ascendant: {chart.ascendant.sign}")
print(f"Today's Tithi: {panchang.tithi.name}")
print(f"Current Dasha: {dasha.current_mahadasha.planet}")
await client.close()
asyncio.run(main())
AI Chatbot Integration
from vedika import VedikaClient
client = VedikaClient(api_key='YOUR_API_KEY')
def ask_vedika(question, birth_details):
"""Ask Vedika AI about astrology."""
response = client.chat(
question=question,
birth_details=birth_details
)
return response.answer
# Example: Natural language astrology query
answer = ask_vedika(
question="What career paths suit me based on my birth chart?",
birth_details={
'datetime': '1990-05-15T14:30:00+05:30',
'latitude': 28.6139,
'longitude': 77.2090
}
)
print(answer)
# Streaming responses
for chunk in client.chat_stream(
question="Tell me about my upcoming Jupiter Mahadasha",
birth_details={
'datetime': '1990-05-15T14:30:00+05:30',
'latitude': 28.6139,
'longitude': 77.2090
}
):
print(chunk, end='', flush=True)
Flask Integration
from flask import Flask, request, jsonify
from vedika import VedikaClient
app = Flask(__name__)
vedika = VedikaClient(api_key='YOUR_API_KEY')
@app.route('/api/horoscope', methods=['POST'])
def get_horoscope():
data = request.json
chart = vedika.birth_chart(
datetime=data['datetime'],
latitude=data['latitude'],
longitude=data['longitude']
)
return jsonify({
'sun_sign': chart.sun.sign,
'moon_sign': chart.moon.sign,
'ascendant': chart.ascendant.sign,
'planets': [
{'name': p.name, 'sign': p.sign, 'house': p.house}
for p in chart.planets
]
})
@app.route('/api/match', methods=['POST'])
def match_kundli():
data = request.json
match = vedika.match(
male=data['male'],
female=data['female']
)
return jsonify({
'score': match.total_score,
'percentage': match.percentage,
'recommendation': match.recommendation
})
if __name__ == '__main__':
app.run(debug=True)
Pandas Integration
import pandas as pd
from vedika import VedikaClient
client = VedikaClient(api_key='YOUR_API_KEY')
# Convert birth chart to DataFrame
chart = client.birth_chart(
datetime='1990-05-15T14:30:00+05:30',
latitude=28.6139,
longitude=77.2090
)
planets_df = pd.DataFrame([
{
'planet': p.name,
'sign': p.sign,
'degree': p.degree,
'house': p.house,
'nakshatra': p.nakshatra,
'retrograde': p.retrograde
}
for p in chart.planets
])
print(planets_df)
# Analyze multiple charts
birth_data = [
{'datetime': '1990-05-15T14:30:00', 'lat': 28.61, 'lng': 77.21},
{'datetime': '1992-08-20T09:15:00', 'lat': 19.07, 'lng': 72.87},
{'datetime': '1988-12-10T18:45:00', 'lat': 13.08, 'lng': 80.27},
]
charts = [client.birth_chart(d['datetime'], d['lat'], d['lng']) for d in birth_data]
analysis_df = pd.DataFrame([
{
'moon_sign': c.moon.sign,
'sun_sign': c.sun.sign,
'ascendant': c.ascendant.sign,
'yoga_count': len(c.yogas)
}
for c in charts
])
print(analysis_df.describe())
Start Building with Python
The Vedika Python SDK provides type hints, async support, and comprehensive documentation. Install with pip and start building in minutes.