{"openapi":"3.1.0","info":{"title":"Vedic Astrology API","version":"2.0.0","description":"Vedic astrology (Jyotish) and KP API for kundli generation with 15 divisional charts (D1-D60), Ashtakoot Gun Milan kundli matching, Vimshottari Dasha predictions, dosha detection with remedies, a 301-entry planetary yoga glossary with 48 of them chart-detected and evidenced, complete Panchang, and KP horary with 249-level sub-lord analysis. Calculations verified against NASA JPL Horizons at arc-second-level accuracy. Built for matrimonial apps, horoscope platforms, spiritual wellness services, and AI-powered astrology chatbots. One key covers every RoxyAPI domain, with Remote MCP and typed SDKs.\n\n# RoxyAPI: AI-Native Insight Infrastructure\n\n> **Base URL:** `https://roxyapi.com/api/v2`\n> All endpoint paths below are relative to this base URL.\n\nThe only multi-domain spiritual intelligence API. 18 domains (Astrology, Vedic Astrology, Forecast, Human Design, Chinese Astrology, Feng Shui, Mesoamerican Astrology, Vastu Shastra, Numerology, Kabbalah, Tarot Reading, Biorhythm, Ayurveda, I-Ching Oracle, Crystals and Healing Stones, Dream Interpretation, Angel Numbers, Location and Timezone), 258+ endpoints, one API key, instant activation. Remote MCP server per domain plus AGENTS.md for AI coding agents.\n\n## Who uses RoxyAPI\n\n- **Developers** building astrology apps, tarot platforms, numerology calculators, or dream journals\n- **AI agent builders** connecting Claude, GPT, or Gemini to real calculation engines via MCP\n- **Vibe coders** shipping insight apps with Cursor, Bolt, or Replit using zero domain knowledge\n- **Founders and brands** launching branded spiritual experiences for their audience\n\n## Quick start (60 seconds)\n\n**1. Get your API key** at [roxyapi.com/pricing](https://roxyapi.com/pricing). Instant delivery, no account required.\n\n**2. Make your first call:**\n```bash\ncurl -H \"X-API-Key: YOUR_KEY\" https://roxyapi.com/api/v2/tarot/draw -X POST -H \"Content-Type: application/json\" -d '{\"count\": 3}'\n```\n\n**3. Monitor usage:**\n```bash\ncurl -H \"X-API-Key: YOUR_KEY\" https://roxyapi.com/api/v2/usage\n```\n\n## AI agent integration (Remote MCP)\n\nRoxyAPI ships a Remote MCP server per product over Streamable HTTP, with no local setup and no Docker. Your AI agent auto-discovers all 258+ endpoints as callable tools with zero configuration:\n- **Claude Desktop, Cursor, Windsurf**: Add MCP server URL in settings\n- **OpenAI Agents, Gemini ADK**: Connect via Streamable HTTP transport\n- **Custom agents**: Use the MCP Python/TypeScript SDK\n\nMCP endpoints: `https://roxyapi.com/mcp/{domain}` (e.g., `/mcp/astrology`, `/mcp/tarot`)\n\nSetup guide: [roxyapi.com/docs/mcp](https://roxyapi.com/docs/mcp)\n\n## Authentication\n\nAll endpoints require an API key via header or query param:\n- **Header (recommended):** `X-API-Key: YOUR_KEY`\n- **Query param (testing):** `?api_key=YOUR_KEY`\n\n## Response format\n\nClean JSON, no wrapper objects. Errors return `{ \"error\": \"message\", \"code\": \"error_code\" }`. The `error` field is human-readable (may change wording). The `code` field is machine-readable and stable, so it is the one safe to switch on programmatically.\n\nRate limit headers on every response: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Used`, `X-RateLimit-Reset` (Unix timestamp, seconds). Quotas reset on the 1st of every calendar month at 12:00 AM UTC, not on your renewal date.\n\n## Errors\n\nAll errors return `{ \"error\": \"message\", \"code\": \"error_code\" }`:\n\n| Status | Code | When |\n|--------|------|------|\n| 400 | `validation_error` | Missing or invalid parameters. Response includes `issues[]` with per-field `path`, `message`, `code`, `expected`, `minimum`, `maximum`, `format`, `pattern`. |\n| 401 | `api_key_required` | No API key provided |\n| 401 | `invalid_api_key` | Key format invalid or tampered |\n| 401 | `subscription_not_found` | Key references non-existent subscription |\n| 401 | `subscription_inactive` | Subscription cancelled, expired, or suspended |\n| 404 | `not_found` | Resource not found. Response may include a ranked `suggestions[]` array (each with `endpoint`, `hint`, and a `docs` deep link) for typo recovery. |\n| 405 | `method_not_allowed` | Path exists for a different HTTP method. Response includes `allow[]` and the `Allow` header lists valid methods. |\n| 429 | `rate_limit_exceeded` | Monthly quota reached |\n| 500 | `internal_error` | Server error |\n\n## Pricing\n\nFlat per-request pricing. Every call counts the same, whether a planet position or a full birth chart with aspects. No credit systems, no variable costs. Plans from $39 per month for 50K requests, up to 3M requests, with custom volume above that.\n\nSee [roxyapi.com/pricing](https://roxyapi.com/pricing)\n\n## Resources\n\n- [Quickstart guide](https://roxyapi.com/docs/quickstart): first API call in 60 seconds\n- [Documentation](https://roxyapi.com/docs): guides, tutorials, domain reference\n- [MCP setup](https://roxyapi.com/docs/mcp): connect AI agents\n- [Open source templates](https://roxyapi.com/templates): clone and deploy in 30 minutes\n- [FAQ](https://roxyapi.com/faq): common questions\n- [Contact](https://roxyapi.com/contact): support and API key recovery\n","contact":{"name":"RoxyAPI Support","url":"https://roxyapi.com/contact"},"license":{"name":"Proprietary","url":"https://roxyapi.com/policy/terms"}},"externalDocs":{"description":"Complete API Documentation with Examples","url":"https://roxyapi.com/docs"},"servers":[{"url":"/api/v2","description":"Production API v2"}],"security":[{"apiKey":[]}],"tags":[{"name":"Vedic Astrology","description":"Vedic astrology (Jyotish) and KP API for kundli generation with 15 divisional charts (D1-D60), Ashtakoot Gun Milan kundli matching, Vimshottari Dasha predictions, dosha detection with remedies, a 301-entry planetary yoga glossary with 48 of them chart-detected and evidenced, complete Panchang, and KP horary with 249-level sub-lord analysis. Calculations verified against NASA JPL Horizons at arc-second-level accuracy. Built for matrimonial apps, horoscope platforms, spiritual wellness services, and AI-powered astrology chatbots. One key covers every RoxyAPI domain, with Remote MCP and typed SDKs."}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Your API key for accessing RoxyAPI. Alternatively, you can pass the API key as a query parameter \"api_key\"."}},"schemas":{"BirthChartResponse":{"type":"object","properties":{"aries":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"taurus":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"gemini":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"cancer":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"leo":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"virgo":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"libra":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"scorpio":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"sagittarius":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"capricorn":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"aquarius":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"pisces":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the block it sits in, so the aries block carries \"aries\" and the pisces block carries \"pisces\"."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Mars","description":"Planet (graha) placed in this sign."},"longitude":{"type":"number","example":15.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Bharani","description":"Nakshatra (lunar mansion, 1 of 27) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra has 4 padas of 3 degrees 20 each."},"key":{"type":"number","example":2,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"]},"isRetrograde":{"type":"boolean","example":false,"description":"True if planet is in retrograde motion (appears to move backward). Retrograde planets have altered significations."},"house":{"type":"integer","minimum":1,"maximum":12,"example":3,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi). Present on the D1 birth chart; divisional charts (navamsa, varga) omit it."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this zodiac sign."}},"required":["rashi","signs"]},"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"modernPlanets":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","enum":["Uranus","Neptune","Pluto"],"example":"Uranus","description":"Modern planet name. These three are outside the classical Navagraha and are returned only when modernPlanets true is sent."},"sanskritName":{"type":"string","enum":["Arun","Varun","Yam"],"example":"Arun","description":"Sanskrit name Indian software prints for this body: Arun for Uranus, Varun for Neptune, Yam for Pluto. Transliterated rather than translated, the same treatment as rashi and nakshatra lord names, so it is identical in every locale."},"longitude":{"type":"number","example":214.44,"description":"Sidereal longitude in degrees (0-360), in the same ayanamsa frame as every other position in this response."},"rashi":{"type":"string","example":"Scorpio","description":"Zodiac sign (rashi) the body occupies."},"degreeInRashi":{"type":"number","example":4.44,"description":"Degrees advanced into the sign, 0 to 30. This is the figure a chart displays beside the sign."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Vishakha","description":"Nakshatra (lunar mansion, 1 of 27) the body occupies."},"pada":{"type":"number","example":3,"description":"Nakshatra pada (quarter, 1-4)."},"key":{"type":"number","example":16,"description":"Nakshatra index (1-27) starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Vimshottari ruling planet of this nakshatra."}},"required":["name","pada","key","lord"],"description":"Nakshatra placement. Reported because it is purely positional; it does not imply the body participates in Vimshottari dasha, which is built on the Moon alone."},"isRetrograde":{"type":"boolean","example":true,"description":"True when the body appears to move backward. All three are retrograde for roughly 40 percent of each year, so this is the normal case rather than the exception."}},"required":["planet","sanskritName","longitude","rashi","degreeInRashi","nakshatra","isRetrograde"]},"description":"Uranus, Neptune and Pluto, present only when modernPlanets true was sent. Deliberately separate from meta and deliberately without dignity, avastha, combustion or aspect fields: those are constructs of the nine-graha system and the modern planets rule no sign, so no classical value exists for them. Order is always Uranus, Neptune, Pluto."},"houses":{"type":"array","items":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":12,"example":1,"description":"Bhava (house) number 1-12. House 1 is the Lagna (Ascendant), house 7 the partnership axis, house 10 the career axis."},"name":{"type":"string","example":"Tanu Bhava","description":"Classical name of the bhava (house). Present when an interpretation entry exists for this house."},"description":{"type":"string","example":"Self, body, personality, and overall life direction.","description":"Significations of the bhava (house). Present when an interpretation entry exists for this house."},"themes":{"type":"array","items":{"type":"string"},"example":["self","body","health","personality","vitality"],"description":"Significations of the bhava as short keywords, the compact form of description. Bhava 1 covers self, body and vitality; 2 wealth and speech; 7 marriage and partnership; 10 career and status. Suited to chart labels, table cells and legends where the full classical description is too long, and identical to the houseThemes map returned by the Vimshottari dasha and KP chart routes. Localized by the lang query parameter."}},"required":["number"]},"description":"The twelve bhavas (houses) in order, each with its classical name and significations. Houses are counted whole-sign from the Lagna."},"combustion":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Mercury","description":"Graha that is combust (too close to the Sun, astangata)."},"distanceFromSun":{"type":"number","example":4.21,"description":"Angular separation from the Sun in degrees."},"orb":{"type":"number","example":12,"description":"Combustion orb in degrees applied for this graha. A planet within this orb of the Sun is treated as combust, weakening its results."}},"required":["planet","distanceFromSun","orb"]},"description":"Combust planets (astangata graha): grahas within their combustion orb of the Sun. Combustion weakens a planet significations. Empty when no planet is combust."},"planetaryWar":{"type":"array","items":{"type":"object","properties":{"planet1":{"type":"string","example":"Mars","description":"First graha in the planetary war (graha yuddha) pair."},"planet2":{"type":"string","example":"Saturn","description":"Second graha in the planetary war (graha yuddha) pair."},"distance":{"type":"number","example":0.42,"description":"Angular separation between the two grahas in degrees."},"winner":{"type":"string","example":"Mars","description":"Graha that wins the planetary war, the one with the more northerly ecliptic latitude. The winner keeps its strength, the loser is weakened."}},"required":["planet1","planet2","distance","winner"]},"description":"Planetary wars (graha yuddha): pairs of visible planets within 1 degree of each other. Empty when no two planets are in war."},"interpretations":{"type":"object","additionalProperties":{"type":"object","properties":{"rashi":{"type":"string","example":"Confident, authoritative, and self-driven expression.","description":"Interpretation of the planet placement in its rashi (sign)."},"nakshatra":{"type":"string","example":"Ambitious and disciplined, with a focus on legacy.","description":"Interpretation of the planet placement in its nakshatra."}},"required":["rashi","nakshatra"],"example":{"rashi":"Jupiter in Sagittarius (Dhanu) expresses through the energy of the Bow and Arrow. Respectful towards religion and spiritual matters, intelligent, excel in chosen subject, liberal attitude, fair","nakshatra":"Jupiter in Purva Ashadha nakshatra combines planetary energy with Apas (water deity) deity influence. These natives are confident, persuasive, and enthusiastic. They naturally inspire those around them."},"description":"The two composed readings for one graha: what its rashi placement says, and what its nakshatra placement says. Both are full sentences ready to render."},"example":{"Jupiter":{"rashi":"Jupiter in Sagittarius (Dhanu) expresses through the energy of the Bow and Arrow. Respectful towards religion and spiritual matters, intelligent, excel in chosen subject, liberal attitude, fair","nakshatra":"Jupiter in Purva Ashadha nakshatra combines planetary energy with Apas (water deity) deity influence. These natives are confident, persuasive, and enthusiastic. They naturally inspire those around them."}},"description":"Planet-in-rashi and planet-in-nakshatra interpretation summaries, keyed by planet name. Translated when a supported lang is requested."},"yogas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"gajakesari","description":"Glossary id (lowercase, kebab-case) matching an entry in the 301-entry planetary-yoga catalog. Use with GET /yoga/{id} to retrieve the full glossary text."},"name":{"type":"string","example":"Gajakesari Yoga","description":"Classical Sanskrit name of the yoga as referenced in BPHS (Brihat Parashara Hora Shastra), Phaladeepika, and B.V. Raman *Three Hundred Important Combinations*."},"description":{"type":"string","example":"Jupiter in kendra from Moon","description":"Brief classical formation rule. Identifies the planetary placement, lordship, dignity, aspect pattern, sign modality, or whole-chart bhava distribution required for the yoga to form."},"result":{"type":"string","example":"Gajakesari Yoga is one of the most powerful yogas...","description":"Classical phala (life-effect) description of the yoga when present, sourced from the parashari and phaladeepika tradition."},"quality":{"type":"string","enum":["Positive","Negative","Both"],"example":"Positive","description":"Overall nature. Auspicious yogas (Pancha Mahapurusha, Gajakesari) bestow benefits; inauspicious yogas (Kemadruma) indicate challenges; Both denotes context-dependent effects."},"family":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Classical grouping, ALWAYS present on a detection verdict: one of the four Nabhasa families (asraya, dala, akriti, sankhya) or classical for the twelve single-combination yogas such as Gajakesari and the Pancha Mahapurusha. Group the verdict list on this key to render a Nabhasa result the way the tradition arranges it. Never translated, so grouping works identically under any lang."},"present":{"type":"boolean","example":true,"description":"True if every classical condition for the yoga is satisfied by the given chart. False means one of TWO different things: the rule failed, or the rule held and a stronger family outranked it. Read `suppressedBy` to tell those apart, which is exact and locale-independent; `evidence` says the same thing in English prose."},"suppressedBy":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Set ONLY when this yoga matched its own classical rule and was then silenced by a higher-ranking family, so `present` is false for a reason a practitioner reads very differently from a failed rule. Names the family that took precedence, under the four classical norms: Akriti outranks Asraya, and Akriti, Asraya and Dala each outrank Sankhya. Absent means the rule genuinely did not hold."},"evidence":{"type":"string","example":"Jupiter in kendra from Moon, not retrograde, no malefic drishti. Strengtheners: Moon out of 6/8/12 (house 4); Moon 5 houses from Sun; Moon not in Scorpio.","description":"Human-readable rationale naming the specific rule that triggered or failed the detection, including planetary positions, dignity, kendradhipati status, lordship, malefic drishti, sign modality, or whole-chart bhava distribution. For a Nabhasa yoga that matched its own rule but was outranked, this names the precedence norm that silenced it, for example that an Akriti yoga outranks Asraya or that any other Nabhasa family suppresses Sankhya. English in every language, like the per-graha stateSource on POST /daily, because it is provenance to be checked against a text rather than display copy."}},"required":["id","name","description","result","quality","family","present"]},"description":"Forty-four classical yogas detected against this chart. Twelve conjunction and dignity yogas: Gajakesari (three-rule parashara definition), Sunapha, Anapha, Dhurdhura, Kemadruma, Chandra Mangala, Budha-Aditya, and the five Pancha Mahapurusha (Ruchaka, Bhadra, Hamsa, Malavya, Sasa). Plus all 32 Nabhasa distribution yogas across the Asraya, Dala, Akriti and Sankhya families, which read how the seven visible grahas are spread over the whole chart rather than any single conjunction, and which apply the four classical precedence norms so an outranked yoga is returned as absent with evidence naming the norm that silenced it. Each entry carries an `id` (matches `GET /yoga/{id}` for full glossary lookup), a `present` boolean, a `quality` (Positive, Negative, or Both = auspicious, inauspicious, or context-dependent), and classical-text `evidence` for the rule that triggered or failed. Filter on `present === true` for the active list."},"meta":{"type":"object","additionalProperties":{"type":"object","properties":{"graha":{"type":"string","example":"Jupiter","description":"Planet (graha) name. One of 9 Navagraha (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) or Lagna (Ascendant). Used for matching transits and dasha lords to natal positions."},"rashi":{"type":"string","example":"Sagittarius","description":"Zodiac sign (rashi) the planet occupies in the birth chart. One of 12 Vedic rashis from Aries (Mesha) to Pisces (Meena)."},"longitude":{"type":"number","example":248.73,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa. Precise position used for aspect calculations, divisional chart mapping, and transit analysis."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Vishakha","description":"Nakshatra (lunar mansion) the planet occupies. One of 27 Vedic nakshatras spanning 13 degrees 20 minutes each. Determines dasha lord and behavioral qualities."},"pada":{"type":"number","example":3,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra divides into 4 padas of 3 degrees 20 minutes. Pada determines Navamsa sign and refines personality traits."},"key":{"type":"number","example":16,"description":"Nakshatra sequence number (1-27) in zodiac order starting from Ashwini. Used for Tara Bala compatibility and dasha calculations."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Drives the dasha sequence and the nakshatra qualities."}},"required":["name","pada","key","lord"],"description":"Nakshatra (lunar mansion) data for this planet. Nakshatras are the 27-fold division of the zodiac central to Vedic timing and compatibility systems."},"isRetrograde":{"type":"boolean","example":false,"description":"True if the planet is in retrograde motion (appears to move backward through the zodiac). Retrograde planets carry intensified or internalized significations in Vedic interpretation."},"house":{"type":"integer","minimum":1,"maximum":12,"example":9,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi; Lagna itself is house 1). Present on the D1 birth chart; divisional charts omit it."},"avasthaInfo":{"type":"object","properties":{"awastha":{"type":"object","properties":{"meaning":{"type":"string","example":"Adult","description":"One or two word gloss of the state, suitable for a table cell beside the graha."},"interpretation":{"type":"string","example":"At its full strength, the graha delivers its promised results without reservation or delay.","description":"Single-sentence classical reading of what the state does to the graha results, sourced from BPHS ch. 45, Saravali ch. 5 and Phaladeepika ch. 9. Localized by the lang query parameter."}},"required":["meaning","interpretation"]},"jagradadi":{"type":"object","properties":{"meaning":{"type":"string","example":"Adult","description":"One or two word gloss of the state, suitable for a table cell beside the graha."},"interpretation":{"type":"string","example":"At its full strength, the graha delivers its promised results without reservation or delay.","description":"Single-sentence classical reading of what the state does to the graha results, sourced from BPHS ch. 45, Saravali ch. 5 and Phaladeepika ch. 9. Localized by the lang query parameter."}},"required":["meaning","interpretation"]},"deeptadi":{"type":"object","properties":{"meaning":{"type":"string","example":"Adult","description":"One or two word gloss of the state, suitable for a table cell beside the graha."},"interpretation":{"type":"string","example":"At its full strength, the graha delivers its promised results without reservation or delay.","description":"Single-sentence classical reading of what the state does to the graha results, sourced from BPHS ch. 45, Saravali ch. 5 and Phaladeepika ch. 9. Localized by the lang query parameter."}},"required":["meaning","interpretation"]}},"description":"Localized readings for this graha avastha states, present only when avasthaInfo true was sent. Each key mirrors the state field of the same name and carries a short meaning plus a one-sentence classical interpretation, so a client can label Yuva or Swapna without a second lookup call."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs. D1 birth chart only."},"jagradadi":{"type":"string","enum":["Jagrat","Swapna","Sushupti"],"example":"Swapna","description":"Jagradadi avastha, the waking state of the graha set by its sign dignity: Jagrat (awake, own sign or exaltation, full results), Swapna (dreaming, a friendly or neutral sign, medium results), Sushupti (sleeping, an enemy sign or debilitation, no results). Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna own no sign and are omitted."},"deeptadi":{"type":"string","enum":["Dipta","Svastha","Pramudita","Shanta","Dina","Duhkhita","Vikala","Khala","Kopa"],"example":"Pramudita","description":"Deeptadi avastha, the dispositional state of the graha, one of nine: Dipta (exalted, blazing), Svastha (own sign, healthy), Pramudita (great friend sign, delighted), Shanta (friendly sign, at peace), Dina (neutral sign, helpless), Duhkhita (enemy sign, sorrowful), Khala (great enemy sign, harsh), Vikala (joined by a natural malefic, disabled), Kopa (eclipsed by the Sun, enraged). Where more than one applies the more severe is returned, so combustion outranks a malefic conjunction, which outranks the sign reading. Present for the seven classical grahas on the D1 chart; Rahu, Ketu and the Lagna are omitted."}},"required":["graha","rashi","longitude","nakshatra","isRetrograde"],"example":{"graha":"Jupiter","rashi":"Sagittarius","longitude":259.6848244496506,"nakshatra":{"name":"Purva Ashadha","pada":2,"key":19,"lord":"Venus"},"isRetrograde":false,"house":9,"awastha":"Vriddha","jagradadi":"Jagrat","deeptadi":"Svastha"},"description":"One graha placement: rashi, sidereal longitude, nakshatra with pada and lord, whole-sign bhava, retrogression, and the Baladi, Jagradadi and Deeptadi avastha states."},"example":{"Jupiter":{"graha":"Jupiter","rashi":"Sagittarius","longitude":259.6848244496506,"nakshatra":{"name":"Purva Ashadha","pada":2,"key":19,"lord":"Venus"},"isRetrograde":false,"house":9,"awastha":"Vriddha","jagradadi":"Jagrat","deeptadi":"Svastha"}},"description":"Quick lookup of all planet positions keyed by planet name. Contains Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu, and Lagna (Ascendant)."}},"required":["aries","taurus","gemini","cancer","leo","virgo","libra","scorpio","sagittarius","capricorn","aquarius","pisces","frame","houses","combustion","planetaryWar","interpretations","meta"],"example":{"aries":{"rashi":"aries","signs":[]},"meta":{"Sun":{"graha":"Sun","rashi":"Leo","longitude":132.45,"nakshatra":{"name":"Magha","pada":2,"key":9,"lord":"Ketu"},"isRetrograde":false,"house":5,"awastha":"Vriddha"},"Moon":{"graha":"Moon","rashi":"Cancer","longitude":98.32,"nakshatra":{"name":"Punarvasu","pada":4,"key":6,"lord":"Jupiter"},"isRetrograde":false,"house":4,"awastha":"Yuva"}}}},"BirthChartRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"avasthaInfo":{"type":"boolean","default":false,"example":true,"description":"Set true to include a localized meaning and one-sentence classical interpretation beside each graha avastha state, under avasthaInfo on that graha in meta. Defaults to false, so an existing integration is byte-identical until it opts in. Saves a second call to GET /avasthas and the client-side join that would otherwise be needed to turn Yuva or Swapna into readable text."},"modernPlanets":{"type":"boolean","default":false,"example":true,"description":"Set true to also return Uranus, Neptune and Pluto, under the Sanskrit names Arun, Varun and Yam that Indian software prints for them. They arrive in a separate modernPlanets array, NOT inside meta, because classical Jyotish is defined over nine grahas: the moderns rule no sign, so they have no dignity, avastha, combustion or aspect strength and it would be fabrication to report one. Each carries longitude, rashi, degree in sign, nakshatra with pada and lord, and retrograde status. Defaults to false, so an existing integration is byte-identical until it opts in."}},"required":["date","time","latitude","longitude"]},"NavamsaResponse":{"type":"object","properties":{"chart":{"type":"object","properties":{"meta":{"type":"object","additionalProperties":{"type":"object","properties":{"graha":{"type":"string","example":"Venus","description":"Planet (graha) name. One of 9 Navagraha (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) or Lagna (Ascendant). In Navamsa, Venus and Jupiter placements are especially significant for marriage and spiritual growth."},"rashi":{"type":"string","example":"Libra","description":"Zodiac sign (rashi) the planet occupies in the Navamsa (D9) chart. D9 sign placement reveals the deeper quality of a planet and is critical for spouse characteristics and marriage timing."},"longitude":{"type":"number","example":195.42,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa. Same as D1 birth chart longitude, preserved for cross-chart reference and aspect analysis."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Swati","description":"Nakshatra (lunar mansion) the planet occupies. One of 27 Vedic nakshatras spanning 13 degrees 20 minutes each. Determines dasha lord and behavioral qualities."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra divides into 4 padas of 3 degrees 20 minutes. Pada determines Navamsa sign and refines personality traits."},"key":{"type":"number","example":15,"description":"Nakshatra sequence number (1-27) in zodiac order starting from Ashwini. Used for Tara Bala compatibility and dasha calculations."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Carried over from the D1 nakshatra."}},"required":["name","pada","key","lord"],"description":"Nakshatra (lunar mansion) data for this planet. Nakshatras are the 27-fold division of the zodiac central to Vedic timing and compatibility systems."},"isRetrograde":{"type":"boolean","example":false,"description":"True if the planet is in retrograde motion (appears to move backward through the zodiac). Retrograde planets carry intensified or internalized significations in Vedic interpretation."},"house":{"type":"integer","minimum":1,"maximum":12,"example":7,"description":"Bhava (house) number 1-12 in the Navamsa chart, counted whole-sign from the D9 Lagna. This is the Navamsa-specific house and differs from the D1 birth-chart house."}},"required":["graha","rashi","longitude","nakshatra","isRetrograde"],"example":{"graha":"Venus","rashi":"Libra","longitude":302.0203951659894,"nakshatra":{"name":"Dhanishta","pada":3,"key":22,"lord":"Mars"},"isRetrograde":false,"house":1},"description":"One graha as the D9 chart places it: its Navamsa rashi and house, with the D1 longitude and nakshatra carried over so the two charts can be read side by side."},"example":{"Venus":{"graha":"Venus","rashi":"Libra","longitude":302.0203951659894,"nakshatra":{"name":"Dhanishta","pada":3,"key":22,"lord":"Mars"},"isRetrograde":false,"house":1}},"description":"Planet positions in the Navamsa (D9) chart keyed by planet name. Contains all 9 Navagraha plus Lagna."},"aries":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the navamsa rashi-house block it sits in."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Venus","description":"Planet (graha) placed in this navamsa sign."},"longitude":{"type":"number","example":195.42,"description":"Original sidereal longitude in degrees (0-360), same as the D1 birth chart. Preserved for cross-chart reference."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Swati","description":"Nakshatra (lunar mansion) the planet occupies."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4)."},"key":{"type":"number","example":14,"description":"Nakshatra index in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Vimshottari ruling planet of this nakshatra."}},"required":["name","pada","key","lord"],"description":"Nakshatra (lunar mansion) data for this planet, carried over from the D1 chart."},"isRetrograde":{"type":"boolean","example":false,"description":"True if the planet is in retrograde motion."},"house":{"type":"integer","minimum":1,"maximum":12,"example":7,"description":"Bhava (house) number 1-12 in the Navamsa chart, counted whole-sign from the D9 Lagna."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this navamsa sign."}},"required":["rashi","signs"],"description":"One of the 12 navamsa rashi-house buckets (aries shown; taurus through pisces follow the identical shape). Each lists the planets placed in that sign."}},"required":["meta","aries"],"additionalProperties":{},"description":"Navamsa (D9) divisional chart showing planetary positions across 12 rashi houses plus a meta lookup. Same structure as the birth chart response."},"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"vargottama":{"type":"array","items":{"type":"string"},"description":"Planets that are Vargottama (same sign in D1 and D9)","example":["Sun","Moon"]},"vargottamaExplanation":{"type":"string","description":"Explanation of Vargottama significance","example":"Vargottama planets occupy the same zodiac sign in both D1 (birth chart) and D9 (Navamsa chart), indicating exceptional strength and purity. These planets deliver their full results with minimal affliction, bringing stability and success in their significations. Vargottama is considered highly auspicious, especially for benefics like Jupiter and Venus, as it doubles the positive effects in marriage, spirituality, and overall life prosperity."}},"required":["chart","frame","vargottama","vargottamaExplanation"]},"NavamsaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"DivisionalChartResponse":{"type":"object","properties":{"division":{"type":"object","properties":{"number":{"type":"integer","example":10,"description":"Division number (e.g. 10 for D10 Dasamsa)."},"name":{"type":"string","example":"Dasamsa","description":"English name of the divisional chart."},"sanskritName":{"type":"string","example":"Dasamsa","description":"Sanskrit name of the divisional chart."},"degreesPerDivision":{"type":"string","example":"3°","description":"Size of each division segment within a 30-degree sign."},"significance":{"type":"string","example":"Career, profession, public reputation, and social status","description":"Life areas this divisional chart reveals."}},"required":["number","name","sanskritName","degreesPerDivision","significance"],"description":"Metadata about the selected divisional chart."},"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"chart":{"type":"object","properties":{"meta":{"type":"object","additionalProperties":{"type":"object","properties":{"graha":{"type":"string","example":"Jupiter","description":"Planet (graha) name. One of 9 Navagraha (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) or Lagna (Ascendant). Used to match transits and dasha lords to divisional chart placements."},"rashi":{"type":"string","example":"Sagittarius","description":"Zodiac sign (rashi) the planet occupies in this divisional chart. May differ from the D1 birth chart sign. Comparing D1 and divisional rashi reveals Vargottama status and domain-specific strengths."},"longitude":{"type":"number","example":248.73,"description":"Original sidereal longitude in degrees (0-360) using Lahiri ayanamsa, same as D1 birth chart. Sign placement changes per division but longitude is preserved for cross-chart reference."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Vishakha","description":"Nakshatra (lunar mansion) the planet occupies. One of 27 Vedic nakshatras spanning 13 degrees 20 minutes each. Determines dasha lord and behavioral qualities."},"pada":{"type":"number","example":3,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra divides into 4 padas of 3 degrees 20 minutes. Pada determines Navamsa sign and refines personality traits."},"key":{"type":"number","example":16,"description":"Nakshatra sequence number (1-27) in zodiac order starting from Ashwini. Used for Tara Bala compatibility and dasha calculations."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Vimshottari ruling planet of this nakshatra. One of the nine grahas (Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury). Carried over from the D1 nakshatra."}},"required":["name","pada","key","lord"],"description":"Nakshatra (lunar mansion) data for this planet. Nakshatras are the 27-fold division of the zodiac central to Vedic timing and compatibility systems."},"isRetrograde":{"type":"boolean","example":false,"description":"True if the planet is in retrograde motion (appears to move backward through the zodiac). Retrograde planets carry intensified or internalized significations in Vedic interpretation."},"house":{"type":"integer","minimum":1,"maximum":12,"example":7,"description":"Bhava (house) number 1-12 in this divisional chart, counted whole-sign from the divisional Lagna. Specific to this varga and differs from the D1 birth-chart house."}},"required":["graha","rashi","longitude","nakshatra","isRetrograde"],"example":{"graha":"Jupiter","rashi":"Gemini","longitude":259.6848244496506,"nakshatra":{"name":"Purva Ashadha","pada":2,"key":19,"lord":"Venus"},"isRetrograde":false,"house":11},"description":"One graha as the requested varga places it: the divisional rashi and house, with the D1 longitude and nakshatra carried over so a Vargottama check needs no second call."},"example":{"Jupiter":{"graha":"Jupiter","rashi":"Gemini","longitude":259.6848244496506,"nakshatra":{"name":"Purva Ashadha","pada":2,"key":19,"lord":"Venus"},"isRetrograde":false,"house":11}},"description":"Planet positions in the divisional chart keyed by planet name. Contains all 9 Navagraha plus Lagna."},"aries":{"type":"object","properties":{"rashi":{"type":"string","example":"aries","description":"Zodiac sign name in lowercase. Always equals the key of the divisional rashi-house block it sits in."},"signs":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Jupiter","description":"Planet (graha) placed in this divisional sign."},"longitude":{"type":"number","example":248.73,"description":"Original sidereal longitude in degrees (0-360), same as the D1 birth chart. Preserved for cross-chart reference."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Vishakha","description":"Nakshatra (lunar mansion) the planet occupies."},"pada":{"type":"number","example":3,"description":"Nakshatra pada (quarter, 1-4)."},"key":{"type":"number","example":16,"description":"Nakshatra index in the zodiac sequence starting from Ashwini."},"lord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Vimshottari ruling planet of this nakshatra."}},"required":["name","pada","key","lord"],"description":"Nakshatra (lunar mansion) data for this planet, carried over from the D1 chart."},"isRetrograde":{"type":"boolean","example":false,"description":"True if the planet is in retrograde motion."},"house":{"type":"integer","minimum":1,"maximum":12,"example":7,"description":"Bhava (house) number 1-12 in this divisional chart, counted whole-sign from the divisional Lagna."}},"required":["graha","longitude","nakshatra","isRetrograde"]},"description":"Planets placed in this divisional sign."}},"required":["rashi","signs"],"description":"One of the 12 divisional rashi-house buckets (aries shown; taurus through pisces follow the identical shape). Each lists the planets placed in that sign."}},"required":["meta","aries"],"additionalProperties":{},"description":"Divisional chart showing planetary positions across 12 rashi houses plus a meta lookup. Same structure as birth chart and navamsa responses."},"vargottama":{"type":"array","items":{"type":"string"},"description":"Planets that are Vargottama (same sign in D1 and this divisional chart). Vargottama planets deliver strong, consistent results.","example":["Sun","Jupiter"]}},"required":["division","frame","chart","vargottama"]},"DivisionalChartRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"division":{"type":"integer","example":10,"description":"Divisional chart number. Each division reveals a specific life area. Supported: 2 (Hora, wealth), 3 (Drekkana, siblings), 4 (Chaturthamsa, property), 7 (Saptamsa, children), 9 (Navamsa, marriage), 10 (Dasamsa, career), 12 (Dwadasamsa, parents), 16 (Shodasamsa, vehicles), 20 (Vimsamsa, spirituality), 24 (Chaturvimsamsa, education), 27 (Bhamsa, strength), 30 (Trimsamsa, misfortunes), 40 (Khavedamsa, merit), 45 (Akshavedamsa, character), 60 (Shashtiamsa, past life karma)."}},"required":["date","time","latitude","longitude","division"]},"CompatibilityResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"total":{"type":"number","example":24.5,"description":"Total Ashtakoot Gun Milan score out of 36. Scores above 18 are considered compatible for marriage. Higher scores indicate stronger marital harmony."},"maxScore":{"type":"number","example":36,"description":"Maximum possible Guna Milan score (always 36). The 36 points are distributed across 8 kootas (matching categories)."},"percentage":{"type":"number","example":68.1,"description":"Compatibility percentage derived from total/maxScore. Above 50% (18/36) is the traditional minimum threshold for marriage compatibility."},"isCompatible":{"type":"boolean","example":true,"description":"True when percentage >= 50% (18/36 minimum). Based on the traditional Ashtakoot Gun Milan threshold used by Vedic astrologers for kundli matching."},"recommendation":{"type":"string","example":"Union is recommended","description":"Human-readable marriage recommendation based on overall score and dosha analysis. Indicates whether the union is recommended, and if not, specifies the reason (e.g. Nadi Dosha, Bhakoot Dosha, low overall score)."},"doshas":{"type":"array","items":{"type":"string"},"example":[],"description":"List of active (uncancelled) doshas in the matching. Doshas that meet classical cancellation conditions from Muhurta Martanda or BPHS are excluded from this array and appear in doshaCancellations instead. Common doshas: Nadi Dosha (same Nadi type, 0/8 points), Bhakoot Dosha (inauspicious Moon sign distance, 0/7 points). Empty array when no doshas are present or all detected doshas are cancelled."},"doshaCancellations":{"type":"array","items":{"type":"object","properties":{"dosha":{"type":"string","example":"Bhakoot Dosha","description":"Name of the cancelled dosha (Nadi Dosha or Bhakoot Dosha)."},"reason":{"type":"string","example":"Moon sign lords are the same planet (Venus)","description":"Classical cancellation condition that neutralizes this dosha. Based on Muhurta Martanda for Nadi Dosha and BPHS for Bhakoot Dosha."}},"required":["dosha","reason"]},"description":"Doshas detected but cancelled by classical exception rules. Nadi Dosha cancels when partners share the same Moon sign with different nakshatras, same nakshatra with different padas, or same nakshatra spanning different signs. Bhakoot Dosha cancels when Moon sign lords are the same planet or mutual natural friends. Koota score remains 0 but the dosha is not counted against the recommendation."},"breakdown":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","example":"Varna","description":"One of 8 Ashtakoot matching categories: Varna, Vashya, Tara, Yoni, Graha Maitri, Gana, Bhakoot, Nadi."},"score":{"type":"number","example":1,"description":"Points scored in this category. Maximum varies: Varna (1), Vashya (2), Tara (3), Yoni (4), Graha Maitri (5), Gana (6), Bhakoot (7), Nadi (8)."},"maxScore":{"type":"number","example":1,"description":"Maximum possible points for this koota category."},"person1":{"type":"string","example":"Vaishya","description":"Classification of person 1 for this koota (e.g. Vaishya for Varna, Chatushpada for Vashya, Sheep for Yoni)."},"person2":{"type":"string","example":"Shudra","description":"Classification of person 2 for this koota."},"description":{"type":"string","example":"Spiritual compatibility and mutual respect","description":"Human-readable explanation of what this koota category evaluates."}},"required":["category","score","maxScore","person1","person2","description"]},"description":"Detailed breakdown of compatibility scores across all 8 Ashtakoot kootas. Each category evaluates a different aspect of marital compatibility: temperament, physical, mental, financial, and health."}},"required":["frame","total","maxScore","percentage","isCompatible","recommendation","doshas","doshaCancellations","breakdown"]},"CompatibilityRequest":{"type":"object","properties":{"person1":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5}},"required":["date","time","latitude","longitude"],"description":"Birth data of the first person (typically the boy/groom in traditional Ashtakoot matching). Date, time, and location determine Moon nakshatra for koota scoring."},"person2":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5}},"required":["date","time","latitude","longitude"],"description":"Birth data of the second person (typically the girl/bride in traditional Ashtakoot matching). Moon nakshatra compared against person 1 across all 8 kootas."},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["person1","person2"]},"PlanetaryPositionsResponse":{"type":"object","additionalProperties":{"type":"object","properties":{"graha":{"type":"string","example":"Sun","description":"Vedic planet (graha) name. One of the Navagraha: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu, or Lagna (Ascendant)."},"rashi":{"type":"string","example":"Leo","description":"Zodiac sign (rashi) the planet occupies. One of 12 Vedic rashis from Aries to Pisces."},"longitude":{"type":"number","example":132.45,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa. Precise planetary position for chart calculations."},"latitude":{"type":"number","example":1.23,"description":"Ecliptic latitude in degrees, the angular distance north (positive) or south (negative) of the ecliptic. Used in planetary war (graha yuddha) winner resolution and latitude-sensitive analysis. Omitted for the Lagna (Ascendant)."},"house":{"type":"number","example":5,"description":"House number (1-12) the planet occupies using Whole Sign house system. House 1 is the Lagna (Ascendant) sign. Essential for bhava analysis and house-level predictions."},"nakshatra":{"type":"object","properties":{"name":{"type":"string","example":"Magha","description":"Nakshatra (lunar mansion) the planet occupies. One of 27 Vedic nakshatras spanning 13 degrees 20 minutes each."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (quarter, 1-4). Each nakshatra divides into 4 padas of 3 degrees 20 minutes. Determines Navamsa sign."},"key":{"type":"number","example":9,"description":"Nakshatra sequence number (1-27) in zodiac order starting from Ashwini. Used for Tara Bala and dasha calculations."},"deity":{"type":"string","example":"Pitris (Ancestors)","description":"Presiding deity of the nakshatra from Vedic mythology. Influences the spiritual quality and karmic themes of the planet placement."},"symbol":{"type":"string","example":"Royal Throne","description":"Traditional symbol representing the nakshatra. Reflects core energy and life themes associated with this lunar mansion."},"characteristics":{"type":"string","example":"Leadership qualities...","description":"Personality traits and behavioral tendencies when a planet occupies this nakshatra. Used for character analysis and prediction."}},"required":["name","pada","key"],"description":"Nakshatra (lunar mansion) data with optional interpretive details from Vedic tradition."},"rashiDetails":{"type":"object","properties":{"vedicName":{"type":"string","example":"Simha","description":"Sanskrit name of the zodiac sign as used in traditional Jyotish texts."},"symbol":{"type":"string","example":"Lion","description":"Traditional symbol representing this zodiac sign."},"energy":{"type":"string","example":"Masculine, Fire","description":"Elemental and gender classification of the rashi (Masculine/Feminine, Fire/Earth/Air/Water)."},"characteristics":{"type":"string","example":"Natural leadership...","description":"Key personality traits and behavioral tendencies of this zodiac sign in Vedic astrology."}},"description":"Vedic zodiac sign (rashi) details including Sanskrit name, symbol, elemental energy, and personality characteristics. Present when interpretation data is available."},"isRetrograde":{"type":"boolean","example":false,"description":"Whether the planet is in retrograde motion (vakri). Rahu and Ketu are always retrograde in Vedic astrology."},"isCombust":{"type":"boolean","example":false,"description":"Whether the planet is combust (asta, moudhya). A planet is combust when too close to the Sun, weakening its significations. Limits per Surya Siddhanta: Moon 12 deg, Mars 17 deg, Mercury 14 deg (12 deg if retrograde), Jupiter 11 deg, Venus 10 deg (8 deg if retrograde), Saturn 15 deg. Compared against the difference in ecliptic longitude, which is the standard interpretive convention and matches what other Vedic software reports. It is a chart judgement and not a statement about naked-eye visibility, which additionally depends on the observer latitude: for that use the heliacal endpoint, which applies the same limits in the classical degrees of time. The field is omitted entirely for Sun, Rahu, Ketu and Lagna, since the question does not apply to them rather than the answer being no."},"combustionDistance":{"type":"number","example":8.45,"description":"Angular distance from the Sun in degrees (0-180). Smaller values indicate closer proximity. Null for Sun, Rahu, Ketu, and Lagna. Useful for gauging combustion severity and planetary strength analysis."},"awastha":{"type":"string","enum":["Bala","Kumara","Yuva","Vriddha","Mrita"],"example":"Yuva","description":"Baladi avastha, the planetary age-state set by the graha degree within its sign: Bala (infant), Kumara (child), Yuva (adult, strongest results), Vriddha (old), Mrita (dead, weakest). Bands run forward in odd signs and reversed in even signs."}},"required":["graha","rashi","longitude","house","nakshatra","isRetrograde"],"example":{"graha":"Sun","rashi":"Taurus","longitude":30.549506246983867,"latitude":-0.000012444336161568964,"nakshatra":{"anga":"nakshatra","key":2,"ratio":0.2912129685237899,"abhijit":false,"left":9.450493753016135,"name":"Krittika","pada":2,"lord":"Sun","deity":"Agni (fire god)","symbol":"Razor or Blade","characteristics":"Krittika natives are known for their sharp intellect, courage, and independent nature. They possess a fiery determination and often stand out as leaders in their field."},"isRetrograde":false,"house":9,"awastha":"Mrita","jagradadi":"Sushupti","deeptadi":"Dina","rashiDetails":{"vedicName":"Vrishabha","symbol":"Bull","energy":"Aryaman Aditya","characteristics":"Value family, traditions, distinguished in nature"}},"description":"Everything computed for one graha: its rashi and sidereal longitude, the nakshatra and pada it falls in, its Whole Sign house from the Lagna, retrogression, combustion where the question applies, and the Baladi avastha. Lagna carries the same shape as a planet."},"example":{"Sun":{"graha":"Sun","rashi":"Taurus","longitude":30.549506246983867,"latitude":-0.000012444336161568964,"nakshatra":{"anga":"nakshatra","key":2,"ratio":0.2912129685237899,"abhijit":false,"left":9.450493753016135,"name":"Krittika","pada":2,"lord":"Sun","deity":"Agni (fire god)","symbol":"Razor or Blade","characteristics":"Krittika natives are known for their sharp intellect, courage, and independent nature. They possess a fiery determination and often stand out as leaders in their field."},"isRetrograde":false,"house":9,"awastha":"Mrita","jagradadi":"Sushupti","deeptadi":"Dina","rashiDetails":{"vedicName":"Vrishabha","symbol":"Bull","energy":"Aryaman Aditya","characteristics":"Value family, traditions, distinguished in nature"}}},"description":"Every graha keyed by its English name: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu, plus Lagna for the Ascendant. Read a placement straight off the key you want, such as `response.Sun`, and iterate the keys to render a full navagraha table."},"PlanetaryPositionsRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"ManglikResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"present":{"type":"boolean","description":"Whether Manglik dosha (Kuja dosha) is present based on Mars placement from Lagna","example":true},"severity":{"type":"string","enum":["Mild","Moderate","Severe"],"description":"Manglik dosha intensity, Mild (houses 2, 12), Moderate (houses 4, 7), Severe (houses 1, 8)","example":"Mild"},"description":{"type":"string","description":"Human-readable Manglik dosha analysis with Mars house placement","example":"Manglik Dosha present. Mars in house 12 creates matrimonial afflictions."},"exceptions":{"type":"array","items":{"type":"string"},"description":"Classical cancellation factors that reduce Manglik dosha severity (own sign, exaltation, benefic aspects)","example":["Mars in own sign (reduces severity)"]},"remedies":{"type":"array","items":{"type":"string"},"description":"Traditional Vedic remedies for Manglik dosha mitigation based on severity level","example":["Chant Hanuman Chalisa daily","Visit Hanuman temple on Tuesdays"]},"effects":{"type":"object","properties":{"marriage":{"type":"string","description":"Impact of Manglik dosha on marriage and marital harmony","example":"Delays in marriage, marital discord, separation, or multiple marriages"},"personality":{"type":"string","description":"Influence on temperament and behavioral traits","example":"Aggressive behavior, impatience, dominance, short temper"},"timing":{"type":"string","description":"Age-related intensity and Mars maturity effects","example":"Effects significantly reduce after age 28 (Mars maturity age)"},"relationships":{"type":"string","description":"Impact on interpersonal and spousal relationships","example":"Conflicts with spouse, power struggles, lack of harmony"}},"required":["marriage","personality","timing","relationships"],"description":"Manglik dosha effects on marriage, personality, and relationships"}},"required":["frame","present","description"]},"ManglikRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"KalsarpaResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"present":{"type":"boolean","description":"Whether Kalsarpa dosha (Kalsarpa yoga) is present, all planets hemmed between Rahu-Ketu axis","example":true},"severity":{"type":"string","enum":["Mild","Moderate","Severe"],"description":"Kalsarpa dosha intensity based on Rahu-Ketu house positions","example":"Moderate"},"type":{"type":"string","description":"One of 12 Kalsarpa types based on Rahu house position (Ananta, Kulik, Vasuki, Shankhapala, Padma, Mahapadma, Takshak, Karkotak, Shankhachud, Ghatak, Vishdhar, Sheshnag)","example":"Vasuki Kalsarpa"},"description":{"type":"string","description":"Human-readable Kalsarpa dosha analysis with Rahu-Ketu axis details","example":"Vasuki Kalsarpa Dosha present. All planets hemmed between Rahu (house 3) and Ketu."},"remedies":{"type":"array","items":{"type":"string"},"description":"Traditional Vedic remedies for Kalsarpa dosha including puja, mantras, and spiritual practices","example":["Perform Kaal Sarp Dosh Puja at Trimbakeshwar or Ujjain","Chant Mahamrityunjaya Mantra daily"]},"effects":{"type":"object","properties":{"duration":{"type":"string","description":"When Kalsarpa effects are most active in Vimshottari dasha","example":"Effects active during Rahu and Ketu Mahadasha/Antardasha periods"},"career":{"type":"string","description":"Impact on professional growth and career progress","example":"Obstacles in progress, sudden setbacks, delayed success"},"health":{"type":"string","description":"Physical and mental health implications","example":"Chronic health issues, accidents, mental stress"},"relationships":{"type":"string","description":"Impact on family bonds and personal relationships","example":"Family disputes, separation from loved ones"},"mindset":{"type":"string","description":"Psychological and emotional effects","example":"Anxiety, fear, nightmares, psychological struggles"},"positive":{"type":"string","description":"Potential spiritual and personal growth benefits","example":"Can bring spiritual inclination and inner strength when managed well"}},"required":["duration","career","health","relationships","mindset","positive"],"description":"Kalsarpa dosha effects on career, health, mindset, and relationships"}},"required":["frame","present","description"]},"KalsarpaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"SadhesatiResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"present":{"type":"boolean","description":"Whether Sade Sati is currently active, Saturn transiting 12th, 1st, or 2nd house from natal Moon","example":true},"severity":{"type":"string","enum":["Mild","Moderate","Severe"],"description":"Sadhesati intensity: Moderate for Rising/Setting phases, Severe for Peak phase (Saturn over natal Moon)","example":"Severe"},"type":{"type":"string","description":"Current Sadhesati phase: Rising (12th house), Peak (1st house), or Setting (2nd house)","example":"Peak phase (1st house)"},"description":{"type":"string","description":"Human-readable Sadhesati analysis with current Saturn transit phase relative to natal Moon","example":"Sadhesati active. Peak phase (1st house) - Saturn transiting relative to natal Moon."},"remedies":{"type":"array","items":{"type":"string"},"description":"Traditional Vedic remedies for Shani Sade Sati including Shani mantras, donations, and worship","example":["Chant Shani Mantra 108 times daily","Light mustard oil lamp under peepal tree on Saturdays"]},"effects":{"type":"object","properties":{"general":{"type":"string","description":"Overall impact of Saturn transit during Sade Sati period","example":"Overall period brings karmic lessons, maturity, and eventual growth through challenges"},"phases":{"type":"object","additionalProperties":{"type":"string","description":"What Shani delivers during this Sadhesati phase, keyed by the phase the transit is in. Only the phase the chart is currently in is present, so a client renders it without choosing between three.","example":"Health issues, relationship problems, career obstacles, maximum hardships"},"description":"Phase-specific effects for the current Sadhesati stage (Rising/Peak/Setting)","example":{"Peak phase (1st house)":"Health issues, relationship problems, career obstacles, maximum hardships"}}},"required":["general","phases"],"description":"Sadhesati effects by transit phase with general and phase-specific impacts"}},"required":["frame","present","description"]},"SadhesatiRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"YogaDetail":{"type":"object","properties":{"id":{"type":"string","example":"gajakesari","description":"Glossary id (lowercase, kebab-case) matching an entry in the 301-entry planetary-yoga catalog. Use with GET /yoga/{id} to retrieve the full glossary text."},"name":{"type":"string","example":"Gajakesari Yoga","description":"Classical Sanskrit name of the yoga as referenced in BPHS (Brihat Parashara Hora Shastra), Phaladeepika, and B.V. Raman *Three Hundred Important Combinations*."},"description":{"type":"string","example":"Jupiter in kendra from Moon","description":"Brief classical formation rule. Identifies the planetary placement, lordship, dignity, aspect pattern, sign modality, or whole-chart bhava distribution required for the yoga to form."},"result":{"type":"string","example":"Gajakesari Yoga is one of the most powerful yogas...","description":"Classical phala (life-effect) description of the yoga when present, sourced from the parashari and phaladeepika tradition."},"quality":{"type":"string","enum":["Positive","Negative","Both"],"example":"Positive","description":"Overall nature. Auspicious yogas (Pancha Mahapurusha, Gajakesari) bestow benefits; inauspicious yogas (Kemadruma) indicate challenges; Both denotes context-dependent effects."},"family":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Nabhasa family this yoga belongs to, present only on the 32 Nabhasa distribution yogas: asraya (3, sign modality), dala (2, benefic or malefic kendra tenancy), akriti (20, bhava shape) and sankhya (7, count of occupied rasis). Absent on every other glossary row, which is most of the catalog, since those are single-combination yogas outside the Nabhasa scheme. Group or filter the catalog on this key; it is never translated."}},"required":["id","name","description","result","quality"]},"YogaDetectResponse":{"type":"object","properties":{"yogas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"gajakesari","description":"Glossary id (lowercase, kebab-case) matching an entry in the 301-entry planetary-yoga catalog. Use with GET /yoga/{id} to retrieve the full glossary text."},"name":{"type":"string","example":"Gajakesari Yoga","description":"Classical Sanskrit name of the yoga as referenced in BPHS (Brihat Parashara Hora Shastra), Phaladeepika, and B.V. Raman *Three Hundred Important Combinations*."},"description":{"type":"string","example":"Jupiter in kendra from Moon","description":"Brief classical formation rule. Identifies the planetary placement, lordship, dignity, aspect pattern, sign modality, or whole-chart bhava distribution required for the yoga to form."},"result":{"type":"string","example":"Gajakesari Yoga is one of the most powerful yogas...","description":"Classical phala (life-effect) description of the yoga when present, sourced from the parashari and phaladeepika tradition."},"quality":{"type":"string","enum":["Positive","Negative","Both"],"example":"Positive","description":"Overall nature. Auspicious yogas (Pancha Mahapurusha, Gajakesari) bestow benefits; inauspicious yogas (Kemadruma) indicate challenges; Both denotes context-dependent effects."},"family":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Classical grouping, ALWAYS present on a detection verdict: one of the four Nabhasa families (asraya, dala, akriti, sankhya) or classical for the twelve single-combination yogas such as Gajakesari and the Pancha Mahapurusha. Group the verdict list on this key to render a Nabhasa result the way the tradition arranges it. Never translated, so grouping works identically under any lang."},"present":{"type":"boolean","example":true,"description":"True if every classical condition for the yoga is satisfied by the given chart. False means one of TWO different things: the rule failed, or the rule held and a stronger family outranked it. Read `suppressedBy` to tell those apart, which is exact and locale-independent; `evidence` says the same thing in English prose."},"suppressedBy":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Set ONLY when this yoga matched its own classical rule and was then silenced by a higher-ranking family, so `present` is false for a reason a practitioner reads very differently from a failed rule. Names the family that took precedence, under the four classical norms: Akriti outranks Asraya, and Akriti, Asraya and Dala each outrank Sankhya. Absent means the rule genuinely did not hold."},"evidence":{"type":"string","example":"Jupiter in kendra from Moon, not retrograde, no malefic drishti. Strengtheners: Moon out of 6/8/12 (house 4); Moon 5 houses from Sun; Moon not in Scorpio.","description":"Human-readable rationale naming the specific rule that triggered or failed the detection, including planetary positions, dignity, kendradhipati status, lordship, malefic drishti, sign modality, or whole-chart bhava distribution. For a Nabhasa yoga that matched its own rule but was outranked, this names the precedence norm that silenced it, for example that an Akriti yoga outranks Asraya or that any other Nabhasa family suppresses Sankhya. English in every language, like the per-graha stateSource on POST /daily, because it is provenance to be checked against a text rather than display copy."}},"required":["id","name","description","result","quality","family","present"]},"description":"Array of 48 detected yogas, always the full set so a caller can render absent verdicts too. Every entry carries a `present` boolean and a `quality` (Positive, Negative, or Both = auspicious, inauspicious, or context-dependent); filter on present === true for active yogas. Evidence text names the rule that triggered or failed, or the precedence norm that outranked it."},"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"total":{"type":"number","example":4,"description":"Count of yogas where present === true in this chart. Range 0-48, though real charts sit in the low single digits: the Nabhasa families are mutually constrained by the precedence norms, and most shape yogas are rare."},"birthDetails":{"type":"object","properties":{"date":{"type":"string","example":"1990-07-04","description":"Birth date the kundli was cast for, YYYY-MM-DD, echoed back from the request."},"time":{"type":"string","example":"10:12:00","description":"Birth time the kundli was cast for, 24-hour HH:MM:SS, echoed back from the request. Lagna moves roughly one rashi every two hours, so this is what pins the bhava-dependent yogas."},"latitude":{"type":"number","example":28.6139,"description":"Birth latitude in decimal degrees, echoed back from the request. Feeds the local sidereal time behind the Lagna."},"longitude":{"type":"number","example":77.209,"description":"Birth longitude in decimal degrees, echoed back from the request. East is positive, west is negative."},"timezone":{"type":"number","example":5.5,"description":"Numeric UTC offset in decimal hours that the chart engine actually consumed. An IANA name sent on the request is resolved to its DST-correct offset upstream, so this is always a number."}},"required":["date","time","latitude","longitude","timezone"],"description":"Echo of the resolved birth data used for detection. Timezone is the numeric offset that the chart engine consumed (IANA names are resolved upstream)."}},"required":["yogas","frame","total","birthDetails"]},"YogaDetectRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"KPAyanamsaResponse":{"type":"object","properties":{"date":{"type":"string","example":"2025-12-26","description":"Date for which ayanamsa was calculated"},"instant":{"type":"string","example":"2025-12-26T03:30:00.000Z","description":"The exact UTC instant the value was computed for, after applying the time and timezone. Echoed so a client reconciling to the arcsecond can confirm the moment rather than infer it from the date alone. Equals midnight UTC of the date when no time was supplied."},"ayanamsa":{"type":"number","example":24.22233926,"description":"KP-Newcomb ayanamsa value in degrees"},"type":{"type":"string","example":"kp-newcomb","description":"Ayanamsa type identifier"},"formula":{"type":"string","example":"Newcomb precession theory","description":"Mathematical basis for ayanamsa calculation"},"calculated":{"type":"string","example":"2025-12-26T10:30:00Z","description":"UTC timestamp when calculation was performed"}},"required":["date","instant","ayanamsa","type","formula","calculated"]},"KPPlanetsResponse":{"type":"object","properties":{"ayanamsa":{"type":"number","example":24.22233926,"description":"Applied ayanamsa value in degrees"},"planets":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Vedic graha name (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu)."},"longitude":{"type":"number","example":108.23,"description":"KP sidereal longitude in degrees (0-360). Used to determine Placidus house placement and KP subdivision (sign, star, sub)."},"sign":{"type":"string","example":"Cancer","description":"Zodiac sign (rashi) this planet occupies in the sidereal zodiac."},"signLord":{"type":"string","example":"Moon","description":"Rashi lord (sign ruler). First level of the KP significator hierarchy. Its house ownership determines L4 significations."},"nakshatra":{"type":"string","example":"Pushya","description":"Nakshatra (lunar mansion) this planet occupies. One of 27 nakshatras, each spanning 13 degrees 20 minutes."},"nakshatraNumber":{"type":"number","example":8,"description":"Nakshatra sequence number (1-27). Ashwini=1 through Revati=27."},"nakshatraLord":{"type":"string","example":"Saturn","description":"Nakshatra lord (star ruler) from the Vimshottari dasha sequence. Determines the nature of results this planet delivers in KP."},"pada":{"type":"number","example":2,"description":"Nakshatra pada/quarter (1-4)"},"starLord":{"type":"string","example":"Saturn","description":"Star-lord (same as nakshatra lord in KP system)"},"subLord":{"type":"string","example":"Mercury","description":"Sub-lord based on 249-level KP subdivision"},"subSubLord":{"type":"string","example":"Venus","description":"Sub-sub lord (SSL) based on 2241-level KP subdivision. Third level of Vimshottari dasha proportions."},"kpNumber":{"type":"number","example":45,"description":"KP horary number (1-249)"},"retrograde":{"type":"boolean","example":false,"description":"Whether planet is in retrograde motion"}},"required":["planet","longitude","sign","signLord","nakshatra","nakshatraNumber","nakshatraLord","pada","starLord","subLord","subSubLord","kpNumber","retrograde"]}}},"required":["ayanamsa","planets"]},"KPPlanetsRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format"},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format"},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees"},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in hours. Defaults to 5.5 (IST) for Vedic astrology.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula (most common for KP). \"kp-old\" uses the Krishnamurti original table. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa, about 1.45 degrees below Lahiri. \"custom\" allows providing your own value via ayanamsaValue. Defaults to \"kp-newcomb\"."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]},"KPCuspsResponse":{"type":"object","properties":{"ayanamsa":{"type":"number","example":24,"description":"Applied ayanamsa value in degrees"},"houseSystem":{"type":"string","example":"placidus","description":"House system used for calculations"},"cusps":{"type":"array","items":{"type":"object","properties":{"house":{"type":"number","example":1,"description":"House number (1-12)"},"longitude":{"type":"number","example":89.45,"description":"Cusp longitude in degrees (0-360)"},"sign":{"type":"string","example":"Cancer","description":"Zodiac sign of the cusp"},"signLord":{"type":"string","example":"Moon","description":"Rashi lord (sign ruler) of this cusp. In KP, the cusp sign lord is a significator for this house."},"nakshatra":{"type":"string","example":"Ashlesha","description":"Nakshatra (lunar mansion) at this cusp degree. The cusp nakshatra lord and sublord together determine the houses complete significator chain."},"nakshatraLord":{"type":"string","example":"Mercury","description":"Nakshatra lord (star ruler) of the cusp. One of 9 Vimshottari dasha lords. Determines which planet activates this cusp in KP predictions."},"pada":{"type":"number","example":3,"description":"Nakshatra pada/quarter (1-4)"},"starLord":{"type":"string","example":"Mercury","description":"Star-lord (nakshatra lord)"},"subLord":{"type":"string","example":"Venus","description":"Sub-lord based on KP 249-level subdivision"},"subSubLord":{"type":"string","example":"Mars","description":"Sub-sub lord (SSL) based on 2241-level KP subdivision. Third level of Vimshottari dasha proportions."},"kpNumber":{"type":"number","example":32,"description":"KP horary number (1-249)"}},"required":["house","longitude","sign","signLord","nakshatra","nakshatraLord","pada","starLord","subLord","subSubLord","kpNumber"]}},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["ayanamsa","houseSystem","cusps","houseThemes","focus"]},"KPCuspsRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format"},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format"},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees"},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in hours. Defaults to 5.5 (IST) for Vedic astrology.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula (most common for KP). \"kp-old\" uses the Krishnamurti original table. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa, about 1.45 degrees below Lahiri. \"custom\" allows providing your own value via ayanamsaValue. Defaults to \"kp-newcomb\"."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"KPChartResponse":{"type":"object","properties":{"meta":{"type":"object","properties":{"date":{"type":"string","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format used for this KP chart calculation."},"time":{"type":"string","example":"10:12:00","description":"Birth time in HH:MM:SS format used for Lagna and Placidus cusp calculations."},"latitude":{"type":"number","example":28.6139,"description":"Birth location latitude in decimal degrees. Determines Placidus house cusps and Ascendant."},"longitude":{"type":"number","example":77.209,"description":"Birth location longitude in decimal degrees. Affects local sidereal time for house calculations."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset from UTC in decimal hours used for time conversion."},"ayanamsa":{"type":"number","example":23.63165599,"description":"KP Newcomb ayanamsa value in degrees. Precession correction applied to convert tropical to sidereal positions."},"ayanamsaType":{"type":"string","example":"kp-newcomb","description":"Ayanamsa system used, echoing the ayanamsa field of the request: \"kp-newcomb\", \"kp-old\", \"lahiri\", \"raman\" or \"custom\"."},"houseSystem":{"type":"string","example":"placidus","description":"House system used (Placidus, standard for KP astrology)."}},"required":["date","time","latitude","longitude","timezone","ayanamsa","ayanamsaType","houseSystem"],"description":"Chart metadata including birth data, ayanamsa, and house system."},"ascendant":{"type":"object","properties":{"longitude":{"type":"number","example":138.4755,"description":"Sidereal longitude of Ascendant (Lagna) in degrees."},"sign":{"type":"string","example":"Leo","description":"Zodiac sign of the Ascendant."},"signLord":{"type":"string","example":"Sun","description":"Ruling planet of the Ascendant sign (the rashi lord). In KP this is the weakest of the four lords, ranked below the star lord and sub lord, but it still sets the broad temperament of the Lagna."},"nakshatra":{"type":"string","example":"Purva Phalguni","description":"Nakshatra (star) of the Ascendant."},"nakshatraLord":{"type":"string","example":"Venus","description":"Lord of the Ascendant nakshatra."},"pada":{"type":"number","example":2,"description":"Nakshatra pada (1-4) of the Ascendant."},"starLord":{"type":"string","example":"Venus","description":"KP star lord of the Ascendant position."},"subLord":{"type":"string","example":"Rahu","description":"KP sub lord of the Ascendant. crucial for KP predictions. The Ascendant sub lord determines overall life promise."},"subSubLord":{"type":"string","example":"Jupiter","description":"KP sub-sub lord (SSL) of the Ascendant. Third level of the Vimshottari subdivision hierarchy, used for fine-tuning predictions."},"kpNumber":{"type":"number","example":95,"description":"KP number (1-249) for the Ascendant degree."}},"required":["longitude","sign","signLord","nakshatra","nakshatraLord","pada","starLord","subLord","subSubLord","kpNumber"],"description":"Ascendant (Lagna) details with full KP stellar hierarchy."},"cusps":{"type":"array","items":{"type":"object","properties":{"house":{"type":"number","example":7,"description":"House number (1-12)."},"longitude":{"type":"number","example":318.4755,"description":"Placidus cusp longitude in sidereal degrees."},"sign":{"type":"string","example":"Aquarius","description":"Zodiac sign at the cusp."},"signLord":{"type":"string","example":"Saturn","description":"Lord of the zodiac sign at the cusp (house owner)."},"nakshatra":{"type":"string","example":"Shatabhisha","description":"Nakshatra at the cusp degree."},"nakshatraLord":{"type":"string","example":"Rahu","description":"Lord of the nakshatra at the cusp."},"pada":{"type":"number","example":4,"description":"Nakshatra pada (1-4) at the cusp."},"starLord":{"type":"string","example":"Rahu","description":"KP star lord of the cusp."},"subLord":{"type":"string","example":"Moon","description":"KP sub lord of the cusp. the deciding factor for house-level predictions in KP astrology."},"subSubLord":{"type":"string","example":"Jupiter","description":"KP sub-sub lord (SSL) of the cusp. Third level of Vimshottari subdivision for fine-grained cusp analysis."},"kpNumber":{"type":"number","example":215,"description":"KP number (1-249) for the cusp degree."}},"required":["house","longitude","sign","signLord","nakshatra","nakshatraLord","pada","starLord","subLord","subSubLord","kpNumber"]},"description":"All 12 Placidus house cusps with KP stellar hierarchy. Cusp sub lords are the primary predictive tool in KP astrology."},"planets":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Venus","description":"Planet name (Sun through Saturn, 7 visible planets)."},"longitude":{"type":"number","example":47.2732,"description":"Sidereal longitude in degrees (KP ayanamsa corrected)."},"sign":{"type":"string","example":"Taurus","description":"Zodiac sign the planet occupies."},"house":{"type":"number","example":9,"description":"House number (1-12) based on Placidus cusps."},"nakshatra":{"type":"string","example":"Rohini","description":"Nakshatra the planet occupies."},"nakshatraLord":{"type":"string","example":"Moon","description":"Nakshatra lord (same as star lord)."},"pada":{"type":"number","example":3,"description":"Nakshatra pada (1-4)."},"starLord":{"type":"string","example":"Moon","description":"KP star lord, determines primary house signification."},"subLord":{"type":"string","example":"Saturn","description":"KP sub lord, the decisive factor. Planet gives results of the houses signified by its sub lord."},"subSubLord":{"type":"string","example":"Rahu","description":"KP sub-sub lord (SSL) of the planet. Third level of Vimshottari subdivision for precise timing analysis."},"kpNumber":{"type":"number","example":32,"description":"KP number (1-249)."},"retrograde":{"type":"boolean","example":false,"description":"True if planet is retrograde. Retrograde planets may delay or deny results in KP system."}},"required":["planet","longitude","sign","house","nakshatra","nakshatraLord","pada","starLord","subLord","subSubLord","kpNumber","retrograde"]},"description":"Positions of all 7 visible planets with complete KP stellar breakdown."},"nodes":{"type":"object","properties":{"rahu":{"type":"object","properties":{"longitude":{"type":"number","example":285.0726,"description":"Sidereal longitude of Rahu (North Node)."},"sign":{"type":"string","example":"Capricorn","description":"Zodiac sign Rahu occupies."},"house":{"type":"number","example":5,"description":"Occupied house number (1-12) based on Placidus cusps."},"nakshatra":{"type":"string","example":"Shravana","description":"Nakshatra of Rahu."},"starLord":{"type":"string","example":"Moon","description":"KP star lord of Rahu."},"subLord":{"type":"string","example":"Jupiter","description":"KP sub lord of Rahu."},"subSubLord":{"type":"string","example":"Sun","description":"KP sub-sub lord (SSL) of Rahu."},"kpNumber":{"type":"number","example":193,"description":"KP number (1-249) locating Rahu in the 249-division sub-lord scheme. Each of the 249 divisions maps to a unique sign, star lord and sub lord triple, so one integer pins the position precisely enough for KP event timing."}},"required":["longitude","sign","house","nakshatra","starLord","subLord","subSubLord","kpNumber"],"description":"Rahu (North Lunar Node), shadow planet, always retrograde, acts as agent of its sign lord and star lord."},"ketu":{"type":"object","properties":{"longitude":{"type":"number","example":105.0726,"description":"Sidereal longitude of Ketu (South Node). Always 180 degrees from Rahu."},"sign":{"type":"string","example":"Cancer","description":"Zodiac sign Ketu occupies."},"house":{"type":"number","example":11,"description":"Occupied house number (1-12) based on Placidus cusps."},"nakshatra":{"type":"string","example":"Pushya","description":"Nakshatra of Ketu."},"starLord":{"type":"string","example":"Saturn","description":"KP star lord of Ketu."},"subLord":{"type":"string","example":"Jupiter","description":"KP sub lord of Ketu."},"subSubLord":{"type":"string","example":"Jupiter","description":"KP sub-sub lord (SSL) of Ketu."},"kpNumber":{"type":"number","example":72,"description":"KP number (1-249) locating Ketu in the 249-division sub-lord scheme. Each of the 249 divisions maps to a unique sign, star lord and sub lord triple, so one integer pins the position precisely enough for KP event timing."}},"required":["longitude","sign","house","nakshatra","starLord","subLord","subSubLord","kpNumber"],"description":"Ketu (South Lunar Node), shadow planet, spiritual karmic indicator."}},"required":["rahu","ketu"],"description":"Lunar nodes (Rahu and Ketu) with KP stellar hierarchy. Nodes are powerful agents that amplify the significations of their dispositors."},"significators":{"type":"object","properties":{"houseWise":{"type":"array","items":{"type":"object","properties":{"house":{"type":"number","example":7,"description":"House number 1-12"},"significators":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number","example":1,"description":"KP significator strength level (1-4). L1: planets in star of occupant (strongest). L2: occupant itself. L3: planets in star of owner. L4: sign owner. Lower number = stronger signification for this house."},"description":{"type":"string","example":"Planets in star of occupant","description":"Human-readable label for this KP significator level."},"planets":{"type":"array","items":{"type":"string"},"example":["Venus","Mars"],"description":"Planets signifying this house at this strength level."}},"required":["level","description","planets"]}},"all":{"type":"array","items":{"type":"string"},"example":["Venus","Mars","Jupiter"],"description":"The four levels flattened, strongest first, repeats included: a planet that reaches the house at two levels appears once per level, so the length counts level hits. The levels beside it are the per-level view."}},"required":["house","significators","all"]}},"planetWise":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Venus","description":"Vedic graha (planet) being analyzed for its house significations."},"signifies":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number","example":1,"description":"KP significator strength level (1-4). L1 strongest, L4 weakest."},"houses":{"type":"array","items":{"type":"number"},"example":[7,2],"description":"House numbers this planet signifies at this strength level."}},"required":["level","houses"]}},"allHouses":{"type":"array","items":{"type":"number"},"example":[7,2,11],"description":"The four levels flattened, strongest first, repeats included: a house appears once per level the planet reaches it at, so the length counts level hits. The levels beside it are the per-level view."}},"required":["planet","signifies","allHouses"]}}},"required":["houseWise","planetWise"],"description":"KP significators for event prediction and timing. Shows which planets signify each house (house-wise) and which houses each planet signifies (planet-wise). Strength order: Level 1 (planets in star of occupant) > Level 2 (occupants) > Level 3 (planets in star of owner) > Level 4 (house owner)."},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["meta","ascendant","cusps","planets","nodes","significators","houseThemes","focus"]},"KPChartRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format"},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. CRITICAL for accurate Lagna and house calculations."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees"},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in hours. Defaults to 5.5 (IST) for Vedic astrology.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula (most common for KP). \"kp-old\" uses the Krishnamurti original table. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa, about 1.45 degrees below Lahiri. \"custom\" allows providing your own value via ayanamsaValue. Defaults to \"kp-newcomb\"."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]},"KPRulingPlanetsResponse":{"type":"object","properties":{"datetime":{"type":"string","example":"2025-01-15T10:30:00.000Z","description":"Calculation datetime (ISO 8601)"},"location":{"type":"object","properties":{"latitude":{"type":"number","example":28.6139,"description":"Observer latitude in decimal degrees, echoed back from the request. Sets the local sidereal time behind the KP ascendant and therefore the Lagna sublord."},"longitude":{"type":"number","example":77.209,"description":"Observer longitude in decimal degrees, echoed back from the request. East is positive, west is negative."},"timezone":{"type":"number","example":5.5,"description":"Numeric UTC offset in decimal hours the calculation consumed. An IANA name sent on the request is resolved to its DST-correct offset upstream, so this is always a number."}},"required":["latitude","longitude","timezone"],"description":"Observer location coordinates"},"dayLord":{"type":"string","example":"Mercury","description":"Lord of the weekday (Sun=Sunday through Saturn=Saturday)"},"moonSignLord":{"type":"string","example":"Jupiter","description":"Lord of the zodiac sign where Moon is placed"},"moonStarLord":{"type":"string","example":"Saturn","description":"Lord of the nakshatra where Moon is placed"},"moonSublord":{"type":"string","example":"Mercury","description":"Sub-lord of the KP division where Moon is placed"},"moonSubSublord":{"type":"string","example":"Venus","description":"Sub-sub lord (SSL) of the KP division where Moon is placed"},"lagnaSignLord":{"type":"string","example":"Venus","description":"Lord of the rising zodiac sign (Ascendant)"},"lagnaStarLord":{"type":"string","example":"Mercury","description":"Lord of the nakshatra where Ascendant falls"},"lagnaSublord":{"type":"string","example":"Jupiter","description":"Sub-lord of the KP division where Ascendant falls"},"lagnaSubSublord":{"type":"string","example":"Saturn","description":"Sub-sub lord (SSL) of the KP division where Ascendant falls"},"rulingPlanets":{"type":"array","items":{"type":"string"},"example":["Mercury","Saturn","Jupiter","Venus"],"description":"Unique ruling planets in order of strength. Strongest planet appears first."},"significators":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Mercury","description":"Planet abbreviation."},"signifies":{"type":"array","items":{"type":"number"},"example":[1,3,8,9],"description":"Houses this planet signifies, ordered by KP 4-level strength: L1 (planet in star of occupant, strongest), L2 (planet occupies), L3 (planet in star of owner), L4 (planet owns). First element is the strongest signification, not the occupied house."}},"required":["planet","signifies"]},"example":[{"planet":"Mercury","signifies":[1,3,8,9]},{"planet":"Saturn","signifies":[1,4,5,10]}],"description":"Houses signified by each ruling planet (only when birthDate and birthTime provided). Based on 4-level KP significator hierarchy from birth chart."},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["datetime","location","dayLord","moonSignLord","moonStarLord","moonSublord","moonSubSublord","lagnaSignLord","lagnaStarLord","lagnaSublord","lagnaSubSublord","rulingPlanets"]},"KPRulingPlanetsIntervalResponse":{"type":"object","properties":{"startDatetime":{"type":"string","example":"2026-02-03T00:00:00Z","description":"Start of the KP ruling planets interval range (ISO 8601)."},"endDatetime":{"type":"string","example":"2026-02-03T01:00:00Z","description":"End of the KP ruling planets interval range (ISO 8601)."},"intervalMinutes":{"type":"number","example":5,"description":"Time gap between consecutive ruling planet calculations in minutes."},"location":{"type":"object","properties":{"latitude":{"type":"number","example":17.385044,"description":"Observer latitude used for Placidus house and Lagna (Ascendant) calculation."},"longitude":{"type":"number","example":78.486671,"description":"Observer longitude used for local sidereal time and Ascendant degree."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset applied to output times and sunrise-based Day Lord calculation."}},"required":["latitude","longitude","timezone"],"description":"Observer location coordinates used for erecting the Placidus prashna chart at each interval."},"totalIntervals":{"type":"number","example":13,"description":"Total number of intervals returned"},"intervals":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2026-02-03","description":"UTC date for this interval (YYYY-MM-DD)."},"time":{"type":"string","example":"00:00","description":"UTC time for this interval (HH:MM, 24-hour)."},"datetime":{"type":"string","example":"2026-02-03T00:00:00.000Z","description":"Full ISO 8601 timestamp for this interval."},"dayLord":{"type":"string","example":"Moon","description":"Ruling planet of the weekday based on Hindu sunrise Vara. Changes at local sunrise, not midnight."},"moonSignLord":{"type":"string","example":"Sun","description":"Lord of the zodiac sign (rashi) where Moon is placed at this moment."},"moonStarLord":{"type":"string","example":"Ketu","description":"Lord of the nakshatra (star, 1 of 27) where Moon is placed. Follows Vimshottari dasha sequence."},"moonSublord":{"type":"string","example":"Moon","description":"KP sublord of Moons exact position within the nakshatra subdivision (1 of 249)."},"moonSubSublord":{"type":"string","example":"Venus","description":"KP sub-sublord (SSL) of Moons position. Finest subdivision for precise timing."},"lagnaSignLord":{"type":"string","example":"Jupiter","description":"Lord of the Ascendant (Lagna) zodiac sign. Changes roughly every 2 hours as houses rotate."},"lagnaStarLord":{"type":"string","example":"Sun","description":"Lord of the nakshatra where the Ascendant degree falls."},"lagnaSublord":{"type":"string","example":"Venus","description":"KP sublord of the Ascendant degree. Changes every few minutes. key for birth time rectification."},"lagnaSubSublord":{"type":"string","example":"Rahu","description":"KP sub-sublord of the Ascendant. Most granular level for pinpointing exact moments."},"rulingPlanets":{"type":"array","items":{"type":"string"},"example":["Sun","Jupiter","Ketu","Moon"],"description":"Unique set of ruling planets derived from Day Lord, Moon Sign/Star Lords, and Lagna Sign/Star Lords. In KP astrology, events manifest when dasha/transit planets match these ruling planets."},"significators":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Jupiter","description":"Ruling planet name."},"signifies":{"type":"array","items":{"type":"number"},"example":[3,1],"description":"Unique house numbers this planet signifies, ordered by strength. Uses 4-level KP hierarchy: Level 1 (strongest) planets in star of occupant, Level 2 occupants, Level 3 planets in star of owner, Level 4 owner."}},"required":["planet","signifies"]},"description":"KP significators for each ruling planet calculated from this moments Placidus chart. Shows which houses (1-12) each ruling planet signifies right now. Significators change as the Ascendant rotates through signs."},"moonSignLordSignifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown for the Moon Sign Lord planet. Shows which houses the Moon rashi lord activates at this moment, broken down by strength tier."},"moonStarLordSignifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown for the Moon Star Lord (nakshatra lord) planet. The star lord determines the nature of results Moon delivers."},"moonSublordSignifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown for the Moon Sub Lord planet. The sub lord determines whether Moon-related events will manifest."},"moonSignifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown for Moon itself. Shows which bhavas Moon directly activates based on its position and star lord in the current moment chart."}},"required":["date","time","datetime","dayLord","moonSignLord","moonStarLord","moonSublord","moonSubSublord","lagnaSignLord","lagnaStarLord","lagnaSublord","lagnaSubSublord","rulingPlanets","significators","moonSignLordSignifies","moonStarLordSignifies","moonSublordSignifies","moonSignifies"]},"description":"Ruling planets with significators at each interval"},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["startDatetime","endDatetime","intervalMinutes","location","totalIntervals","intervals","houseThemes","focus"]},"KPSublordChangesResponse":{"type":"object","properties":{"planet":{"type":"string","example":"Moon","description":"Vedic graha tracked for KP sublord transitions across the 249-division zodiac."},"startDate":{"type":"string","example":"2025-01-01","description":"Beginning of the sublord change search range (YYYY-MM-DD)."},"endDate":{"type":"string","example":"2025-01-31","description":"End of the sublord change search range (YYYY-MM-DD)."},"totalChanges":{"type":"number","example":42,"description":"Total Krishnamurti sublord transitions detected. The Moon, the fastest body, crosses about 9 sublords a day."},"changes":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2025-01-15","description":"Date of the sublord boundary crossing (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"13:53","description":"Sublord transition time (HH:MM, 24-hour): the instant is found to the second and shown to the minute it falls in. Adjusted to requested timezone."},"datetime":{"type":"string","example":"2025-01-15T13:53:00","description":"Full datetime of the KP sublord change. Adjusted to requested timezone for prashna kundali timing."},"fromKp":{"type":"number","example":45,"description":"Previous KP number (1-249) in the Vimshottari-based zodiac subdivision the planet occupied."},"toKp":{"type":"number","example":46,"description":"New KP number (1-249) the planet enters. Each number maps to a unique star lord and sublord combination."},"fromSublord":{"type":"string","example":"Mercury","description":"KP sublord planet before transition. The sublord determines whether an event signified by the star lord will manifest."},"toSublord":{"type":"string","example":"Ketu","description":"New KP sublord planet after transition. A change in sublord shifts the houses signified by the tracked planet."},"fromNakshatraLord":{"type":"string","example":"Mars","description":"Nakshatra lord (star lord) before transition. Follows the Vimshottari dasha sequence of 9 planets."},"toNakshatraLord":{"type":"string","example":"Mars","description":"Nakshatra lord after transition. Changes only when the planet crosses a nakshatra boundary (every 13d20m)."}},"required":["date","time","datetime","fromKp","toKp","fromSublord","toSublord","fromNakshatraLord","toNakshatraLord"]},"description":"Chronological list of KP sublord boundary crossings. Each entry marks when the tracked graha moves from one Krishnamurti subdivision to the next in the 249-part zodiac."}},"required":["planet","startDate","endDate","totalChanges","changes"]},"KPSublordChangesRequest":{"type":"object","properties":{"planet":{"type":"string","enum":["Sun","Moon","Mars","Mercury","Jupiter","Venus","Saturn"],"example":"Moon","description":"Planet to track (case-insensitive). Valid values: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn"},"startDate":{"type":"string","format":"date","example":"2025-01-01","description":"First day of the search (YYYY-MM-DD), a calendar day in `timezone`."},"endDate":{"type":"string","format":"date","example":"2025-01-31","description":"Last day of the search, inclusive (YYYY-MM-DD), a calendar day in `timezone`. Not before startDate, at most 365 days after it."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\"), a fixed offset like \"+05:30\", OR decimal hours from UTC. One offset is taken from startDate (DST-correct for that date) and used for the whole range, so a window crossing a daylight-saving change is read on the earlier offset throughout; send a fixed offset if you need that explicit. The two dates are read as calendar days in this timezone and output times are converted to it, so one date with 5.5 is that whole Indian day. Defaults to 0 (UTC).","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, the most common choice for KP astrology. \"kp-old\" uses the Krishnamurti original table from KP Reader-1 with constant precession rate. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa, matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa from Hindu Predictive Astrology, a recognised traditional school that sits about 1.45 degrees below Lahiri. Defaults to \"kp-newcomb\"."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["planet","startDate","endDate"]},"KPRasiChangesResponse":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Vedic graha being tracked for rasi parivartan (sign ingress) events."},"startDate":{"type":"string","example":"2025-01-01","description":"Beginning of the rasi change search range (YYYY-MM-DD)."},"endDate":{"type":"string","example":"2025-12-31","description":"End of the rasi change search range (YYYY-MM-DD)."},"totalChanges":{"type":"number","example":12,"description":"Total rasi parivartan events detected in the date range. Moon averages 12-13 per month, Sun once per month."},"changes":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2025-01-14","description":"Date of the rasi ingress event (YYYY-MM-DD). Adjusted to requested timezone for local panchang use."},"time":{"type":"string","example":"08:00","description":"Ingress time (HH:MM, 24-hour): the instant is found to the second and shown to the minute it falls in. Adjusted to requested timezone."},"datetime":{"type":"string","example":"2025-01-14T08:00:00","description":"Full rasi parivartan datetime. Adjusted to requested timezone for transit calendar integration."},"fromSign":{"type":"string","example":"Sagittarius","description":"Zodiac sign (rashi) the planet is leaving. One of 12 sidereal signs using KP ayanamsa."},"fromSignLord":{"type":"string","example":"Jupiter","description":"Rashi lord (planetary ruler) of the departing sign. Determines the Vimshottari dasha connection."},"toSign":{"type":"string","example":"Capricorn","description":"New zodiac sign entered by the planet. Marks the beginning of a new transit phase in Vedic gochar analysis."},"toSignLord":{"type":"string","example":"Saturn","description":"Rashi lord of the newly entered sign. Key for KP significator analysis and dasha-transit matching."}},"required":["date","time","datetime","fromSign","fromSignLord","toSign","toSignLord"]},"description":"Chronological list of rasi parivartan (zodiac sign change) events with precise ingress timestamps. Each entry marks when the tracked graha crosses a 30-degree sign boundary."}},"required":["planet","startDate","endDate","totalChanges","changes"]},"KPRasiChangesRequest":{"type":"object","properties":{"planet":{"type":"string","enum":["Sun","Moon","Mars","Mercury","Jupiter","Venus","Saturn"],"example":"Sun","description":"Planet to track (case-insensitive). Valid values: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn"},"startDate":{"type":"string","format":"date","example":"2025-01-01","description":"First day of the search (YYYY-MM-DD), a calendar day in `timezone`."},"endDate":{"type":"string","format":"date","example":"2025-12-31","description":"Last day of the search, inclusive (YYYY-MM-DD), a calendar day in `timezone`. Not before startDate, at most 365 days after it."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\"), a fixed offset like \"+05:30\", OR decimal hours from UTC. One offset is taken from startDate (DST-correct for that date) and used for the whole range, so a window crossing a daylight-saving change is read on the earlier offset throughout; send a fixed offset if you need that explicit. The two dates are read as calendar days in this timezone and output times are converted to it, so one date with 5.5 is that whole Indian day. Defaults to 0 (UTC).","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, the most common choice for KP astrology. \"kp-old\" uses the Krishnamurti original table from KP Reader-1 with constant precession rate. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa, matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa from Hindu Predictive Astrology, a recognised traditional school that sits about 1.45 degrees below Lahiri. Defaults to \"kp-newcomb\"."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["planet","startDate","endDate"]},"KPPlanetsIntervalResponse":{"type":"object","properties":{"startDatetime":{"type":"string","example":"2025-01-15T00:00:00Z","description":"Start of the KP ephemeris interval range (ISO 8601)."},"endDatetime":{"type":"string","example":"2025-01-15T23:59:00Z","description":"End of the KP ephemeris interval range (ISO 8601)."},"intervalMinutes":{"type":"number","example":60,"description":"Time gap between consecutive planetary snapshots in minutes. Determines the granularity of the KP transit table."},"totalIntervals":{"type":"number","example":24,"description":"Total number of time points calculated (inclusive of both start and end)."},"ayanamsa":{"type":"string","example":"kp-newcomb","description":"Ayanamsa system used for this calculation. \"kp-newcomb\" = KP-Newcomb (dynamic), \"kp-old\" = Krishnamurti original (constant rate), \"lahiri\" = Lahiri/Chitrapaksha."},"ayanamsaValue":{"type":"number","example":24.2223,"description":"Ayanamsa value in degrees used for sidereal conversion. Verify this against your reference source to confirm correct ayanamsa is applied."},"intervals":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2025-01-15","description":"Date for this data point (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"00:00","description":"Time for this data point (HH:MM). Adjusted to requested timezone."},"datetime":{"type":"string","example":"2025-01-15T00:00:00","description":"Full datetime for this data point. Adjusted to requested timezone."},"planets":{"type":"object","additionalProperties":{"type":"object","properties":{"longitude":{"type":"number","example":270.5432,"description":"Sidereal longitude in degrees (0-360) using KP ayanamsa. The primary coordinate for all KP sublord lookups."},"degreeInSign":{"type":"number","example":0.5432,"description":"Degree within the current rashi (0-30). Useful for gauging how far into a sign the planet has progressed."},"sign":{"type":"string","example":"Capricorn","description":"Sidereal zodiac sign (rashi) the planet occupies at this interval."},"signLord":{"type":"string","example":"Saturn","description":"Rashi lord (sign ruler). First level of the KP significator hierarchy. Its house ownership determines L4 significations for this planet."},"nakshatra":{"type":"string","example":"Shravana","description":"Nakshatra (lunar mansion) the planet occupies. One of 27 Vedic nakshatras spanning 13 degrees 20 minutes each."},"nakshatraLord":{"type":"string","example":"Moon","description":"Star lord (nakshatra ruler) from Vimshottari dasha sequence. Determines the nature of results this planet delivers. Its occupied and owned houses become L1 and L3 significations."},"sublord":{"type":"string","example":"Venus","description":"KP sublord within the 249-part zodiac division. The deciding factor in KP predictions. An event manifests only if the sublord signifies the relevant house."},"subSublord":{"type":"string","example":"Jupiter","description":"KP sub-sublord (SSL). Third level of Vimshottari subdivision (2,241 divisions). Refines timing within the sublord period for precise event prediction."},"kpNumber":{"type":"number","example":154,"description":"KP number (1-249) identifying the exact Vimshottari subdivision. Each number maps to a unique star lord and sublord combination."},"isRetrograde":{"type":"boolean","example":false,"description":"True if the planet is in retrograde (vakri) motion. Rahu and Ketu are always retrograde. Retrograde planets deliver results differently in KP analysis."}},"required":["longitude","degreeInSign","sign","signLord","nakshatra","nakshatraLord","sublord","subSublord","kpNumber","isRetrograde"],"example":{"longitude":270.7362,"degreeInSign":0.7362,"sign":"Capricorn","signLord":"Saturn","nakshatra":"Uttara Ashadha","nakshatraLord":"Sun","sublord":"Rahu","subSublord":"Venus","kpNumber":188,"isRetrograde":false},"description":"The full KP hierarchy for one planet at this timestamp: sidereal longitude and rashi, sign lord, star lord, sublord and sub-sublord, and the 1 to 249 KP number that names the subdivision."},"example":{"Sun":{"longitude":270.7362,"degreeInSign":0.7362,"sign":"Capricorn","signLord":"Saturn","nakshatra":"Uttara Ashadha","nakshatraLord":"Sun","sublord":"Rahu","subSublord":"Venus","kpNumber":188,"isRetrograde":false}},"description":"Planet positions keyed by planet name (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu)"}},"required":["date","time","datetime","planets"]},"description":"Array of planetary snapshots at each time interval"}},"required":["startDatetime","endDatetime","intervalMinutes","totalIntervals","ayanamsa","ayanamsaValue","intervals"]},"KPPlanetsIntervalRequest":{"type":"object","properties":{"startDatetime":{"type":"string","format":"date-time","example":"2025-01-15T00:00:00Z","description":"Start datetime in ISO 8601 (YYYY-MM-DDTHH:MM:SS). Interpreted as local time when a non-zero timezone is provided (a trailing Z is accepted but ignored); with timezone 0 it is UTC."},"endDatetime":{"type":"string","format":"date-time","example":"2025-01-15T23:59:00Z","description":"End datetime in ISO 8601 (YYYY-MM-DDTHH:MM:SS). Maximum 7 days from start. Interpreted as local time when a non-zero timezone is provided (a trailing Z is accepted but ignored); with timezone 0 it is UTC."},"intervalMinutes":{"type":"number","minimum":15,"maximum":1440,"example":60,"description":"Time between calculations in minutes. Range: 15 (quarter-hourly) to 1440 (daily)."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Observer latitude in decimal degrees (for future Lagna calculations)"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Observer longitude in decimal degrees (for future Lagna calculations)"},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC. IANA resolved to the DST-correct offset for the startDatetime date. When non-zero, all datetimes are treated as local time in this timezone (Z suffix is ignored). Defaults to 0 (UTC).","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, the most common choice for KP astrology. \"kp-old\" uses the Krishnamurti original table from KP Reader-1 with constant precession rate. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa, matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa from Hindu Predictive Astrology, a recognised traditional school that sits about 1.45 degrees below Lahiri. Defaults to \"kp-newcomb\"."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["startDatetime","endDatetime","intervalMinutes","latitude","longitude"]},"KPHoraryResponse":{"type":"object","properties":{"horaryNumber":{"type":"integer","example":108,"description":"The number that was asked for, echoed so a stored chart is self describing."},"questionTime":{"type":"string","example":"2026-03-08T09:00:00.000Z","description":"UTC instant the chart was cast for, resolved from the date, time and timezone."},"ayanamsaType":{"type":"string","example":"kp-newcomb","description":"Sidereal frame used, echoed back."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees subtracted from every tropical longitude to produce this chart. Compare it against your reference software before treating a placement difference as a disagreement."},"ascendant":{"type":"object","properties":{"longitude":{"type":"number","example":154,"description":"Sidereal longitude of the horary Ascendant, taken as the MIDPOINT of the sub division the number names."},"degreeInSign":{"type":"number","example":4,"description":"Degrees into the sign, 0 to 30, which is what a chart displays."},"sign":{"type":"string","example":"Virgo","description":"Zodiac sign (rashi) of this point."},"star":{"type":"string","example":"Uttara Phalguni","description":"Nakshatra (star) this point falls in."},"starLord":{"type":"string","example":"Sun","description":"Nakshatra lord (star lord), the second level of the KP hierarchy."},"subLord":{"type":"string","example":"Saturn","description":"Sub lord, the decisive level in KP. A cusp sub lord is what answers the question: it is read for whether the matter is promised, before any timing is attempted."},"kpNumber":{"type":"integer","example":108,"description":"KP horary number 1 to 249 of the sub division holding this point. Matches the standard published KP table."},"spanFrom":{"type":"number","example":153,"description":"Sidereal longitude where this numbered sub division begins."},"spanTo":{"type":"number","example":155.1111,"description":"Sidereal longitude where it ends. The Ascendant sits midway between this and spanFrom."}},"required":["longitude","degreeInSign","sign","star","starLord","subLord","kpNumber","spanFrom","spanTo"],"description":"The Ascendant the horary number produced. This is the ONLY part of the chart that comes from the number; everything else comes from the sky at the moment of the question."},"cusps":{"type":"array","items":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":6,"description":"House (bhava) number 1 to 12."},"longitude":{"type":"number","example":210.44,"description":"Sidereal longitude of the cusp."},"sign":{"type":"string","example":"Virgo","description":"Zodiac sign (rashi) of this point."},"star":{"type":"string","example":"Uttara Phalguni","description":"Nakshatra (star) this point falls in."},"starLord":{"type":"string","example":"Sun","description":"Nakshatra lord (star lord), the second level of the KP hierarchy."},"subLord":{"type":"string","example":"Saturn","description":"Sub lord, the decisive level in KP. A cusp sub lord is what answers the question: it is read for whether the matter is promised, before any timing is attempted."},"kpNumber":{"type":"integer","example":108,"description":"KP horary number 1 to 249 of the sub division holding this point. Matches the standard published KP table."}},"required":["house","longitude","sign","star","starLord","subLord","kpNumber"],"description":"One Placidus cusp with its KP lords. The sub lord of the cusp relevant to the question is the value a KP practitioner reads first."},"description":"Twelve Placidus cusps, house 1 first. House 1 is the horary Ascendant; the other eleven follow from the house frame that Ascendant implies at this latitude."},"planets":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Jupiter","description":"Graha name."},"longitude":{"type":"number","example":95.31,"description":"Sidereal longitude at the moment of the question."},"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"Placidus house the graha occupies in this horary chart, counted against the cusps above rather than by whole sign."},"isRetrograde":{"type":"boolean","example":false,"description":"Retrograde motion flag."},"subSubLord":{"type":"string","example":"Venus","description":"Sub-sub lord, the fourth KP level, used to refine timing."},"sign":{"type":"string","example":"Virgo","description":"Zodiac sign (rashi) of this point."},"star":{"type":"string","example":"Uttara Phalguni","description":"Nakshatra (star) this point falls in."},"starLord":{"type":"string","example":"Sun","description":"Nakshatra lord (star lord), the second level of the KP hierarchy."},"subLord":{"type":"string","example":"Saturn","description":"Sub lord, the decisive level in KP. A cusp sub lord is what answers the question: it is read for whether the matter is promised, before any timing is attempted."},"kpNumber":{"type":"integer","example":108,"description":"KP horary number 1 to 249 of the sub division holding this point. Matches the standard published KP table."}},"required":["planet","longitude","house","isRetrograde","subSubLord","sign","star","starLord","subLord","kpNumber"],"description":"One graha at the moment of the question, with its full KP hierarchy."},"description":"The nine grahas at the moment of the question, placed against the horary cusps. These come from the real sky, not from the number."},"rulingPlanets":{"type":"object","properties":{"dayLord":{"type":"string","example":"Sun","description":"Lord of the Hindu weekday, counted from sunrise."},"moonSignLord":{"type":"string","example":"Venus","description":"Sign lord of the Moon."},"moonStarLord":{"type":"string","example":"Rahu","description":"Star lord of the Moon."},"moonSublord":{"type":"string","example":"Jupiter","description":"Sub lord of the Moon."},"moonSubSublord":{"type":"string","example":"Saturn","description":"Sub-sub lord of the Moon."},"lagnaSignLord":{"type":"string","example":"Mercury","description":"Sign lord of the ascendant at the question moment."},"lagnaStarLord":{"type":"string","example":"Sun","description":"Star lord of that ascendant."},"lagnaSublord":{"type":"string","example":"Venus","description":"Sub lord of that ascendant."},"lagnaSubSublord":{"type":"string","example":"Mars","description":"Sub-sub lord of that ascendant."},"rulingPlanets":{"type":"array","items":{"type":"string"},"example":["Sun","Venus","Rahu","Mercury"],"description":"The distinct ruling planets in KP order of strength. They validate the chart: when they repeat the significators of the houses the question needs, the judgment is considered reliable."}},"required":["dayLord","moonSignLord","moonStarLord","moonSublord","moonSubSublord","lagnaSignLord","lagnaStarLord","lagnaSublord","lagnaSubSublord","rulingPlanets"],"description":"Ruling planets at the moment of the question. NOTE the lagna values here are from the TIME-based ascendant, which is the classical ruling-planet definition, not from the horary number."},"significators":{"type":"object","properties":{"houseWise":{"type":"array","items":{"type":"object","properties":{"house":{"type":"number","example":7,"description":"House number 1-12"},"significators":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number","example":1,"description":"KP significator strength level (1-4). L1: planets in star of occupant (strongest). L2: occupant itself. L3: planets in star of owner. L4: sign owner. Lower number = stronger signification for this house."},"description":{"type":"string","example":"Planets in star of occupant","description":"Human-readable label for this KP significator level."},"planets":{"type":"array","items":{"type":"string"},"example":["Venus","Mars"],"description":"Planets signifying this house at this strength level."}},"required":["level","description","planets"]}},"all":{"type":"array","items":{"type":"string"},"example":["Venus","Mars","Jupiter"],"description":"The four levels flattened, strongest first, repeats included: a planet that reaches the house at two levels appears once per level, so the length counts level hits. The levels beside it are the per-level view."}},"required":["house","significators","all"]}},"planetWise":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Venus","description":"Vedic graha (planet) being analyzed for its house significations."},"signifies":{"type":"array","items":{"type":"object","properties":{"level":{"type":"number","example":1,"description":"KP significator strength level (1-4). L1 strongest, L4 weakest."},"houses":{"type":"array","items":{"type":"number"},"example":[7,2],"description":"House numbers this planet signifies at this strength level."}},"required":["level","houses"]}},"allHouses":{"type":"array","items":{"type":"number"},"example":[7,2,11],"description":"The four levels flattened, strongest first, repeats included: a house appears once per level the planet reaches it at, so the length counts level hits. The levels beside it are the per-level view."}},"required":["planet","signifies","allHouses"]}}},"required":["houseWise","planetWise"],"description":"KP significators for event prediction and timing. Shows which planets signify each house (house-wise) and which houses each planet signifies (planet-wise). Strength order: Level 1 (planets in star of occupant) > Level 2 (occupants) > Level 3 (planets in star of owner) > Level 4 (house owner)."},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["horaryNumber","questionTime","ayanamsaType","ayanamsaDegrees","ascendant","cusps","planets","rulingPlanets","significators","houseThemes","focus"],"description":"A complete KP horary (Prashna) chart: the Ascendant from the number, the cusps and planets from the moment of the question, plus ruling planets and four-level significators."},"KPHoraryRequest":{"type":"object","properties":{"horaryNumber":{"type":"integer","minimum":1,"maximum":249,"example":108,"description":"Horary number from 1 to 249, given by the querent while focused on their question. It maps to one of the 249 KP sub divisions of the zodiac, and that division sets the Ascendant of the chart. The querent should give the first number that comes to mind and use it once for that question; the astrologer never chooses it. Numbers outside 1 to 249 are rejected rather than wrapped, because a wrapped number would silently answer a different question."},"date":{"type":"string","format":"date","example":"2026-03-08","description":"Date the question was taken up for judgment, YYYY-MM-DD. Not a birth date: a horary chart needs no birth details at all, which is the point of the method."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Time the question was taken up for judgment, 24-hour HH:MM:SS. In KP practice this is the moment the astrologer receives and understands the question, not the moment the querent first thought of it. It sets every planetary position and all twelve cusps except the Ascendant."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":19.076,"description":"Latitude where the question is judged, decimal degrees. The house cusps are Placidus and therefore latitude dependent, so this is the place of judgment, not the querent birthplace."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":72.8777,"description":"Longitude where the question is judged, decimal degrees."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"Asia/Kolkata\") OR decimal hours from UTC. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula (most common for KP). \"kp-old\" uses the Krishnamurti original table. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa, about 1.45 degrees below Lahiri. \"custom\" allows providing your own value via ayanamsaValue. Defaults to \"kp-newcomb\"."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["horaryNumber","date","time","latitude","longitude"]},"RashiListResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"mesha","description":"Unique slug identifier for the rashi. Used in URL paths and cross-references."},"name":{"type":"string","example":"Aries","description":"Western zodiac sign name corresponding to this Vedic rashi."},"vedicName":{"type":"string","example":"Mesha","description":"Sanskrit name of the rashi as used in Vedic astrology (Jyotish)."},"dateRange":{"type":"string","example":"Apr 14th - May 14th","description":"Approximate sidereal date range when the Sun transits this rashi."},"symbol":{"type":"string","example":"Ram","description":"Traditional symbol associated with this zodiac sign."},"energy":{"type":"string","example":"Dhatr Aditya","description":"Aditya (solar deity) governing this rashi in Vedic tradition."},"characteristics":{"type":"string","example":"Creative, idealistic in nature, headstrong, good leader","description":"Key personality traits and behavioral tendencies of natives born under this rashi."}},"required":["id","name","vedicName","dateRange","symbol","energy","characteristics"]}},"RashiResponse":{"type":"object","properties":{"id":{"type":"string","example":"mesha","description":"Unique slug identifier for the rashi. Used in URL paths and cross-references."},"name":{"type":"string","example":"Aries","description":"Western zodiac sign name corresponding to this Vedic rashi."},"vedicName":{"type":"string","example":"Mesha","description":"Sanskrit name of the rashi as used in Vedic astrology (Jyotish)."},"dateRange":{"type":"string","example":"Apr 14th - May 14th","description":"Approximate sidereal date range when the Sun transits this rashi."},"symbol":{"type":"string","example":"Ram","description":"Traditional symbol associated with this zodiac sign."},"energy":{"type":"string","example":"Dhatr Aditya","description":"Aditya (solar deity) governing this rashi in Vedic tradition."},"characteristics":{"type":"string","example":"Creative, idealistic in nature, headstrong, good leader","description":"Key personality traits and behavioral tendencies of natives born under this rashi."}},"required":["id","name","vedicName","dateRange","symbol","energy","characteristics"]},"NakshatraListResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"ashwini","description":"Unique slug identifier for the nakshatra. Used in URL paths and cross-references."},"name":{"type":"string","example":"Ashwini","description":"Nakshatra name as used in Vedic astrology. One of 27 lunar mansions spanning 13 degrees 20 minutes each."},"number":{"type":"number","example":1,"description":"Sequential number (1-27) of this nakshatra in the zodiac starting from 0 degrees Aries."},"range":{"type":"string","example":"0 to 13 degrees 20 minutes Aries","description":"Sidereal longitude range this nakshatra occupies within its zodiac sign."},"lord":{"type":"string","example":"Ketu","description":"Ruling planet (nakshatra lord) used in Vimshottari dasha calculations. Determines the planetary period sequence."},"deity":{"type":"string","example":"Ashwini Kumaras (celestial healers)","description":"Presiding deity of the nakshatra. Influences the spiritual qualities and mythology associated with natives."},"symbol":{"type":"string","example":"Horse's Head","description":"Traditional symbol representing this nakshatra. Reflects its core nature and energy."},"characteristics":{"type":"string","example":"Energetic, pioneering, natural problem-solvers.","description":"Personality traits, behavioral tendencies, and life themes for natives born under this nakshatra."},"remedies":{"type":"object","properties":{"mantras":{"type":"string","example":"Chanting mantras dedicated to the Ashwini Kumaras can boost healing and vitality.","description":"Recommended mantras for this nakshatra to enhance positive qualities."},"gemstones":{"type":"string","example":"Cat's eye or garnet to harness Ketu's energy.","description":"Recommended gemstones aligned with the ruling planet of this nakshatra."},"rituals":{"type":"string","example":"Early morning meditation and engaging in acts of charity.","description":"Spiritual practices and daily rituals beneficial for natives of this nakshatra."}},"required":["mantras","gemstones","rituals"],"description":"Traditional Vedic remedies including mantras, gemstones, and rituals for this nakshatra."}},"required":["id","name","number","range","lord","deity","symbol","characteristics","remedies"]}},"NakshatraResponse":{"type":"object","properties":{"id":{"type":"string","example":"ashwini","description":"Unique slug identifier for the nakshatra. Used in URL paths and cross-references."},"name":{"type":"string","example":"Ashwini","description":"Nakshatra name as used in Vedic astrology. One of 27 lunar mansions spanning 13 degrees 20 minutes each."},"number":{"type":"number","example":1,"description":"Sequential number (1-27) of this nakshatra in the zodiac starting from 0 degrees Aries."},"range":{"type":"string","example":"0 to 13 degrees 20 minutes Aries","description":"Sidereal longitude range this nakshatra occupies within its zodiac sign."},"lord":{"type":"string","example":"Ketu","description":"Ruling planet (nakshatra lord) used in Vimshottari dasha calculations. Determines the planetary period sequence."},"deity":{"type":"string","example":"Ashwini Kumaras (celestial healers)","description":"Presiding deity of the nakshatra. Influences the spiritual qualities and mythology associated with natives."},"symbol":{"type":"string","example":"Horse's Head","description":"Traditional symbol representing this nakshatra. Reflects its core nature and energy."},"characteristics":{"type":"string","example":"Energetic, pioneering, natural problem-solvers.","description":"Personality traits, behavioral tendencies, and life themes for natives born under this nakshatra."},"remedies":{"type":"object","properties":{"mantras":{"type":"string","example":"Chanting mantras dedicated to the Ashwini Kumaras can boost healing and vitality.","description":"Recommended mantras for this nakshatra to enhance positive qualities."},"gemstones":{"type":"string","example":"Cat's eye or garnet to harness Ketu's energy.","description":"Recommended gemstones aligned with the ruling planet of this nakshatra."},"rituals":{"type":"string","example":"Early morning meditation and engaging in acts of charity.","description":"Spiritual practices and daily rituals beneficial for natives of this nakshatra."}},"required":["mantras","gemstones","rituals"],"description":"Traditional Vedic remedies including mantras, gemstones, and rituals for this nakshatra."}},"required":["id","name","number","range","lord","deity","symbol","characteristics","remedies"]},"UpagrahaResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"timeBased":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Upagraha name. Time-based: Gulika, Mandi, Kala, Mrityu, Ardhaprahara, Yamaghantaka. Sun-based: Dhuma, Vyatipata, Parivesha, Indra Chapa, Upaketu.","example":"Gulika"},"longitude":{"type":"number","description":"Sidereal longitude in degrees (0 to 360). Used for house placement and aspect analysis.","example":168.13},"rashi":{"type":"string","description":"Zodiac sign (rashi) the upagraha occupies. One of 12 Vedic rashis from Aries to Pisces.","example":"Virgo"},"degreeInSign":{"type":"number","description":"Degree position within the occupied rashi (0 to 30).","example":18.13},"nakshatra":{"type":"string","description":"Nakshatra (lunar mansion) the upagraha occupies. One of 27 Vedic nakshatras.","example":"Chitra"},"nakshatraIndex":{"type":"number","description":"Nakshatra number (1 to 27). Ashwini = 1, Bharani = 2, through Revati = 27.","example":14},"nakshatraPada":{"type":"number","description":"Pada (quarter) within the nakshatra (1 to 4). Each pada spans 3 degrees 20 minutes.","example":3}},"required":["name","longitude","rashi","degreeInSign","nakshatra","nakshatraIndex","nakshatraPada"],"description":"Position details for a single upagraha (sub-planet)"},"description":"Time-based upagrahas derived from the 8-part division of day or night. Gulika and Mandi are from Saturn segment, others from Sun, Mars, Mercury, Jupiter segments. Positions depend on birth time, location, and weekday."},"sunBased":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Upagraha name. Time-based: Gulika, Mandi, Kala, Mrityu, Ardhaprahara, Yamaghantaka. Sun-based: Dhuma, Vyatipata, Parivesha, Indra Chapa, Upaketu.","example":"Gulika"},"longitude":{"type":"number","description":"Sidereal longitude in degrees (0 to 360). Used for house placement and aspect analysis.","example":168.13},"rashi":{"type":"string","description":"Zodiac sign (rashi) the upagraha occupies. One of 12 Vedic rashis from Aries to Pisces.","example":"Virgo"},"degreeInSign":{"type":"number","description":"Degree position within the occupied rashi (0 to 30).","example":18.13},"nakshatra":{"type":"string","description":"Nakshatra (lunar mansion) the upagraha occupies. One of 27 Vedic nakshatras.","example":"Chitra"},"nakshatraIndex":{"type":"number","description":"Nakshatra number (1 to 27). Ashwini = 1, Bharani = 2, through Revati = 27.","example":14},"nakshatraPada":{"type":"number","description":"Pada (quarter) within the nakshatra (1 to 4). Each pada spans 3 degrees 20 minutes.","example":3}},"required":["name","longitude","rashi","degreeInSign","nakshatra","nakshatraIndex","nakshatraPada"],"description":"Position details for a single upagraha (sub-planet)"},"description":"Sun-longitude-based upagrahas (Dhuma group). Pure arithmetic from the Sun sidereal position. Dhuma = Sun + 133d20m, then each derived from the previous."}},"required":["frame","timeBased","sunBased"],"description":"Complete upagraha positions for a birth chart"},"UpagrahaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"AshtakavargaResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"bhinnashtakavarga":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","description":"Planet or Lagna name. Seven classical planets (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn) plus Lagna (Ascendant). Rahu and Ketu are excluded from Ashtakavarga per BPHS.","example":"Sun"},"bindus":{"type":"array","items":{"type":"number"},"description":"Benefic points (bindus) for each of the 12 signs, ordered Aries through Pisces (index 0 = Aries, index 11 = Pisces). Each value ranges from 0 to 8, representing how many of the 8 contributors (7 planets + Lagna) provide a benefic point for this planet in that sign. Higher bindus indicate stronger planetary support.","example":[4,3,2,1,4,6,6,6,4,3,5,4]},"total":{"type":"number","description":"Sum of bindus across all 12 signs. This total is constant per planet regardless of birth chart: Sun = 48, Moon = 49, Mars = 39, Mercury = 54, Jupiter = 56, Venus = 52, Saturn = 39, Lagna = 49. Useful as a validation checksum.","example":48}},"required":["planet","bindus","total"],"description":"Bhinnashtakavarga for a single planet or Lagna"},"description":"Individual planetary strength grids (Bhinnashtakavarga). Eight entries: one for each of the 7 classical planets plus Lagna. Each entry shows how many of the 8 contributors (7 planets + Lagna) give benefic points to that planet in each of the 12 signs."},"sarvashtakavarga":{"type":"object","properties":{"bindus":{"type":"array","items":{"type":"number"},"description":"Combined benefic points per sign from all 7 planets (Lagna excluded from SAV), ordered Aries through Pisces. Higher values indicate stronger signs for transit predictions and house strength analysis. Average is approximately 28 per sign.","example":[28,31,25,30,27,33,29,26,32,24,27,25]},"total":{"type":"number","description":"Sum of all SAV bindus across 12 signs. Always equals 337 for every birth chart. This mathematical constant serves as a validation checksum for the calculation.","example":337}},"required":["bindus","total"],"description":"Sarvashtakavarga (SAV) combining all 7 planetary Bhinnashtakavarga scores per sign. Total is always 337."},"reducedBhinnashtakavarga":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","description":"Planet or Lagna name. Seven classical planets (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn) plus Lagna (Ascendant). Rahu and Ketu are excluded from Ashtakavarga per BPHS.","example":"Sun"},"bindus":{"type":"array","items":{"type":"number"},"description":"Benefic points (bindus) for each of the 12 signs, ordered Aries through Pisces (index 0 = Aries, index 11 = Pisces). Each value ranges from 0 to 8, representing how many of the 8 contributors (7 planets + Lagna) provide a benefic point for this planet in that sign. Higher bindus indicate stronger planetary support.","example":[4,3,2,1,4,6,6,6,4,3,5,4]},"total":{"type":"number","description":"Sum of bindus across all 12 signs. This total is constant per planet regardless of birth chart: Sun = 48, Moon = 49, Mars = 39, Mercury = 54, Jupiter = 56, Venus = 52, Saturn = 39, Lagna = 49. Useful as a validation checksum.","example":48}},"required":["planet","bindus","total"],"description":"Bhinnashtakavarga for a single planet or Lagna"},"description":"Reduced Bhinnashtakavarga after two-step Shodhana (purification) per BPHS Ch. 67-68. Step 1: Trikona Shodhana subtracts minimum bindu among trine groups (1-5-9, 2-6-10, 3-7-11, 4-8-12). Step 2: Ekadipati Shodhana adjusts dual-lordship sign pairs (Mars: Aries/Scorpio, Venus: Taurus/Libra, Mercury: Gemini/Virgo, Jupiter: Sagittarius/Pisces, Saturn: Capricorn/Aquarius). Used as input for Shodhya Pinda planetary strength."},"reducedSarvashtakavarga":{"type":"object","properties":{"bindus":{"type":"array","items":{"type":"number"},"description":"Combined benefic points per sign from all 7 planets (Lagna excluded from SAV), ordered Aries through Pisces. Higher values indicate stronger signs for transit predictions and house strength analysis. Average is approximately 28 per sign.","example":[28,31,25,30,27,33,29,26,32,24,27,25]},"total":{"type":"number","description":"Sum of all SAV bindus across 12 signs. Always equals 337 for every birth chart. This mathematical constant serves as a validation checksum for the calculation.","example":337}},"required":["bindus","total"],"description":"Reduced Sarvashtakavarga. Sum of the 7 reduced planetary Bhinnashtakavarga values per sign (Lagna excluded). Indicates relative sign strength after Shodhana purification."},"shodhyaPinda":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","description":"Planet or Lagna name. Shodhya Pinda is calculated for all 7 classical planets plus Lagna.","example":"Sun"},"rashiPinda":{"type":"number","description":"Rashi Pinda component. Weighted sum of reduced Bhinnashtakavarga bindus per sign multiplied by Rashi Gunakar weights per BPHS Ch. 69. Higher values indicate stronger sign-based planetary strength.","example":123},"grahaPinda":{"type":"number","description":"Graha Pinda component. Weighted sum of reduced Bhinnashtakavarga bindus per sign multiplied by the Graha Gunakar of planets occupying each sign (Sun=5, Moon=5, Mars=8, Mercury=5, Jupiter=10, Venus=7, Saturn=5). Reflects planetary association strength.","example":79},"shodhyaPinda":{"type":"number","description":"Total Shodhya Pinda (Rashi Pinda + Graha Pinda). Primary planetary strength score derived from Ashtakavarga reduction. Used for comparing relative strength of planets in a birth chart and predicting dasha period results.","example":202}},"required":["planet","rashiPinda","grahaPinda","shodhyaPinda"],"description":"Shodhya Pinda strength values for a single planet, derived from Reduced Ashtakavarga per BPHS Ch. 69."},"description":"Shodhya Pinda planetary strength scores per BPHS Ch. 69. Derived from Reduced Ashtakavarga. Each entry contains Rashi Pinda (sign-weighted strength), Graha Pinda (planet-association-weighted strength), and total Shodhya Pinda. Used for comparing planetary strength, predicting dasha results, and transit analysis."},"signs":{"type":"array","items":{"type":"string","enum":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]},"description":"Sign names in order, for mapping bindus array indices to zodiac signs. Index 0 = Aries through index 11 = Pisces.","example":["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]}},"required":["frame","bhinnashtakavarga","sarvashtakavarga","reducedBhinnashtakavarga","reducedSarvashtakavarga","shodhyaPinda","signs"],"description":"Complete Ashtakavarga analysis for a birth chart"},"AshtakavargaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"ShadbalaResponse":{"type":"object","properties":{"balaThemes":{"type":"object","properties":{"sthanaBala":{"type":"object","properties":{"name":{"type":"string","example":"Positional strength","description":"Localized name of this Shadbala component, suitable for a table header or a bar label."},"meaning":{"type":"string","example":"Strength from the sign, divisional chart and house the graha occupies. Usually the largest of the six.","description":"One-line localized explanation of what this component measures."}},"required":["name","meaning"],"description":"Localized label and meaning for one Shadbala component."},"digBala":{"type":"object","properties":{"name":{"type":"string","example":"Positional strength","description":"Localized name of this Shadbala component, suitable for a table header or a bar label."},"meaning":{"type":"string","example":"Strength from the sign, divisional chart and house the graha occupies. Usually the largest of the six.","description":"One-line localized explanation of what this component measures."}},"required":["name","meaning"],"description":"Localized label and meaning for one Shadbala component."},"kalaBala":{"type":"object","properties":{"name":{"type":"string","example":"Positional strength","description":"Localized name of this Shadbala component, suitable for a table header or a bar label."},"meaning":{"type":"string","example":"Strength from the sign, divisional chart and house the graha occupies. Usually the largest of the six.","description":"One-line localized explanation of what this component measures."}},"required":["name","meaning"],"description":"Localized label and meaning for one Shadbala component."},"chestaBala":{"type":"object","properties":{"name":{"type":"string","example":"Positional strength","description":"Localized name of this Shadbala component, suitable for a table header or a bar label."},"meaning":{"type":"string","example":"Strength from the sign, divisional chart and house the graha occupies. Usually the largest of the six.","description":"One-line localized explanation of what this component measures."}},"required":["name","meaning"],"description":"Localized label and meaning for one Shadbala component."},"naisargikaBala":{"type":"object","properties":{"name":{"type":"string","example":"Positional strength","description":"Localized name of this Shadbala component, suitable for a table header or a bar label."},"meaning":{"type":"string","example":"Strength from the sign, divisional chart and house the graha occupies. Usually the largest of the six.","description":"One-line localized explanation of what this component measures."}},"required":["name","meaning"],"description":"Localized label and meaning for one Shadbala component."},"drikBala":{"type":"object","properties":{"name":{"type":"string","example":"Positional strength","description":"Localized name of this Shadbala component, suitable for a table header or a bar label."},"meaning":{"type":"string","example":"Strength from the sign, divisional chart and house the graha occupies. Usually the largest of the six.","description":"One-line localized explanation of what this component measures."}},"required":["name","meaning"],"description":"Localized label and meaning for one Shadbala component."}},"required":["sthanaBala","digBala","kalaBala","chestaBala","naisargikaBala","drikBala"],"description":"Localized name and one-line meaning for each of the six Shadbala components, keyed by the same field names each planet entry uses. Join it to render a readable strength breakdown in any of the eight supported languages instead of showing six untranslated Sanskrit terms."},"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"planets":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","description":"Planet name. One of the 7 classical Vedic planets (Saptgraha): Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn. Rahu and Ketu are excluded from Shadbala per BPHS.","example":"Sun"},"sthanaBala":{"type":"number","description":"Sthana Bala (Positional Strength) in virupas. Sum of 5 sub-components: Uchcha Bala (exaltation strength), Saptavargaja Bala (7-divisional friendship), Ojayugma Bala (odd/even sign placement), Kendradi Bala (angular house strength), and Drekkana Bala (decanate gender match). Higher values indicate stronger positional placement.","example":168.4},"digBala":{"type":"number","description":"Dig Bala (Directional Strength) in virupas. Based on angular distance from the planets directional strength house. Sun and Mars are strong at MC (10th), Moon and Venus at IC (4th), Mercury and Jupiter at ASC (1st), Saturn at DSC (7th). Range 0 to 60.","example":6.43},"kalaBala":{"type":"number","description":"Kala Bala (Temporal Strength) in virupas. Sum of 8 sub-components: Nathonnatha (day/night strength), Paksha (lunar phase), Tribhaga (third of day/night), Vara (weekday lord), Hora (planetary hour), Abda (year lord), Masa (month lord), and Ayana (declination-based seasonal strength).","example":116.58},"chestaBala":{"type":"number","description":"Chesta Bala (Motional Strength) in virupas. Based on planetary motion, so a retrograde graha scores higher because it is closer to Earth and working hardest. The Sun uses its Ayana Bala and the Moon its elongation from the Sun, per BPHS. Mars, Mercury, Jupiter, Venus and Saturn use the Sheeghra Kendra, the arc between the sheeghrochcha and the mean of the true and mean longitudes, with the roles of the mean Sun and the graha swapped for Mercury and Venus. Range 0 to 60.","example":26.06},"naisargikaBala":{"type":"number","description":"Naisargika Bala (Natural Strength) in virupas. Fixed luminosity-based values per BPHS: Sun 60.00, Moon 51.43, Venus 42.86, Jupiter 34.29, Mercury 25.71, Mars 17.14, Saturn 8.57. Invariant across all charts.","example":60},"drikBala":{"type":"number","description":"Drik Bala (Aspectual Strength) in virupas. Strength gained or lost from the aspects a graha receives. Benefic aspects add strength and malefic aspects reduce it, so this value is negative when malefics dominate. Mercury counts as benefic or malefic by the company it keeps in its own sign, decided by count with the nearest graha breaking a tie, and the Moon by its paksha. Uses the graded Sputa Drishti curve of BPHS Ch. 26 with the Vishesha (special) aspects of Mars, Jupiter and Saturn applied at their precise DEGREE ranges rather than by whole sign.","example":6.98},"totalVirupas":{"type":"number","description":"Total Shadbala in virupas (Shashtiamsas). Sum of all 6 strength components. Higher total indicates a stronger planet in the birth chart. Used for comparing relative planetary strength and evaluating dasha period potential.","example":384.45},"totalRupas":{"type":"number","description":"Total Shadbala in Rupas (totalVirupas / 60). 1 Rupa equals 60 virupas. Rupas are the standard unit for comparing planetary strength against minimum required thresholds.","example":6.41},"minRequired":{"type":"number","description":"Minimum required strength in Rupas per BPHS. Sun 5.0, Moon 6.0, Mars 5.0, Mercury 7.0, Jupiter 6.5, Venus 5.5, Saturn 5.0. A planet below its minimum is considered weak and may underperform in its dasha periods.","example":5},"strengthRatio":{"type":"number","description":"Ratio of actual Rupas to minimum required (totalRupas / minRequired). Values above 1.0 indicate sufficient strength. Higher ratios mean proportionally stronger planets. Used for ranking planets by relative strength.","example":1.2814},"ishtaPhala":{"type":"number","description":"Ishta Phala (auspicious strength) in virupas. Derived from Uchcha Bala and Chesta Bala: sqrt(ucchaBala * chestaBala). Indicates the planets capacity to produce favorable results during its dasha and transit periods.","example":34.11},"kashtaPhala":{"type":"number","description":"Kashta Phala (malefic strength) in virupas. Derived from complements of Uchcha and Chesta Bala: sqrt((60 - ucchaBala) * (60 - chestaBala)). Indicates the planets capacity to produce unfavorable results. Zero when both Uchcha and Chesta exceed 60.","example":22.83},"relativeRank":{"type":"number","description":"Relative strength rank among the 7 planets (1 = strongest, 7 = weakest). Ranked by strengthRatio (actual/required), not raw virupas, so each planet is compared fairly against its own BPHS threshold.","example":2}},"required":["planet","sthanaBala","digBala","kalaBala","chestaBala","naisargikaBala","drikBala","totalVirupas","totalRupas","minRequired","strengthRatio","ishtaPhala","kashtaPhala","relativeRank"],"description":"Shadbala (six-fold strength) analysis for a single planet with all components, totals, Ishta/Kashta Phala, and relative ranking."},"description":"Shadbala analysis for all 7 classical planets. Ordered: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn. Each entry contains all 6 strength components, total strength in virupas and Rupas, Ishta/Kashta Phala, minimum required threshold, strength ratio, and relative rank."}},"required":["balaThemes","frame","planets"],"description":"Complete Shadbala (six-fold planetary strength) analysis for a birth chart per Brihat Parashara Hora Shastra (BPHS)."},"ShadbalaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"ArudhaResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"lagnaRashi":{"type":"string","example":"Libra","description":"Zodiac sign of the Ascendant (Lagna), which anchors the twelve bhavas the padas are derived from."},"arudhaLagna":{"type":"string","example":"Leo","description":"Zodiac sign of the Arudha Lagna (AL), the pada of the first house and the single most used value in this response. Repeated at the top level so a client rendering only the AL does not have to search the array."},"upapada":{"type":"string","example":"Cancer","description":"Zodiac sign of the Upapada (UL), the pada of the twelfth house, read for marriage and its durability. The second most used value, so it is also lifted to the top level."},"padas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"a1","description":"Pada identifier, a1 through a12, matching the bhava it belongs to. a1 is the Arudha Lagna and a12 the Upapada."},"abbreviation":{"type":"string","example":"AL","description":"Practitioner shorthand written on a chart: AL for the Arudha Lagna, A2 through A11, and UL for the Upapada."},"name":{"type":"string","example":"Arudha Lagna","description":"Classical Sanskrit name of the pada, for example Arudha Lagna, Dhana Pada, Dara Pada, Upapada."},"house":{"type":"integer","minimum":1,"maximum":12,"example":1,"description":"Bhava (house) number 1-12 whose pada this is. The pada is the perceived, outward form of that bhava."},"bhavaRashi":{"type":"string","example":"Libra","description":"Zodiac sign (rashi) occupying that bhava, counted whole-sign from the Lagna. The count to the pada starts here."},"lord":{"type":"string","example":"Venus","description":"Lord of the bhava sign. The pada is found by counting to this graha and then the same distance again."},"lordRashi":{"type":"string","example":"Pisces","description":"Zodiac sign the bhava lord occupies, which sets the length of the count."},"rashi":{"type":"string","example":"Leo","description":"Zodiac sign the pada falls in, after the classical exception is applied. This is the answer most readings start from."},"houseFromLagna":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"Which house from the Lagna the pada sits in, counted inclusively 1-12. Reading a pada against the natal Lagna is how its strength is judged."},"exceptionApplied":{"type":"boolean","example":false,"description":"True when the raw pada landed in the same bhava or the seventh from it and was moved to the tenth from there, as the classical rule requires. Surfaced so a reader can see exactly why a pada sits where it does, which is the step implementations most often skip."},"meaning":{"type":"string","example":"Public image","description":"Short label for what this pada is read for, sized for a table cell."},"significations":{"type":"string","example":"How the world sees the native: status, reputation and the persona others react to, rather than the self behind it.","description":"What this pada governs. Padas describe how a matter is PERCEIVED, which is what separates them from the bhava significations of the same house."}},"required":["id","abbreviation","name","house","bhavaRashi","lord","lordRashi","rashi","houseFromLagna","exceptionApplied","meaning","significations"],"description":"One Arudha pada: the bhava it belongs to, the lord and count that produced it, the sign it lands in, and what it is read for."},"description":"All twelve Arudha padas in bhava order, a1 through a12. Each carries the lord and the count it came from, so the derivation can be checked by hand."}},"required":["frame","lagnaRashi","arudhaLagna","upapada","padas"],"description":"The twelve Arudha padas of a birth chart, computed per the Jaimini rule with the classical exception applied."},"ArudhaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"CharaKarakaResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"scheme":{"type":"string","enum":["seven","eight"],"example":"eight","description":"Scheme the ranking used, echoed back so a cached or logged response is self describing."},"atmakaraka":{"type":"string","example":"Moon","description":"Graha holding the Atmakaraka office, the most consequential single value in Jaimini analysis. Lifted to the top level so a client reading only the Atmakaraka does not have to search the array."},"darakaraka":{"type":"string","example":"Saturn","description":"Graha holding the Darakaraka office, read for the spouse. The second most requested value, so it is also lifted to the top level."},"karakas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"atmakaraka","description":"Karaka office identifier: atmakaraka, amatyakaraka, bhratrikaraka, matrikaraka, pitrikaraka, putrakaraka, gnatikaraka, darakaraka. Returned in descending rank, so the first entry is always the Atmakaraka."},"name":{"type":"string","example":"Atmakaraka","description":"Classical Sanskrit name of the karaka office."},"abbreviation":{"type":"string","example":"AK","description":"Practitioner shorthand: AK, AmK, BK, MK, PiK, PK, GK, DK, in descending rank order."},"graha":{"type":"string","example":"Moon","description":"Graha holding this office in this chart."},"rashi":{"type":"string","example":"Libra","description":"Zodiac sign (rashi) the graha occupies."},"degreeInRashi":{"type":"number","example":24.4808,"description":"Degree the graha has advanced into its sign, 0 to 30. This is the figure a chart displays."},"rankingDegree":{"type":"number","example":24.4808,"description":"The degree actually ranked. Identical to degreeInRashi for every graha except Rahu, where it is 30 minus that value because Rahu advances backward through the sign. Returned so the ordering can be checked without knowing the rule."},"isReversed":{"type":"boolean","example":false,"description":"True only for Rahu, flagging that its degree was measured from the end of the sign rather than the start."},"meaning":{"type":"string","example":"Soul and self","description":"Short label for what this karaka is read for, sized for a table cell."},"significations":{"type":"string","example":"The desire that brought the soul to this birth, and the single strongest influence in the chart, ruling the native above every other graha.","description":"What this karaka office governs in a reading."}},"required":["id","name","abbreviation","graha","rashi","degreeInRashi","rankingDegree","isReversed","meaning","significations"],"description":"One Chara Karaka: the office, the graha holding it, the degree that earned it, and what the office is read for."},"description":"Karaka offices in descending rank, Atmakaraka first. Eight entries in the eight-karaka scheme, seven in the seven-karaka scheme."}},"required":["frame","scheme","atmakaraka","darakaraka","karakas"],"description":"Chara Karakas for a birth chart: the movable significators of Jaimini astrology, ranked by how far each graha has advanced into its sign."},"CharaKarakaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"scheme":{"type":"string","enum":["seven","eight"],"default":"eight","example":"eight","description":"Which Chara Karaka scheme to rank. \"eight\" includes Rahu, counting its degree in reverse because it moves retrograde, and returns eight offices including Pitrikaraka. \"seven\" ranks only the seven classical grahas and drops Pitrikaraka. Ketu is excluded from both, since it always mirrors the Rahu degree exactly. The two schemes can produce a different Atmakaraka for the same chart, so select the one your reference software uses. Defaults to \"eight\"."}},"required":["date","time","latitude","longitude"]},"BhavaBalaResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"houseSystem":{"type":"string","description":"House frame the bhavas were built on. Always sripati: Bhava Bala is defined on unequal bhava madhyas, not on whole signs.","example":"sripati"},"bhavas":{"type":"array","items":{"type":"object","properties":{"house":{"type":"number","description":"Bhava (house) number 1 to 12, counted from the Lagna. House 1 is the Ascendant bhava, house 10 the career bhava, house 7 the partnership bhava.","example":1},"rashi":{"type":"string","description":"Zodiac sign holding this bhavas madhya (mid-cusp). Under the Sripati house system the bhavas are unequal, so this is NOT always the nth sign from the Lagna, and two bhavas can share a sign while another sign holds none.","example":"Libra"},"madhya":{"type":"number","description":"Bhava madhya (mid-cusp) longitude in degrees, sidereal Lahiri. The point every strength component below is measured at. Bhavas 1, 4, 7 and 10 sit on the Ascendant, IC, Descendant and Midheaven; the rest trisect the quadrants between them.","example":196.4541},"lord":{"type":"string","description":"Bhavadhipati (house lord), the ruler of the sign holding the madhya. Its Shadbala is what this bhava inherits, so a house ruled by a strong graha starts strong.","example":"Venus"},"bhavadhipatiBala":{"type":"number","description":"Bhavadhipati Bala in virupas: the total Shadbala of the house lord, carried across unchanged. The dominant term of the three, typically 250 to 650. Two bhavas ruled by the same graha therefore share this value exactly.","example":548.54},"digBala":{"type":"number","description":"Bhava Digbala (directional strength) in virupas, 0 to 60 in steps of 10. Each rashi class is strongest in one cardinal bhava (human signs at the Lagna, quadruped at the 10th, watery at the 4th, Scorpio at the 7th) and loses 10 virupas per bhava of separation, reaching 0 at the seventh from it.","example":60},"drishtiBala":{"type":"number","description":"Bhava Drishti Bala (aspectual strength) in virupas, computed on the bhava madhya exactly as Graha Drik Bala is computed on a graha. Benefic aspects add and malefic aspects subtract, so this term is often negative.","example":-7.7},"totalVirupas":{"type":"number","description":"Total Bhava Bala in virupas, the sum of the three components above. Use it to compare houses within one chart: the strongest bhavas are the life areas that unfold with least resistance.","example":600.84},"totalRupas":{"type":"number","description":"Total Bhava Bala in rupas (totalVirupas / 60). 1 rupa equals 60 virupas. Rupas are the conventional unit in classical tables.","example":10.01},"rank":{"type":"number","description":"Strength rank among the twelve bhavas, 1 = strongest. Ranked on totalVirupas, so it never disagrees with the published totals.","example":1}},"required":["house","rashi","madhya","lord","bhavadhipatiBala","digBala","drishtiBala","totalVirupas","totalRupas","rank"],"description":"Bhava Bala for a single house, with the three classical components, the madhya it was measured at, and its rank."},"description":"Bhava Bala for all twelve houses in order, house 1 first. Each entry carries its own components so a client can explain a score rather than just display it."},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["frame","houseSystem","bhavas","houseThemes","focus"],"description":"Complete Bhava Bala (house strength) analysis per Brihat Parashara Hora Shastra, with a localized house-meaning legend."},"BhavaBalaRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"BhavChalitResponse":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The sidereal frame this response was computed in, so a cached or forwarded payload is self describing."},"houseSystem":{"type":"string","description":"House frame used to build the bhavas. Always sripati for the Chalit chart.","example":"sripati"},"ascendant":{"type":"number","description":"Sidereal Lahiri Ascendant in degrees. The madhya of bhava 1.","example":196.4541},"midheaven":{"type":"number","description":"Sidereal Lahiri Midheaven in degrees. The madhya of bhava 10.","example":106.9045},"bhavas":{"type":"array","items":{"type":"object","properties":{"house":{"type":"number","description":"Bhava number 1 to 12.","example":1},"start":{"type":"number","description":"Bhava sandhi (junction) opening this bhava, in degrees. The midpoint between this madhya and the previous one. A graha exactly on a sandhi belongs to the bhava it opens.","example":181.4593},"madhya":{"type":"number","description":"Bhava madhya (mid-cusp) in degrees. Bhavas 1, 4, 7 and 10 sit exactly on the Ascendant, IC, Descendant and Midheaven; the other eight trisect the quadrant arcs between them.","example":196.4541},"end":{"type":"number","description":"Bhava sandhi closing this bhava. Identical to the next bhavas start, so the twelve bhavas tile the zodiac with no gap.","example":211.5292},"span":{"type":"number","description":"Width of the bhava in degrees. Rarely 30: the Ascendant and Midheaven are only 90 degrees apart by coincidence of latitude and epoch, so quadrants stretch and squeeze and the bhavas with them.","example":30.07},"rashi":{"type":"string","description":"Sign holding the madhya. Because bhavas are unequal, two bhavas can share a sign while another sign holds no madhya at all.","example":"Libra"},"grahas":{"type":"array","items":{"type":"string"},"description":"Grahas falling inside this bhava. Empty when the bhava is unoccupied.","example":["Moon"]}},"required":["house","start","madhya","end","span","rashi","grahas"],"description":"One Sripati bhava with its boundaries and occupants."},"description":"The twelve Sripati bhavas in order with their boundaries and occupants."},"grahas":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","description":"Graha name. All nine are placed, the seven classical grahas plus the lunar nodes Rahu and Ketu.","example":"Sun"},"longitude":{"type":"number","description":"Sidereal Lahiri longitude in degrees.","example":35.9692},"rashi":{"type":"string","description":"Zodiac sign the graha occupies. Identical to the Rashi (D1) chart.","example":"Taurus"},"bhava":{"type":"number","description":"Bhava the graha falls in under the unequal Sripati cusps. This is the Bhav Chalit placement and the reason the chart exists.","example":5},"rashiHouse":{"type":"number","description":"House the same graha occupies in the whole-sign Rashi chart, counted from the Lagna sign. Returned alongside bhava so the difference is visible without a second request.","example":6},"moved":{"type":"boolean","description":"True when bhava and rashiHouse disagree, i.e. the graha changes house between the Rashi chart and the Chalit chart. These are the placements a practitioner opens this chart to check.","example":true}},"required":["graha","longitude","rashi","bhava","rashiHouse","moved"],"description":"One graha placed in both frames, with a flag marking the placements that move."},"description":"All nine grahas with both their Chalit bhava and their whole-sign Rashi house, plus a moved flag."},"movedCount":{"type":"number","description":"How many of the nine grahas change house between the Rashi chart and the Chalit chart. Zero is a perfectly normal result and means the two charts agree for this nativity.","example":3},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["frame","houseSystem","ascendant","midheaven","bhavas","grahas","movedCount","houseThemes","focus"],"description":"Bhav Chalit (Chalit Kundli): every graha placed by unequal Sripati bhava, with the whole-sign placement beside it for comparison."},"BhavChalitRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Sidereal frame (ayanamsa) the chart is cast in. \"lahiri\" is Lahiri/Chitrapaksha, the traditional Vedic standard used by most software, and is the default. \"raman\" is the B.V. Raman ayanamsa from Hindu Predictive Astrology, about 1.45 degrees below Lahiri. \"kp-newcomb\" and \"kp-old\" are the two Krishnamurti Paddhati frames. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. The frame rotates the whole zodiac, so a graha sitting within 1.45 degrees of a boundary can change rashi or nakshatra when you switch: pick the one your reference software uses and keep it."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."}},"required":["date","time","latitude","longitude"]},"HeliacalResponse":{"type":"object","properties":{"date":{"type":"string","example":"2026-07-25","description":"Local calendar date the verdicts were read for, echoed from the request."},"grahas":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Jupiter","description":"Graha name. Only the six with a visible body appear: Moon, Mars, Mercury, Jupiter, Venus and Saturn. The Sun cannot be lost in his own glare, and Rahu and Ketu are computed points with nothing to see."},"visible":{"type":"boolean","example":false,"description":"Whether the graha clears the Sun glare on this day. False is the state a practitioner calls asta or combust, during which classical muhurta withholds auspicious ceremonies, most strictly marriage while Jupiter or Venus is invisible."},"horizon":{"type":"string","enum":["east","west"],"example":"west","description":"Horizon this graha is currently judged at. West means it sets after the Sun and is an evening object, east that it rises before him and is a morning one."},"timeDegrees":{"type":"number","example":3.01,"description":"Separation from the Sun in degrees of TIME (kalamsa), measured along the equator between the two bodies horizon crossings. This is the quantity Surya Siddhanta actually compares against the limit, and it is not the same as the difference of ecliptic longitudes: the two diverge by roughly 3 degrees at Mumbai and by more than 15 further north, because it accounts for the angle the ecliptic makes with the local horizon."},"kalamsa":{"type":"number","example":11,"description":"The limit in degrees of time this graha must clear to be seen, per Surya Siddhanta ch. IX vv.6-8 and ch. X.1: Moon 12, Jupiter 11, Saturn 15, Mars 17, Venus 10 or 8, Mercury 14 or 12. Larger means the graha is fainter and needs more distance from the Sun."},"retrograde":{"type":"boolean","example":false,"description":"Whether the graha is retrograde, which for Mercury and Venus tightens the limit (Venus 10 to 8, Mercury 14 to 12). Retrograde puts them near inferior conjunction where they are far closer to Earth, so the larger brighter disk survives closer to the Sun."},"longitudeSeparation":{"type":"number","example":2.89,"description":"Plain angular separation of the two ecliptic longitudes, in degrees. Returned beside timeDegrees so the two measures can be compared: this is what a combustion flag on a birth chart uses, and the gap between them is precisely what a location-aware heliacal calculation adds."},"lastEvent":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["udaya","asta"],"example":"udaya","description":"Udaya is heliacal rising, the graha re-emerging from the Sun rays and becoming visible again. Asta (also called lopa, moudhya or moudyami) is heliacal setting, the graha disappearing into them. Stable Sanskrit keys, never translated."},"horizon":{"type":"string","enum":["east","west"],"example":"east","description":"Horizon the event happens at. East means it is read before sunrise, so the graha is a morning object; west means after sunset, an evening object. A graha crosses to the other horizon as it passes the Sun, which is why an asta and the udaya that follows it are usually on opposite horizons."},"datetime":{"type":"string","example":"2026-08-12T05:35:22","description":"Local civil datetime of the event (YYYY-MM-DDTHH:MM:SS), being the moment the graha itself crosses the horizon on the day its verdict changes. That instant, rather than sunrise or sunset, is what published Asta tables print."},"timeDegrees":{"type":"number","example":11.09,"description":"Separation from the Sun in degrees of time on the event day, measured the way the classical rule requires. Sits just either side of kalamsa, since that crossing is what defines the event."},"kalamsa":{"type":"number","example":11,"description":"The limit that was crossed. Can differ from the current reading limit for Mercury and Venus, whose limit tightens when they are retrograde, so an asta entered while retrograde may be left at a different threshold."}},"required":["type","horizon","datetime","timeDegrees","kalamsa"],"description":"The event that produced the current state, or null when none falls inside the search horizon (up to about one synodic period, so Mars can legitimately have none)."},"nextEvent":{"type":["object","null"],"properties":{"type":{"type":"string","enum":["udaya","asta"],"example":"udaya","description":"Udaya is heliacal rising, the graha re-emerging from the Sun rays and becoming visible again. Asta (also called lopa, moudhya or moudyami) is heliacal setting, the graha disappearing into them. Stable Sanskrit keys, never translated."},"horizon":{"type":"string","enum":["east","west"],"example":"east","description":"Horizon the event happens at. East means it is read before sunrise, so the graha is a morning object; west means after sunset, an evening object. A graha crosses to the other horizon as it passes the Sun, which is why an asta and the udaya that follows it are usually on opposite horizons."},"datetime":{"type":"string","example":"2026-08-12T05:35:22","description":"Local civil datetime of the event (YYYY-MM-DDTHH:MM:SS), being the moment the graha itself crosses the horizon on the day its verdict changes. That instant, rather than sunrise or sunset, is what published Asta tables print."},"timeDegrees":{"type":"number","example":11.09,"description":"Separation from the Sun in degrees of time on the event day, measured the way the classical rule requires. Sits just either side of kalamsa, since that crossing is what defines the event."},"kalamsa":{"type":"number","example":11,"description":"The limit that was crossed. Can differ from the current reading limit for Mercury and Venus, whose limit tightens when they are retrograde, so an asta entered while retrograde may be left at a different threshold."}},"required":["type","horizon","datetime","timeDegrees","kalamsa"],"description":"The event that will end the current state, or null when none falls inside the search horizon. For an invisible graha this is the udaya a practitioner is waiting for, so it answers when Guru Asta or Shukra Asta lifts."}},"required":["graha","visible","horizon","timeDegrees","kalamsa","retrograde","longitudeSeparation","lastEvent","nextEvent"],"description":"Heliacal visibility of one graha on the requested day."},"description":"One entry per visible graha, in classical order. A graha is omitted only when no horizon crossing exists for it at this latitude on this day."}},"required":["date","grahas"],"description":"Heliacal rising and setting status of the six visible grahas."},"HeliacalRequest":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2026-07-25","description":"Local calendar date to judge, in YYYY-MM-DD format. There is deliberately no time field: heliacal visibility is a once-a-day verdict read at that day sunrise or sunset, so a clock time could only pick a different day."},"latitude":{"type":"number","minimum":-60,"maximum":60,"example":19.076,"description":"Observer latitude in decimal degrees, restricted to -60 to 60. Visibility depends on the observer, unlike the longitude orb every chart API reports, because the angle the ecliptic makes with the horizon decides how long a graha lingers after the Sun. Beyond this band the classical rule stops describing solar glare and starts describing polar horizon geometry, so it is declined rather than answered wrongly."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":72.8777,"description":"Observer longitude in decimal degrees. Sets local sunrise and sunset, which are the instants the verdict is read at. Example: Mumbai 72.8777, Delhi 77.2090, London -0.1278."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"Asia/Kolkata\", \"Europe/London\") OR decimal hours from UTC. Fixes which local day the date refers to, and every datetime in the response is returned in it. Defaults to 5.5.","example":5.5}},"required":["date","latitude","longitude"]}},"parameters":{}},"paths":{"/birth-chart":{"post":{"operationId":"generateBirthChart","tags":["Vedic Astrology"],"summary":"Get birth chart (D1 Rashi chart) - Kundli Calculator API","description":"Calculate complete Vedic birth chart (Janam Kundli, natal chart) with all 9 planetary positions (Sun through Ketu) plus Ascendant (Lagna). Kundli calculator API for astrology apps, matrimonial sites. Returns accurate graha positions grouped by zodiac signs (rashis) with nakshatra details and pada. Perfect for kundli generation, horoscope matching, and Vedic astrology software integration.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BirthChartRequest"}}}},"responses":{"200":{"description":"D1 Rashi birth chart with all 12 houses, 9 grahas plus Lagna, combustion analysis (Surya Siddhanta limits, applied as the standard ecliptic longitude orb), planetary war detection, bhava interpretations, and a meta lookup keyed by planet name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BirthChartResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/navamsa":{"post":{"operationId":"generateNavamsa","tags":["Vedic Astrology"],"summary":"Get Navamsa chart (D9) - Marriage Compatibility Calculator","description":"Calculate Navamsa (D9 divisional chart) for marriage compatibility analysis, spouse prediction, and spiritual life assessment. Navamsa calculator API reveals planetary strength in married life. Each planetary position is divided into 9 parts for accurate marriage astrology. Detects Vargottama planets (exalted status). Essential for matrimonial matching, relationship prediction, and marital harmony analysis in Vedic astrology.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NavamsaRequest"}}}},"responses":{"200":{"description":"D9 Navamsa chart with all 12 houses, 9 grahas plus Lagna, Vargottama planet detection, and Vargottama significance explanation. Same structure as birth chart response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NavamsaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/divisional-chart":{"post":{"operationId":"generateDivisionalChart","tags":["Vedic Astrology"],"summary":"Get divisional chart (Varga) - D2 to D60 Calculator","description":"Calculate any Vedic divisional chart (Varga) from D2 Hora to D60 Shashtiamsa. Divisional charts divide each zodiac sign into smaller segments to reveal detailed insights about specific life areas: wealth (D2), siblings (D3), property (D4), children (D7), marriage (D9), career (D10), parents (D12), vehicles (D16), spirituality (D20), education (D24), strength (D27), misfortunes (D30), merit (D40), character (D45), and past life karma (D60). Based on Brihat Parashara Hora Shastra (BPHS) Shodasha Varga system. Detects Vargottama planets (same sign in D1 and selected chart).","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DivisionalChartRequest"}}}},"responses":{"200":{"description":"Divisional chart calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DivisionalChartResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/compatibility":{"post":{"operationId":"calculateGunMilan","tags":["Vedic Astrology"],"summary":"Calculate compatibility score - Gun Milan API (Ashtakoot Matching)","description":"Calculate detailed Ashtakoot compatibility (Gun Milan) for kundli matching between two people. Returns accurate 36-point Guna Milan scale with breakdown across all 8 kootas (Varna, Vashya, Tara, Yoni, Graha Maitri, Gana, Bhakoot, Nadi), Nadi and Bhakoot dosha detection with classical cancellation analysis per Muhurta Martanda and BPHS rules, and marriage recommendation. Perfect for kundli matching for marriage, matrimonial platforms, horoscope compatibility, and Vedic matchmaking services.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompatibilityRequest"}}}},"responses":{"200":{"description":"Ashtakoot Gun Milan result with total score out of 36, percentage, compatibility verdict, detected doshas (Nadi/Bhakoot) with cancellation analysis, dosha cancellation reasons when applicable, recommendation, and detailed breakdown of all 8 kootas.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompatibilityResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/planetary-positions":{"post":{"operationId":"getPlanetPositions","tags":["Vedic Astrology"],"summary":"Get planetary positions - Graha Positions API","description":"Get simplified planetary positions (graha positions) for all 9 planets (Sun through Ketu) plus Ascendant (Lagna). Real-time planet transit calculator for Vedic astrology. Navagraha positions API with nakshatra, pada, and rashi details. Includes house number placement using Whole Sign house system from Lagna. Faster response for basic planetary data without full chart structure. Perfect for planetary alignment tracking, daily transit updates, and astrology widgets.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanetaryPositionsRequest"}}}},"responses":{"200":{"description":"Successful planetary positions calculation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanetaryPositionsResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/planetary-positions/monthly":{"post":{"operationId":"getMonthlyEphemeris","tags":["Vedic Astrology"],"summary":"Monthly Ephemeris - Daily sidereal planetary positions for a month","description":"Get daily sidereal ecliptic positions for all 9 Vedic planets (Navagraha) for an entire month. Returns longitude, zodiac sign, degree within sign, and retrograde status for each planet on each day. Calculated at noon UTC. Omit year and month to get the month in progress, so a published ephemeris page stays current without a redeploy. Essential for ephemeris generation, transit tracking, and planetary movement visualization. Monthly planetary ephemeris API, sidereal position table, daily graha gochara positions, ecliptic longitude calculator.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Year for monthly ephemeris (1900-2100). Defaults to the current year (UTC)."},"month":{"type":"integer","minimum":1,"maximum":12,"example":2,"description":"Month number (1-12) for ephemeris. Defaults to the current month (UTC)."},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}}}}}},"responses":{"200":{"description":"Monthly ephemeris data","content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"number","example":2026,"description":"Year of the ephemeris. Echoes the year that was requested, or the current UTC year when it was omitted."},"month":{"type":"number","example":2,"description":"Month of the ephemeris. Echoes the month that was requested, or the current UTC month when it was omitted."},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","example":"2026-02-01","description":"Date in YYYY-MM-DD format."},"positions":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Mars","description":"Planet name, one of the Navagraha (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu). Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Marte","description":"Planet name in the requested language, for display. Present only when lang is set to a language other than English, since in English it would repeat planet exactly. Rahu and Ketu are rendered as the lunar nodes they are, so Spanish returns Nodo Norte and Nodo Sur while Hindi returns their Sanskrit names."},"longitude":{"type":"number","example":285.6732,"description":"Sidereal ecliptic longitude in degrees (0-360) using Lahiri ayanamsa."},"sign":{"type":"string","example":"Capricorn","description":"Zodiac sign (rashi) the planet occupies on this date. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use signLocalized for anything a reader sees."},"signLocalized":{"type":"string","example":"Capricornio","description":"Zodiac sign name in the requested language, for display. Present only when lang is set to a language other than English, since in English it would repeat sign exactly."},"degreeInSign":{"type":"number","example":15.6732,"description":"Degrees traversed within the current sign (0-30). Useful for precise transit tracking."},"isRetrograde":{"type":"boolean","example":false,"description":"Whether the planet is in retrograde motion (vakri) on this date."}},"required":["planet","longitude","sign","degreeInSign","isRetrograde"]},"description":"Sidereal positions of all 9 Vedic planets on this date at noon UTC."}},"required":["date","positions"]},"description":"Daily planetary position entries for the entire month."}},"required":["year","month","days"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dasha/current":{"post":{"operationId":"getCurrentDasha","tags":["Vedic Astrology"],"summary":"Get current Mahadasha, Antardasha, Pratyantardasha, Sookshma, Prana - Dasha Calculator API","description":"Calculate all five running Vimshottari Dasha levels (Mahadasha, Antardasha, Pratyantardasha, Sookshma, Prana) with remaining time in each. Accurate dasha calculator API for life phase prediction and planetary period analysis. Returns the dasha timeline with start/end dates for every level, ready for a current DBA readout down to hour-level timing. Pass datetime to read the five lords at any moment instead of now, which is what a reading prepared for tomorrow or a backtest over a past day needs. Set significators true to add the KP star lord, sub lord, signified houses and strength grade of each running lord, plus the houses they have in common. Essential for understanding current planetary influences, dasha transitions, and timing events in Vedic astrology. 120-year dasha system based on moon nakshatra at birth, with selectable Lahiri or KP ayanamsa.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Ayanamsa system used to place the birth Moon in its nakshatra, which sets every dasha start and end date. \"lahiri\" uses Lahiri/Chitrapaksha, the traditional Vedic standard, and is the default. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, matching Krishnamurti Paddhati software. \"kp-old\" uses the Krishnamurti original table from KP Reader-1. \"raman\" uses the B.V. Raman ayanamsa, the second frame traditional Indian software commonly offers beside Lahiri. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. Switching frames shifts every dasha boundary by weeks, so pick the one your reference software uses."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"significators":{"type":"boolean","default":false,"example":false,"description":"Set true to attach the KP significators of each period lord: its star lord, sub lord, occupied house, the houses it signifies at levels L1 to L4, and a strength grade. Off by default, so responses stay exactly as they are for clients that only need dates. Requires the birth latitude and longitude, since significators are read off a Placidus house chart, and uses the same ayanamsa frame selected above."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu, used ONLY when \"significators\" is true. Dasha dates themselves come from the Moon and never move with this field. \"mean\" uses the smooth mean node (traditional default). \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean over a 173-day cycle and can therefore change which house or star a node falls in. Defaults to \"mean\"."},"datetime":{"type":"string","format":"date-time","example":"2026-08-23T13:47:46Z","description":"ISO 8601 datetime (YYYY-MM-DDTHH:MM:SS) to read the running periods at, for a reading prepared for a future day, a backtest, or a chart cast for a past moment. Defaults to the current instant. Interpreted as local time in the request timezone (a trailing Z is accepted but ignored); with timezone 0 it is UTC."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"Currently active Mahadasha, Antardasha, Pratyantardasha, Sookshma and Prana dasha with start/end dates, remaining balance, Moon nakshatra, and Vedic interpretations for each period.","content":{"application/json":{"schema":{"type":"object","properties":{"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."},"moonNakshatra":{"type":"integer","minimum":1,"maximum":27,"example":15,"description":"Birth Moon nakshatra number (1-27). This nakshatra determines the starting dasha lord in the Vimshottari 120-year cycle."},"nakshatraName":{"type":"string","example":"Swati","description":"Name of the birth Moon nakshatra (lunar mansion). One of 27 Vedic nakshatras from Ashwini to Revati."},"nakshatraLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Vimshottari dasha lord of the birth nakshatra. This planet rules the first Mahadasha in the native life cycle."},"moonLongitude":{"type":"number","example":190.994,"description":"Sidereal (nirayana) longitude of the birth Moon in degrees, 0 to 360, measured in the ayanamsa frame reported below. This single value determines the birth nakshatra and therefore every dasha start and end date in this response. Compare it against a reference chart to reconcile any date difference at its source."},"ayanamsa":{"type":"number","example":23.72167,"description":"Ayanamsa actually applied, in degrees. The precession offset subtracted from the tropical (sayana) longitude to get the sidereal (nirayana) one. Lahiri sits near 23 deg 43 min for a 1990 birth, KP-Newcomb near 23 deg 38 min."},"ayanamsaType":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"example":"lahiri","description":"Ayanamsa system used, echoing the request field. One of \"lahiri\", \"kp-newcomb\", \"kp-old\" or \"custom\". Echoed so a client can confirm which frame produced these dates without re-deriving it. When it reads \"custom\" the ayanamsa field above carries the exact value you supplied."},"mahadasha":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."}},"required":["planet","startDate","endDate","durationYears"],"description":"Mahadasha (major planetary period) in the 120-year Vimshottari dasha cycle. Start and end dates are determined by Moon nakshatra at birth."},"antardasha":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord"],"description":"Antardasha (bhukti), sub-period within a Mahadasha. Each Mahadasha contains 9 Antardashas proportional to the Vimshottari years of each planet."},"pratyantardasha":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord"],"description":"Pratyantardasha (sub-sub-period), the third level of the Vimshottari dasha hierarchy, Provides finer timing within each Antardasha for event prediction."},"sookshmaDasha":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Parent Pratyantardasha lord under which this Sookshma dasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord","pratyantardashaLord"],"description":"Sookshma dasha (sookshma antardasha), the fourth level of the Vimshottari dasha hierarchy. Each Pratyantardasha divides into 9 Sookshma periods running roughly 3 to 30 days each, used for day-level event timing and muhurta style selection."},"pranaDasha":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Parent Pratyantardasha lord under which this Sookshma dasha runs."},"sookshmaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Sookshma dasha lord under which this Prana dasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord","pratyantardashaLord","sookshmaLord"],"description":"Prana dasha (praana antardasha), the fifth and finest level of the Vimshottari dasha hierarchy. Each Sookshma dasha divides into 9 Prana periods, running from about 20 minutes inside a Sun Mahadasha to about 4 days inside a Saturn one. This is the level that takes Vimshottari from day-level to hour-level timing, used for muhurta selection and pinpointing the trigger inside an already identified window."},"commonHouses":{"type":"object","properties":{"allLevels":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11],"description":"Houses signified by ALL FIVE running lords at once (Mahadasha through Prana). The tightest reading available: a house every active level carries is the one the current moment is pointed at. Often empty, which is itself informative, it means the five levels do not converge on a single house."},"dashaBhuktiAntara":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,5],"description":"Houses signified by the Mahadasha, Antardasha and Pratyantardasha lords together, the classical KP three-lord test used to decide whether a matter fructifies in the running period. Wider than allLevels because it ignores the two fastest levels, which is what makes it the practical filter for month-scale predictions."}},"required":["allLevels","dashaBhuktiAntara"],"description":"Houses common to the significators of the running dasha lords. In KP a matter fructifies under lords that jointly signify the houses of that matter, so these two sets are what a prediction is checked against."},"remainingInMahadasha":{"type":"object","properties":{"years":{"type":"number","example":2,"description":"Full years remaining in this Vimshottari dasha period."},"months":{"type":"number","example":4,"description":"Additional months remaining beyond full years."},"days":{"type":"number","example":15,"description":"Additional days remaining beyond full months."},"totalDays":{"type":"number","example":865,"description":"Total remaining days in this dasha period. Useful for progress calculations."}},"required":["years","months","days","totalDays"],"description":"Time remaining in the currently running Mahadasha (major period)."},"remainingInAntardasha":{"type":"object","properties":{"years":{"type":"number","example":2,"description":"Full years remaining in this Vimshottari dasha period."},"months":{"type":"number","example":4,"description":"Additional months remaining beyond full years."},"days":{"type":"number","example":15,"description":"Additional days remaining beyond full months."},"totalDays":{"type":"number","example":865,"description":"Total remaining days in this dasha period. Useful for progress calculations."}},"required":["years","months","days","totalDays"],"description":"Time remaining in the currently running Antardasha (sub-period) within the Mahadasha."},"remainingInPratyantardasha":{"type":"object","properties":{"years":{"type":"number","example":2,"description":"Full years remaining in this Vimshottari dasha period."},"months":{"type":"number","example":4,"description":"Additional months remaining beyond full years."},"days":{"type":"number","example":15,"description":"Additional days remaining beyond full months."},"totalDays":{"type":"number","example":865,"description":"Total remaining days in this dasha period. Useful for progress calculations."}},"required":["years","months","days","totalDays"],"description":"Time remaining in the currently running Pratyantardasha (sub-sub-period)."},"remainingInSookshma":{"type":"object","properties":{"years":{"type":"number","example":2,"description":"Full years remaining in this Vimshottari dasha period."},"months":{"type":"number","example":4,"description":"Additional months remaining beyond full years."},"days":{"type":"number","example":15,"description":"Additional days remaining beyond full months."},"totalDays":{"type":"number","example":865,"description":"Total remaining days in this dasha period. Useful for progress calculations."}},"required":["years","months","days","totalDays"],"description":"Time remaining in the currently running Sookshma dasha (fourth level). Sookshma periods last days rather than months, so this value turns over quickly."},"remainingInPrana":{"type":"object","properties":{"years":{"type":"number","example":2,"description":"Full years remaining in this Vimshottari dasha period."},"months":{"type":"number","example":4,"description":"Additional months remaining beyond full years."},"days":{"type":"number","example":15,"description":"Additional days remaining beyond full months."},"totalDays":{"type":"number","example":865,"description":"Total remaining days in this dasha period. Useful for progress calculations."}},"required":["years","months","days","totalDays"],"description":"Time remaining in the currently running Prana dasha (fifth level). Prana periods run hours to days, so totalDays is often 0 or 1 and the years and months fields are almost always zero."}},"required":["moonNakshatra","nakshatraName","nakshatraLord","moonLongitude","ayanamsa","ayanamsaType","mahadasha","antardasha","pratyantardasha","sookshmaDasha","pranaDasha","remainingInMahadasha","remainingInAntardasha","remainingInPratyantardasha","remainingInSookshma","remainingInPrana"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dasha/major":{"post":{"operationId":"getMajorDashas","tags":["Vedic Astrology"],"summary":"Get all 9 Mahadasha periods (120-year cycle)","description":"Returns the complete Vimshottari dasha cycle from birth, all 9 Mahadasha periods across the full 120 year span. Each period carries its ruling graha, exact start and end dates, and the houses it signifies, with the birth dasha balance and Moon nakshatra that anchor the sequence. This is the top level timeline a Vedic astrology report opens with, and the entry point for drilling into Antardasha and finer sub periods.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Ayanamsa system used to place the birth Moon in its nakshatra, which sets every dasha start and end date. \"lahiri\" uses Lahiri/Chitrapaksha, the traditional Vedic standard, and is the default. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, matching Krishnamurti Paddhati software. \"kp-old\" uses the Krishnamurti original table from KP Reader-1. \"raman\" uses the B.V. Raman ayanamsa, the second frame traditional Indian software commonly offers beside Lahiri. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. Switching frames shifts every dasha boundary by weeks, so pick the one your reference software uses."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"significators":{"type":"boolean","default":false,"example":false,"description":"Set true to attach the KP significators of each period lord: its star lord, sub lord, occupied house, the houses it signifies at levels L1 to L4, and a strength grade. Off by default, so responses stay exactly as they are for clients that only need dates. Requires the birth latitude and longitude, since significators are read off a Placidus house chart, and uses the same ayanamsa frame selected above."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu, used ONLY when \"significators\" is true. Dasha dates themselves come from the Moon and never move with this field. \"mean\" uses the smooth mean node (traditional default). \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean over a 173-day cycle and can therefore change which house or star a node falls in. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"Complete 120-year Vimshottari Dasha timeline with all 9 Mahadasha periods, birth dasha balance, Moon nakshatra, and start/end dates for each planetary period.","content":{"application/json":{"schema":{"type":"object","properties":{"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."},"moonNakshatra":{"type":"integer","minimum":1,"maximum":27,"example":15,"description":"Birth Moon nakshatra number (1-27) that determines the Vimshottari starting point."},"nakshatraName":{"type":"string","example":"Swati","description":"Birth Moon nakshatra name, one of 27 Vedic lunar mansions."},"nakshatraLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Dasha lord of the birth nakshatra, rules the first Mahadasha."},"moonLongitude":{"type":"number","example":190.994,"description":"Sidereal (nirayana) longitude of the birth Moon in degrees, 0 to 360, measured in the ayanamsa frame reported below. This single value determines the birth nakshatra and therefore every dasha start and end date in this response. Compare it against a reference chart to reconcile any date difference at its source."},"ayanamsa":{"type":"number","example":23.72167,"description":"Ayanamsa actually applied, in degrees. The precession offset subtracted from the tropical (sayana) longitude to get the sidereal (nirayana) one. Lahiri sits near 23 deg 43 min for a 1990 birth, KP-Newcomb near 23 deg 38 min."},"ayanamsaType":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"example":"lahiri","description":"Ayanamsa system used, echoing the request field. One of \"lahiri\", \"kp-newcomb\", \"kp-old\" or \"custom\". Echoed so a client can confirm which frame produced these dates without re-deriving it. When it reads \"custom\" the ayanamsa field above carries the exact value you supplied."},"birthDashaBalance":{"type":"object","properties":{"years":{"type":"number","example":2,"description":"Full years remaining in this Vimshottari dasha period."},"months":{"type":"number","example":4,"description":"Additional months remaining beyond full years."},"days":{"type":"number","example":15,"description":"Additional days remaining beyond full months."},"totalDays":{"type":"number","example":865,"description":"Total remaining days in this dasha period. Useful for progress calculations."}},"required":["years","months","days","totalDays"],"description":"Remaining balance of the first Mahadasha at birth. Based on Moon degree within the birth nakshatra. partial dasha already elapsed before birth."},"mahadashas":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."}},"required":["planet","startDate","endDate","durationYears"],"description":"Mahadasha (major planetary period) in the 120-year Vimshottari dasha cycle. Start and end dates are determined by Moon nakshatra at birth."},"description":"Complete sequence of all 9 Mahadasha periods spanning 120 years from birth. Follows the Vimshottari order: Ketu(7), Venus(20), Sun(6), Moon(10), Mars(7), Rahu(18), Jupiter(16), Saturn(19), Mercury(17)."},"totalYears":{"type":"number","example":120,"description":"Total Vimshottari cycle length in years (always 120)."}},"required":["moonNakshatra","nakshatraName","nakshatraLord","moonLongitude","ayanamsa","ayanamsaType","birthDashaBalance","mahadashas","totalYears"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dasha/sub/{mahadasha}":{"post":{"operationId":"getSubDashas","tags":["Vedic Astrology"],"summary":"Get all Antardashas (sub-periods) for a specific Mahadasha","description":"Returns the 9 Antardasha sub periods inside a chosen Mahadasha, each proportional to the Vimshottari years of its lord. Every period carries its ruling graha, exact start and end dates, and the houses it signifies, alongside the parent Mahadasha it sits in. Use it to narrow a multi year Mahadasha down to the months that matter for event prediction, muhurta selection, and dasha timeline UIs.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Mahadasha planet name, case-insensitive (e.g., jupiter, Jupiter, JUPITER all work). Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury."},"required":true,"description":"Mahadasha planet name, case-insensitive (e.g., jupiter, Jupiter, JUPITER all work). Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury.","name":"mahadasha","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Ayanamsa system used to place the birth Moon in its nakshatra, which sets every dasha start and end date. \"lahiri\" uses Lahiri/Chitrapaksha, the traditional Vedic standard, and is the default. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, matching Krishnamurti Paddhati software. \"kp-old\" uses the Krishnamurti original table from KP Reader-1. \"raman\" uses the B.V. Raman ayanamsa, the second frame traditional Indian software commonly offers beside Lahiri. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. Switching frames shifts every dasha boundary by weeks, so pick the one your reference software uses."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"significators":{"type":"boolean","default":false,"example":false,"description":"Set true to attach the KP significators of each period lord: its star lord, sub lord, occupied house, the houses it signifies at levels L1 to L4, and a strength grade. Off by default, so responses stay exactly as they are for clients that only need dates. Requires the birth latitude and longitude, since significators are read off a Placidus house chart, and uses the same ayanamsa frame selected above."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu, used ONLY when \"significators\" is true. Dasha dates themselves come from the Moon and never move with this field. \"mean\" uses the smooth mean node (traditional default). \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean over a 173-day cycle and can therefore change which house or star a node falls in. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"All 9 Antardasha sub-periods within the specified Mahadasha, with start/end dates and the parent Mahadasha period details.","content":{"application/json":{"schema":{"type":"object","properties":{"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling planet of the requested Mahadasha period."},"moonLongitude":{"type":"number","example":190.994,"description":"Sidereal (nirayana) longitude of the birth Moon in degrees, 0 to 360, measured in the ayanamsa frame reported below. This single value determines the birth nakshatra and therefore every dasha start and end date in this response. Compare it against a reference chart to reconcile any date difference at its source."},"ayanamsa":{"type":"number","example":23.72167,"description":"Ayanamsa actually applied, in degrees. The precession offset subtracted from the tropical (sayana) longitude to get the sidereal (nirayana) one. Lahiri sits near 23 deg 43 min for a 1990 birth, KP-Newcomb near 23 deg 38 min."},"ayanamsaType":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"example":"lahiri","description":"Ayanamsa system used, echoing the request field. One of \"lahiri\", \"kp-newcomb\", \"kp-old\" or \"custom\". Echoed so a client can confirm which frame produced these dates without re-deriving it. When it reads \"custom\" the ayanamsa field above carries the exact value you supplied."},"mahadashaPeriod":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."}},"required":["planet","startDate","endDate","durationYears"],"description":"Full details of the parent Mahadasha including start/end dates and duration."},"antardashas":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord"],"description":"Antardasha (bhukti), sub-period within a Mahadasha. Each Mahadasha contains 9 Antardashas proportional to the Vimshottari years of each planet."},"minItems":1,"maxItems":9,"description":"Antardasha (bhukti) sub-periods within this Mahadasha, proportional to each planet Vimshottari years, sorted chronologically. Nine for any Mahadasha the native lived through in full. FEWER than nine for the first Mahadasha in the chart, because the Vimshottari cycle was already running at birth: the Antardashas that ended before the birth date are not part of the chart, and the one in force at birth starts on the birth date."}},"required":["mahadashaLord","moonLongitude","ayanamsa","ayanamsaType","mahadashaPeriod","antardashas"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dasha/sub/{mahadasha}/{antardasha}":{"post":{"operationId":"getPratyantardashas","tags":["Vedic Astrology"],"summary":"Get all Pratyantardashas (antara periods) for a Mahadasha and Antardasha","description":"Pratyantardasha calculator API for Vedic astrology. Returns the 9 Pratyantardasha (antara) periods inside a chosen Antardasha, the third level of the Vimshottari dasha hierarchy. Use it to drill from a Mahadasha into month level timing for event prediction, muhurta selection, and dasha timeline UIs. Each period is proportional to the Vimshottari years of its lord.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Mahadasha planet name, case-insensitive (e.g. saturn, Saturn, SATURN all work). Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury."},"required":true,"description":"Mahadasha planet name, case-insensitive (e.g. saturn, Saturn, SATURN all work). Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury.","name":"mahadasha","in":"path"},{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Antardasha (bhukti) planet name inside that Mahadasha, case-insensitive. Every Mahadasha contains all 9 lords, so a repeat such as saturn/saturn is valid."},"required":true,"description":"Antardasha (bhukti) planet name inside that Mahadasha, case-insensitive. Every Mahadasha contains all 9 lords, so a repeat such as saturn/saturn is valid.","name":"antardasha","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Ayanamsa system used to place the birth Moon in its nakshatra, which sets every dasha start and end date. \"lahiri\" uses Lahiri/Chitrapaksha, the traditional Vedic standard, and is the default. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, matching Krishnamurti Paddhati software. \"kp-old\" uses the Krishnamurti original table from KP Reader-1. \"raman\" uses the B.V. Raman ayanamsa, the second frame traditional Indian software commonly offers beside Lahiri. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. Switching frames shifts every dasha boundary by weeks, so pick the one your reference software uses."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"significators":{"type":"boolean","default":false,"example":false,"description":"Set true to attach the KP significators of each period lord: its star lord, sub lord, occupied house, the houses it signifies at levels L1 to L4, and a strength grade. Off by default, so responses stay exactly as they are for clients that only need dates. Requires the birth latitude and longitude, since significators are read off a Placidus house chart, and uses the same ayanamsa frame selected above."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu, used ONLY when \"significators\" is true. Dasha dates themselves come from the Moon and never move with this field. \"mean\" uses the smooth mean node (traditional default). \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean over a 173-day cycle and can therefore change which house or star a node falls in. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"All 9 Pratyantardasha periods within the specified Mahadasha and Antardasha, with start/end dates and the parent Antardasha period details.","content":{"application/json":{"schema":{"type":"object","properties":{"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Ruling planet of the requested Mahadasha period."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Ruling planet of the requested Antardasha sub-period."},"moonLongitude":{"type":"number","example":190.994,"description":"Sidereal (nirayana) longitude of the birth Moon in degrees, 0 to 360, measured in the ayanamsa frame reported below. This single value determines the birth nakshatra and therefore every dasha start and end date in this response. Compare it against a reference chart to reconcile any date difference at its source."},"ayanamsa":{"type":"number","example":23.72167,"description":"Ayanamsa actually applied, in degrees. The precession offset subtracted from the tropical (sayana) longitude to get the sidereal (nirayana) one. Lahiri sits near 23 deg 43 min for a 1990 birth, KP-Newcomb near 23 deg 38 min."},"ayanamsaType":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"example":"lahiri","description":"Ayanamsa system used, echoing the request field. One of \"lahiri\", \"kp-newcomb\", \"kp-old\" or \"custom\". Echoed so a client can confirm which frame produced these dates without re-deriving it. When it reads \"custom\" the ayanamsa field above carries the exact value you supplied."},"antardashaPeriod":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord"],"description":"Full details of the parent Antardasha including start/end dates and duration."},"pratyantardashas":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord"],"description":"Pratyantardasha (sub-sub-period), the third level of the Vimshottari dasha hierarchy, Provides finer timing within each Antardasha for event prediction."},"minItems":1,"maxItems":9,"description":"Pratyantardasha (antara) periods within this Antardasha, proportional to each planet Vimshottari years, sorted chronologically and starting with the Antardasha lord. Fewer than nine only when the parent Antardasha is the one that was already running at birth, in which case the periods that ended before the birth date are omitted."}},"required":["mahadashaLord","antardashaLord","moonLongitude","ayanamsa","ayanamsaType","antardashaPeriod","pratyantardashas"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dasha/sub/{mahadasha}/{antardasha}/{pratyantardasha}":{"post":{"operationId":"getSookshmaDashas","tags":["Vedic Astrology"],"summary":"Get all Sookshma dashas for a Mahadasha, Antardasha and Pratyantardasha","description":"Sookshma dasha API. Returns the 9 Sookshma periods inside a chosen Pratyantardasha, the fourth and finest level of the Vimshottari dasha hierarchy. Completes a full vimshottari drill down from the 120-year cycle to day level timing, typically 3 to 30 days per period. Built for dasha drill down tables, current DBA readouts, and precise event timing in Vedic astrology software.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Mahadasha planet name, case-insensitive. Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury."},"required":true,"description":"Mahadasha planet name, case-insensitive. Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury.","name":"mahadasha","in":"path"},{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Antardasha (bhukti) planet name inside that Mahadasha, case-insensitive."},"required":true,"description":"Antardasha (bhukti) planet name inside that Mahadasha, case-insensitive.","name":"antardasha","in":"path"},{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Pratyantardasha (antara) planet name inside that Antardasha, case-insensitive."},"required":true,"description":"Pratyantardasha (antara) planet name inside that Antardasha, case-insensitive.","name":"pratyantardasha","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Ayanamsa system used to place the birth Moon in its nakshatra, which sets every dasha start and end date. \"lahiri\" uses Lahiri/Chitrapaksha, the traditional Vedic standard, and is the default. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, matching Krishnamurti Paddhati software. \"kp-old\" uses the Krishnamurti original table from KP Reader-1. \"raman\" uses the B.V. Raman ayanamsa, the second frame traditional Indian software commonly offers beside Lahiri. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. Switching frames shifts every dasha boundary by weeks, so pick the one your reference software uses."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"significators":{"type":"boolean","default":false,"example":false,"description":"Set true to attach the KP significators of each period lord: its star lord, sub lord, occupied house, the houses it signifies at levels L1 to L4, and a strength grade. Off by default, so responses stay exactly as they are for clients that only need dates. Requires the birth latitude and longitude, since significators are read off a Placidus house chart, and uses the same ayanamsa frame selected above."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu, used ONLY when \"significators\" is true. Dasha dates themselves come from the Moon and never move with this field. \"mean\" uses the smooth mean node (traditional default). \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean over a 173-day cycle and can therefore change which house or star a node falls in. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"All 9 Sookshma dasha periods within the specified Mahadasha, Antardasha, and Pratyantardasha, with start/end dates and the parent Pratyantardasha period details.","content":{"application/json":{"schema":{"type":"object","properties":{"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Ruling planet of the requested Mahadasha period."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Ruling planet of the requested Antardasha sub-period."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Ruling planet of the requested Pratyantardasha sub-sub-period."},"moonLongitude":{"type":"number","example":190.994,"description":"Sidereal (nirayana) longitude of the birth Moon in degrees, 0 to 360, measured in the ayanamsa frame reported below. This single value determines the birth nakshatra and therefore every dasha start and end date in this response. Compare it against a reference chart to reconcile any date difference at its source."},"ayanamsa":{"type":"number","example":23.72167,"description":"Ayanamsa actually applied, in degrees. The precession offset subtracted from the tropical (sayana) longitude to get the sidereal (nirayana) one. Lahiri sits near 23 deg 43 min for a 1990 birth, KP-Newcomb near 23 deg 38 min."},"ayanamsaType":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"example":"lahiri","description":"Ayanamsa system used, echoing the request field. One of \"lahiri\", \"kp-newcomb\", \"kp-old\" or \"custom\". Echoed so a client can confirm which frame produced these dates without re-deriving it. When it reads \"custom\" the ayanamsa field above carries the exact value you supplied."},"pratyantardashaPeriod":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord"],"description":"Full details of the parent Pratyantardasha including start/end dates and duration."},"sookshmaDashas":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Parent Pratyantardasha lord under which this Sookshma dasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord","pratyantardashaLord"],"description":"Sookshma dasha (sookshma antardasha), the fourth level of the Vimshottari dasha hierarchy. Each Pratyantardasha divides into 9 Sookshma periods running roughly 3 to 30 days each, used for day-level event timing and muhurta style selection."},"minItems":1,"maxItems":9,"description":"Sookshma dasha periods within this Pratyantardasha, proportional to each planet Vimshottari years, sorted chronologically and starting with the Pratyantardasha lord. Fewer than nine only when the parent Pratyantardasha is the one that was already running at birth, in which case the periods that ended before the birth date are omitted."}},"required":["mahadashaLord","antardashaLord","pratyantardashaLord","moonLongitude","ayanamsa","ayanamsaType","pratyantardashaPeriod","sookshmaDashas"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dasha/sub/{mahadasha}/{antardasha}/{pratyantardasha}/{sookshma}":{"post":{"operationId":"getPranaDashas","tags":["Vedic Astrology"],"summary":"Get all Prana dashas for a Mahadasha, Antardasha, Pratyantardasha and Sookshma","description":"Prana dasha API for Vedic astrology. Returns the 9 Prana periods inside a chosen Sookshma dasha, the fifth and finest level of the Vimshottari dasha hierarchy. Completes the full vimshottari drill down from the 120-year cycle to hour level timing, typically 20 minutes to 4 days per period depending on the parent Mahadasha. Built for five column dasha drill down tables, muhurta selection, and pinpointing the trigger moment inside an event window already found at the Sookshma level.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Mahadasha planet name, case-insensitive. Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury."},"required":true,"description":"Mahadasha planet name, case-insensitive. Valid: Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn, Mercury.","name":"mahadasha","in":"path"},{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Antardasha (bhukti) planet name inside that Mahadasha, case-insensitive."},"required":true,"description":"Antardasha (bhukti) planet name inside that Mahadasha, case-insensitive.","name":"antardasha","in":"path"},{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Pratyantardasha (antara) planet name inside that Antardasha, case-insensitive."},"required":true,"description":"Pratyantardasha (antara) planet name inside that Antardasha, case-insensitive.","name":"pratyantardasha","in":"path"},{"schema":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Sookshma dasha planet name inside that Pratyantardasha, case-insensitive. Every full period contains all 9 lords, so a repeat such as saturn/saturn/saturn/saturn is valid."},"required":true,"description":"Sookshma dasha planet name inside that Pratyantardasha, case-insensitive. Every full period contains all 9 lords, so a repeat such as saturn/saturn/saturn/saturn is valid.","name":"sookshma","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Date determines planetary positions and nakshatra calculations for Vedic kundli (janam patri). Accurate birth date is essential for dashas, yoga calculations, and divisional charts (vargas)."},"time":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in 24-hour HH:MM:SS format. Time is CRITICAL for Lagna (Ascendant) calculation and house divisions. It changes every two hours roughly. Even minutes matter for accurate nakshatra pada and divisional chart (D9, D10) calculations. Without exact time, Lagna and house-based predictions will be incorrect."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Birth location latitude in decimal degrees. Location determines local sidereal time for Lagna calculation and affects bhava (house) cusps. Example: Delhi 28.6139, Mumbai 19.0760, Kathmandu 27.7172."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Birth location longitude in decimal degrees. Affects local time calculations and ayanamsha adjustments. Example: Delhi 77.2090, Mumbai 72.8777, Kathmandu 85.3240."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly. Defaults to 5.5.","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"default":"lahiri","example":"lahiri","description":"Ayanamsa system used to place the birth Moon in its nakshatra, which sets every dasha start and end date. \"lahiri\" uses Lahiri/Chitrapaksha, the traditional Vedic standard, and is the default. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, matching Krishnamurti Paddhati software. \"kp-old\" uses the Krishnamurti original table from KP Reader-1. \"raman\" uses the B.V. Raman ayanamsa, the second frame traditional Indian software commonly offers beside Lahiri. \"custom\" takes your own value in degrees via ayanamsaValue, for reconciling exactly against a specific reference program. Switching frames shifts every dasha boundary by weeks, so pick the one your reference software uses."},"ayanamsaValue":{"type":"number","example":24,"description":"Custom ayanamsa value in degrees. When provided, overrides the computed ayanamsa from the selected type. Use for testing with specific ayanamsa values or matching a particular reference source."},"significators":{"type":"boolean","default":false,"example":false,"description":"Set true to attach the KP significators of each period lord: its star lord, sub lord, occupied house, the houses it signifies at levels L1 to L4, and a strength grade. Off by default, so responses stay exactly as they are for clients that only need dates. Requires the birth latitude and longitude, since significators are read off a Placidus house chart, and uses the same ayanamsa frame selected above."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu, used ONLY when \"significators\" is true. Dasha dates themselves come from the Moon and never move with this field. \"mean\" uses the smooth mean node (traditional default). \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean over a 173-day cycle and can therefore change which house or star a node falls in. Defaults to \"mean\"."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"All 9 Prana dasha periods within the specified Mahadasha, Antardasha, Pratyantardasha, and Sookshma dasha, with start/end dates and the parent Sookshma period details.","content":{"application/json":{"schema":{"type":"object","properties":{"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Ruling planet of the requested Mahadasha period."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Venus","description":"Ruling planet of the requested Antardasha sub-period."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Ruling planet of the requested Pratyantardasha sub-sub-period."},"sookshmaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling planet of the requested Sookshma dasha."},"moonLongitude":{"type":"number","example":190.994,"description":"Sidereal (nirayana) longitude of the birth Moon in degrees, 0 to 360, measured in the ayanamsa frame reported below. This single value determines the birth nakshatra and therefore every dasha start and end date in this response. Compare it against a reference chart to reconcile any date difference at its source."},"ayanamsa":{"type":"number","example":23.72167,"description":"Ayanamsa actually applied, in degrees. The precession offset subtracted from the tropical (sayana) longitude to get the sidereal (nirayana) one. Lahiri sits near 23 deg 43 min for a 1990 birth, KP-Newcomb near 23 deg 38 min."},"ayanamsaType":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman","custom"],"example":"lahiri","description":"Ayanamsa system used, echoing the request field. One of \"lahiri\", \"kp-newcomb\", \"kp-old\" or \"custom\". Echoed so a client can confirm which frame produced these dates without re-deriving it. When it reads \"custom\" the ayanamsa field above carries the exact value you supplied."},"sookshmaPeriod":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Parent Pratyantardasha lord under which this Sookshma dasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord","pratyantardashaLord"],"description":"Full details of the parent Sookshma dasha including start/end dates and duration."},"pranaDashas":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Ruling graha of this Vimshottari dasha period. One of 9 planets in the Ketu-Venus-Sun-Moon-Mars-Rahu-Jupiter-Saturn-Mercury sequence."},"startDate":{"type":"string","example":"1990-07-04T10:12:00","description":"Start datetime of this dasha period. Adjusted to the requested timezone offset."},"endDate":{"type":"string","example":"1996-07-04T10:12:00","description":"End datetime of this dasha period. Adjusted to the requested timezone offset."},"durationYears":{"type":"number","example":6,"description":"Duration of this dasha period in years. Mahadasha durations range from 6 years (Sun) to 20 years (Venus)."},"nominalStartDate":{"type":"string","example":"1984-09-01T09:00:00","description":"Theoretical start of this period, present ONLY when the birth date truncated it. The Vimshottari cycle is already running when a native is born, so the period in force at birth began earlier: startDate is clipped to the birth moment while this field keeps the real start. Its presence is also why the first period of a chart can contain fewer than 9 sub-periods, the earlier ones having finished before birth. Absent on every period that runs its full length."},"interpretation":{"type":"string","example":"Sun Mahadasha brings leadership opportunities, authority, and self-expression.","description":"Vedic interpretation of the planetary period describing themes, karmic lessons, and life areas affected by this graha."},"significators":{"type":"object","properties":{"house":{"type":"integer","minimum":1,"maximum":12,"example":11,"description":"House 1-12 this lord occupies in the Placidus birth chart. Its own Level 2 signification, repeated here because the occupied house is the first thing a KP reading looks at."},"starLord":{"type":"string","example":"Moon","description":"Lord of the nakshatra this planet sits in, one of the 9 grahas. In KP the star lord outranks the planet itself: a period lord mainly delivers the houses its star lord occupies and owns, which is why those appear at L1 and L3 rather than the planet own house."},"subLord":{"type":"string","example":"Venus","description":"KP sub lord of this planet, the 1 of 249 subdivision its longitude falls in, one of the 9 grahas. The star lord says WHAT results the period gives, the sub lord says WHETHER they materialize, so KP judgement checks both."},"signifies":{"type":"object","properties":{"L1":{"type":"array","items":{"type":"integer"},"example":[11,6],"description":"Level 1, the strongest signification (grade A). Houses influenced because this planet sits in the nakshatra (star) of a planet occupying those houses. For Rahu and Ketu, also includes the L1 houses of their agent planets (conjoined, aspecting, sign lord)."},"L2":{"type":"array","items":{"type":"integer"},"example":[11],"description":"Level 2 (grade B). The house this planet physically occupies. For Rahu and Ketu, also includes houses occupied by their agent planets."},"L3":{"type":"array","items":{"type":"integer"},"example":[3,8],"description":"Level 3 (grade C). Houses influenced because this planet sits in the nakshatra of the sign lord (owner) of those houses. For Rahu and Ketu, also includes the L3 houses of their agent planets."},"L4":{"type":"array","items":{"type":"integer"},"example":[5,6],"description":"Level 4, the weakest signification (grade D). Houses this planet rules by zodiac sign ownership, up to 2 for Sun through Saturn and 3 where a sign is intercepted. Rahu and Ketu own no sign, so their L4 comes entirely from their agent planets."}},"required":["L1","L2","L3","L4"],"description":"KP 4-level significator breakdown showing which houses (1-12) this planet signifies at each strength tier. L1 is strongest, L4 is weakest."},"signifiedHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6,3,8,5],"description":"Every house this lord signifies, deduplicated and ordered strongest tier first. Where a house is reached at more than one level it is listed once, at its strongest. This is the flat \"houses signified\" column of a KP dasha table."},"strongHouses":{"type":"array","items":{"type":"integer","minimum":1,"maximum":12},"example":[11,6],"description":"Subset of signifiedHouses reached at grade A or B (levels L1 and L2). These are the houses a KP reading acts on for this period; the rest are supporting connections."},"strength":{"type":"object","properties":{"score":{"type":"number","minimum":0,"maximum":100,"example":62.5,"description":"Mean KP percentage weight across signifiedHouses, each house counted at its strongest level (A 100, B 75, C 50, D 25). A mean rather than a total, so signifying many houses weakly does not outrank signifying two houses at grade A."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"B","description":"Band the score falls in, on the standard KP significator grading: A planets in the constellation of the occupant, B occupants, C planets in the constellation of the house owner, D the house owner. Band edges are the midpoints between the four weights."},"label":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Plain-language form of grade: \"very-strong\" for A, \"strong\" for B, \"moderate\" for C, \"weak\" for D. Says how firmly this lord is connected to the houses it signifies, NOT whether those houses are favourable, which depends on the matter being judged."}},"required":["score","grade","label"],"description":"How firmly this lord is tied to the houses it signifies, on the KP A to D significator grading. Reproducible from the significator levels alone, in two steps. STEP 1, per house keep only the strongest level: a planet routinely reaches the same house at more than one level, for example its star lord occupies house 11 and it also owns house 11, and KP cites a significator by its best connection, so that house counts once at grade A. This is why signifiedHouses is shorter than the four level arrays concatenated, and omitting it is what makes a hand calculation disagree. STEP 2, average the surviving weights: each house contributes 100, 75, 50 or 25 for grade A, B, C or D, and the mean is the score. Worked example, a lord signifying house 11 at level 1, house 6 at level 2 and house 2 at level 4 scores (100 + 75 + 25) / 3 = 66.7, which lands in band B because the band edges are the midpoints 87.5, 62.5 and 37.5. The score says how firmly the lord is connected, never whether the houses are favourable, which depends on the matter being judged."}},"required":["house","starLord","signifies","signifiedHouses","strongHouses","strength"],"description":"KP significators of this period lord, read from the Placidus birth chart in the requested ayanamsa. Present only when the request sets \"significators\": true."},"mahadashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Mahadasha lord under which this Antardasha sub-period runs."},"antardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Saturn","description":"Parent Antardasha lord under which this Pratyantardasha runs."},"pratyantardashaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Rahu","description":"Parent Pratyantardasha lord under which this Sookshma dasha runs."},"sookshmaLord":{"type":"string","enum":["Ketu","Venus","Sun","Moon","Mars","Rahu","Jupiter","Saturn","Mercury"],"example":"Jupiter","description":"Parent Sookshma dasha lord under which this Prana dasha runs."}},"required":["planet","startDate","endDate","durationYears","mahadashaLord","antardashaLord","pratyantardashaLord","sookshmaLord"],"description":"Prana dasha (praana antardasha), the fifth and finest level of the Vimshottari dasha hierarchy. Each Sookshma dasha divides into 9 Prana periods, running from about 20 minutes inside a Sun Mahadasha to about 4 days inside a Saturn one. This is the level that takes Vimshottari from day-level to hour-level timing, used for muhurta selection and pinpointing the trigger inside an already identified window."},"minItems":1,"maxItems":9,"description":"Prana dasha periods within this Sookshma dasha, proportional to each planet Vimshottari years, sorted chronologically and starting with the Sookshma lord. Fewer than nine only when the parent Sookshma dasha is the one that was already running at birth, in which case the periods that ended before the birth date are omitted."}},"required":["mahadashaLord","antardashaLord","pratyantardashaLord","sookshmaLord","moonLongitude","ayanamsa","ayanamsaType","sookshmaPeriod","pranaDashas"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/daily":{"post":{"operationId":"getVedicDailyReading","tags":["Vedic Astrology"],"summary":"Daily Reading - Composed Gochara, Panchanga and Dasha for one native on one day","description":"The composed Vedic daily reading for one native on one date, in one call. Runs classical Gochara as the gate pipeline the texts describe: the house each transiting graha makes from the natal Moon (Janma Rashi), the vedha pair that can cancel it, the Ashtakavarga bindu gate that decides whether it is delivered, and the Phaladeepika XXVI.30 to XXVI.32 nullifiers, so every graha lands in ONE cited state rather than a bar of a chart. Joined to the panchanga day, which runs sunrise to sunrise with a validity window on every limb, plus tarabala and chandrabala resolved for THIS native as windows rather than as one value, the running Vimshottari chain three levels deep, and a KP finance net over the wealth and loss houses. Ships a hand-reproducible strength score with its arithmetic published in the field itself, and states plainly which part is classical and which part is a RoxyAPI counting convention. Positions are computed in the Lahiri sidereal frame; the KP significators behind the finance area use the KP-Newcomb frame, as they do on every KP route.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"birthDate":{"type":"string","format":"date","example":"1984-11-03","description":"Birth date in YYYY-MM-DD format. Fixes the Janma Rashi and Janma Nakshatra every part of this reading is counted from, and the natal Ashtakavarga the bindu gate reads."},"birthTime":{"type":"string","format":"time","example":"01:35:00","description":"Birth time in HH:MM:SS format (24-hour). The Moon moves about half a degree an hour, so an error here moves the Janma Rashi and Janma Nakshatra and therefore every gochara house count, the tarabala and the chandrabala in this response."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.8944,"description":"Birth location latitude in decimal degrees. Sets the natal house cusps behind the Ashtakavarga scorecard and the KP significators, and the sunrise that opens the panchanga day."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":76.5894,"description":"Birth location longitude in decimal degrees. Affects local sidereal time for the natal cusps and the sunrise the reading is composed at."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"Asia/Kolkata\", \"America/New_York\") OR decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). IANA strings are resolved to the DST-correct offset for the date being read. Interprets the birth time and the civil date below. Defaults to 5.5.","example":5.5},"date":{"type":"string","format":"date","example":"2026-06-21","description":"Civil date to read, in YYYY-MM-DD format. Defaults to today (UTC). The panchanga day it names runs from sunrise at the birth coordinates to the next sunrise, not from midnight, so a reading for this date covers the night that follows it."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node type for Rahu and Ketu. \"mean\" uses the smooth mean node, which is the traditional Vedic default and what printed panchangs use. \"true\" uses the osculating node, which swings up to 1.5 degrees either side of mean and can therefore move a node into a different rashi and change its gochara house. Defaults to \"mean\"."}},"required":["birthDate","birthTime","latitude","longitude"]}}}},"responses":{"200":{"description":"Daily reading composed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"frames":{"type":"object","properties":{"natal":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this part of the reading was cast in. Always \"lahiri\" here: it is not a caller choice, because the composition runs two frames at once and a single request field could only ever name one of them."},"ayanamsaDegrees":{"type":"number","example":23.64094017088563,"description":"Degrees actually subtracted from every tropical longitude this frame produced. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."},"at":{"type":"string","example":"1984-11-02T20:05:00.000Z","description":"ISO instant the ayanamsa was read at. Part of the value, not metadata: an ayanamsa moves about 50.3 arcseconds a year, so the same frame read at a birth in 1984 and at a transit in 2026 differs by more than half a degree."},"governs":{"type":"array","items":{"type":"string","enum":["subject","grahas","panchanga","tara","chandrabala","dasha","areas.finance"]},"example":["subject","grahas","tara","chandrabala","dasha","areas.finance"],"description":"Response sections this frame is a determinant of, as paths into this payload. One of subject, grahas, panchanga, tara, chandrabala, dasha, areas.finance. A section appears under EVERY frame that feeds it, which is why grahas is listed three times: the transiting longitudes and the natal Moon they are counted from are both Lahiri read at different instants, while the Ashtakavarga Lagna row behind binduCount and kaksha is KP-Newcomb. Exactly two sections belong to one frame alone, subject to the natal frame and panchanga to the transit frame."}},"required":["ayanamsa","ayanamsaDegrees","at","governs"],"description":"Lahiri at the birth instant. Produces the natal Moon this whole reading is counted from, the Vimshottari balance, and the natal graha rows of the Ashtakavarga scorecard the bindu gate reads."},"transit":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this part of the reading was cast in. Always \"lahiri\" here: it is not a caller choice, because the composition runs two frames at once and a single request field could only ever name one of them."},"ayanamsaDegrees":{"type":"number","example":24.22902171512637,"description":"Degrees actually subtracted from every tropical longitude this frame produced. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."},"at":{"type":"string","example":"2026-06-20T23:55:43.685Z","description":"ISO instant the ayanamsa was read at. Part of the value, not metadata: an ayanamsa moves about 50.3 arcseconds a year, so the same frame read at a birth in 1984 and at a transit in 2026 differs by more than half a degree."},"governs":{"type":"array","items":{"type":"string","enum":["subject","grahas","panchanga","tara","chandrabala","dasha","areas.finance"]},"example":["grahas","panchanga","tara","chandrabala"],"description":"Response sections this frame is a determinant of, as paths into this payload. One of subject, grahas, panchanga, tara, chandrabala, dasha, areas.finance. A section appears under EVERY frame that feeds it, which is why grahas is listed three times: the transiting longitudes and the natal Moon they are counted from are both Lahiri read at different instants, while the Ashtakavarga Lagna row behind binduCount and kaksha is KP-Newcomb. Exactly two sections belong to one frame alone, subject to the natal frame and panchanga to the transit frame."}},"required":["ayanamsa","ayanamsaDegrees","at","governs"],"description":"Lahiri at sunrise on the day being read. Produces every transiting longitude and every panchanga limb. Inside one day precession moves it 0.14 arcseconds, so this one value speaks for every limb resolved between the two sunrises."},"kp":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"kp-newcomb","description":"Sidereal frame this part of the reading was cast in. Always \"kp-newcomb\" here: it is not a caller choice, because the composition runs two frames at once and a single request field could only ever name one of them."},"ayanamsaDegrees":{"type":"number","example":23.5444031708357,"description":"Degrees actually subtracted from every tropical longitude this frame produced. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."},"at":{"type":"string","example":"1984-11-03T00:00:00.000Z","description":"ISO instant the ayanamsa was read at. Part of the value, not metadata: an ayanamsa moves about 50.3 arcseconds a year, so the same frame read at a birth in 1984 and at a transit in 2026 differs by more than half a degree."},"governs":{"type":"array","items":{"type":"string","enum":["subject","grahas","panchanga","tara","chandrabala","dasha","areas.finance"]},"example":["grahas","areas.finance"],"description":"Response sections this frame is a determinant of, as paths into this payload. One of subject, grahas, panchanga, tara, chandrabala, dasha, areas.finance. A section appears under EVERY frame that feeds it, which is why grahas is listed three times: the transiting longitudes and the natal Moon they are counted from are both Lahiri read at different instants, while the Ashtakavarga Lagna row behind binduCount and kaksha is KP-Newcomb. Exactly two sections belong to one frame alone, subject to the natal frame and panchanga to the transit frame."}},"required":["ayanamsa","ayanamsaDegrees","at","governs"],"description":"KP-Newcomb, read at UTC midnight of the birth date. Produces the Placidus cusps behind the Ashtakavarga Lagna row and the KP significators behind the finance area, exactly as every KP route on this API computes them."}},"required":["natal","transit","kp"],"description":"Every sidereal frame behind this reading, so a cached or forwarded payload is self describing and no number sits under a label it did not come from. TWO ayanamsas are in play by design: positions are Lahiri, and the Placidus cusps plus the KP significators are KP-Newcomb, which is the frame KP owns and the split a practitioner actually works in. The two differ by about 0.09 degrees, which is under a third of a KP sub-lord span and enough to move a placement near a boundary, so the reading declares which produced what rather than leaving a caller to guess. THREE entries for two ayanamsas, because Lahiri is read at two instants: the birth moment and the sunrise of the day being read, roughly half a degree apart on a chart forty years old, six times the gap between the two ayanamsas themselves. There is no ayanamsa request field on this route and there will not be one, since a single selector cannot honour two frames and accepting it would promise something the composition cannot deliver."},"date":{"type":"string","example":"2026-06-21","description":"Civil date this reading covers, echoing the request field or the UTC date it defaulted to."},"dayStart":{"type":"string","example":"2026-06-20T23:55:43.685Z","description":"ISO instant the panchanga day begins, which is SUNRISE at the birth coordinates and not midnight. Every limb below is resolved at this instant. Where the Sun does not rise, local noon is used instead and the substitution is named in degraded rather than applied silently."},"dayEnd":{"type":"string","example":"2026-06-21T23:55:56.962Z","description":"ISO instant the panchanga day ends, which is the next sunrise."},"subject":{"type":"object","properties":{"janmaRashi":{"type":"string","example":"Aquarius","description":"Natal Moon rashi, the reference point every gochara house count in this response is taken from. Always English."},"janmaNakshatra":{"type":"string","example":"Shatabhisha","description":"Natal Moon nakshatra, the reference point the tarabala is counted from. Canonical Sanskrit."},"janmaNakshatraNumber":{"type":"number","example":24,"description":"Janma Nakshatra number 1 to 27, counted from Ashwini."},"moonLongitude":{"type":"number","example":312.4808,"description":"Sidereal longitude of the natal Moon in degrees. The single value both reference points are derived from, so any disagreement with a reference chart can be traced to its source rather than to a verdict."}},"required":["janmaRashi","janmaNakshatra","janmaNakshatraNumber","moonLongitude"],"description":"The two natal reference points this whole reading is counted from, plus the longitude they come from."},"panchanga":{"type":"object","properties":{"vara":{"type":"string","example":"Sunday","description":"Weekday of the panchanga day. The Hindu vara runs sunrise to sunrise, so it can differ from the civil weekday of the same date before dawn. Always English."},"varaSanskrit":{"type":"string","example":"Ravivara","description":"The same weekday under its Sanskrit name."},"paksha":{"type":"string","example":"Shukla","description":"Lunar fortnight at sunrise: Shukla for the waxing half, Krishna for the waning half."},"tithi":{"type":"object","properties":{"number":{"type":"number","example":7,"description":"tithi number in its own cycle, resolved at sunrise."},"name":{"type":"string","example":"Saptamī","description":"Name of the tithi running at sunrise. Canonical Sanskrit, so it stays safe to compare against in code."},"validTo":{"type":"string","example":"2026-06-21T09:51:02.874Z","description":"ISO instant this tithi ends. Read from the same transition search POST /panchang/detailed publishes, never recomputed here, so the two endpoints cannot disagree about when the event happens."},"next":{"type":"string","example":"Aṣṭamī","description":"The tithi that follows, so the rest of the day can be labelled without a second request."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"days","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."}},"required":["number","name","validTo","next","timescale"],"description":"Tithi (lunar day) running at sunrise, with the instant it ends. The tithi is the 12-degree step of the Moon away from the Sun, so its length varies through the month."},"nakshatra":{"type":"object","properties":{"number":{"type":"number","example":11,"description":"nakshatra number in its own cycle, resolved at sunrise."},"name":{"type":"string","example":"Purva Phalguni","description":"Name of the nakshatra running at sunrise. Canonical Sanskrit, so it stays safe to compare against in code."},"validTo":{"type":"string","example":"2026-06-21T04:01:32.171Z","description":"ISO instant this nakshatra ends. Read from the same transition search POST /panchang/detailed publishes, never recomputed here, so the two endpoints cannot disagree about when the event happens."},"next":{"type":"string","example":"Uttara Phalguni","description":"The nakshatra that follows, so the rest of the day can be labelled without a second request."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"days","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."}},"required":["number","name","validTo","next","timescale"],"description":"Nakshatra the Moon occupies at sunrise, with the instant it ends. This is the sky-wide limb; for what it means to THIS native, read the tara array."},"yoga":{"type":"object","properties":{"number":{"type":"number","example":16,"description":"yoga number in its own cycle, resolved at sunrise."},"name":{"type":"string","example":"Siddhi","description":"Name of the yoga running at sunrise. Canonical Sanskrit, so it stays safe to compare against in code."},"validTo":{"type":"string","example":"2026-06-21T05:51:32.757Z","description":"ISO instant this yoga ends. Read from the same transition search POST /panchang/detailed publishes, never recomputed here, so the two endpoints cannot disagree about when the event happens."},"next":{"type":"string","example":"Vyatipaata","description":"The yoga that follows, so the rest of the day can be labelled without a second request."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"days","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."}},"required":["number","name","validTo","next","timescale"],"description":"Nitya yoga running at sunrise, with the instant it ends. The 27 yogas step through the combined longitude of the Sun and the Moon."},"karana":{"type":"object","properties":{"number":{"type":"number","example":6,"description":"karana number in its own cycle, resolved at sunrise."},"name":{"type":"string","example":"Vanij","description":"Name of the karana running at sunrise. Canonical Sanskrit, so it stays safe to compare against in code."},"validTo":{"type":"string","example":"2026-06-21T09:51:02.874Z","description":"ISO instant this karana ends. Read from the same transition search POST /panchang/detailed publishes, never recomputed here, so the two endpoints cannot disagree about when the event happens."},"next":{"type":"string","example":"Vishti","description":"The karana that follows, so the rest of the day can be labelled without a second request."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"hours","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."}},"required":["number","name","validTo","next","timescale"],"description":"Karana running at sunrise, with the instant it ends. A karana is half a tithi, which is why it is the fastest of the four limbs."}},"required":["vara","varaSanskrit","paksha","tithi","nakshatra","yoga","karana"],"description":"The four panchanga limbs, each resolved at sunrise and each carrying the instant it gives way, so a client can label the whole day rather than asserting one value for it."},"grahas":{"type":"array","items":{"type":"object","properties":{"graha":{"type":"string","example":"Moon","description":"Graha name, Sun through Ketu. Always English, whatever the lang parameter says, so it stays safe to compare against in code."},"sign":{"type":"string","example":"Leo","description":"Rashi this graha is transiting on the day being read. Always English."},"longitude":{"type":"number","example":144.4294,"description":"Sidereal longitude of the transiting graha in degrees, 0 to 360, Lahiri frame."},"houseFromMoon":{"type":"number","example":7,"description":"House this graha transits counted whole-sign and inclusively from the natal Moon rashi (Janma Rashi), so the Moon rashi itself is 1. This is the reference classical Gochara is reckoned in: Phaladeepika XXVI.1 opens the transit chapter by saying that of all the Lagnas only the Moon Lagna matters for transit results. A reading counted from the Lagna instead answers a different question and every verdict below would be wrong."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"days","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."},"favourable":{"type":"boolean","example":true,"description":"Gate 1. Whether houseFromMoon is on this graha classical favourable list (Phaladeepika XXVI.2). The baseline verdict, before vedha, bindus or the nullifiers have had their say."},"favourableHouses":{"type":"array","items":{"type":"number"},"example":[1,3,6,7,10,11],"description":"Gate 1 evidence: the whole favourable list for this graha, so the baseline verdict can be checked in place without a second request or a table lookup."},"vedhaHouse":{"type":["number","null"],"example":2,"description":"Gate 2. The house whose occupation by another graha cancels this transit (Phaladeepika XXVI.3-8). Null when the transit is not favourable to begin with, since there is nothing for an obstruction to cancel."},"obstructedBy":{"type":"array","items":{"type":"string"},"example":["Saturn"],"description":"Gate 2. Grahas actually standing in vedhaHouse, with the mutual exemptions already applied. Empty when nothing obstructs. A non-empty list makes the state \"obstructed\", which is a THIRD outcome rather than a smaller number: the texts cancel the promised good outright rather than discounting it."},"vedhaExempt":{"type":"array","items":{"type":"string"},"example":["Mercury"],"description":"Gate 2. Grahas that cannot obstruct this one however they transit, from the two mutual exemptions the texts name: the Sun and Saturn do not obstruct each other, and neither do the Moon and Mercury."},"binduCount":{"type":["number","null"],"example":6,"description":"Gate 3. Bindus this graha holds in the whole sign it is transiting, 0 to 8, or null for Rahu and Ketu, which have no Bhinnashtakavarga and therefore SKIP this gate entirely rather than scoring zero. The gate reads the number two ways: a favourable house carrying fewer than 4 bindus under delivers, and an unfavourable house carrying a strict majority of the eight contributors, 5 or more, is turned good by Phaladeepika XXVI.41. Exactly 4 fires neither rule, which is the literal reading of both phrasings rather than a rounding choice. WHOSE READING THE NUMBER IS, stated because generalising it is ours: B.V. Raman prints 4 once and prints it about the MOON, then generalises the PRINCIPLE to every graha in the next sentence without repeating any number, and Phaladeepika XXVI.41 is general across grahas and also states no number. Applying 4 to all nine bodies is RoxyAPI reading the general rule through the one worked example the author gave it, and it is not a universally stated classical threshold."},"kaksha":{"type":"object","properties":{"number":{"type":"number","example":3,"description":"Kaksha number 1-8 within the current sign. Each sign divides into eight kakshas of 3 degrees 45 minutes, crossed in order, so this is how far through the sign the graha has travelled."},"lord":{"type":"string","example":"Mars","description":"Graha ruling this kaksha. The eight lords run Saturn, Jupiter, Mars, Sun, Venus, Mercury, Moon, Lagna from the start of every sign, ordered by how long each takes to cross a sign."},"startDegree":{"type":"number","example":7.5,"description":"Degree within the sign where this kaksha begins (0, 3.75, 7.5 and so on)."},"endDegree":{"type":"number","example":11.25,"description":"Degree within the sign where this kaksha ends."},"bindu":{"type":["boolean","null"],"example":true,"description":"Whether this kaksha lord gave the transiting graha a bindu in the sign being transited, which is the Gochara Kaksha verdict: true reads as a favourable stretch of the transit, false as an unfavourable one. Null means the question does not apply rather than that the answer is no, because Rahu and Ketu have no Bhinnashtakavarga to read. Never render null as unfavourable."},"binduCount":{"type":["number","null"],"example":5,"description":"Bindus the transiting graha holds in this whole sign, 0-8, or null for Rahu and Ketu. Context for the verdict, since the same kaksha reads differently in a sign worth 7 than in one worth 1."}},"required":["number","lord","startDegree","endDegree","bindu","binduCount"],"description":"Gochara Kaksha: the ashtakavarga-qualified reading of this transit. The sign says where a graha is, this says whether the exact stretch it currently occupies is one its own Bhinnashtakavarga supports, which is the classical way of refining a transit verdict from sign-level to under four degrees."},"dignity":{"type":["string","null"],"enum":["exalted","own","debilitated","enemy","neutral",null],"example":"neutral","description":"Gate 4. Dignity of the graha in the sign it is transiting, or null for Rahu and Ketu which have none. Feeds the Phaladeepika XXVI.31 shield (\"exalted\" or \"own\" does no harm in an untoward bhava) and the XXVI.32 weakness (\"debilitated\" or \"enemy\" voids a good transit). One of exalted, own, debilitated, enemy, neutral."},"combust":{"type":["boolean","null"],"example":false,"description":"Gate 4. Whether the graha is combust at the transit moment, or null for the Sun and the two nodes where the question does not arise at all. Combustion voids a good transit under Phaladeepika XXVI.32 and aggravates a bad one."},"aspectedByBenefic":{"type":"array","items":{"type":"string"},"example":[],"description":"Gate 4. Transiting natural benefics casting graha drishti on this graha. Under Phaladeepika XXVI.30 a benefic sight on a BAD result is what voids it. Read as drishti from the other TRANSITING grahas, which is a school choice this endpoint makes and states: the sloka sits between the vedha rules and the rules about the transiting graha own condition."},"aspectedByMalefic":{"type":"array","items":{"type":"string"},"example":["Mars"],"description":"Gate 4. Transiting natural malefics casting graha drishti on this graha. A malefic sight on a GOOD result voids it under Phaladeepika XXVI.30. Rahu and Ketu never appear here: they cast no drishti in this package, which is its own documented school choice, although they can be aspected."},"aspectedByEnemy":{"type":"array","items":{"type":"string"},"example":[],"description":"Gate 4. Transiting natural enemies of this graha casting graha drishti on it. Phaladeepika XXVI.30 voids the result either way for an enemy sight, whichever direction the baseline verdict pointed."},"state":{"type":"string","enum":["favourable","underdelivered","obstructed","void","aggravated","unfavourable"],"example":"obstructed","description":"The single outcome the four gates produced for this graha, and the only field the score counts. \"favourable\" is the house list holding with nothing cancelling it, \"underdelivered\" is a favourable house below the bindu delivery floor, \"obstructed\" is vedha, \"void\" is an aspect, a dignity shield or a weakness emptying the result of effect, \"aggravated\" is the one compounding rule in the chapter, and \"unfavourable\" is a house that was never on the list. Canonical English machine values: every one is a classical outcome word rather than an invented label, which is why none carries a translated sibling."},"stateSource":{"type":"string","example":"Phaladeepika XXVI.3-8, the paired vedha house is occupied","description":"The rule that decided the state, named so a verdict can be checked against its sloka without leaving the payload."}},"required":["graha","sign","longitude","houseFromMoon","timescale","favourable","favourableHouses","vedhaHouse","obstructedBy","vedhaExempt","binduCount","kaksha","dignity","combust","aspectedByBenefic","aspectedByMalefic","aspectedByEnemy","state","stateSource"]},"description":"All nine transiting grahas, each with its four gate results and the ONE state they produced. The gates run in the order the sources give them: house from the natal Moon, then vedha, then the bindu gate, then the nullifiers of Phaladeepika XXVI.30 to XXVI.32. Obstruction is terminal, so a blocked transit is never rescued by the gates that follow it."},"tara":{"type":"array","items":{"type":"object","properties":{"validFrom":{"type":"string","example":"2026-06-20T23:55:43.685Z","description":"ISO instant this tarabala window opens."},"validTo":{"type":"string","example":"2026-06-21T04:01:32.171Z","description":"ISO instant this tarabala window closes, which is when the Moon changes nakshatra."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"days","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."},"moonNakshatra":{"type":"string","example":"Purva Phalguni","description":"Nakshatra the Moon occupies during this window. Canonical Sanskrit."},"number":{"type":"number","example":6,"description":"Tara number 1 to 9, counted inclusively from the Janma Nakshatra to the Moon nakshatra and folded by 9."},"name":{"type":"string","enum":["Janma","Sampat","Vipat","Kshema","Pratyari","Sadhaka","Vadha","Mitra","Parama Mitra"],"example":"Sadhaka","description":"Name of the tara this native gets during this window, from the 9-tara cycle Janma through Parama Mitra. A Sanskrit proper noun and a canonical machine value, which is why the favourability is a separate field rather than something a caller has to infer from the word."},"quality":{"type":"string","enum":["favourable","unfavourable","neutral"],"example":"favourable","description":"Where this tara falls in the three-way classical reading. Taras 2, 4, 6, 8 and 9 are favourable, 3, 5 and 7 are not, and the 1st (Janma) is neither."}},"required":["validFrom","validTo","timescale","moonNakshatra","number","name","quality"]},"description":"Tarabala for THIS native, as an array of windows rather than one value, because the Moon can change nakshatra inside a panchanga day and the reference panchangs print two windows when it does. Three windows happen and are returned when they do. One entry means the tara held all day."},"chandrabala":{"type":"array","items":{"type":"object","properties":{"validFrom":{"type":"string","example":"2026-06-20T23:55:43.685Z","description":"ISO instant this chandrabala window opens."},"validTo":{"type":"string","example":"2026-06-21T10:10:08.968Z","description":"ISO instant this chandrabala window closes, which is when the Moon changes rashi."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"days","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."},"moonSign":{"type":"string","example":"Leo","description":"Rashi the Moon occupies during this window. Always English."},"houseFromMoon":{"type":"number","example":7,"description":"House the Moon rashi makes from the Janma Rashi, counted whole-sign and inclusively, so the Janma Rashi itself is 1. This is the number chandrabala is read off."},"favourable":{"type":"boolean","example":true,"description":"Whether the Moon stands in one of the rashis that give this native chandrabala during this window."},"ashtamaChandra":{"type":"boolean","example":false,"description":"The Moon in the 8th from the Janma Rashi. Its OWN flag, printed beside chandrabala rather than folded into it, exactly as the reference panchangs print it. Folding it in would let a caller read one boolean and miss the warning the source deliberately separates."}},"required":["validFrom","validTo","timescale","moonSign","houseFromMoon","favourable","ashtamaChandra"]},"description":"Chandrabala for THIS native, windowed for the same reason as the tarabala: the Moon can change rashi inside the panchanga day. Ashtama Chandra is a separate flag on each window."},"dasha":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","enum":["mahadasha","antardasha","pratyantardasha"],"example":"antardasha","description":"Which Vimshottari level this period is. Only mahadasha, antardasha, pratyantardasha are carried: the sookshma and prana lords turn over in hours and minutes, so embedding them would advertise a day-long cache lifetime over a value that is already stale. Use POST /dasha/current for those two."},"lord":{"type":"string","example":"Rahu","description":"Graha ruling this period. Always English."},"startDate":{"type":"string","example":"2024-08-10T12:05:00.000Z","description":"ISO instant this period begins."},"endDate":{"type":"string","example":"2027-06-17T12:05:00.000Z","description":"ISO instant this period ends."},"timescale":{"type":"string","enum":["hours","days","months","years"],"example":"years","description":"How long this component holds one verdict. Present on every component because this reading joins two genres classical literature keeps in separate books: a gochara verdict lasts as long as the graha stays in a rashi, which is years for Saturn, while a tarabala changes overnight. Without it a Saturn verdict that reads identically for nine hundred days would sit under one date field beside a limb that turns over at dawn."}},"required":["level","lord","startDate","endDate","timescale"]},"description":"The running Vimshottari chain at sunrise, outermost first, three levels deep. This is the frame the day is read inside, and it is also what the finance area reads the significators off. Empty for a chart whose cycle cannot be resolved."},"areas":{"type":"object","properties":{"finance":{"type":"object","properties":{"score":{"type":["number","null"],"example":67,"description":"Share of the running lords six-house connections that land on the positive group, 0 to 100, rounded. A COUNT, so positive and negative below reproduce it in one division: round(positive / (positive + negative) * 100), which is the same signed net the top-level score uses with no neutral member, so 50 is as many connections on each side. Zero when the running lords reach none of the six houses, which is an ABSENCE of connection rather than a negative verdict. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score. The two house groups are Krishnamurti Paddhati practice, but the NET is a KP practitioner convention rather than a classical operation: the KP sources that carry these groups use them as a promise test and an avoidance test, never as arithmetic. The groups also vary by author, and TWO houses are live disagreements rather than one. The 6th: some KP authors place it on the POSITIVE side as service income and salary, the exact opposite of the assignment used here. The 5th: it is named as a speculative GAIN house in the same KP sources that elsewhere call it a negation house, reading it as the 12th from the 6th and therefore loss of earning capacity, and both readings appear in one publication. The 1st is treated as a negation house by some authors on the same logic, as the 12th from the 2nd, and is not on either side here. This is a six house net and it is NOT the focus=finance lens, which re-reads all twelve bhavas in money vocabulary and moves no number. The two are orthogonal and both ship."},"band":{"type":["string","null"],"enum":["very-strong","strong","moderate","weak",null],"example":"strong","description":"The band the finance score falls in, on the same ladder as the top-level verdict so the two can never disagree about what a word means: \"very-strong\" above 75, \"strong\" above 50, \"moderate\" above 25, \"weak\" at 25 and below. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score."},"positive":{"type":["number","null"],"example":6,"description":"How many connections land on the positive house group 2, 5, 11, which KP reads as accumulated wealth, speculation and gains. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score."},"negative":{"type":["number","null"],"example":3,"description":"How many connections land on the negative house group 6, 8, 12, which KP reads as debt, sudden loss and expenditure. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score."},"drivers":{"type":["array","null"],"items":{"type":"object","properties":{"graha":{"type":"string","example":"Rahu","description":"The running dasha lord making this connection. A lord holding two of the three levels is listed once per house rather than twice, so nothing here is a hidden weight."},"house":{"type":"number","example":2,"description":"The finance house this lord reaches. One of the positive group 2, 5, 11 or the negative group 6, 8, 12."},"level":{"type":"integer","minimum":1,"maximum":4,"example":3,"description":"Strongest KP significator level at which this lord reaches this house, 1 to 4. Level 1 is a planet in the constellation of the occupant, 2 the occupant, 3 a planet in the constellation of the house owner, 4 the house owner. Strongest level per house wins, which is step 1 of the published grading rule the dasha routes already use."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"C","description":"The KP letter for that level, on the standard A to D significator grading. A is the strongest connection."},"dashaLevels":{"type":"array","items":{"type":"string","enum":["mahadasha","antardasha","pratyantardasha"]},"example":["antardasha"],"description":"Which of the running levels this graha rules. Carries the fact that one lord holds more than one level without letting it count twice."}},"required":["graha","house","level","grade","dashaLevels"]},"description":"Every positive-group connection, strongest KP level first. These are the specific lord-to-house links the score is made of, so the number can be audited rather than trusted. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score."},"cautions":{"type":["array","null"],"items":{"type":"object","properties":{"graha":{"type":"string","example":"Rahu","description":"The running dasha lord making this connection. A lord holding two of the three levels is listed once per house rather than twice, so nothing here is a hidden weight."},"house":{"type":"number","example":2,"description":"The finance house this lord reaches. One of the positive group 2, 5, 11 or the negative group 6, 8, 12."},"level":{"type":"integer","minimum":1,"maximum":4,"example":3,"description":"Strongest KP significator level at which this lord reaches this house, 1 to 4. Level 1 is a planet in the constellation of the occupant, 2 the occupant, 3 a planet in the constellation of the house owner, 4 the house owner. Strongest level per house wins, which is step 1 of the published grading rule the dasha routes already use."},"grade":{"type":"string","enum":["A","B","C","D"],"example":"C","description":"The KP letter for that level, on the standard A to D significator grading. A is the strongest connection."},"dashaLevels":{"type":"array","items":{"type":"string","enum":["mahadasha","antardasha","pratyantardasha"]},"example":["antardasha"],"description":"Which of the running levels this graha rules. Carries the fact that one lord holds more than one level without letting it count twice."}},"required":["graha","house","level","grade","dashaLevels"]},"description":"Every negative-group connection, strongest KP level first. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score."},"composite":{"type":["object","null"],"properties":{"score":{"type":"number","example":48,"description":"The mean itself, 0 to 100, rounded, centred on 50 like each of its terms. Every term is printed in the layers below, so the division can be redone rather than trusted."},"band":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"moderate","description":"The band the composite falls in, on the same ladder the top-level verdict uses: \"very-strong\" above 75, \"strong\" above 50, \"moderate\" above 25, \"weak\" at 25 and below."},"layers":{"type":"array","items":{"type":"object","properties":{"layer":{"type":"string","enum":["day","finance","natal"],"example":"finance","description":"Which term this row carries: \"day\" the top-level score of this reading, \"finance\" the KP net score in this area, \"natal\" the natal wealth net over the four verdict rows. Canonical English machine value, so it stays safe to switch on in code."},"score":{"type":"number","example":67,"description":"The term that went into the mean, 0 to 100. Each one is either printed elsewhere in this response or counted off a block that is, so no number enters the average unseen."},"band":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"strong","description":"Where that one term lands on its own, on the same ladder as the composite band above: \"very-strong\" above 75, \"strong\" above 50, \"moderate\" above 25, \"weak\" at 25 and below."}},"required":["layer","score","band"]},"description":"The three terms of the mean, always in the order day, finance, natal. Published so a caller who wants different weights can apply them to these same three numbers instead of asking for a second reading."}},"required":["score","band","layers"],"description":"The equal-weight mean of the three day-level layer scores printed beside it, recomputable as round((day + finance + natal) / 3). WHICH LAYER IS WHICH: \"day\" is the top-level score of this reading, \"finance\" is areas.finance.score above, and \"natal\" is the four natal wealth yoga rows on the same signed net as the day, present positive yogas for the native, a present negative one against, an absent verdict of either kind neutral, over the four rows: round(50 + 50 * (for minus against) / evaluated), so 50 is the balanced case with as many members for the native as against, 100 is every member for, 0 is every member against, and a member that is neither sits inside evaluated and pulls the result toward 50, so it is 38, 50, 63, 75 or 88 and a chart with none of the four reads 50. Every layer is centred on 50 the same way, so the mean is too. Equal weights are a RoxyAPI convention: no classical authority weights the natal chart, the running dasha and the transiting sky against each other, so the three are averaged as they are and printed beside the result, and the band uses the same ladder as verdict. The composite measures how much of this reading backs the native on this day and never the outcome of any matter: read it as support, not as a prediction. NULL IN TWO CASES, and neither is a low score. Null when the running lords reach none of the six houses, because an absence of connection is not a verdict and must not be averaged as one. Null above latitude 66.56, where the Placidus cusps the KP significators are read from have no solution: the question does not apply there rather than the answer being no, so never render it as zero or as a weak verdict. The natal block beside it is unaffected and still ships, and degraded names areas.finance.score."},"natal":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"daridra","description":"Glossary id of the verdict, one of dhana, daridra, lakshmi, dhanamalika. Use it with GET /yoga/{id} for the full glossary entry, which carries the description and the classical result in every supported language. Canonical English, so it stays safe to switch on in code."},"name":{"type":"string","example":"Daridra Yoga","description":"Classical Sanskrit name of the combination. Canonical whatever the lang parameter says, exactly as the yoga endpoints return it."},"quality":{"type":"string","enum":["Positive","Negative","Both"],"example":"Negative","description":"Which way a present verdict points, carried because three of the four are wealth combinations and Daridra is a poverty one, so present alone does not tell a client whether to read it as support or as pressure. Canonical English machine value."},"present":{"type":"boolean","example":true,"description":"Whether the combination is on this chart. False means every rule in the family was evaluated and none held, which is a real answer rather than a missing one, and the evidence beside it names the full denominator."},"evidence":{"type":"string","example":"Daridra Yoga holds on 1 of the 8 rules evaluated. daridra-7 (BPHS 42.6): the Lagna lord Sun is joined by Saturn (the 6th lord) and receives drishti from no natural benefic. Nine of the eleven catalogued Daridra rows are evaluated, as eight rules: daridra-4 and daridra-5 are the two halves of BPHS 42.4. daridra-8 and daridra-9 are excluded because B.V. Raman is their only authority, and an unverified rule may not decide a verdict.","description":"Why the verdict reads the way it does: every rule that matched, named by its own glossary id and its verse, with the exact condition it matched on, then the scope of the family. This is what makes the verdict checkable against a text rather than a label to be trusted, and it is also where the two excluded rules are declared: daridra-8 and daridra-9 rest on a single authority and are barred from deciding a verdict, though both still ship through GET /yoga/{id}. English in every language, like the per-graha stateSource, because it is provenance rather than display copy."}},"required":["id","name","quality","present","evidence"]},"description":"The natal basis of this area: whether the chart is wealthy AT ALL, as the four classical wealth and poverty verdicts dhana, daridra, lakshmi, dhanamalika, each with the evidence that decided it. A PROPERTY OF THE BIRTH CHART AND NOT OF THE DAY, so it is the same block on every date this native is ever read for, which is exactly why it is CONTEXT rather than a term: it deliberately does not enter score, verdict, tally or evaluated, above or here, and the one number it does enter is the composite beside it, where it is printed as its own layer rather than folded in. Folding a constant into a per-day number would shift every day by the identical amount, carrying no information into the only comparison those numbers support, and it would break the published closed form that makes the top-level score reproducible by hand from grahas and the two sunrise windows alone. Read it as the standing question the day is being read against. The verdicts are the same ones POST /yoga/detect and POST /birth-chart return for this chart, computed in the Lahiri natal frame rather than in the KP-Newcomb frame the significators above use. PRESENT AT EVERY LATITUDE, including above the polar circle: these verdicts need only whole-sign houses from the Lagna, so nothing about them depends on the cusps the KP members above lose there."}},"required":["score","band","positive","negative","drivers","cautions","composite","natal"],"description":"The finance area: the positive house group 2, 5, 11 netted against the negative group 6, 8, 12, read off the lords of the running dasha, bhukti and antara, because that is the KP rule for when a matter fructifies, plus the natal basis the day is read against. ALWAYS AN OBJECT. Above latitude 66.56 the seven netted members are null, because the Placidus cusps behind the significators have no solution there, while natal is still populated because it is a property of the birth chart and needs no cusps; the reading also still carries its gochara, panchanga and dasha and names the omission in degraded. The two house groups are Krishnamurti Paddhati practice, but the NET is a KP practitioner convention rather than a classical operation: the KP sources that carry these groups use them as a promise test and an avoidance test, never as arithmetic. The groups also vary by author, and TWO houses are live disagreements rather than one. The 6th: some KP authors place it on the POSITIVE side as service income and salary, the exact opposite of the assignment used here. The 5th: it is named as a speculative GAIN house in the same KP sources that elsewhere call it a negation house, reading it as the 12th from the 6th and therefore loss of earning capacity, and both readings appear in one publication. The 1st is treated as a negation house by some authors on the same logic, as the 12th from the 2nd, and is not on either side here. This is a six house net and it is NOT the focus=finance lens, which re-reads all twelve bhavas in money vocabulary and moves no number. The two are orthogonal and both ship."}},"required":["finance"],"description":"Life areas carried as a TYPED closed set rather than an open map, so every generated SDK knows which keys exist. Finance ships alone in this version, because an area is a named classical house group with a citation and not a life category invented for a dropdown. Widening it later adds a key and breaks nothing."},"score":{"type":"number","example":50,"description":"Strength of this day for this native, 0 to 100, centred on 50, over eleven members: the nine transiting grahas and the two Moon tests of the day. Each graha counts +1 when its state is favourable, -1 when its state is unfavourable or aggravated, and 0 when it is underdelivered, obstructed, void. The tarabala window holding at sunrise, tara[0], counts +1 when its quality is favourable, -1 when unfavourable and 0 when neutral; the chandrabala window holding at sunrise, chandrabala[0], counts +1 when favourable and -1 otherwise. Then score = round(50 + 50 * (for minus against) / evaluated), so 50 is the balanced case with as many members for the native as against, 100 is every member for, 0 is every member against, and a member that is neither sits inside evaluated and pulls the result toward 50. Recompute it from this response: for is the favourable count in tally plus the Moon tests that are for, against is the unfavourable and aggravated counts plus the Moon tests that are against, evaluated is the field of that name. Worked example: 2 grahas for and 4 against, both Moon tests for, out of 11 evaluated is round(50 + 50 * (4 - 4) / 11) = 50. The Moon is counted three times on a day, through its own gochara row, its rashi test and its nakshatra test, because the gochara chapter and the muhurta chapter both weigh the Moon and ask different questions of it. The four gates that decide each graha state are classical, Phaladeepika XXVI.2 to XXVI.41 and B.V. Raman on Ashtakavarga, and each graha names the rule that decided it in stateSource; tarabala and chandrabala are the two per-native day tests of the muhurta genre. The count over all of them is a RoxyAPI convention, and it is a signed count rather than a weighted sum because the texts make a high bindu count an OVERRIDE and make aspect, dignity and combustion NULLIFIERS, not points to add. How to read it: an ordinary day sits in the 40s, because nine bodies casting drishti void most transits under XXVI.30, and the slow grahas hold one verdict for a year or more while the two Moon tests turn daily, so the day moves inside the month. Above 50 the day is in favour of the native, and the top band needs six more members for than against, which is rare. It measures support, never the outcome of a matter: whether the day suits a particular purpose depends on the purpose being judged."},"verdict":{"type":"string","enum":["very-strong","strong","moderate","weak"],"example":"moderate","description":"The score as one of four bands: \"very-strong\" above 75, \"strong\" above 50, \"moderate\" above 25, \"weak\" at 25 and below. A band starts above its edge, so a balanced day at exactly 50 is \"moderate\" and \"strong\" means the net is in favour of the native. \"moderate\" is the ordinary day. \"weak\" needs the members against to outnumber the members for by more than half of those evaluated, which is six of eleven, and \"very-strong\" is the mirror of that and is rare. The same four words band the finance score, the composite and each of its layers, on the same edges, so one word means one thing everywhere in this response. Canonical English machine values, the same enum every KP significator route returns."},"tally":{"type":"array","items":{"type":"object","properties":{"state":{"type":"string","enum":["favourable","underdelivered","obstructed","void","aggravated","unfavourable"],"example":"void","description":"One of the six outcomes a transiting graha can reach."},"count":{"type":"number","example":2,"description":"How many of the evaluated grahas reached that state."}},"required":["state","count"]},"description":"The full per-state count over the nine grahas, always all six states including the zeros, so it sums to nine and not to evaluated. This is the graha part of the input to the score; the other two members are read from tara[0] and chandrabala[0]. Published so the number is reproducible by hand, and so a caller who reads the states differently can compute their own figure from this response."},"evaluated":{"type":"number","example":11,"description":"How many members the score was taken over, and its denominator: the nine grahas put through the gates plus the two Moon tests read at sunrise, tara[0] and chandrabala[0]. Rahu and Ketu are among the nine: they skip the bindu gate because they have no Bhinnashtakavarga, and a skipped gate is not a failed one, so they still reach a state through the other three."},"degraded":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string","enum":["dayStart","dayEnd","areas.finance.score"],"example":"areas.finance.score","description":"Which part of the reading this location or date could not supply. \"areas.finance.score\" names the KP net by the member it is read through: the finance area itself always ships and its natal block is always populated, and it is the seven netted members that are null."},"reason":{"type":"string","enum":["sun-does-not-rise","polar-latitude"],"example":"polar-latitude","description":"Why it could not: \"sun-does-not-rise\" for a day with no sunrise at these coordinates, \"polar-latitude\" above 66.56 degrees where the Placidus cusps have no solution."}},"required":["component","reason"]},"description":"Components this request could not supply, named rather than silently defaulted. Empty on an ordinary reading. A polar chart degrades through here instead of failing, so the caller still gets the gochara, the panchanga, the dasha and the natal basis of the finance area, and is told exactly what is missing."},"houseThemes":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"example":["wealth","family","speech","possessions","food"],"description":"Short keyword significations of the bhava this key numbers, localized by the lang query parameter and drawn from the vocabulary the focus parameter selected. Join it against any house number elsewhere in the response to render readable text."},"example":{"2":["wealth","family","speech","possessions","food"]},"description":"Significations of each of the twelve bhavas (houses), keyed by house number 1 to 12, as short keywords. Bhava 1 is the Lagna (self, body, vitality), 2 wealth and speech, 4 home and mother, 7 marriage and partnership, 10 career and status, 11 gains. Use it to label the house numbers returned elsewhere in the response: a Vimshottari dasha period signifying houses 2, 7 and 8, or a KP significator carrying houses 11 and 6, becomes readable text without a separate lookup call. Returned once per response rather than repeated per period, and localized by the lang query parameter alongside every other interpretation field."},"focus":{"type":"string","enum":["general","finance"],"example":"general","description":"Which signification vocabulary produced the houseThemes keywords in this response, echoing the focus query parameter. Always present, and \"general\" when the parameter was omitted. Read it to label a rendered house legend, or to tell two cached responses apart when only one asked for the finance lens."}},"required":["frames","date","dayStart","dayEnd","subject","panchanga","grahas","tara","chandrabala","dasha","areas","score","verdict","tally","evaluated","degraded","houseThemes","focus"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/panchang/basic":{"post":{"operationId":"getBasicPanchang","tags":["Vedic Astrology"],"summary":"Get basic Panchang - Tithi Nakshatra Yoga Karana Calculator","description":"Calculate Panchang elements (Hindu calendar) for any date: Tithi (lunar day), Nakshatra (lunar mansion), Yoga, and Karana. Daily panchang API for determining auspicious timings (muhurta), festival dates, and planetary influences. Tithi calculator with Shukla/Krishna paksha. Accurate nakshatra today with ruling planet. Essential for Hindu calendar integration, muhurta selection, and Vedic timekeeping in astrology apps.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2025-12-17","description":"Date in YYYY-MM-DD format. Panchang elements (Tithi, Nakshatra, Yoga, Karana) are calculated for this date."},"time":{"type":"string","format":"time","example":"12:00:00","description":"Time in HH:MM:SS format (24-hour). Determines the exact Moon and Sun positions for tithi and nakshatra calculation."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Observer latitude in decimal degrees. Determines sunrise/sunset times which define the Vara (weekday) and muhurta boundaries."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Observer longitude in decimal degrees. Affects local time calculations for sunrise/sunset-dependent panchang elements."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in decimal hours. Defaults to 5.5 (IST).","example":5.5}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"Basic panchang with all five limbs (Tithi, Nakshatra, Yoga, Karana, Vara) including lunar phase, paksha, ruling planets, deities, and interpretive characteristics.","content":{"application/json":{"schema":{"type":"object","properties":{"tithi":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":30,"example":5,"description":"Tithi number (1-30). 1-15 are Shukla Paksha (waxing), 16-30 are Krishna Paksha (waning). Purnima is 15, Amavasya is 30."},"name":{"type":"string","example":"Panchami","description":"Sanskrit name of the tithi (lunar day). One of 30 tithis in the lunar month cycle."},"paksha":{"type":"string","enum":["Shukla","Krishna"],"example":"Shukla","description":"Lunar fortnight: Shukla (waxing, bright half) or Krishna (waning, dark half)."},"percent":{"type":"number","minimum":0,"maximum":100,"example":67.5,"description":"Percentage of the current tithi elapsed (0-100). Useful for determining tithi strength and transition proximity."},"deity":{"type":"string","example":"Vishnu","description":"Presiding deity of this tithi from Vedic tradition."},"rulingPlanet":{"type":"string","example":"Sun","description":"Planetary ruler of this tithi. Influences the day energy and activities."},"element":{"type":"string","example":"Fire","description":"Elemental quality of this tithi (Fire, Earth, Air, Water, Ether)."}},"required":["number","name","paksha","percent"],"description":"Lunar day (tithi) information with interpretations. Central panchang element for determining auspicious timings."},"nakshatra":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":27,"example":1,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini. Each nakshatra spans 13 degrees 20 minutes."},"name":{"type":"string","example":"Ashwini","description":"Sanskrit name of the nakshatra (lunar mansion). One of 27 nakshatras spanning the zodiac belt."},"lord":{"type":"string","example":"Ketu","description":"Planetary ruler of this nakshatra. Determines Vimshottari dasha lord and influences nakshatra characteristics."},"pada":{"type":"integer","minimum":1,"maximum":4,"example":2,"description":"Pada (quarter, 1-4) of the nakshatra. Each nakshatra has 4 padas spanning 3 degrees 20 minutes each. Determines the navamsha sign and fine-tunes nakshatra predictions."},"deity":{"type":"string","example":"Ashwini Kumaras","description":"Presiding deity of this nakshatra from Vedic mythology. Influences spiritual qualities and karmic themes."},"symbol":{"type":"string","example":"Horse Head","description":"Traditional symbol representing this nakshatra. Reflects core energy and life themes."},"characteristics":{"type":"string","example":"Quick, healing energy","description":"Personality traits and behavioral tendencies when the Moon occupies this nakshatra. Useful for daily panchang readings."}},"required":["number","name","lord","pada"],"description":"Nakshatra (lunar mansion) information with interpretations"},"yoga":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":27,"example":1,"description":"Nitya Yoga index (1-27). Calculated from the sum of Sun and Moon sidereal longitudes divided by 13 degrees 20 minutes."},"name":{"type":"string","example":"Vishkumbha","description":"Sanskrit name of the Nitya Yoga. One of 27 yogas formed by combined Sun-Moon motion, each with distinct auspiciousness."},"characteristics":{"type":"string","example":"Auspicious for new beginnings","description":"Characteristics and auspiciousness of this yoga for activity planning."}},"required":["number","name"],"description":"Nitya Yoga information. Yoga is the third panchang element, derived from combined Sun-Moon longitude."},"karana":{"type":"object","properties":{"number":{"type":"integer","example":7,"description":"Karana index. There are 11 karanas total (4 fixed + 7 movable) cycling through 60 half-tithis per lunar month."},"name":{"type":"string","example":"Bava","description":"Sanskrit name of the karana. 7 movable karanas (Bava through Naga) repeat 8 times, plus 4 fixed karanas."},"type":{"type":"string","example":"Movable","description":"Karana type: Movable (repeating, generally auspicious) or Fixed (occur once per month)."},"characteristics":{"type":"string","example":"Good for travel and movement","description":"Activity suitability and characteristics of this karana for muhurta selection."}},"required":["number","name"],"description":"Karana (half-tithi) information. Fourth panchang element, changes twice per tithi."},"sunLongitude":{"type":"number","example":265.42,"description":"Sidereal longitude of the Sun in degrees (0-360). Used for tithi and yoga calculations."},"moonLongitude":{"type":"number","example":315.67,"description":"Sidereal longitude of the Moon in degrees (0-360). Moon moves ~13 degrees per day through the nakshatras."}},"required":["tithi","nakshatra","yoga","karana","sunLongitude","moonLongitude"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/panchang/detailed":{"post":{"operationId":"getDetailedPanchang","tags":["Vedic Astrology"],"summary":"Get detailed Panchang with Rahu Kaal, Yamaganda, Gulika","description":"Complete daily panchang with all five limbs (Tithi, Nakshatra, Yoga, Karana, Vara) plus sunrise, sunset, moonrise, moonset times. Includes inauspicious periods (Rahu Kaal, Yamaganda, Gulika Kaal) and auspicious windows (Abhijit Muhurta, Brahma Muhurta). Current planetary hora with start/end times. Essential for muhurta selection, daily horoscope apps, Hindu calendar integration, and electional astrology. Accurate calculations based on observer location.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2026-02-03","description":"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Observer latitude in decimal degrees. Determines sunrise and sunset times which define day/night boundaries for muhurta calculations."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Observer longitude in decimal degrees. Affects local time calculations for sunrise, sunset, and muhurta period boundaries."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in decimal hours, for example -5 for New York or 9 for Tokyo. Send the offset that matches the coordinates: sunrise, sunset and every muhurta boundary are found by searching forward from local midnight, so the default anchors the search to an Indian day. Omitting it for a location outside IST returns a correctly ordered set of periods for the wrong window, shifted by the difference between 5.5 and the real offset. Defaults to 5.5 (IST).","example":5.5}},"required":["date","latitude","longitude"]}}}},"responses":{"200":{"description":"Full daily panchang with five limbs, sunrise/sunset/moonrise/moonset times, inauspicious periods (Rahu Kaal, Yamaganda, Gulika Kaal), auspicious muhurtas (Abhijit, Brahma), current hora, panchang transitions, and panchaka/bhadra/varjyam/amrit kalam analysis.","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","example":"2026-02-03","description":"Date for which panchang is calculated."},"location":{"type":"object","properties":{"latitude":{"type":"number","example":28.6139,"description":"Observer latitude used for sunrise/sunset calculation."},"longitude":{"type":"number","example":77.209,"description":"Observer longitude used for sunrise/sunset calculation."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset from UTC in hours."}},"required":["latitude","longitude","timezone"],"description":"Location coordinates used for all time-based calculations."},"vara":{"type":"object","properties":{"name":{"type":"string","example":"Tuesday","description":"Weekday name in English. Vara begins at local sunrise, not at midnight, so a time before sunrise belongs to the previous vara."},"sanskritName":{"type":"string","example":"Mangalavara","description":"Vara name transliterated from Sanskrit: Ravivara, Somavara, Mangalavara, Budhavara, Guruvara, Shukravara, Shanivara. Use this rather than name for a Jyotish-facing reading, since it is the form the classical texts use and it does not change with the lang parameter."},"lord":{"type":"string","example":"Mars","description":"Ruling planet of the day (Vara lord). Influences day-level auspiciousness."}},"required":["name","sanskritName","lord"],"description":"Vara (weekday) information based on Hindu sunrise calendar."},"sunrise":{"type":"string","example":"2026-02-03T07:12:00","description":"Local sunrise in the requested timezone as YYYY-MM-DDTHH:MM:SS, with no zone suffix. Marks the start of the Hindu day."},"sunset":{"type":"string","example":"2026-02-03T18:32:00","description":"Local sunset in the requested timezone as YYYY-MM-DDTHH:MM:SS, with no zone suffix. Marks the transition to night muhurtas."},"moonrise":{"type":["string","null"],"example":"2026-02-03T20:03:00","description":"Moonrise time in the requested timezone. Can be null if Moon does not rise on this date."},"moonset":{"type":["string","null"],"example":"2026-02-03T08:10:00","description":"Moonset time in the requested timezone. Can be null if Moon does not set on this date."},"moonSign":{"type":"object","properties":{"name":{"type":"string","example":"Capricorn","description":"Moon rashi (sidereal zodiac sign) at sunrise."},"sanskritName":{"type":"string","example":"Makara","description":"Sanskrit name of the Moon rashi."}},"required":["name","sanskritName"],"description":"Moon sign (Chandra Rashi) at sunrise. Central to Vedic astrology. determines daily emotional tone, Chandrabalam, and Tarabalam."},"sunSign":{"type":"object","properties":{"name":{"type":"string","example":"Aquarius","description":"Sun rashi (sidereal zodiac sign) at sunrise."},"sanskritName":{"type":"string","example":"Kumbha","description":"Sanskrit name of the Sun rashi."}},"required":["name","sanskritName"],"description":"Sun sign (Surya Rashi) at sunrise. Determines the solar month (Saura Masa) in the Hindu calendar. Changes approximately once a month (Sankranti)."},"sunNakshatra":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":27,"example":21,"description":"Sun nakshatra number (1-27)."},"name":{"type":"string","example":"Dhanishtha","description":"Name of the nakshatra the Sun occupies."},"lord":{"type":"string","example":"Mars","description":"Ruling planet (lord) of the Sun nakshatra."},"pada":{"type":"integer","minimum":1,"maximum":4,"example":3,"description":"Pada (quarter) of the Sun nakshatra."}},"required":["number","name","lord","pada"],"description":"Sun nakshatra at sunrise. The Sun spends approximately 13-14 days in each nakshatra. Used for Surya-based muhurta and festival calculations."},"tithi":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":30,"example":5,"description":"Tithi number (1-30). 1-15 are Shukla Paksha (waxing), 16-30 are Krishna Paksha (waning). Purnima is 15, Amavasya is 30."},"name":{"type":"string","example":"Panchami","description":"Sanskrit name of the tithi (lunar day). One of 30 tithis in the lunar month cycle."},"paksha":{"type":"string","enum":["Shukla","Krishna"],"example":"Shukla","description":"Lunar fortnight: Shukla (waxing, bright half) or Krishna (waning, dark half)."},"percent":{"type":"number","minimum":0,"maximum":100,"example":67.5,"description":"Percentage of the current tithi elapsed (0-100). Useful for determining tithi strength and transition proximity."},"deity":{"type":"string","example":"Vishnu","description":"Presiding deity of this tithi from Vedic tradition."},"rulingPlanet":{"type":"string","example":"Sun","description":"Planetary ruler of this tithi. Influences the day energy and activities."},"element":{"type":"string","example":"Fire","description":"Elemental quality of this tithi (Fire, Earth, Air, Water, Ether)."}},"required":["number","name","paksha","percent"],"description":"Lunar day (tithi) information with interpretations. Central panchang element for determining auspicious timings."},"nakshatra":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":27,"example":1,"description":"Nakshatra index (1-27) in the zodiac sequence starting from Ashwini. Each nakshatra spans 13 degrees 20 minutes."},"name":{"type":"string","example":"Ashwini","description":"Sanskrit name of the nakshatra (lunar mansion). One of 27 nakshatras spanning the zodiac belt."},"lord":{"type":"string","example":"Ketu","description":"Planetary ruler of this nakshatra. Determines Vimshottari dasha lord and influences nakshatra characteristics."},"pada":{"type":"integer","minimum":1,"maximum":4,"example":2,"description":"Pada (quarter, 1-4) of the nakshatra. Each nakshatra has 4 padas spanning 3 degrees 20 minutes each. Determines the navamsha sign and fine-tunes nakshatra predictions."},"deity":{"type":"string","example":"Ashwini Kumaras","description":"Presiding deity of this nakshatra from Vedic mythology. Influences spiritual qualities and karmic themes."},"symbol":{"type":"string","example":"Horse Head","description":"Traditional symbol representing this nakshatra. Reflects core energy and life themes."},"characteristics":{"type":"string","example":"Quick, healing energy","description":"Personality traits and behavioral tendencies when the Moon occupies this nakshatra. Useful for daily panchang readings."}},"required":["number","name","lord","pada"],"description":"Nakshatra (lunar mansion) information with interpretations"},"yoga":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":27,"example":1,"description":"Nitya Yoga index (1-27). Calculated from the sum of Sun and Moon sidereal longitudes divided by 13 degrees 20 minutes."},"name":{"type":"string","example":"Vishkumbha","description":"Sanskrit name of the Nitya Yoga. One of 27 yogas formed by combined Sun-Moon motion, each with distinct auspiciousness."},"characteristics":{"type":"string","example":"Auspicious for new beginnings","description":"Characteristics and auspiciousness of this yoga for activity planning."}},"required":["number","name"],"description":"Nitya Yoga information. Yoga is the third panchang element, derived from combined Sun-Moon longitude."},"karana":{"type":"object","properties":{"number":{"type":"integer","example":7,"description":"Karana index. There are 11 karanas total (4 fixed + 7 movable) cycling through 60 half-tithis per lunar month."},"name":{"type":"string","example":"Bava","description":"Sanskrit name of the karana. 7 movable karanas (Bava through Naga) repeat 8 times, plus 4 fixed karanas."},"type":{"type":"string","example":"Movable","description":"Karana type: Movable (repeating, generally auspicious) or Fixed (occur once per month)."},"characteristics":{"type":"string","example":"Good for travel and movement","description":"Activity suitability and characteristics of this karana for muhurta selection."}},"required":["number","name"],"description":"Karana (half-tithi) information. Fourth panchang element, changes twice per tithi."},"hora":{"type":"object","properties":{"current":{"type":"string","example":"Mars","description":"Planet ruling the current hora (planetary hour). Each hora lasts ~1 hour."},"number":{"type":"number","example":5,"description":"Hora number within the day sequence (1-24)."},"start":{"type":"string","example":"2026-02-03T07:08:00","description":"Start time of the current hora, as local civil time in the requested timezone offset. The first hora of any day begins at local sunrise, so this equals the sunrise field when the hora number is 1."},"end":{"type":"string","example":"2026-02-03T08:02:00","description":"End time of the current hora, as local civil time in the requested timezone offset. Day horas and night horas have different lengths, so a hora is only approximately 60 minutes."}},"required":["current","number","start","end"],"description":"Current planetary hora. Used for electional astrology and muhurta selection."},"rahuKaal":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Rahu Kaal, inauspicious period ruled by Rahu. Avoid starting new ventures. Calculated from sunrise duration divided into 8 parts."},"yamaganda":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Yamaganda, inauspicious period ruled by Yama (lord of death). Avoid important activities."},"gulika":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Gulika Kaal, inauspicious period ruled by Saturn son Gulika. Considered harmful for initiating work."},"abhijitMuhurta":{"type":["object","null"],"properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Abhijit Muhurta (Abhijit Muhurat), the most auspicious ~48-minute window around solar noon, the 8th of 15 day muhurtas. Ideal for starting new ventures, signing contracts, and performing rituals when no other shubh muhurat is available. Null on Wednesdays because Abhijit coincides with Dur Muhurta on that weekday per Muhurta Chintamani."},"brahmaMuhurta":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Brahma Muhurta, sacred pre-dawn period approximately 96 minutes before sunrise (14th of 15 night muhurtas). Considered the best time for meditation, mantra japa, Vedic study, and spiritual sadhana. Referenced in Ashtanga Hridaya and Dharmashastra texts."},"vijayaMuhurta":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Vijaya Muhurta (Vijay Muhurat), the 11th of 15 day muhurtas between sunrise and sunset. Auspicious for journeys, legal proceedings, competitions, warfare, and any activity requiring victory or success. Used in electional astrology (muhurta shastra) for timing important undertakings."},"nishitaMuhurta":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Nishita Muhurta (Nishith Kaal), the 8th of 15 night muhurtas from sunset to next sunrise, occurring around midnight. Sacred period for worship of Lord Shiva, especially on Maha Shivaratri. Also significant for Janmashtami midnight celebrations and tantric sadhana."},"godhuliMuhurta":{"type":["object","null"],"properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Godhuli Muhurta (cow dust time), 12 minutes before sunset to 12 minutes after sunset. Universally auspicious for any activity, especially marriages and grihapravesha. No blemish from tithi, vara, nakshatra, karana, or yoga applies during Godhuli. Null only in polar regions where sun does not set."},"pratahSandhya":{"type":["object","null"],"properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Pratah Sandhya, morning twilight junction period for Sandhyavandanam prayer. Spans 3 night ghatis before sunrise to sunrise. Duration varies by location and season based on ratrimana (night duration). One of the three daily Sandhya prayer times prescribed in Dharmashastra."},"sayahnaSandhya":{"type":["object","null"],"properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"],"description":"Sayahna Sandhya, evening twilight junction period for Sandhyavandanam prayer. Spans sunset to 3 night ghatis after sunset. Duration varies by location and season based on ratrimana (night duration). One of the three daily Sandhya prayer times prescribed in Dharmashastra."},"durMuhurta":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"]},"description":"Dur Muhurta (Dur Muhurtam), inauspicious muhurta periods determined by the weekday. The daytime is divided into 15 muhurtas from sunrise to sunset. Specific muhurta numbers are inauspicious each weekday per Muhurta Chintamani. Each period lasts ~48 minutes. Most days have 2 Dur Muhurtas, Wednesday and Sunday have 1. Avoid initiating important activities during these periods."},"varjyam":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"]},"description":"Varjyam (Thyajyam, Vishghati, Nakshatra Thyajyam), inauspicious ~96-minute period based on Moon transit through specific ghati fractions within the current nakshatra. Each of the 27 nakshatras has a fixed Varjyam window measured in ghatikas (1 ghati = 24 minutes). Avoid starting new ventures, travel, or auspicious ceremonies during Varjyam. Usually 1-2 periods per panchang day."},"amritKalam":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","example":"2026-02-03T09:00:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."},"end":{"type":"string","example":"2026-02-03T10:30:00","description":"Period end time in ISO 8601 format. Timezone-adjusted based on the input timezone offset."}},"required":["start","end"]},"description":"Amrit Kalam (Amrit Ghati, Amrita Yoga), the most auspicious ~96-minute period based on Moon transit through specific ghati fractions within the current nakshatra. Each of the 27 nakshatras has a fixed Amrit window. Activities initiated during Amrit Kalam are believed to yield excellent, lasting results. Highly recommended for muhurta selection when other auspicious yogas are absent. Usually 1-2 periods per panchang day."},"chandrabalam":{"type":"object","properties":{"favorableRashis":{"type":"array","items":{"type":"string"},"example":["Aries","Taurus","Leo","Libra","Sagittarius","Capricorn"],"description":"Rashis (zodiac signs) for which Moon transit is favorable today. Chandrabalam is positive when Moon transits 1st, 3rd, 6th, 7th, 10th, or 11th house from birth rashi."},"ashtamaChandraRashi":{"type":"string","example":"Pisces","description":"Rashi for which Moon is in Ashtama (8th house) position. highly inauspicious. Natives of this rashi should avoid important activities."}},"required":["favorableRashis","ashtamaChandraRashi"],"description":"Chandrabalam (Moon strength). indicates auspiciousness of Moon transit for each birth rashi. Essential for muhurta selection in Vedic electional astrology."},"tarabalam":{"type":"object","properties":{"favorableNakshatras":{"type":"array","items":{"type":"string"},"example":["Bharani","Rohini","Ardra","Pushya","Ashlesha"],"description":"Birth nakshatras with favorable Tarabalam based on Moon nakshatra transit. Derived from the 9-Tara system. taras Sampat, Kshema, Sadhaka, Mitra, and Parama Mitra are favorable."},"unfavorableNakshatras":{"type":"array","items":{"type":"string"},"example":["Krittika","Mrigashira","Punarvasu"],"description":"Birth nakshatras with unfavorable Tarabalam (Vipat, Pratyari, Vadha taras). Natives of these birth nakshatras should exercise caution."}},"required":["favorableNakshatras","unfavorableNakshatras"],"description":"Tarabalam (Star strength). based on the 9-Tara nakshatra cycle. Determines favorability of Moon nakshatra transit relative to each of the 27 birth nakshatras."},"panchaka":{"type":"object","properties":{"active":{"type":"boolean","example":true,"description":"True when Panchaka is in effect on this date, whether it is already running at sunrise or begins later in the day, in which case startsAt and endsAt give the window. False only when no Panchaka touches this date."},"type":{"type":["string","null"],"example":"Mrityu","description":"Panchaka dosha, set by the weekday the period BEGINS (not the nakshatra): Roga (Sunday, disease), Raja (Monday, government), Agni (Tuesday, fire), Chora (Friday, theft), Mrityu (Saturday, death). Null when Panchaka begins on Wednesday or Thursday (no dosha) or when no Panchaka touches this date."},"startsAt":{"type":["string","null"],"example":"2026-06-06T19:03:00","description":"When the Panchaka period starts (Moon enters 300 degrees, Dhanishta 3rd pada). May predate this date when Panchaka is already running. Null when no Panchaka is in force or begins on this date. In requested timezone."},"endsAt":{"type":["string","null"],"example":"2026-06-11T08:15:00","description":"When the Panchaka period ends (Moon exits Revati at 360 degrees), about five days after it starts. Null when no Panchaka. In requested timezone."}},"required":["active","type","startsAt","endsAt"],"description":"Panchaka, the inauspicious ~5-day window while the Moon transits the last five nakshatras (Dhanishta 3rd pada through Revati, 300 to 360 degrees sidereal). The dosha type depends on the weekday it begins; startsAt and endsAt report the period in force at sunrise or beginning later this day. Avoid major activities during Panchaka."},"bhadra":{"type":"object","properties":{"active":{"type":"boolean","example":true,"description":"True when a Bhadra (Vishti Karana) occurs on this date, in which case startsAt and endsAt give its window. False only when no Bhadra begins on this date."},"startsAt":{"type":["string","null"],"example":"2026-06-10T13:53:00","description":"When the Bhadra (Vishti) period that begins on this date starts. Null when no Bhadra begins on this date. In requested timezone."},"endsAt":{"type":["string","null"],"example":"2026-06-11T00:58:00","description":"When the Bhadra (Vishti) period that begins on this date ends. May fall on the next calendar day. Null when no Bhadra begins on this date. In requested timezone."}},"required":["active","startsAt","endsAt"],"description":"Bhadra (Vishti Karana), the 7th movable karana, avoided for all auspicious activities. Bhadra recurs roughly every 3 to 5 days and lasts about half a tithi. active is true whenever a Bhadra is attributed to this date; startsAt and endsAt give the window, which may end on the next calendar day."},"transitions":{"type":"object","properties":{"tithi":{"type":"object","properties":{"endsAt":{"type":"string","example":"2026-02-03T14:53:00","description":"ISO 8601 UTC time when the current tithi ends. Precise to ~1 minute via binary search."},"next":{"type":"string","example":"Dvadashi","description":"Name of the next tithi that begins after the transition."}},"required":["endsAt","next"],"description":"Tithi (lunar day) transition timing: when the current tithi ends and the next one begins."},"yoga":{"type":"object","properties":{"endsAt":{"type":"string","example":"2026-02-03T10:15:00","description":"ISO 8601 UTC time when the current yoga ends."},"next":{"type":"string","example":"Shobhana","description":"Name of the next yoga."}},"required":["endsAt","next"],"description":"Nitya Yoga transition timing: when the current yoga period ends. Based on combined Sun-Moon motion."},"karana":{"type":"object","properties":{"endsAt":{"type":"string","example":"2026-02-03T08:30:00","description":"ISO 8601 UTC time when the current karana ends."},"next":{"type":"string","example":"Balava","description":"Name of the next karana (half-tithi)."}},"required":["endsAt","next"],"description":"Karana (half-tithi) transition. karanas change twice per tithi. Important for muhurta timing."},"nakshatra":{"type":"object","properties":{"endsAt":{"type":"string","example":"2026-02-03T16:22:00","description":"ISO 8601 UTC time when the Moon leaves the current nakshatra."},"next":{"type":"string","example":"Jyeshtha","description":"Name of the next nakshatra the Moon will enter."},"nextPada":{"type":"number","example":1,"description":"Pada (quarter, 1-4) of the next nakshatra. Each nakshatra has 4 padas spanning 3 degrees 20 minutes each."}},"required":["endsAt","next","nextPada"],"description":"Nakshatra (lunar mansion) transition timing: when Moon moves to the next nakshatra. Critical for muhurta and Tarabalam calculations."},"moonSign":{"type":"object","properties":{"current":{"type":"string","example":"Libra","description":"Current Moon rashi (zodiac sign)."},"changesAt":{"type":"string","example":"2026-02-04T01:11:00","description":"ISO 8601 UTC time when Moon enters the next rashi. Moon changes sign approximately every 2.25 days."},"next":{"type":"string","example":"Scorpio","description":"Next rashi the Moon will enter."}},"required":["current","changesAt","next"],"description":"Moon sign (Chandra rashi) transition, when Moon changes zodiac sign. Affects Chandrabalam, Tarabalam, and daily horoscope predictions."}},"required":["tithi","yoga","karana","nakshatra","moonSign"],"description":"Panchang element transition times: when each element (tithi, yoga, karana, nakshatra, Moon sign) changes, found to the second. Essential for precise muhurta determination and panchang calendars."}},"required":["date","location","vara","sunrise","sunset","moonrise","moonset","moonSign","sunSign","sunNakshatra","tithi","nakshatra","yoga","karana","hora","rahuKaal","yamaganda","gulika","abhijitMuhurta","brahmaMuhurta","vijayaMuhurta","nishitaMuhurta","godhuliMuhurta","pratahSandhya","sayahnaSandhya","durMuhurta","varjyam","amritKalam","chandrabalam","tarabalam","panchaka","bhadra","transitions"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/panchang/choghadiya":{"post":{"operationId":"getChoghadiya","tags":["Vedic Astrology"],"summary":"Get Choghadiya - 8 Muhurta divisions of day and night","description":"Calculate Choghadiya (Chaughadia) muhurta timings for any date and location. Divides day (sunrise to sunset) and night (sunset to next sunrise) into 8 equal auspicious/inauspicious periods. Each period ruled by a planet: Udveg (Sun, bad), Amrit (Moon, good), Rog (Mars, bad), Labh (Mercury, good), Shubh (Jupiter, good), Char (Venus, good), Kaal (Saturn, bad). Essential for muhurta selection, daily planning, and traditional Hindu timekeeping. Choghadiya calculator API, daily muhurat timings, auspicious time finder.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2026-02-03","description":"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":17.385044,"description":"Observer latitude in decimal degrees. Determines sunrise and sunset times which define day/night boundaries for muhurta calculations."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":78.486671,"description":"Observer longitude in decimal degrees. Affects local time calculations for sunrise, sunset, and muhurta period boundaries."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in decimal hours. Used for accurate sunrise/sunset calculation and output time formatting. Essential for correct Choghadiya periods outside IST. Defaults to 5.5 (IST).","example":5.5}},"required":["date","latitude","longitude"]}}}},"responses":{"200":{"description":"8 daytime and 8 nighttime Choghadiya muhurta periods with names, ruling planets, auspiciousness ratings (Good/Bad), and exact start/end times based on sunrise and sunset.","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","example":"2026-02-03","description":"Calendar date the choghadiya muhurta table was computed for, YYYY-MM-DD, echoed back from the request. The day periods run from that date sunrise to its sunset, and the night periods run on to the next sunrise."},"dayChoghadiya":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["Udveg","Amrit","Rog","Labh","Shubh","Char","Kaal"],"example":"Shubh","description":"Choghadiya muhurta name. Auspicious: Amrit (Moon), Shubh (Jupiter), Labh (Mercury), Char (Venus). Inauspicious: Udveg (Sun), Rog (Mars), Kaal (Saturn)."},"lord":{"type":"string","example":"Jupiter","description":"Ruling planet of this Choghadiya period. Planet determines the quality and suitability of activities during this muhurta."},"effect":{"type":"string","enum":["Good","Bad"],"example":"Good","description":"Auspiciousness of this period. Good periods (Amrit, Shubh, Labh, Char) are suitable for important activities. Bad periods (Udveg, Rog, Kaal) should be avoided."},"start":{"type":"string","example":"2026-02-03T01:10:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on input timezone offset."},"end":{"type":"string","example":"2026-02-03T02:30:00","description":"Period end time in ISO 8601 format. Each Choghadiya period is one-eighth of the day or night duration."}},"required":["name","lord","effect","start","end"]},"description":"8 daytime choghadiya periods (sunrise to sunset)"},"nightChoghadiya":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","enum":["Udveg","Amrit","Rog","Labh","Shubh","Char","Kaal"],"example":"Shubh","description":"Choghadiya muhurta name. Auspicious: Amrit (Moon), Shubh (Jupiter), Labh (Mercury), Char (Venus). Inauspicious: Udveg (Sun), Rog (Mars), Kaal (Saturn)."},"lord":{"type":"string","example":"Jupiter","description":"Ruling planet of this Choghadiya period. Planet determines the quality and suitability of activities during this muhurta."},"effect":{"type":"string","enum":["Good","Bad"],"example":"Good","description":"Auspiciousness of this period. Good periods (Amrit, Shubh, Labh, Char) are suitable for important activities. Bad periods (Udveg, Rog, Kaal) should be avoided."},"start":{"type":"string","example":"2026-02-03T01:10:00","description":"Period start time in ISO 8601 format. Timezone-adjusted based on input timezone offset."},"end":{"type":"string","example":"2026-02-03T02:30:00","description":"Period end time in ISO 8601 format. Each Choghadiya period is one-eighth of the day or night duration."}},"required":["name","lord","effect","start","end"]},"description":"8 nighttime choghadiya periods (sunset to next sunrise)"}},"required":["date","dayChoghadiya","nightChoghadiya"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/panchang/hora":{"post":{"operationId":"getHora","tags":["Vedic Astrology"],"summary":"Get Hora - 24 Planetary Hours (12 day + 12 night)","description":"Calculate all 24 Hora (planetary hour) periods for any date and location. Day is divided into 12 equal horas from sunrise to sunset, night into 12 equal horas from sunset to next sunrise. Each hora is ruled by a planet in the Chaldean sequence starting from the day lord. Hora timings API, planetary hours calculator, Vedic hora chart, electional astrology timing.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2026-02-03","description":"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":17.385044,"description":"Observer latitude in decimal degrees. Determines sunrise and sunset times which define day/night boundaries for muhurta calculations."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":78.486671,"description":"Observer longitude in decimal degrees. Affects local time calculations for sunrise, sunset, and muhurta period boundaries."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in decimal hours. Used for accurate sunrise/sunset calculation and output time formatting. Essential for correct Hora periods outside IST. Defaults to 5.5 (IST).","example":5.5}},"required":["date","latitude","longitude"]}}}},"responses":{"200":{"description":"12 daytime and 12 nighttime Hora (planetary hour) periods with ruling planet, sequence number, and exact start/end times based on sunrise and sunset.","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","example":"2026-02-03","description":"Date for which hora periods were calculated."},"dayHoras":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Jupiter","description":"Ruling planet of this hora period. Follows the Chaldean planetary order: Sun, Venus, Mercury, Moon, Saturn, Jupiter, Mars."},"number":{"type":"number","example":1,"description":"Hora period number within the day or night segment (1-12)."},"start":{"type":"string","example":"2026-02-03T01:10:00","description":"Start time of the hora period in ISO 8601 format."},"end":{"type":"string","example":"2026-02-03T02:05:00","description":"End time of the hora period in ISO 8601 format."}},"required":["planet","number","start","end"]},"description":"12 daytime hora periods from sunrise to sunset. Duration varies by season."},"nightHoras":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Jupiter","description":"Ruling planet of this hora period. Follows the Chaldean planetary order: Sun, Venus, Mercury, Moon, Saturn, Jupiter, Mars."},"number":{"type":"number","example":1,"description":"Hora period number within the day or night segment (1-12)."},"start":{"type":"string","example":"2026-02-03T01:10:00","description":"Start time of the hora period in ISO 8601 format."},"end":{"type":"string","example":"2026-02-03T02:05:00","description":"End time of the hora period in ISO 8601 format."}},"required":["planet","number","start","end"]},"description":"12 nighttime hora periods from sunset to next sunrise. Duration varies by season."}},"required":["date","dayHoras","nightHoras"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dosha/manglik":{"post":{"operationId":"checkManglikDosha","tags":["Vedic Astrology"],"summary":"Check Manglik Dosha - Mangal Dosha Calculator API","description":"Detect Manglik dosha (Kuja dosha, Mars dosha) based on Mars position in inauspicious houses (1, 2, 4, 7, 8, 12) from Lagna. Accurate mangal dosha calculator for matrimonial compatibility checks in Vedic astrology. Returns severity levels (Mild/Moderate/Severe) and cancellation factors. Essential for kundli matching for marriage, manglik compatibility, and marriage astrology in matrimonial sites. Includes exceptions that reduce manglik dosha effects.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManglikRequest"}}}},"responses":{"200":{"description":"Manglik dosha detection result with severity, Mars house placement, cancellation exceptions, traditional remedies, and effects on marriage and personality.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManglikResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dosha/kalsarpa":{"post":{"operationId":"checkKalsarpaDosha","tags":["Vedic Astrology"],"summary":"Check Kalsarpa Dosha - Kalsarpa Yoga Calculator API","description":"Detect Kalsarpa dosha (Kalsarpa yoga) when all 7 planets are hemmed between Rahu-Ketu axis. Accurate kalsarpa dosha calculator identifying 12 types (Ananta, Kulik, Vasuki, Shankhapala, Padma, Mahapadma, Takshak, Karkotak, Shankhachud, Ghatak, Vishdhar, Sheshnag). Returns severity and effects based on Rahu house position. Essential for Vedic astrology dosha analysis, birth chart evaluation, and matrimonial compatibility. Considered significant dosha affecting life obstacles and spiritual growth.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KalsarpaRequest"}}}},"responses":{"200":{"description":"Kalsarpa dosha detection result with type identification (1 of 12 types), severity, Rahu-Ketu axis details, traditional remedies, and effects on career, health, and relationships.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KalsarpaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/dosha/sadhesati":{"post":{"operationId":"checkSadhesati","tags":["Vedic Astrology"],"summary":"Check Sadhesati - Sade Sati Calculator API (Saturn Transit)","description":"Calculate Sadhesati (Sade Sati) periods when Saturn transits 12th, 1st, and 2nd houses from natal Moon. Accurate sade sati calculator with current status and phase identification (Rising/Peak/Setting). Shani sadhesati 7.5 year period tracker. Returns Saturn transit dates and effects on life. Essential for Saturn transit analysis, sadhesati remedies timing, and understanding challenging Saturn periods in Vedic astrology. Important for timing major life decisions.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SadhesatiRequest"}}}},"responses":{"200":{"description":"Sade Sati detection result with current phase (Rising/Peak/Setting), Saturn transit position relative to natal Moon, severity, traditional Shani remedies, and phase-specific effects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SadhesatiResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/yoga":{"get":{"operationId":"listYogas","tags":["Vedic Astrology"],"summary":"List all planetary yogas - 301 entry Vedic Yoga Glossary","description":"Browse the 301-entry Vedic planetary-yoga glossary. Returns id and name for every cataloged yoga (Raja, Dhana, Pancha Mahapurusha, Nabhasa, Chandra-Mangala, and more). This is a dictionary lookup, not chart-driven detection: it does not inspect a birth chart. Use GET /yoga/{id} for the full glossary entry, or POST /yoga/detect to run all 48 detection rules against a specific kundli. Ideal for yoga-browser UIs, search, and progressive data loading.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Filter the catalog to one Nabhasa family: asraya (3), dala (2), akriti (20) or sankhya (7). Omit for the full catalog. `classical` is accepted but matches nothing here, because it is a detection-verdict value for single-combination yogas rather than a catalog grouping."},"required":false,"description":"Filter the catalog to one Nabhasa family: asraya (3), dala (2), akriti (20) or sankhya (7). Omit for the full catalog. `classical` is accepted but matches nothing here, because it is a detection-verdict value for single-combination yogas rather than a catalog grouping.","name":"family","in":"query"}],"responses":{"200":{"description":"List of all yogas (basic info)","content":{"application/json":{"schema":{"type":"object","properties":{"yogas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"gajakesari","description":"Unique yoga identifier in lowercase kebab-case. Use this to fetch full details via GET /yoga/{id}."},"name":{"type":"string","example":"Gajakesari Yoga","description":"Traditional Sanskrit name of the planetary yoga combination."},"family":{"type":"string","enum":["classical","asraya","dala","akriti","sankhya"],"example":"akriti","description":"Nabhasa family, present only on the 32 Nabhasa distribution yogas and absent on every other catalog row. Never translated, so it groups identically under any lang."}},"required":["id","name"]},"description":"Array of planetary yogas with basic identifiers, narrowed by `family` when that filter is supplied. Use GET /yoga/{id} for formation rules, effects, and quality classification."},"total":{"type":"number","example":300,"description":"Number of yogas in this response, which is the filtered count when `family` is supplied and the full catalog size otherwise. Includes Raj Yogas, Dhan Yogas, Pancha Mahapurusha Yogas, Nabhasa Yogas, and more."}},"required":["yogas","total"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/yoga/{id}":{"get":{"operationId":"getYoga","tags":["Vedic Astrology"],"summary":"Get yoga details by ID - Vedic Yoga Glossary Entry","description":"Look up the dictionary entry for a specific named yoga from the 301-entry Vedic planetary-yoga glossary. Returns formation conditions, life results, and quality classification (Positive/Negative/Both). This is a glossary lookup against the static catalog; it does NOT analyze a birth chart. For chart-driven present/absent verdicts on the 48 detection-grade yogas (Gajakesari, the Pancha Mahapurusha set, all 32 Nabhasa distribution yogas, and the wealth and poverty verdicts) call POST /yoga/detect with birth data.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["gajakesari","sunapha","anapha","dhurdhura","kemadruma","chandramangala","adhi","chatussagara","vasumathi","rajalakshana","vanchanachorabheethi","sakata","amala","parvata","kahala","vesi","vasi","obhayachari","hamsa","malavya","sasa","ruchaka","bhadra","budhaaditya","mahabhagya","pushkala","lakshmi","gauri","bharathi","chapa","sreenatha","lagnamalika","dhanamalika","vikramamalika","sukhamalika","putramalika","satrumalika","kalatramalika","randhramalika","bhagyamalika","karmamalika","labhamalika","vrayamalika","sankha","bheri","mridanga","parijatha","gaja","kalanidhi","amsavatara","hariharabrahma","kusuma","matsya","kurma","devendra","makuta","chandika","jaya","vidyut","gandharva","siva","vishnu","brahma","indra","ravi","garuda","go","gola","thrilochana","kulavardhana","yupa","ishu","sakti","danda","nav","kuta","chhatra","chapa-2","ardhachandra","chandra","gada","sakata-2","vihaga","vajra","yava","sringhataka","hala","kamala","vapee","samudra","vallaki","damni","pasa","kedara","sula","yuga","gola-2","rajju","musala","nala","srik","mala","sarpa","duryoga","daridra","harsha","sarala","vimala","sareerasoukhya","dehapushti","dehakashta","rogagrastha","krisanga","krisanga-2","dehasthoulya","dehasthoulya-2","dehasthoulya-3","sadasanchara","dhana","dhana-2","dhana-3","dhana-4","dhana-5","dhana-6","dhana-7","dhana-8","dhana-9","dhana-10","dhana-11","bahudravyarjana","swaveeryaddhana","swaveeryaddhana-2","swaveeryaddhana-3","madhyavayasidhana","anthyavayasidhana","balyadhana","bhratrumooladdhanaprapti","bhratrumooladdhanaprapti-2","matrumooladdhana","putramooladdhana","satrumooladdhana","kalatramooladdhana","amarananthadhana","ayatnadhanalabha","daridra-2","daridra-3","daridra-4","daridra-5","daridra-6","daridra-7","daridra-8","daridra-9","daridra-10","daridra-11","yukthisamanwithavagmi","yukthisamanwithavagmi-2","parihasaka","asatyavadi","jada","bhaskara","marud","saraswathi","budha","mooka","netranasa","andha","sumukha","sumukha-2","durmukha","durmukha-2","bhojanasoukhya","annadana","parannabhojana","sraddhannabhuktha","sarpaganda","vakchalana","vishaprayoga","bhratruvriddhi","sodaranasa","ekabhagini","dwadasasahodara","sapthasankhyasahodara","parakrama","yuddhapraveena","yuddhatpoorvadridhachitta","yuddhatpaschaddrudha","satkathadisravana","uttamagriha","vichitrasaudhaprakara","ayatnagrihaprapta","ayatnagrihaprapta-2","grihanasa","grihanasa-2","bandhupujya","bandhupujya-2","bandhubhisthyaktha","matrudeerghayur","matrudeerghayur-2","matrunasa","matrunasa-2","matrugami","sahodareesangama","kapata","kapata-2","kapata-3","nishkapata","nishkapata-2","matrusatrutwa","matrusneha","vahana","vahana-2","anapathya","sarpasapa","sarpasapa-2","sarpasapa-3","sarpasapa-4","pitrusapasutakshaya","matrusapasutakshaya","bhratrusapasutakshaya","pretasapa","bahuputra","bahuputra-2","dattaputra","dattaputra-2","aputra","ekaputra","suputra","kalanirdesatputra","kalanirdesatputra-2","kalanirdesatputranasa","kalanirdesatputranasa-2","buddhimaturya","theevrabuddhi","buddhijada","thrikalagnana","putrasukha","jara","jarajaputra","bahustree","satkalatra","bhagachumbana","bhagya","jananatpurvampitrumarana","dhatrutwa","apakeerti","raja","raja-2","raja-3","raja-4","raja-5","raja-6","raja-7","raja-8","raja-9","raja-10","raja-11","raja-12","raja-13","raja-14","raja-15","raja-16","raja-17","raja-18","raja-19","galakarna","vrana","sisnavyadhi","kalatrashanda","kushtaroga","kushtaroga-2","kshayaroga","bandhana","karascheda","sirachcheda","durmarana","yuddhemarana","sanghatakamarana","sanghatakamarana-2","peenasaroga","pittaroga","vikalangapatni","putrakalatraheena","bharyasahavyabhichara","vamsacheda","guhyaroga","angaheena","swetakushta","pisachagrastha","andha-2","andha-3","vatharoga","matibhramana","matibhramana-2","matibhramana-3","matibhramana-4","khalwata","nishturabhashi","rajabhrashta","raja-20","raja-21","gohanta"],"example":"gajakesari","description":"Yoga identifier (lowercase, hyphenated)"},"required":true,"description":"Yoga identifier (lowercase, hyphenated)","name":"id","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"responses":{"200":{"description":"Detailed yoga information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaDetail"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/yoga/detect":{"post":{"operationId":"detectYogas","tags":["Vedic Astrology"],"summary":"Detect classical Vedic yogas in a birth chart","description":"Chart-driven detection of 48 classical Vedic yogas. Twelve conjunction and dignity yogas: Gajakesari (parashara three-rule definition), Sunapha, Anapha, Dhurdhura, Kemadruma, Chandra Mangala, Budha-Aditya, and the five Pancha Mahapurusha yogas (Ruchaka, Bhadra, Hamsa, Malavya, Sasa). Plus all 32 Nabhasa distribution yogas, which describe how the seven visible grahas are spread across the whole chart rather than any single conjunction, across four families: Asraya (Rajju, Musala, Nala), Dala (Mala, Sarpa), Akriti (Gada, Shakata, Vihaga, Shringataka, Hala, Vajra, Yava, Kamala, Vapi, Yupa, Shara, Shakti, Danda, Nauka, Kuta, Chhatra, Dhanusha, Ardhachandra, Chakra, Samudra) and Sankhya (Gola, Yuga, Shoola, Kedara, Pasa, Damini, Veena). Plus four wealth and poverty verdicts, each ONE answer over a whole family of classical rules: Dhana Yoga over the eleven catalogued wealth combinations of BPHS ch. 41, Daridra Yoga over the poverty combinations of BPHS ch. 42 and Phaladeepika ch. 6, Lakshmi Yoga (BPHS ch. 36), and Dhana Malika (Jataka Parijata ch. 7). Their evidence names every rule that matched and the exact condition it matched on, so a wealth reading cites the combination rather than a label, and a rule resting on a single authority is excluded from the verdict and says so rather than quietly counting. Each yoga is returned with an `id`, `name`, a `present` boolean, a `quality` (Positive, Negative, or Both, i.e. auspicious, inauspicious, or context-dependent), and a classical-text `evidence` string naming the rule that triggered or failed (kendra position, dignity, malefic drishti, lordship, retrograde state, sign modality, bhava distribution). Nabhasa results also apply the four classical precedence norms, so a yoga that matched its own rule but was outranked by a stronger family is returned as absent with evidence naming the norm that silenced it, letting you explain a verdict rather than only report it. There is no separate major/minor flag; `quality` is the auspiciousness axis. Unlike GET /yoga and GET /yoga/{id} which are dictionary lookups, this endpoint computes the kundli from birth data and runs the detection rules. Sources: BPHS ch. 35 and ch. 75, Mantreswara Phaladeepika ch. 6, B.V. Raman Three Hundred Important Combinations.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaDetectRequest"}}}},"responses":{"200":{"description":"List of 48 classical yogas with present/absent verdicts and classical-text evidence.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/YogaDetectResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/ayanamsa":{"get":{"operationId":"getKpAyanamsa","tags":["Vedic Astrology"],"summary":"Get KP-Newcomb ayanamsa - Dynamic daily calculation","description":"Get the KP-Newcomb (Krishnamurti) ayanamsa for any instant, computed continuously from Newcomb precession theory rather than looked up in a preset table, so it tracks the exact moment you ask for instead of the calendar year. Supply date alone for midnight UTC, or add time and timezone to pin a birth moment exactly. This is the precession offset subtracted from a tropical longitude to obtain the sidereal one, and it is what makes a KP chart reproduce the reference software your practitioners already use. Returns the same value every KP endpoint applies internally. Use it as a dynamic KP Newcomb ayanamsa calculator when you need the Krishnamurti ayanamsa for today, for a birth moment, or for any instant a chart is being rectified against.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","format":"date","example":"2025-12-26","description":"Date for ayanamsa calculation in YYYY-MM-DD format. Defaults to today if not provided. Ayanamsa changes by ~0.01 degrees per month due to the precession of Earth."},"required":false,"description":"Date for ayanamsa calculation in YYYY-MM-DD format. Defaults to today if not provided. Ayanamsa changes by ~0.01 degrees per month due to the precession of Earth.","name":"date","in":"query"},{"schema":{"type":"string","format":"time","example":"09:00:00","description":"Time of day in 24-hour HH:MM:SS format, interpreted in the timezone below. Omit for midnight UTC. The ayanamsa moves about 0.14 arcseconds across a day, so supplying the time matters only when reconciling a chart against reference software to the arcsecond."},"required":false,"description":"Time of day in 24-hour HH:MM:SS format, interpreted in the timezone below. Omit for midnight UTC. The ayanamsa moves about 0.14 arcseconds across a day, so supplying the time matters only when reconciling a chart against reference software to the arcsecond.","name":"time","in":"query"},{"schema":{"type":"string","example":"Asia/Kolkata","description":"IANA name (e.g. \"Asia/Kolkata\", \"America/New_York\"), decimal hours (e.g. 5.5 for IST, -5 for EST), or a fixed UTC offset (e.g. \"+05:30\"). IANA resolved to the DST-correct offset for the given date. Applies to the time field above. Defaults to 0 (UTC)."},"required":false,"description":"IANA name (e.g. \"Asia/Kolkata\", \"America/New_York\"), decimal hours (e.g. 5.5 for IST, -5 for EST), or a fixed UTC offset (e.g. \"+05:30\"). IANA resolved to the DST-correct offset for the given date. Applies to the time field above. Defaults to 0 (UTC).","name":"timezone","in":"query"}],"responses":{"200":{"description":"Successfully calculated KP-Newcomb ayanamsa","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPAyanamsaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/planets":{"post":{"operationId":"getKpPlanets","tags":["Vedic Astrology"],"summary":"Get KP planetary positions with sub-lords","description":"Get planetary positions with detailed KP star-lord and sub-lord calculations for precise event timing and significator analysis. Returns all 9 planets (Sun through Ketu) with nakshatra, star-lord, sub-lord, and KP horary numbers (1-249). Essential for KP astrology software, significator analysis, and event prediction. Use it as a star lord and sub lord calculator wherever Krishnamurti Paddhati planet positions drive the reading.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPPlanetsRequest"}}}},"responses":{"200":{"description":"Successfully calculated KP planetary positions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPPlanetsResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/cusps":{"post":{"operationId":"getKpCusps","tags":["Vedic Astrology"],"summary":"Get KP Placidus house cusps with sub-lords","description":"Calculate unequal Placidus house cusps with ruling sign-lord, nakshatra-lord, and sub-lord for each cusp. Dynamic KP-Newcomb or custom ayanamsa support. Used in KP horary astrology, cusp sub-lord analysis, and birth chart rectification. Returns all 12 house cusps with KP sub-division details. Use it as a Placidus house cusp calculator that also carries the star lord and sub lord of each cusp, which is what Krishnamurti Paddhati horary work reads first.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPCuspsRequest"}}}},"responses":{"200":{"description":"Successfully calculated Placidus house cusps","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPCuspsResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/chart":{"post":{"operationId":"generateKpChart","tags":["Vedic Astrology"],"summary":"Generate complete KP birth chart","description":"Generate authentic Krishnamurti Paddhati birth charts with Placidus house cusps, star-lord and sub-lord calculations. Supports custom ayanamsa and dynamic KP-Newcomb ayanamsa calculation. Returns complete chart with all 9 planets (Sun through Ketu), Ascendant, 12 Placidus house cusps, nakshatra details, star-lords, sub-lords, and KP horary numbers (1-249). Perfect for KP astrology software, horary prediction apps, and event timing analysis. One call is a complete Krishnamurti Paddhati chart generator, returning the Placidus cusps and the planets with their sub lords together.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPChartRequest"}}}},"responses":{"200":{"description":"Successfully generated KP birth chart","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPChartResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/ruling-planets":{"post":{"operationId":"getKpRulingPlanets","tags":["Vedic Astrology"],"summary":"Get KP ruling planets with optional significators","description":"Calculate the 5 ruling planets at any moment using Krishnamurti Paddhati horary astrology. Returns Day Lord, Moon Sign/Star/Sub Lord, Lagna Sign/Star/Sub Lord. Optionally provide birth data (birthDate, birthTime) to include significators showing which houses each ruling planet signifies in the birth chart, which is essential for KP prediction.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":28.6139,"description":"Observer latitude in decimal degrees"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":77.209,"description":"Observer longitude in decimal degrees"},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC. IANA resolved to the DST-correct offset based on birthDate or datetime. Defaults to 5.5.","example":5.5},"datetime":{"type":"string","format":"date-time","example":"2025-01-15T10:30:00Z","description":"ISO 8601 datetime (YYYY-MM-DDTHH:MM:SS) for ruling planets. Defaults to current time. Interpreted as local time when a non-zero timezone is provided (a trailing Z is accepted but ignored); with timezone 0 it is UTC."},"birthDate":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date (YYYY-MM-DD) to calculate significators. If provided with birthTime, response includes which houses each ruling planet signifies."},"birthTime":{"type":"string","format":"time","example":"10:12:00","description":"Birth time (HH:MM:SS) for significator calculation. Required if birthDate is provided."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["latitude","longitude"]}}}},"responses":{"200":{"description":"Ruling planets calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPRulingPlanetsResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/ruling-planets-interval":{"post":{"operationId":"getKpRulingInterval","tags":["Vedic Astrology"],"summary":"Get KP ruling planets with significators at intervals","description":"Calculate ruling planets and their KP significators at regular time intervals using Krishnamurti Paddhati prashna (horary) astrology. For each interval, a full Placidus house chart is erected and significators are computed using the 4-level KP hierarchy: Level 1 (strongest) planets in star of house occupant, Level 2 occupants, Level 3 planets in star of house owner, Level 4 house owner. Returns Day Lord (sunrise-based Hindu Vara), Moon Sign/Star/Sub/Sub-Sub Lords, Lagna Sign/Star/Sub/Sub-Sub Lords, unique ruling planets set, and per-ruling-planet house significations. No birth data needed, significators come from each moments sky chart. Use for birth time rectification, muhurta selection, and KP horary number analysis.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"startDatetime":{"type":"string","format":"date-time","example":"2026-02-03T00:00:00Z","description":"Start of the interval range in ISO 8601 (YYYY-MM-DDTHH:MM:SS). Interpreted as local time when a non-zero timezone is provided (a trailing Z is accepted but ignored); with timezone 0 it is UTC."},"endDatetime":{"type":"string","format":"date-time","example":"2026-02-03T01:00:00Z","description":"End of the interval range in ISO 8601 (YYYY-MM-DDTHH:MM:SS). Interpreted as local time when a non-zero timezone is provided (a trailing Z is accepted but ignored); with timezone 0 it is UTC."},"intervalMinutes":{"type":"integer","minimum":1,"maximum":1440,"example":5,"description":"Interval between calculations in minutes (1-1440). Use 1-5 for birth time rectification."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":17.385044,"description":"Observer latitude in decimal degrees"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":78.486671,"description":"Observer longitude in decimal degrees"},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in decimal hours. When non-zero, all datetimes are treated as local time in this timezone (Z suffix is ignored). Output times are also converted to this timezone. Defaults to 5.5 (IST).","example":5.5},"ayanamsa":{"type":"string","enum":["kp-newcomb","kp-old","lahiri","raman"],"default":"kp-newcomb","example":"kp-newcomb","description":"Ayanamsa system for sidereal conversion. \"kp-newcomb\" uses the KP-Newcomb dynamic formula, the most common choice for KP astrology. \"kp-old\" uses the Krishnamurti original table from KP Reader-1 with constant precession rate. \"lahiri\" uses Lahiri/Chitrapaksha ayanamsa, matching most traditional Vedic software. \"raman\" uses the B.V. Raman ayanamsa from Hindu Predictive Astrology, a recognised traditional school that sits about 1.45 degrees below Lahiri. Defaults to \"kp-newcomb\"."},"nodeType":{"type":"string","enum":["mean","true"],"default":"mean","example":"mean","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the Rahu and Ketu positions. Mean is the traditional Vedic default and what printed panchangs use; the choice can move a KP sub-lord in narrow boundary cases, where a span can be as small as 0.5 degrees. Defaults to \"mean\"."}},"required":["startDatetime","endDatetime","intervalMinutes","latitude","longitude"]}}}},"responses":{"200":{"description":"Ruling planets with significators at intervals","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPRulingPlanetsIntervalResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/sublord-changes":{"post":{"operationId":"getKpSublordChanges","tags":["Vedic Astrology"],"summary":"Find KP sublord changes","description":"Track when planets cross KP sublord boundaries (1-249 divisions) for precise Krishnamurti Paddhati event timing. Returns exact timestamps when a planet transitions between sublords, essential for prashna kundali analysis and dasha predictions. Use this to find favorable windows when benefic sublords are active. Supports Sun, Moon, Mars, Mercury, Jupiter, Venus, and Saturn tracking over any window up to 365 days.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPSublordChangesRequest"}}}},"responses":{"200":{"description":"Sublord change timings calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPSublordChangesResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/rasi-changes":{"post":{"operationId":"getKpRasiChanges","tags":["Vedic Astrology"],"summary":"Find KP rasi ingress times","description":"Track when planets enter new zodiac signs (rasi) with precise ingress timestamps. Essential for Vedic astrology transit analysis, muhurta selection, and predictive horoscope readings. Returns exact times when planets cross sign boundaries (0, 30, 60 degrees etc). Use for tracking Sun sankranti dates, Moon sign changes for panchang, or outer planet transits for yearly predictions.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPRasiChangesRequest"}}}},"responses":{"200":{"description":"Sign ingress timings calculated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPRasiChangesResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/planets-interval":{"post":{"operationId":"getKpPlanetsInterval","tags":["Vedic Astrology"],"summary":"Get KP planets at time intervals","description":"Calculate positions of all 9 planets (Sun through Saturn, Rahu, Ketu) at regular time intervals with full KP hierarchy: sign lord, star lord, sublord, and sub-sublord. Returns longitude, zodiac sign, nakshatra, sublord, sub-sublord, and KP number (1-249) for each planet at each timestamp. Ideal for tracking planetary motion, finding optimal muhurta windows, analyzing transit patterns, and building KP ephemeris tables. Maximum range of 7 days with 15-minute to 24-hour intervals.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPPlanetsIntervalRequest"}}}},"responses":{"200":{"description":"Planetary positions calculated at all intervals","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPPlanetsIntervalResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/kp/horary":{"post":{"operationId":"castKpHoraryChart","tags":["Vedic Astrology"],"summary":"Cast a KP horary (Prashna) chart from a number 1-249 - KP Horary API","description":"Cast a Krishnamurti Paddhati horary chart, also called Prashna, from a number between 1 and 249 given by the querent plus the moment and place the question is judged. NO BIRTH DETAILS ARE NEEDED, which is what makes horary the KP answer when birth time is unknown or unreliable. The number maps to one of the 249 KP sub divisions and sets the Ascendant; the twelve Placidus cusps follow from that Ascendant at the given latitude, and every planetary position comes from the real sky at the moment of the question. Returns the Ascendant with its sub lord, all twelve cusps with star lord and sub lord, the nine grahas placed against those cusps, the five ruling planets for validating the chart, and four-level significators for judging which houses each graha supports. KP horary API, Prashna kundali calculator, 249 horary number chart, Krishnamurti Paddhati horary, cusp sub lord question answering.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPHoraryRequest"}}}},"responses":{"200":{"description":"Horary chart with the Ascendant from the number, Placidus cusps, planets at the question moment, ruling planets, and four-level significators.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KPHoraryResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/aspects":{"post":{"operationId":"calculateDrishti","tags":["Vedic Astrology"],"summary":"Get planetary aspects (Drishti) - Mutual aspects between all planets","description":"Calculate all planetary aspects (Drishti) for a given time. Returns full aspects (7th house for all planets) and special aspects (Mars 4th/8th, Jupiter 5th/9th, Saturn 3rd/10th). Includes aspect table grouped by planet, mutual aspects, and individual aspect details with orb calculation. Essential for birth chart analysis, compatibility checking, and transit predictions. Planetary aspects API, drishti calculator, vedic astrology aspects, graha drishti.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2026-02-03","description":"Date in YYYY-MM-DD format. Planetary positions are calculated for this date to determine mutual aspects (drishti)."},"time":{"type":"string","format":"time","example":"12:00:00","description":"Time in HH:MM:SS format (24-hour). Exact time affects fast-moving planets (Moon, Mercury) and aspect orbs."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":17.385044,"description":"Observer latitude in decimal degrees. Used for Lagna calculation which affects house-based aspect analysis."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":78.486671,"description":"Observer longitude in decimal degrees. Affects local sidereal time for positional calculations."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in hours. Defaults to 5.5 (IST).","example":5.5},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"Aspects calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"datetime":{"type":"string","description":"Chart time the aspects were calculated for, echoed back as the local wall clock of the request (ISO 8601, no offset). This is the `date` and `time` you sent, NOT a UTC instant: hold them fixed and vary `timezone` and every longitude moves while this field does not. Combine it with the `timezone` you sent to recover the absolute moment.","example":"1990-06-15T14:30:00"},"planets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Mars","description":"Planet name (Sun through Ketu, all 9 Vedic grahas)."},"longitude":{"type":"number","example":285.67,"description":"Sidereal longitude in degrees (0-360)."},"sign":{"type":"string","example":"Capricorn","description":"Vedic zodiac sign (rashi) the planet occupies."}},"required":["name","longitude","sign"]},"description":"Sidereal positions of all 9 planets at the given time."},"aspects":{"type":"array","items":{"type":"object","properties":{"aspectingPlanet":{"type":"string","example":"Mars","description":"Planet casting the aspect (graha drishti)."},"aspectedPlanet":{"type":"string","example":"Moon","description":"Planet receiving the aspect."},"aspectType":{"type":"string","enum":["conjunction","7th","4th","8th","5th","9th","3rd","10th"],"example":"7th","description":"Vedic aspect type. All planets have 7th aspect. Special aspects: Mars 4th/8th, Jupiter 5th/9th, Saturn 3rd/10th."},"strength":{"type":"number","example":100,"description":"Aspect strength percentage (0-100). 100 = exact aspect, decreases with orb distance."},"orb":{"type":"number","example":2.5,"description":"Angular distance from exact aspect in degrees. Smaller orb = more potent aspect."}},"required":["aspectingPlanet","aspectedPlanet","aspectType","strength","orb"]},"description":"Complete list of all Vedic aspects (drishti) between planets. Includes full (7th) and special aspects (Mars 4th/8th, Jupiter 5th/9th, Saturn 3rd/10th)."},"aspectTable":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Mars","description":"Planet casting aspects."},"aspects":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Jupiter","description":"Planet being aspected."},"aspectType":{"type":"string","example":"8th","description":"Vedic aspect house (7th, 4th, 8th, 5th, 9th, 3rd, 10th, or conjunction)."},"strength":{"type":"number","example":85,"description":"Aspect strength percentage."}},"required":["planet","aspectType","strength"]},"description":"All aspects cast by this planet."}},"required":["planet","aspects"]},"description":"Aspect table grouped by aspecting planet. useful for rendering aspect grids in astrology software."},"mutualAspects":{"type":"array","items":{"type":"object","properties":{"planet1":{"type":"string","example":"Mars","description":"First planet in the mutual aspect pair."},"planet2":{"type":"string","example":"Saturn","description":"Second planet in the mutual aspect pair."},"aspectType":{"type":"string","example":"7th","description":"The aspect type shared mutually. Mutual aspects are especially strong in Vedic astrology."}},"required":["planet1","planet2","aspectType"]},"description":"Pairs of planets aspecting each other simultaneously. Mutual aspects amplify planetary influence significantly."}},"required":["datetime","planets","aspects","aspectTable","mutualAspects"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/aspects/monthly":{"post":{"operationId":"getMonthlyAspects","tags":["Vedic Astrology"],"summary":"Monthly Planetary Aspects - Major and minor aspect events for a month","description":"Calculate all planetary aspect events (excluding Moon) for a given month. Detects 22 aspect types. 5 major (conjunction, opposition, trine, square, sextile) and 17 minor (vigintile, semi-sextile, undecile, semi-quintile, novile, semi-square, septile, quintile, binovile, centile, biseptile, tredecile, sesqui-square, bi-quintile, quincunx, triseptile, quadranovile). Returns exact date and time of closest approach using ternary search refinement. Uses degree-based aspect methodology on sidereal positions (Lahiri ayanamsa). Omit year and month to get the month in progress, so a published aspect calendar stays current without a redeploy. For Moon-specific aspects, use the /aspects/lunar endpoint. Essential for transit timing, muhurta selection, and monthly astrological forecasting. Monthly planetary aspects API, graha drishti calendar, mutual aspect ephemeris, minor aspects.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Year for monthly analysis (1900-2100). Defaults to the current year (UTC)."},"month":{"type":"integer","minimum":1,"maximum":12,"example":2,"description":"Month number (1-12). Defaults to the current month (UTC)."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"Timezone offset from UTC in hours. Output times are converted to this timezone. Defaults to 0 (UTC).","example":5.5},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}}}}}},"responses":{"200":{"description":"Monthly planetary aspect events","content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"number","example":2026,"description":"Year of the aspect analysis. Echoes the year that was requested, or the current UTC year when it was omitted."},"month":{"type":"number","example":2,"description":"Month of the aspect analysis. Echoes the month that was requested, or the current UTC month when it was omitted."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset from UTC in hours that the event dates and times are reported in. Echoes the requested timezone."},"events":{"type":"array","items":{"type":"object","properties":{"planet1":{"type":"string","example":"Mars","description":"First planet forming the aspect. One of the Navagraha, Sun through Ketu. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use planet1Localized for anything a reader sees."},"planet1Localized":{"type":"string","example":"Marte","description":"First planet name in the requested language, for display. Present only when lang is set to a language other than English, since in English it would repeat planet1 exactly."},"planet2":{"type":"string","example":"Venus","description":"Second planet forming the aspect. Always English, whatever the lang parameter says. Use planet2Localized for anything a reader sees."},"planet2Localized":{"type":"string","example":"Venus","description":"Second planet name in the requested language, for display. Present only when lang is set to a language other than English."},"aspect":{"type":"string","example":"conjunction","description":"Aspect type. major: conjunction (0 deg), opposition (180 deg), trine (120 deg), square (90 deg), sextile (60 deg). Minor: vigintile (18 deg), semi-sextile (30 deg), undecile (32.73 deg), semi-quintile (36 deg), novile (40 deg), semi-square (45 deg), septile (51.43 deg), quintile (72 deg), binovile (80 deg), centile (100 deg), biseptile (102.86 deg), tredecile (108 deg), sesqui-square (135 deg), bi-quintile (144 deg), quincunx (150 deg), triseptile (154.29 deg), quadranovile (160 deg)."},"date":{"type":"string","example":"2026-02-15","description":"Date when the aspect is closest to exact (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"14:32","description":"Time when the aspect is closest to exact (HH:MM, 24-hour). Adjusted to requested timezone."},"datetime":{"type":"string","example":"2026-02-15T14:32:00","description":"Full datetime when aspect is closest to exact. Adjusted to requested timezone."},"orb":{"type":"number","example":0.45,"description":"Angular distance from exact aspect in degrees at closest approach. Smaller orb indicates a more powerful aspect."},"distance":{"type":"number","example":120.45,"description":"Actual angular distance between the two planets in degrees at closest approach."},"planet1Longitude":{"type":"number","example":285.67,"description":"Sidereal longitude of the first planet at time of aspect (Lahiri ayanamsa)."},"planet2Longitude":{"type":"number","example":285.22,"description":"Sidereal longitude of the second planet at time of aspect."}},"required":["planet1","planet2","aspect","date","time","datetime","orb","distance","planet1Longitude","planet2Longitude"]},"description":"All planetary aspect events detected during the month, sorted chronologically by closest approach date."}},"required":["year","month","timezone","events"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/aspects/lunar":{"post":{"operationId":"getLunarAspects","tags":["Vedic Astrology"],"summary":"Monthly Lunar Aspects - Moon aspect events with all planets for a month","description":"Track all lunar aspect events for a given month including major and minor aspects. The Moon traverses approximately 13 degrees per day, forming 22 aspect types with each planet. 5 major (conjunction, opposition, trine, square, sextile) and 17 minor (vigintile, semi-sextile, undecile, semi-quintile, novile, semi-square, septile, quintile, binovile, centile, biseptile, tredecile, sesqui-square, bi-quintile, quincunx, triseptile, quadranovile). Returns exact date and time of each Moon aspect event with ternary search refinement to the minute. Omit year and month to get the month in progress, so a published lunar calendar stays current without a redeploy. Essential for muhurta selection, daily panchang analysis, and chandra gochar predictions. Monthly lunar aspects API, Moon transit calendar, chandra drishti ephemeris, minor lunar aspects.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Year for monthly analysis (1900-2100). Defaults to the current year (UTC)."},"month":{"type":"integer","minimum":1,"maximum":12,"example":2,"description":"Month number (1-12). Defaults to the current month (UTC)."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"Timezone offset from UTC in hours. Output times are converted to this timezone. Defaults to 0 (UTC).","example":5.5},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}}}}}},"responses":{"200":{"description":"Monthly lunar aspect events","content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"number","example":2026,"description":"Year of the lunar aspect analysis. Echoes the year that was requested, or the current UTC year when it was omitted."},"month":{"type":"number","example":2,"description":"Month of the lunar aspect analysis. Echoes the month that was requested, or the current UTC month when it was omitted."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset from UTC in hours that the event dates and times are reported in. Echoes the requested timezone."},"events":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Jupiter","description":"Planet that the Moon forms an aspect with. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Júpiter","description":"Planet name in the requested language, for display. Present only when lang is set to a language other than English, since in English it would repeat planet exactly."},"aspect":{"type":"string","example":"trine","description":"Aspect type. major: conjunction, opposition, trine, square, sextile. Minor: vigintile, semi-sextile, undecile, semi-quintile, novile, semi-square, septile, quintile, binovile, centile, biseptile, tredecile, sesqui-square, bi-quintile, quincunx, triseptile, quadranovile."},"date":{"type":"string","example":"2026-02-10","description":"Date of closest approach for this lunar aspect (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"14:32","description":"Time of closest approach for this lunar aspect (HH:MM, 24-hour). Adjusted to requested timezone."},"datetime":{"type":"string","example":"2026-02-10T14:32:00","description":"Full datetime of closest approach. Adjusted to requested timezone."},"orb":{"type":"number","example":0.32,"description":"Angular distance from exact lunar aspect in degrees. Smaller orb = stronger Moon influence."},"distance":{"type":"number","example":120.32,"description":"Actual angular distance between Moon and the aspected planet in degrees."},"moonLongitude":{"type":"number","example":154.82,"description":"Sidereal longitude of the Moon at the time of aspect (Lahiri ayanamsa)."},"planetLongitude":{"type":"number","example":274.67,"description":"Sidereal longitude of the aspected planet at the time of aspect."}},"required":["planet","aspect","date","time","datetime","orb","distance","moonLongitude","planetLongitude"]},"description":"All Moon aspect events during the month, sorted chronologically. Moon completes one full cycle in approximately 27 days."}},"required":["year","month","timezone","events"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/transit":{"post":{"operationId":"calculateTransit","tags":["Vedic Astrology"],"summary":"Transit Analysis - Compare current planets to natal chart (Gochar)","description":"Analyze planetary transits (Gochar) over natal chart positions. Each transiting graha comes back with TWO whole-sign house numbers, because the two readings answer different questions: houseFromMoon is counted from the natal Moon sign (Janma Rashi), which is the reference classical Gochara uses, and natalHouse is counted from the Lagna. Also returns graha drishti onto the natal grahas (7th for every graha, plus Mars 4th and 8th, Jupiter 5th and 9th, Saturn 3rd and 10th), degree-based angular aspects with orbs, the Gochara Kaksha verdict, and highlighted transits from the slow-moving grahas (Jupiter, Saturn, Rahu, Ketu). Essential for timing predictions, event forecasting, and understanding current planetary influences. Transit analysis API, gochar calculator, vedic transit predictions, Chandra Lagna gochara, graha drishti.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"birthDate":{"type":"string","format":"date","example":"1990-07-04","description":"Birth date in YYYY-MM-DD format. Used to calculate the natal chart against which transits are analyzed."},"birthTime":{"type":"string","format":"time","example":"10:12:00","description":"Birth time in HH:MM:SS format (24-hour). Critical for accurate natal Lagna and Placidus house cusps which determine transit house placements."},"transitDate":{"type":"string","format":"date","example":"2026-02-03","description":"Transit date to analyze in YYYY-MM-DD format. Planetary positions on this date are overlaid on the natal chart."},"transitTime":{"type":"string","format":"time","example":"12:00:00","description":"Transit time in HH:MM:SS format (24-hour). Affects fast-moving planets like Moon. Defaults to noon."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":17.385044,"description":"Observer latitude in decimal degrees. Determines Placidus house cusps for natal chart house assignments."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":78.486671,"description":"Observer longitude in decimal degrees. Affects local sidereal time for Lagna and house calculations."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in hours. Defaults to 5.5 (IST).","example":5.5},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}},"required":["birthDate","birthTime","transitDate","latitude","longitude"]}}}},"responses":{"200":{"description":"Transit analysis calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"frame":{"type":"object","properties":{"ayanamsa":{"type":"string","example":"lahiri","description":"Sidereal frame this chart was cast in, echoing the ayanamsa request field. \"lahiri\" when the field was omitted."},"ayanamsaDegrees":{"type":"number","example":24.2247,"description":"Degrees actually subtracted from every tropical longitude to produce this chart, read at the birth instant. Subtract it back to recover the tropical positions, or compare it against your reference software to confirm you are in the same frame before chasing a placement difference."}},"required":["ayanamsa","ayanamsaDegrees"],"description":"The zodiac frame every longitude in this response was computed in, so a cached or forwarded payload is self describing. Sidereal requests report the Lahiri ayanamsa, read at the birth instant; the transit positions use the same named frame resolved at their own instant, which moves by about 50 arcseconds a year. A tropical request reports \"tropical\" with 0 degrees subtracted, which is the one case a Vedic table can otherwise be rendered in the wrong zodiac with nothing on screen saying so."},"birthDatetime":{"type":"string","example":"1990-07-04T10:12:00","description":"Birth datetime used for the natal chart, echoed as the local civil date and time supplied in the request (YYYY-MM-DDTHH:MM:SS). Combine it with the timezone field to recover the UTC instant."},"transitDatetime":{"type":"string","example":"2026-02-03T12:00:00","description":"Transit datetime being analyzed, echoed as the local civil date and time supplied in the request (YYYY-MM-DDTHH:MM:SS). Gochar positions are computed for this moment and overlaid on the natal chart."},"natalPlanets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Sun","description":"Graha name, Sun through Ketu. The Lagna is not one of these entries; it is a house frame rather than a body, and the natal house numbers on every entry are counted from it."},"longitude":{"type":"number","example":102.34,"description":"Sidereal longitude in degrees (0-360) using Lahiri ayanamsa."},"sign":{"type":"string","example":"Cancer","description":"Vedic zodiac sign (rashi) the planet occupies in the birth chart."},"house":{"type":"number","example":4,"description":"Bhava (house) number 1-12, counted whole-sign from the Lagna (house 1 is the Lagna rashi)."}},"required":["name","longitude","sign","house"]},"description":"All 9 planetary positions from the natal (birth) chart."},"transitingPlanets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Saturn","description":"Transiting planet name."},"longitude":{"type":"number","example":340.15,"description":"Current sidereal longitude of the transiting planet."},"sign":{"type":"string","example":"Pisces","description":"Current zodiac sign of the transiting planet."},"natalHouse":{"type":"number","example":10,"description":"Which natal house (whole-sign bhava counted from the Lagna) this graha is currently transiting through. This is the Lagna reading of the transit, which is what a transit chart drawn over the birth chart shows. For the house classical Gochara is judged from, read houseFromMoon instead."},"houseFromMoon":{"type":"number","example":7,"description":"Which house this graha is transiting counted from the natal Moon sign (Janma Rashi), 1-12 whole-sign and counted inclusively, so the Moon sign itself is 1. This is the number classical Gochara is reckoned in: Phaladeepika chapter 26 opens by saying that of all the Lagnas only the Moon Lagna matters for transit results, and the Vedha and Ashtakavarga transit rules are counted from the Moon throughout. The reference sign is the sign of the Moon entry in natalPlanets, so a client can label the column without a second request."},"aspectsToNatal":{"type":"array","items":{"type":"object","properties":{"natalPlanet":{"type":"string","example":"Moon","description":"Natal planet being aspected by this transiting planet."},"aspectType":{"type":"string","example":"square","description":"Degree-based angular aspect between the two longitudes: conjunction, opposition, trine, square, or sextile. This is the Western aspect vocabulary and it is offered for charts read that way. Parashari jyotish has no sextile, square or trine, so for the Vedic reading use drishtiToNatal, which reports graha drishti by house count."},"orb":{"type":"number","example":2.45,"description":"Angular distance from exact aspect in degrees. Smaller orb = stronger influence."}},"required":["natalPlanet","aspectType","orb"]},"description":"Degree-based angular aspects between this transiting graha and the natal grahas. Western vocabulary, kept for callers who read a chart that way; drishtiToNatal is the Vedic answer to the same question."},"drishtiToNatal":{"type":"array","items":{"type":"object","properties":{"natalPlanet":{"type":"string","example":"Sun","description":"Natal graha receiving the drishti from this transiting graha."},"aspectType":{"type":"string","enum":["conjunction","7th","4th","8th","5th","9th","3rd","10th"],"example":"3rd","description":"Which house the drishti falls on, counted whole-sign and inclusively from the transiting graha. Every graha aspects the 7th; Mars adds the 4th and 8th, Jupiter the 5th and 9th, Saturn the 3rd and 10th. Same vocabulary the /aspects endpoint returns, so the two can be compared directly."},"strength":{"type":"number","example":100,"description":"Drishti strength as a percentage. Full and special aspects are 100; the partial quarter, half and three-quarter sights are not reported."},"orb":{"type":"number","example":2.5,"description":"Gap between the two degrees-in-sign, in degrees. Graha drishti is whole-sign and does not depend on this, so read it as how exact the sight is inside the pair of rashis rather than as a condition for the aspect."}},"required":["natalPlanet","aspectType","strength","orb"]},"description":"Graha drishti cast by this transiting graha onto the natal grahas, the Vedic reading of transit-to-natal aspects. Rahu and Ketu cast none. Empty when this graha reaches no occupied natal sign."},"kaksha":{"type":"object","properties":{"number":{"type":"number","example":3,"description":"Kaksha number 1-8 within the current sign. Each sign divides into eight kakshas of 3 degrees 45 minutes, crossed in order, so this is how far through the sign the graha has travelled."},"lord":{"type":"string","example":"Mars","description":"Graha ruling this kaksha. The eight lords run Saturn, Jupiter, Mars, Sun, Venus, Mercury, Moon, Lagna from the start of every sign, ordered by how long each takes to cross a sign."},"startDegree":{"type":"number","example":7.5,"description":"Degree within the sign where this kaksha begins (0, 3.75, 7.5 and so on)."},"endDegree":{"type":"number","example":11.25,"description":"Degree within the sign where this kaksha ends."},"bindu":{"type":["boolean","null"],"example":true,"description":"Whether this kaksha lord gave the transiting graha a bindu in the sign being transited, which is the Gochara Kaksha verdict: true reads as a favourable stretch of the transit, false as an unfavourable one. Null means the question does not apply rather than that the answer is no, because Rahu and Ketu have no Bhinnashtakavarga to read. Never render null as unfavourable."},"binduCount":{"type":["number","null"],"example":5,"description":"Bindus the transiting graha holds in this whole sign, 0-8, or null for Rahu and Ketu. Context for the verdict, since the same kaksha reads differently in a sign worth 7 than in one worth 1."}},"required":["number","lord","startDegree","endDegree","bindu","binduCount"],"description":"Gochara Kaksha: the ashtakavarga-qualified reading of this transit. The sign says where a graha is, this says whether the exact stretch it currently occupies is one its own Bhinnashtakavarga supports, which is the classical way of refining a transit verdict from sign-level to under four degrees."}},"required":["name","longitude","sign","natalHouse","houseFromMoon","aspectsToNatal","drishtiToNatal","kaksha"]},"description":"Current planetary positions overlaid on the natal chart with house placements, aspects, and the Gochara Kaksha verdict for each graha."},"keyTransits":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Saturn","description":"Slow-moving planet (Jupiter, Saturn, Rahu, Ketu) forming a significant transit."},"description":{"type":"string","example":"Saturn transiting Pisces (natal house 10, 4 from the Moon)","description":"Human-readable transit summary, naming the rashi being transited and both house readings: from the Lagna, then from the natal Moon."},"natalHouse":{"type":"number","example":10,"description":"Natal house being transited by this slow graha, counted whole-sign from the Lagna. Mirrors natalHouse on the matching transitingPlanets entry."},"houseFromMoon":{"type":"number","example":4,"description":"House being transited by this slow graha counted from the natal Moon sign (Janma Rashi), the classical Gochara reference. Mirrors houseFromMoon on the matching transitingPlanets entry."},"aspects":{"type":"array","items":{"type":"string"},"example":["conjunction to natal Sun (orb 4.64°)"],"description":"Notable degree-based angular aspects to natal planets from this slow-moving transiting planet, in Western vocabulary."},"drishti":{"type":"array","items":{"type":"string"},"example":["3rd drishti to natal Sun"],"description":"Graha drishti this slow-moving transiting graha casts on the natal grahas, the Vedic reading. Empty for Rahu and Ketu, which cast none."}},"required":["planet","description","natalHouse","houseFromMoon","aspects","drishti"]},"description":"Highlighted transits from slow-moving planets (Jupiter, Saturn, Rahu, Ketu), most impactful for Gochar analysis."}},"required":["frame","birthDatetime","transitDatetime","natalPlanets","transitingPlanets","keyTransits"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/transit/monthly":{"post":{"operationId":"getMonthlyTransits","tags":["Vedic Astrology"],"summary":"Monthly Transit - Planetary sign changes for an entire month","description":"Get all planetary sign (rashi) changes for a given month. Shows when each planet transitions from one zodiac sign to another. Covers all 9 Vedic planets: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu. Includes starting positions at the beginning of the month. Omit year and month to get the month in progress, so a published gochar calendar stays current without a redeploy. Essential for transit prediction, monthly horoscope generation, and muhurta planning. Monthly planetary transit API, gochar calendar, rashi parivartan dates.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Year for monthly transit analysis (1900-2100). Defaults to the current year (UTC)."},"month":{"type":"integer","minimum":1,"maximum":12,"example":2,"description":"Month number (1-12) for transit analysis. Defaults to the current month (UTC)."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"Timezone offset from UTC in hours. Output times are converted to this timezone. Defaults to 0 (UTC).","example":5.5},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}}}}}},"responses":{"200":{"description":"Monthly transit data calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"number","example":2026,"description":"Year of the monthly transit analysis. Echoes the year that was requested, or the current UTC year when it was omitted."},"month":{"type":"number","example":2,"description":"Month of the monthly transit analysis. Echoes the month that was requested, or the current UTC month when it was omitted."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset from UTC in hours that the event dates and times are reported in. Echoes the requested timezone."},"startingPositions":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Planet (graha) name. One of the 9 Navagraha used in Vedic transit (Gochar) analysis. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Sol","description":"Planet name in the requested language, for display. Present only when lang is set to a language other than English."},"sign":{"type":"string","example":"Capricorn","description":"Zodiac sign (rashi) the planet occupies at the start of the month. Always English. Use signLocalized for anything a reader sees."},"signLocalized":{"type":"string","example":"Capricornio","description":"Zodiac sign name in the requested language, for display. Present only when lang is set to a language other than English."},"longitude":{"type":"number","example":286.45,"description":"Sidereal longitude at the start of the month."}},"required":["planet","sign","longitude"]},"description":"Planetary positions at the beginning of the month (day 1, 00:00 UTC)."},"transitEvents":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Mars","description":"Planet that changes sign (rashi) during this month. One of the Navagraha: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Marte","description":"Planet name in the requested language, for display. Present only when lang is set to a language other than English, since in English it would repeat planet exactly."},"fromSign":{"type":"string","example":"Gemini","description":"Zodiac sign the planet is leaving (previous rashi). Always English. Use fromSignLocalized for anything a reader sees."},"fromSignLocalized":{"type":"string","example":"Géminis","description":"Name of the sign being left, in the requested language, for display. Present only when lang is set to a language other than English."},"toSign":{"type":"string","example":"Cancer","description":"Zodiac sign the planet is entering (new rashi transit). Always English. Use toSignLocalized for anything a reader sees."},"toSignLocalized":{"type":"string","example":"Cáncer","description":"Name of the sign being entered, in the requested language, for display. Present only when lang is set to a language other than English."},"date":{"type":"string","example":"2026-02-14","description":"Date of the sign change (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"14:32","description":"Time of the sign change (HH:MM, 24-hour). Adjusted to requested timezone. Precise to ~1 minute via binary search."},"datetime":{"type":"string","example":"2026-02-14T14:32:00","description":"Full datetime of the sign change. Adjusted to requested timezone."},"isRetrograde":{"type":"boolean","example":false,"description":"Whether the planet is in retrograde motion (vakri) at the time of sign change. A retrograde ingress means the planet is moving backward into the previous sign, which carries different astrological significance than a direct (forward) ingress. Rahu and Ketu are always retrograde."}},"required":["planet","fromSign","toSign","date","time","datetime","isRetrograde"]},"description":"All sign change events during the month, sorted chronologically. Moon changes sign roughly every 2.25 days, Sun once a month, slow planets less frequently."}},"required":["year","month","timezone","startingPositions","transitEvents"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/parallels":{"post":{"operationId":"calculateParallels","tags":["Vedic Astrology"],"summary":"Declination Parallels - Planets at same or opposite declination","description":"Calculate planetary declinations and find parallels (same declination) and contraparallels (opposite declination). Parallels are considered equivalent to conjunctions in strength, contraparallels to oppositions. Returns declination for each planet and all parallel/contraparallel aspects. Declination parallels API, planetary declination calculator, contraparallel aspects.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"2026-02-03","description":"Date in YYYY-MM-DD format. Planetary declinations are calculated for this date to find parallel and contraparallel aspects."},"time":{"type":"string","format":"time","example":"12:00:00","description":"Time in HH:MM:SS format (24-hour). Exact time affects declination values, especially for the fast-moving Moon."},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":17.385044,"description":"Observer latitude in decimal degrees. Used for topocentric declination corrections."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":78.486671,"description":"Observer longitude in decimal degrees. Affects local time context for declination calculations."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":5.5,"description":"Timezone offset from UTC in hours. Defaults to 5.5 (IST).","example":5.5},"orb":{"type":"number","minimum":0.5,"maximum":3,"default":1.5,"example":1.5,"description":"Orb in degrees for parallel/contraparallel detection. Defaults to 1.5°."}},"required":["date","time","latitude","longitude"]}}}},"responses":{"200":{"description":"Declination parallels calculated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"datetime":{"type":"string","example":"1990-07-04T10:12:00","description":"Datetime used for the declination calculation, echoed as the local civil date and time supplied in the request (YYYY-MM-DDTHH:MM:SS). The timezone field of the request is what converts it to the instant the declinations are computed for."},"planets":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Sun","description":"Planet name (Sun through Saturn, the 7 visible planets)."},"declination":{"type":"number","example":-17.23,"description":"Celestial declination in degrees. Positive = north of celestial equator, negative = south."},"rightAscension":{"type":"number","example":285.47,"description":"Right ascension in degrees (0-360) along the celestial equator."}},"required":["name","declination","rightAscension"]},"description":"Declination and right ascension for each planet at the given moment."},"parallels":{"type":"array","items":{"type":"object","properties":{"planet1":{"type":"string","example":"Venus","description":"First planet in the parallel/contraparallel pair."},"planet2":{"type":"string","example":"Mars","description":"Second planet in the pair."},"type":{"type":"string","enum":["parallel","contraparallel"],"example":"parallel","description":"Parallel = same declination (acts like conjunction). Contraparallel = opposite declination (acts like opposition)."},"orb":{"type":"number","example":0.85,"description":"Angular difference from exact parallel/contraparallel in degrees. Smaller = stronger."},"dec1":{"type":"number","example":14.23,"description":"Declination of the first planet in degrees."},"dec2":{"type":"number","example":13.38,"description":"Declination of the second planet in degrees."}},"required":["planet1","planet2","type","orb","dec1","dec2"]},"description":"All parallel and contraparallel aspects found within the specified orb. Parallels are powerful hidden aspects often overlooked in standard chart analysis."}},"required":["datetime","planets","parallels"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/parallels/monthly":{"post":{"operationId":"getMonthlyParallels","tags":["Vedic Astrology"],"summary":"Monthly Declination Parallels - Parallel and contraparallel events for a month","description":"Find all declination parallel and contraparallel events between the 7 visible planets for a given month. Parallels occur when two planets share the same celestial declination (equivalent to conjunction in strength). Contraparallels occur at opposite declinations (equivalent to opposition). Scanned daily at noon UTC. Omit year and month to get the month in progress, so a published parallel calendar stays current without a redeploy. Essential for advanced transit analysis and hidden aspect discovery. Monthly declination parallels API, planetary parallel ephemeris, contraparallel event calendar.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Year for monthly parallel analysis (1900-2100). Defaults to the current year (UTC)."},"month":{"type":"integer","minimum":1,"maximum":12,"example":2,"description":"Month number (1-12) for parallel analysis. Defaults to the current month (UTC)."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"Timezone offset from UTC in hours. Output times are converted to this timezone. Defaults to 0 (UTC).","example":5.5}}}}}},"responses":{"200":{"description":"Monthly parallel events","content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"number","example":2026,"description":"Year of the parallel analysis. Echoes the year that was requested, or the current UTC year when it was omitted."},"month":{"type":"number","example":2,"description":"Month of the parallel analysis. Echoes the month that was requested, or the current UTC month when it was omitted."},"events":{"type":"array","items":{"type":"object","properties":{"planet1":{"type":"string","example":"Venus","description":"First planet in the parallel or contraparallel pair. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use planet1Localized for anything a reader sees."},"planet1Localized":{"type":"string","example":"Venus","description":"First planet name in the requested language, for display. Present only when lang is set to a language other than English, since in English it would repeat planet1 exactly."},"planet2":{"type":"string","example":"Mars","description":"Second planet in the pair. Always English, whatever the lang parameter says. Use planet2Localized for anything a reader sees."},"planet2Localized":{"type":"string","example":"Marte","description":"Second planet name in the requested language, for display. Present only when lang is set to a language other than English."},"type":{"type":"string","enum":["parallel","contraparallel"],"example":"parallel","description":"Parallel = same declination (acts like conjunction in strength). Contraparallel = opposite declination (acts like opposition)."},"date":{"type":"string","example":"2026-02-12","description":"Date of closest declination match (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"09:15","description":"Time of closest declination match (HH:MM, 24-hour). Adjusted to requested timezone."},"datetime":{"type":"string","example":"2026-02-12T09:15:00","description":"Full datetime of closest declination match. Adjusted to requested timezone."},"orb":{"type":"number","example":0.45,"description":"Declination difference from exact parallel/contraparallel in degrees. Smaller = stronger."},"dec1":{"type":"number","example":14.23,"description":"Declination of the first planet in degrees."},"dec2":{"type":"number","example":13.78,"description":"Declination of the second planet in degrees."}},"required":["planet1","planet2","type","date","time","datetime","orb","dec1","dec2"]},"description":"All parallel and contraparallel events detected during the month, sorted chronologically."}},"required":["year","month","events"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/ecliptic-crossings":{"post":{"operationId":"getEclipticCrossings","tags":["Vedic Astrology"],"summary":"Ecliptic Crossings - When planets cross the ecliptic plane","description":"Find all ecliptic plane crossings for visible planets during a given year. An ecliptic crossing occurs when a planetary celestial latitude passes through 0 degrees, crossing from one side of the ecliptic to the other. Ascending crossings (south to north) correspond to the ascending node, descending crossings (north to south) to the descending node. Moon crosses ~2 times per month, outer planets cross less frequently. Returns exact date, time, direction, sidereal longitude, and zodiac sign. Ecliptic crossing API, planetary node crossing, ascending descending node ephemeris.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Year to scan for ecliptic crossings (1900-2100)."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"default":0,"description":"Timezone offset from UTC in hours. Output times are converted to this timezone. Defaults to 0 (UTC).","example":5.5},"coordinateSystem":{"type":"string","enum":["sidereal","tropical"],"default":"sidereal","example":"sidereal","description":"Coordinate system for longitude output. \"sidereal\" (Nirayana) uses Lahiri ayanamsa, the standard for Vedic astrology. \"tropical\" (Sayana) uses raw ecliptic longitude matching Western astrology. Defaults to \"sidereal\"."}},"required":["year"]}}}},"responses":{"200":{"description":"Ecliptic crossing events for the year","content":{"application/json":{"schema":{"type":"object","properties":{"year":{"type":"number","example":2026,"description":"Year scanned for ecliptic crossings."},"timezone":{"type":"number","example":5.5,"description":"Timezone offset from UTC in hours that the event dates and times are reported in. Echoes the requested timezone."},"events":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Mars","description":"Planet crossing the ecliptic plane. Sun is excluded (always on the ecliptic by definition)."},"date":{"type":"string","example":"2026-03-15","description":"Date of the ecliptic crossing (YYYY-MM-DD). Adjusted to requested timezone."},"time":{"type":"string","example":"08:42","description":"Time of the ecliptic crossing (HH:MM, 24-hour). Adjusted to requested timezone."},"datetime":{"type":"string","example":"2026-03-15T08:42:00","description":"Full datetime of the ecliptic crossing. Adjusted to requested timezone."},"direction":{"type":"string","enum":["ascending","descending"],"example":"ascending","description":"Ascending = planet moves from south to north of the ecliptic. Descending = north to south."},"longitude":{"type":"number","example":345.67,"description":"Sidereal longitude of the planet at the moment of crossing (Lahiri ayanamsa)."},"sign":{"type":"string","example":"Pisces","description":"Vedic zodiac sign (rashi) the planet occupies at the crossing."}},"required":["planet","date","time","datetime","direction","longitude","sign"]},"description":"All ecliptic crossing events for visible planets during the year, sorted chronologically."}},"required":["year","timezone","events"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/rashis":{"get":{"operationId":"listRashis","tags":["Vedic Astrology"],"summary":"List all 12 Rashis - Vedic Zodiac Signs Reference","description":"Get the complete list of 12 rashis (zodiac signs) in Vedic astrology. Returns Sanskrit names, Western equivalents, sidereal date ranges, symbols, governing Adityas, and personality characteristics for each rashi. Reference data for Mesha through Meen. Essential for zodiac sign lookup tables, astrology apps, and rashi-based UI components.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"responses":{"200":{"description":"Array of all 12 Vedic rashis (Mesha through Meen) with Sanskrit names, Western equivalents, sidereal date ranges, symbols, governing Adityas, and personality characteristics.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RashiListResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/rashis/{id}":{"get":{"operationId":"getRashi","tags":["Vedic Astrology"],"summary":"Get Rashi by ID - Vedic Zodiac Sign Detail","description":"Get detailed information for a single rashi (zodiac sign) by its Vedic ID slug. Returns Sanskrit name, Western equivalent, sidereal date range, symbol, governing Aditya, and personality characteristics.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["mesha","vrishabha","mithun","karka","simha","kanya","tula","vrischika","dhanu","makar","kumbha","meen"],"example":"mesha","description":"Rashi ID slug. One of: mesha, vrishabha, mithun, karka, simha, kanya, tula, vrischika, dhanu, makar, kumbha, meen."},"required":true,"description":"Rashi ID slug. One of: mesha, vrishabha, mithun, karka, simha, kanya, tula, vrischika, dhanu, makar, kumbha, meen.","name":"id","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"responses":{"200":{"description":"Single rashi with Sanskrit name, Western equivalent, sidereal date range, symbol, governing Aditya, and personality characteristics.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RashiResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/nakshatras":{"get":{"operationId":"listNakshatras","tags":["Vedic Astrology"],"summary":"List all 27 Nakshatras - Lunar Mansions Reference","description":"Get the complete list of 27 nakshatras (lunar mansions) in Vedic astrology. Returns names, zodiac ranges, ruling planets, presiding deities, symbols, personality characteristics, and traditional remedies (mantras, gemstones, rituals) for each nakshatra from Ashwini to Revati. Essential for nakshatra lookup tables, dasha period calculations, muhurta selection, and astrology app reference data.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"responses":{"200":{"description":"Array of all 27 nakshatras (Ashwini through Revati) with zodiac ranges, ruling planets, deities, symbols, personality characteristics, and traditional remedies.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NakshatraListResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/nakshatras/{id}":{"get":{"operationId":"getNakshatra","tags":["Vedic Astrology"],"summary":"Get Nakshatra by ID - Lunar Mansion Detail","description":"Get detailed information for a single nakshatra (lunar mansion) by its ID slug, one of the 27 nakshatras of Vedic astrology. Returns name, zodiac range, ruling planet, presiding deity, symbol, personality characteristics, and traditional remedies including mantras, gemstones, and rituals.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["ashwini","bharani","krittika","rohini","mrigashira","ardra","punarvasu","pushya","ashlesha","magha","purva-phalguni","uttara-phalguni","hasta","chitra","swati","vishakha","anuradha","jyeshtha","moola","purva-ashadha","uttara-ashadha","shravana","dhanishta","shatabhisha","purva-bhadrapada","uttara-bhadrapada","revati"],"example":"ashwini","description":"Nakshatra ID slug. Examples: ashwini, bharani, krittika, rohini, mrigashira, ardra, punarvasu, pushya, ashlesha, magha, etc."},"required":true,"description":"Nakshatra ID slug. Examples: ashwini, bharani, krittika, rohini, mrigashira, ardra, punarvasu, pushya, ashlesha, magha, etc.","name":"id","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"responses":{"200":{"description":"Single nakshatra with zodiac range, ruling planet, presiding deity, symbol, personality characteristics, and traditional remedies (mantras, gemstones, rituals).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NakshatraResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/upagraha":{"post":{"operationId":"getUpagrahaPositions","tags":["Vedic Astrology"],"summary":"Get upagraha (sub-planet) positions - Upagraha Calculator API","description":"Calculate all 11 Vedic upagraha (sub-planet) positions per Brihat Parashara Hora Shastra (BPHS). Returns 6 time-based upagrahas (Gulika, Mandi, Kala, Mrityu, Ardhaprahara, Yamaghantaka) derived from the 8-part day/night division, plus 5 Sun-longitude-based upagrahas (Dhuma, Vyatipata, Parivesha, Indra Chapa, Upaketu). Essential for complete kundli analysis, dosha assessment, and advanced chart interpretation. Upagraha calculator API, Gulika Mandi position, sub-planet Vedic astrology.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpagrahaRequest"}}}},"responses":{"200":{"description":"All 11 upagraha positions with rashi, nakshatra, and pada details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpagrahaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/ashtakavarga":{"post":{"operationId":"calculateAshtakavarga","tags":["Vedic Astrology"],"summary":"Get Ashtakavarga (planetary strength) analysis - Ashtakavarga Calculator API","description":"Calculate complete Ashtakavarga analysis per Brihat Parashara Hora Shastra (BPHS). Returns Bhinnashtakavarga (BAV), Sarvashtakavarga (SAV, total 337), Reduced Ashtakavarga (Trikona + Ekadipati Shodhana per Ch. 67-68), and Shodhya Pinda planetary strength (Rashi Pinda + Graha Pinda per Ch. 69). Essential for transit prediction timing, house strength analysis, dasha result evaluation, and planetary strength comparison. Ashtakavarga calculator API, bindu rekha points, Shodhya Pinda, Vedic astrology.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AshtakavargaRequest"}}}},"responses":{"200":{"description":"Complete Ashtakavarga with Bhinnashtakavarga, Sarvashtakavarga (337-point), Reduced Ashtakavarga (Trikona + Ekadipati Shodhana), and Shodhya Pinda planetary strength.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AshtakavargaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/shadbala":{"post":{"operationId":"calculateShadbala","tags":["Vedic Astrology"],"summary":"Get Shadbala (six-fold planetary strength) analysis - Shadbala Calculator API","description":"Calculate complete Shadbala (six-fold planetary strength) per Brihat Parashara Hora Shastra (BPHS) and BV Raman Graha and Bhava Balas. Returns all 6 strength components (Sthana Bala, Dig Bala, Kala Bala, Chesta Bala, Naisargika Bala, Drik Bala) plus Ishta Phala, Kashta Phala, strength ratio, and relative ranking for all 7 classical planets. Essential for evaluating planetary strength in Vedic birth chart analysis, dasha prediction, transit interpretation, and yoga assessment. Shadbala calculator API, planetary strength Vedic astrology, graha bala, Ishta Kashta Phala.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadbalaRequest"}}}},"responses":{"200":{"description":"Complete Shadbala with 6 strength components, Ishta/Kashta Phala, strength ratios, and relative ranking for all 7 planets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShadbalaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/avasthas":{"get":{"operationId":"listAvasthas","tags":["Vedic Astrology"],"summary":"List all 17 avastha states - Planetary State Reference","description":"Reference list of every avastha (planetary state) across the three classical systems: the five Baladi age states, the three Jagradadi waking states, and the nine Deeptadi dispositional states. Each carries a short label and what the state means for the results the graha can deliver. Use it to turn the bare state names a birth chart returns into readable output, filtered by system if you only need one. Avastha meaning API, Baladi avastha, Jagradadi, Deeptadi, planetary state Vedic astrology.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["baladi","jagradadi","deeptadi"],"example":"deeptadi","description":"Return only the states of one system: \"baladi\" (5), \"jagradadi\" (3) or \"deeptadi\" (9). Omit for all 17."},"required":false,"description":"Return only the states of one system: \"baladi\" (5), \"jagradadi\" (3) or \"deeptadi\" (9). Omit for all 17.","name":"system","in":"query"}],"responses":{"200":{"description":"Avastha states with their labels and interpretations, in system order.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"jagrat","description":"Unique slug for the avastha state. It is the lowercased form of the state name the birth chart returns, so a chart value maps straight onto this record."},"name":{"type":"string","example":"Jagrat","description":"Sanskrit name of the state, exactly as it appears in the `awastha`, `jagradadi` or `deeptadi` field of a birth chart."},"system":{"type":"string","enum":["baladi","jagradadi","deeptadi"],"example":"jagradadi","description":"Which avastha system the state belongs to, and therefore which birth-chart field it appears in. \"baladi\" is the five-fold age state set by degree within the sign and appears in `awastha`. \"jagradadi\" is the three-fold waking state set by sign dignity. \"deeptadi\" is the nine-fold dispositional state. Baladi applies to every body; the other two apply to the seven classical grahas only."},"meaning":{"type":"string","example":"Awake","description":"Short label for the state, sized for a table cell beside the graha."},"interpretation":{"type":"string","example":"In its own sign or exaltation the graha is fully alert and gives its results without hindrance.","description":"What the state means for the results the graha delivers, which is the whole purpose of reading an avastha: the chart says where a graha is, the avastha says how much of its promise it can keep."}},"required":["id","name","system","meaning","interpretation"]}}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/avasthas/{id}":{"get":{"operationId":"getAvastha","tags":["Vedic Astrology"],"summary":"Get avastha by ID - Planetary State Detail","description":"Look up a single avastha state by its slug, which is the lowercased state name a Vedic birth chart returns in `awastha`, `jagradadi` or `deeptadi`. Returns the system it belongs to, a short label, and what the state means for the results the graha delivers.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["bala","kumara","yuva","vriddha","mrita","jagrat","swapna","sushupti","dipta","svastha","pramudita","shanta","dina","duhkhita","vikala","khala","kopa"],"example":"dipta","description":"Avastha slug. Baladi: bala, kumara, yuva, vriddha, mrita. Jagradadi: jagrat, swapna, sushupti. Deeptadi: dipta, svastha, pramudita, shanta, dina, duhkhita, vikala, khala, kopa."},"required":true,"description":"Avastha slug. Baladi: bala, kumara, yuva, vriddha, mrita. Jagradadi: jagrat, swapna, sushupti. Deeptadi: dipta, svastha, pramudita, shanta, dina, duhkhita, vikala, khala, kopa.","name":"id","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"responses":{"200":{"description":"The avastha state with its system, label and interpretation.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"jagrat","description":"Unique slug for the avastha state. It is the lowercased form of the state name the birth chart returns, so a chart value maps straight onto this record."},"name":{"type":"string","example":"Jagrat","description":"Sanskrit name of the state, exactly as it appears in the `awastha`, `jagradadi` or `deeptadi` field of a birth chart."},"system":{"type":"string","enum":["baladi","jagradadi","deeptadi"],"example":"jagradadi","description":"Which avastha system the state belongs to, and therefore which birth-chart field it appears in. \"baladi\" is the five-fold age state set by degree within the sign and appears in `awastha`. \"jagradadi\" is the three-fold waking state set by sign dignity. \"deeptadi\" is the nine-fold dispositional state. Baladi applies to every body; the other two apply to the seven classical grahas only."},"meaning":{"type":"string","example":"Awake","description":"Short label for the state, sized for a table cell beside the graha."},"interpretation":{"type":"string","example":"In its own sign or exaltation the graha is fully alert and gives its results without hindrance.","description":"What the state means for the results the graha delivers, which is the whole purpose of reading an avastha: the chart says where a graha is, the avastha says how much of its promise it can keep."}},"required":["id","name","system","meaning","interpretation"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/arudha":{"post":{"operationId":"calculateArudhaPadas","tags":["Vedic Astrology"],"summary":"Get the twelve Arudha padas - Arudha Lagna Calculator API","description":"Calculate the Arudha Lagna (AL) and all twelve Arudha padas of Jaimini astrology from birth details. An Arudha pada is the perceived or projected form of a bhava, so where the Lagna shows what a person is, the Arudha Lagna shows the image and status the world attaches to them. Returns each pada with the bhava lord and the count that produced it, the sign it lands in, its house from the Lagna, and a flag showing whether the classical exception moved it. Includes the Upapada (UL) read for marriage. Arudha Lagna calculator API, Jaimini pada, Upapada Lagna, Vedic astrology public image.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArudhaRequest"}}}},"responses":{"200":{"description":"All twelve Arudha padas with derivation detail, plus the Arudha Lagna and Upapada lifted to the top level.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArudhaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/chara-karakas":{"post":{"operationId":"calculateCharaKarakas","tags":["Vedic Astrology"],"summary":"Get Chara Karakas including Atmakaraka - Jaimini Karaka Calculator API","description":"Calculate the Chara Karakas of Jaimini astrology from birth details: the movable significators assigned by ranking each graha on how far it has advanced into its sign. The highest becomes the Atmakaraka, the soul significator and the strongest influence in the chart, and the rest take the Amatya, Bhratri, Matri, Pitri, Putra, Gnati and Dara offices in descending order. Supports both the eight-karaka scheme, where Rahu is included with its degree reversed, and the seven-karaka scheme that excludes the nodes, because the two can name a different Atmakaraka for the same chart. Atmakaraka calculator API, Darakaraka, Jaimini chara karaka, Vedic astrology soul significator.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharaKarakaRequest"}}}},"responses":{"200":{"description":"Karaka offices in descending rank with the ranking degree for each, plus the Atmakaraka and Darakaraka lifted to the top level.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharaKarakaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/bhava-bala":{"post":{"operationId":"calculateBhavaBala","tags":["Vedic Astrology"],"summary":"Get Bhava Bala (house strength) for all twelve houses - Bhava Bala Calculator API","description":"Calculate Bhava Bala (house strength) for all twelve bhavas per Brihat Parashara Hora Shastra (BPHS) and BV Raman Graha and Bhava Balas. Returns the three classical components (Bhavadhipati Bala from the house lord Shadbala, Bhava Digbala from the rashi class and direction, Bhava Drishti Bala from aspects on the bhava madhya) plus totals in virupas and rupas and a strength ranking. Bhavas are built on unequal Sripati mid-cusps, so a house near a sign boundary is measured where it actually falls. Shadbala measures which graha is strong, Bhava Bala measures which life area is strong, and reading both together is how a practitioner separates a strong planet in a weak house from a weak planet in a strong one. Bhava Bala calculator API, house strength Vedic astrology, bhava bala virupas, Bhavadhipati Bala, Bhava Digbala, Sripati bhava madhya.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BhavaBalaRequest"}}}},"responses":{"200":{"description":"Bhava Bala for all twelve houses with the three components, totals in virupas and rupas, ranking, and the localized house-theme legend.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BhavaBalaResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/bhav-chalit":{"post":{"operationId":"calculateBhavChalit","tags":["Vedic Astrology"],"summary":"Get the Bhav Chalit (Chalit Kundli) cusp-based house chart - Bhav Chalit API","description":"Calculate the Bhav Chalit chart, also written Bhava Chalit or Chalit Kundli, placing every graha by unequal Sripati bhava cusps instead of by whole sign. The Rashi (D1) chart treats a whole sign as a house, so a graha a degree from a sign boundary is shown in a house it does not actually occupy; the Chalit chart resolves that by measuring from the bhava sandhis, which is why practitioners check it before reading house results, house lordship strength or transit effects. Returns the twelve bhava boundaries with their madhyas and spans, every graha in both frames, and a moved flag on the placements that differ. Bhav Chalit API, Chalit Kundli calculator, bhava chalit chart, Sripati house cusps, cusp based house chart Vedic astrology.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en","description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English."},"required":false,"description":"Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.","name":"lang","in":"query"},{"schema":{"type":"string","enum":["general","finance"],"default":"general","example":"general","description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\"."},"required":false,"description":"Which signification vocabulary the houseThemes map returns. \"general\" gives the classical bhava significations (self, wealth, siblings, home, and so on). \"finance\" gives the money reading of the same twelve bhavas, so house 2 returns income and savings, 5 speculation and risk appetite, 8 sudden money and leverage, 11 gains and profits, and 12 expenses and capital outflow. Use \"finance\" for wealth, income, business and market timing questions in Krishnamurti Paddhati, where the significator house groups 2, 6, 10, 11 for earned income and 5, 8, 11 for speculation are read against a running dasha. Defaults to \"general\".","name":"focus","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BhavChalitRequest"}}}},"responses":{"200":{"description":"Bhav Chalit chart with the twelve Sripati bhavas, every graha in both frames, and the localized house-theme legend.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BhavChalitResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/heliacal":{"post":{"operationId":"getHeliacalVisibility","tags":["Vedic Astrology"],"summary":"Heliacal rising and setting (udaya and asta) - Graha Asta Calculator API","description":"Calculate heliacal rising (udaya) and setting (asta) of the six visible grahas for any date and place, by the Surya Siddhanta rule. Returns whether each graha currently clears the solar glare, its separation from the Sun in classical degrees of time, and the dates its visibility last changed and next changes. This is the calculation behind Guru Asta and Shukra Asta, the periods classical muhurta withholds marriage and other auspicious ceremonies. Unlike a birth chart combustion flag it is location aware, because the angle the ecliptic makes with the local horizon decides how long a graha lingers after the Sun. Graha asta API, Guru Asta Shukra Asta dates, heliacal rising calculator, planetary combustion muhurta.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeliacalRequest"}}}},"responses":{"200":{"description":"Heliacal visibility and the surrounding udaya and asta events for each graha.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeliacalResponse"}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}}},"webhooks":{}}