vibz.art/docs
SDKs

Python SDK

Install and use the vibzart Python SDK.

Installation

pip install vibzart

Requires Python 3.10+.

Quick start

from vibzart import Vibzart

client = Vibzart(api_key="vz_live_...")

# Panchang
result = client.lilavati.panchang(lat=28.61, lng=77.20)
print(result.data.tithi.name)      # e.g. "Ashtami"
print(result.data.nakshatra.name)  # e.g. "Rohini"

# Festivals
festivals = client.lilavati.festivals(lat=28.61, lng=77.20, year=2026)
for f in festivals.data:
    print(f"{f.name}: {f.date}")

# Namakarna (Vedic naming)
naming = client.lilavati.namakarna(
    date="2024-01-15", time="14:30", lat=28.61, lng=77.20,
)
print(naming.data.syllable_latin)       # e.g. "Vi"
print(naming.data.syllable_devanagari)  # e.g. "वि"

# Shraddha (bereavement timeline)
shraddha = client.lilavati.shraddha(date="2024-01-15", lat=28.61, lng=77.20)
print(shraddha.data.terahvin)  # Day 13 ceremony date

Async support

All methods have async counterparts prefixed with a:

import asyncio
from vibzart import Vibzart

async def main():
    async with Vibzart(api_key="vz_live_...") as client:
        result = await client.lilavati.apanchang(lat=28.61, lng=77.20)
        festivals = await client.lilavati.afestivals(lat=28.61, lng=77.20)
        naming = await client.lilavati.anamakarna(
            date="2024-01-15", lat=28.61, lng=77.20,
        )

asyncio.run(main())

Configuration

client = Vibzart(
    api_key="vz_live_...",
    base_url="https://api.vibz.art",  # default
    timeout=30.0,                      # seconds, default
    max_retries=2,                     # default
    default_headers={"X-Custom": "value"},
)

Type safety

All response objects are Pydantic v2 models with full type hints:

from vibzart import PanchangData, TithiInfo, NakshatraInfo

result = client.lilavati.panchang(lat=28.61, lng=77.20)
panchang: PanchangData = result.data
tithi: TithiInfo = panchang.tithi
nakshatra: NakshatraInfo = panchang.nakshatra

Error handling

from vibzart import AuthenticationError, RateLimitError, APIError

try:
    result = client.lilavati.panchang(lat=28.61, lng=77.20)
except AuthenticationError:
    print("Check your API key")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except APIError as e:
    print(f"[{e.status}] {e.code}: {e.detail}")

See Error Handling for the full exception hierarchy.