Skip to main content

astromool (Python)

Official client for the AstroMool API: Vedic charts computed from the Swiss Ephemeris, the 90 astromool.com calculators, and the full PDF reports. Python 3.8+, standard library only.

import os
from astromool import AstroMool, AstroMoolError

am = AstroMool(os.environ["ASTROMOOL_KEY"])     # am_test_... while you build, am_live_... in production

birth = {"date": "1995-08-14", "time": "10:35", "tz_id": "Asia/Kolkata", "lat": 25.5941, "lon": 85.1376}
chart = am.planets(birth)                         # {"data": ..., "meta": ...}
print(chart["data"]["ascendant"]["sign"], chart["meta"]["ayanamsa"])

m = am.calculators.run("manglik-dosha-calculator-by-date-of-birth", birth)
print(m["data"]["summary"])                       # "Manglik - intensity 18/100"

Every method returns the API's envelope. meta states the ayanamsa, the UTC offset used and the engine version; read meta["warnings"] - it flags things like a birth time that did not exist because of a DST change.

Methods

Method API
planets(birth, ayanamsa=, node=) POST /v1/vedic/planets
calculators.list() / calculators.run(slug, person, partner=, params=, detail=) /v1/calculators
reports.create(slug, person, partner=, params=, lang=, webhook_url=, idempotency_key=) POST /v1/reports/{slug}
reports.get(id) / reports.wait_until_ready(id, timeout=300) / reports.download(url)
geo.search(q, limit) / geo.timezone(tz_id, date, time) /v1/geo/*
meta.ayanamsas(date), usage(), health()

Charts, dasha, panchang, matching and more (1.1.0)

b = {"date": "1995-08-14", "time": "10:35", "place": "Patna"}   # or lat/lon/tz_id; "birth_time_unknown": True for a noon chart
am.vedic.chart(b); am.vedic.divisional(b, "D9"); am.vedic.ashtakavarga(b)
svg = am.vedic.chart_image(b, style="south", chart="D9")        # format="png" -> bytes
am.dasha.vimshottari(b); am.dasha.yogini(b)
am.panchang.day({"place": "Delhi"}, "2026-10-11")                # .rahu_kaal / .choghadiya / .hora
am.match.ashtakoot(groom, bride); am.numerology.core("Asha Verma", "1995-08-14")
am.dosha.check("mangal", b); am.dosha.summary(b); am.remedies.get("gemstone", b)
am.transit.natal(b); am.kp.chart(b); am.western.natal(b)
am.batch([{"path": "/v1/vedic/houses", "body": b}, {"method": "GET", "path": "/v1/usage"}])
am.topic("/v1/muhurat/vivah", {"person": {"place": "Delhi"}, "params": {"year": 2027}})   # any topic endpoint

Reports

r = am.reports.create("kundli-matching-by-date-of-birth", groom, partner=bride, lang="both")
ready = am.reports.wait_until_ready(r["data"]["report_id"])
open("report.pdf", "wb").write(am.reports.download(ready["data"]["download_url"]))

reports.create sends an Idempotency-Key (generated if you do not pass one), so a retry never creates a second report.

Errors and retries

Failures raise AstroMoolError with status, code (stable - see the errors page), detail, request_id and field. The client retries rate_limited (waiting Retry-After), 5xx answers and network errors (max_retries=2). quota_exceeded is never retried.

Webhooks

from astromool import verify_webhook

@app.post("/astromool-hook")                       # Flask
def hook():
    event = verify_webhook(request.get_data(), request.headers.get("X-AstroMool-Signature"), os.environ["ASTROMOOL_WEBHOOK_SECRET"])
    return "", 200

Use the raw request bytes. The webhook secret is in the dashboard under Keys.

MIT licence.

Metadata

Release files for astromool 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for astromool 1.1.0
File Size Uploaded
astromool-1.1.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for astromool 1.1.0
File Interpreter ABI Platform
astromool-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.8 kB

Release files / astromool-1.1.0.tar.gz

Download URL astromool-1.1.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d85fce63d2c45b4ebbb05cc6b0c1f5f35385d871cec32bb73a4ca8482c66fe47
BLAKE2b-256 checksum
How to use checksums
14fbfd20e9e2613b4164c563a68c85b017c28cf8b6ebe6f00f1c7ed053a23bde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / astromool-1.1.0-py3-none-any.whl

Download URL astromool-1.1.0-py3-none-any.whl
Size 8.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8cbabb5955b96e79c6d7ae036408b1d4542799c1bae348ee8816e77e4fc4ecb6
BLAKE2b-256 checksum
How to use checksums
955d01aa18cd8168634808838475e8e6fe41a260f464ba22c78b4365cf5168ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page