Curated product routes
Use routes like /v1/charts, /v1/panchang/day, /v1/dashas/vimshottari, and /v1/compatibility/ashtakoot when the app needs a stable product workflow.
Documentation
Astro AI exposes deterministic astrology facts through curated product routes and a broader typed calculator registry. Use this guide for intent and examples; use the reference for every route-level detail.
There are three surfaces, and they should not be used interchangeably.
Use routes like /v1/charts, /v1/panchang/day, /v1/dashas/vimshottari, and /v1/compatibility/ashtakoot when the app needs a stable product workflow.
Use /v1/calculators and /v1/calculators/{calculator_id}:run when you need long-tail VedAstro-mapped calculations without waiting for a bespoke endpoint.
Prediction prose, external providers, and sensitive rows are gated. The API favors evidence, warnings, and provenance over hidden generation.
Use /v1/people, /v1/calculation-runs, and /v1/library-items when your app needs durable profiles, source results, saved reports, calendar windows, lessons, or notes.
Local development is open by default. Production deployments should set ASTRO_AI_API_KEYS and send either Authorization: Bearer ASTRO_AI_API_KEY or x-api-key: ASTRO_AI_API_KEY. URL query-string keys are rejected.
{ "data": { ...typed payload }, "meta": { "request_id": "req_...", "calculator_version": "2026-05-23", "input": {}, "warnings": [] } }
When ASTRO_AI_RATE_LIMIT_PER_MINUTE is configured, /v1 routes return RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, and Retry-After where applicable.
Most calculation endpoints use the same civil date-time, coordinates, timezone, and convention config.
{
"year": 1998,
"month": 5,
"date": 20,
"hours": 14,
"minutes": 25,
"seconds": 0,
"latitude": 13.0827,
"longitude": 80.2707,
"timezone": 5.5,
"config": {
"ayanamsa": "lahiri",
"observation_point": "topocentric",
"house_system": "placidus"
}
}
Use decimal UTC offsets in timezone. The current convention defaults are Lahiri ayanamsa and topocentric observation. Keep the original user-entered location elsewhere if your product needs provenance.
Call POST /v1/charts, then add divisional charts, rendering, or reading facts only when needed.
Call POST /v1/panchang/day and optionally combine it with /v1/muhurta/windows.
Call POST /v1/readings/facts for auditable facts before any LLM or UI copy layer.
Call POST /v1/teacher/answer for source-backed explanations, then /v1/teacher/lesson-plan for saved study sequences.
Call POST /v1/match-runs to store facts-only compatibility context between two saved people.
Discover calculators, inspect schemas, then run one calculator or a batch with explicit internal/experimental gates.
These snippets were checked against the local FastAPI app using the shared Chennai sample birth payload.
/v1/charts
Use this first. The local run returned Virgo rising and chart planets in typed sidereal positions.
curl -s http://127.0.0.1:8000/v1/charts -H "Content-Type: application/json" -d @birth.json
{
"data": {
"object": "chart",
"ascendant": {
"sign": "Virgo",
"degree_in_sign": 7.98468889
},
"planets": [
{
"name": "Sun",
"sign": "Taurus",
"nakshatra": "Krittika"
},
{
"name": "Moon",
"sign": "Aquarius",
"nakshatra": "Shatabhisha"
}
]
},
"meta": {
"calculator_version": "2026-05-23",
"warnings": []
}
}
/v1/panchang/day
The same sample produced a weekday, lunar day, nakshatra, yoga, karana, sunrise, and sunset.
curl -s http://127.0.0.1:8000/v1/panchang/day -H "Content-Type: application/json" -d @birth.json
{
"data": {
"object": "panchang_day",
"weekday": "Wednesday",
"tithi": {
"name": "Krishna Navami",
"ends_at": "1998-05-20T19:28:25+05:30"
},
"nakshatra": {
"name": "Shatabhisha",
"ends_at": "1998-05-20T14:53:27+05:30"
},
"sunrise": "1998-05-20T05:43:25+05:30",
"sunset": "1998-05-20T18:27:30+05:30"
}
}
/v1/dashas/vimshottari
The local run anchored the sequence to Shatabhisha with Rahu as the starting lord.
curl -s http://127.0.0.1:8000/v1/dashas/vimshottari -H "Content-Type: application/json" -d @birth.json
{
"data": {
"object": "vimshottari_dasha",
"birth_nakshatra": "Shatabhisha",
"starting_lord": "Rahu",
"periods": [
{
"lord": "Rahu",
"end": "1998-10-25T01:04:28.176966+00:00"
},
{
"lord": "Jupiter",
"end": "2014-10-24T22:11:40.176966+00:00"
},
{
"lord": "Saturn",
"end": "2033-10-24T12:46:28.176966+00:00"
}
]
}
}
/v1/compatibility/ashtakoot
The pair example returned a beta scored 8-kuta report with visible factor scores.
curl -s http://127.0.0.1:8000/v1/compatibility/ashtakoot -H "Content-Type: application/json" -d @pair.json
{
"data": {
"object": "ashtakoot_report",
"total_points": 15,
"max_points": 36,
"percentage": 41.6667,
"factors": [
{
"name": "Nadi Kuta",
"score": 8,
"max_score": 8
},
{
"name": "Rasi Kuta",
"score": 7,
"max_score": 7
}
]
}
}
/v1/teacher/answer
The Teacher route composed classical citations and chart facts without generating prediction prose.
curl -s http://127.0.0.1:8000/v1/teacher/answer -H "Content-Type: application/json" -d @teacher.json
{
"data": {
"object": "teacher_answer",
"mode": "source_backed_teacher_outline",
"has_birth_context": true,
"answer_outline": [
{
"id": "classical-grounding",
"citation_ids": [
"brihat-parashara-hora-sastra#bphs-vimshottari-dasha"
]
},
{
"id": "chart-evidence",
"source_calculator_ids": [
"chart.planets",
"dasha.vimshottari.active"
]
}
],
"safety": {
"llm_generation": false,
"prediction_prose": false
}
}
}
/v1/teacher/lesson-plan
The lesson-plan route turned the same citation and chart-fact policy into a saved study sequence.
curl -s http://127.0.0.1:8000/v1/teacher/lesson-plan -H "Content-Type: application/json" -d @teacher-lesson.json
{
"data": {
"object": "teacher_lesson_plan",
"mode": "source_backed_lesson_sequence",
"lesson_count": 4,
"lessons": [
{
"object": "teacher_lesson",
"id": "lesson-1",
"citation_ids": [
"brihat-parashara-hora-sastra#bphs-vimshottari-dasha"
]
}
],
"save_hint": {
"body": {
"kind": "teacher_lesson_plan"
}
},
"safety": {
"llm_generation": false,
"prediction_prose": false
}
}
}
/v1/calculators:batch
The batch run executed julian-day and chart.planets with one shared birth payload.
curl -s http://127.0.0.1:8000/v1/calculators:batch -H "Content-Type: application/json" -d @batch.json
{
"data": {
"object": "calculator_batch",
"cost_units": 2,
"results": [
{
"id": "julian-day",
"calculator_id": "time.julian_day",
"status": "ok"
},
{
"id": "planets",
"calculator_id": "chart.planets",
"status": "ok"
}
]
}
}
/v1/names/generate
The deterministic name helper ranked local candidates and included numerology evidence.
curl -s http://127.0.0.1:8000/v1/names/generate -H "Content-Type: application/json" -d @names.json
{
"data": {
"object": "name_suggestions",
"generation_mode": "deterministic_local_candidates",
"candidates": [
{
"name": "Aarav",
"name_number": 11,
"ruling_planet": "Moon"
},
{
"name": "Dev",
"name_number": 15,
"ruling_planet": "Venus"
}
],
"warnings": [
"This is not an LLM generation endpoint."
]
}
}
Use this as the human index. The full reference page expands every route with parameters, request examples, returns, and caveats.
Birth-chart and divisional-chart calculation surfaces.
Panchang 1 operationsDay-level lunar calendar factors for a birth or event time.
Muhurta 1 operationsTransparent timing windows and hora-style timing helpers.
Good Time Finder 1 operationsGuided task-aware muhurta ranking with citations and transparent scoring evidence.
Birth Time Finder 1 operationsGuided birth-time candidate ranking with uncertainty bands and transparent rectification evidence.
Dashas 4 operationsDeterministic dasha timelines and active-period lookup.
Life Timeline 1 operationsEvidence-first life-map timelines composed from dasha, event windows, and Ashtakavarga research signals.
Reports 1 operationsSource-backed product reports assembled from deterministic calculator facts.
Readings 2 operationsFacts-first bundles for downstream reading products.
Predictions 3 operationsGated prediction metadata and source-backed fact matches.
Compatibility 2 operationsRelationship and match-context calculation surfaces.
Strength 1 operationsPlanet-strength reports with research-grade caveats.
Ashtakavarga 1 operationsBindu charts, reductions, and life-map evidence.
Rendering 3 operationsSVG payloads for chart, kundali, and sky-chart views.
Calculator Registry 10 operationsDiscover, inspect, and execute calculator contracts.
Classical Texts 5 operationsCitation-backed classical text catalog and deterministic retrieval outlines.
Teacher 2 operationsSource-backed teaching outlines and lesson plans that combine classical citations and optional chart facts without LLM prose.
Search 4 operationsLocal lexical search over calculators, docs, and reference metadata.
Geo & Time 5 operationsCoordinate, timezone, address, IP, and standard-time helpers.
Autofill 5 operationsProduct-facing suggestions for birth, marriage, and location workflows.
Rectification 3 operationsEvidence scans for candidate birth times.
Names 1 operationsDeterministic name suggestions and number-aware naming helpers.
Time Ranges 3 operationsVedAstro-style time range presets, counts, and CSV lists.
Product State 50 operationsSaved people, calculation history, product-library snapshots, client sessions, and journal events for reusable workflows.
External Providers 3 operationsExplicitly configured external-provider gates.
Safety 1 operationsCatalog of intentionally rejected sensitive or internal rows.
Coverage 1 operationsVedAstro implementation coverage and clone-decision ledger.
Hermes Astro 2 operationsAstro AI API operations.
/openapi is Swagger UI for trying the contract. /openapi.json is the raw schema for SDK generation. /reference is the authored endpoint reference.