# 96Astro API > Vedic, Western and Tarot astrology as one REST API: 307 calculations in 23 families (birth charts, divisional charts to D300, dashas, panchang, muhurta, matching, doshas and yogas, KP, Jaimini, Lal Kitab, Bhrigu Nandi Nadi, Tajika, Western, tarot, numerology, Vastu, mundane, location astrology, AI readings and PDF reports), computed with the Swiss Ephemeris. How to call it: - Every capability is `POST https://api.96astroapi.com/v1/{family}/{capability}` with a JSON body and `Authorization: Bearer `. Keys stay on a server; never put one in a browser or app bundle. - Sandbox keys (`sk_test_`) run the real calculations free, with a daily limit; live keys (`sk_live_`) spend credits. Failed calls are never charged. - Dates are local ISO date-times with an IANA `timezone` (or a fixed UTC offset) and decimal `latitude`/`longitude`. The response is `{ data, meta }`. - Send an `Idempotency-Key` header on retries. Errors have a stable `error.code`. - OpenAPI 3.1 (every capability, with schemas, examples and credit costs): https://api.96astroapi.com/v1/openapi.json - MCP server for AI assistants and agents (Streamable HTTP, key in the Authorization header): https://api.96astroapi.com/mcp, set-up: https://96astroapi.com/docs/ai-assistants.md - Postman: https://documenter.getpostman.com/view/58926243/2sBYHRWhX1 - Free sandbox key: https://96astroapi.com/signup --- Source: https://96astroapi.com/docs # Introduction What the 96Astro API is, how it is organised and where to start. The 96Astro API gives your app or website the same calculations that power 96Astro: Vedic birth charts and divisional charts, dashas, panchang, matching, doshas and yogas, KP, Jaimini, Lal Kitab, Western astrology, Tarot, numerology, reports and more. It is one REST API with one response format across every family. > **API v1 preview:** These docs describe API v1, which is opening for self-serve signup. Existing customers of the current API are not affected; see [Existing customers](https://96astroapi.com/docs/existing-customers.md). ## How it is organised - **Families** group related calculations, for example *Dasha systems* or *Panchang & almanac*. Browse them in the [catalogue](https://96astroapi.com/apis.md) or the [API reference](https://96astroapi.com/docs/reference). - **Capabilities** are the individual calculations. Each has one endpoint, a published credit cost and, where relevant, **options** such as a divisional chart, an ayanamsha or a chart style. - **Status:** a capability is either **Available** or **Beta**. Beta capabilities work, but their output may still change. They are labelled everywhere they appear. ## Start here - [Quickstart](https://96astroapi.com/docs/quickstart.md): Make your first call in a few minutes. - [Authentication](https://96astroapi.com/docs/authentication.md): Keys, environments and how to keep them safe. - [Requests and responses](https://96astroapi.com/docs/requests-and-responses.md): Dates, time zones, places, languages and the response envelope. - [Errors](https://96astroapi.com/docs/errors.md): Every error code, and what to do about it. --- Source: https://96astroapi.com/docs/quickstart # Quickstart From signup to your first birth chart in a few minutes. ## 1. Create an account [Sign up](https://96astroapi.com/signup) with your email. No card is needed. Your trial includes 5,000 credits for 14 days across every available family. ## 2. Create a key In the dashboard, open **Keys** and create a **sandbox** key. The full key is shown **once**; store it in your server's secret store or an environment variable. ```bash export ASTRO_API_KEY="sk_test_..." ``` > **Warning:** Keys belong on your server. Never put a key in a mobile app, a browser bundle or a public repository. ## 3. Make your first call ```bash curl https://api.96astroapi.com/v1/vedic-charts/planet-positions \ -H "Authorization: Bearer $ASTRO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "datetime": "1990-10-18T14:30:00", "timezone": "Asia/Kolkata", "latitude": 28.6139, "longitude": 77.2090, "ayanamsha": "lahiri" }' ``` Or use an [SDK](https://96astroapi.com/docs/sdks.md), which adds retries, idempotency keys and typed inputs. The SDKs are not on npm or PyPI yet; until they are, use the curl call above or [ask support](https://96astroapi.com/support) for a pre-release package. ```ts // TypeScript: npm install @96astro/api (publishing soon) import { Astro96Client } from "@96astro/api"; const astro = new Astro96Client({ apiKey: process.env.ASTRO_API_KEY }); const { data } = await astro.vedicCharts.planetPositions({ datetime: "1990-10-18T14:30:00", timezone: "Asia/Kolkata", latitude: 28.6139, longitude: 77.209, ayanamsha: "lahiri", }); ``` ```python # Python: pip install astro96-api (publishing soon) from astro96_api import Astro96Client astro = Astro96Client() # reads ASTRO_API_KEY res = astro.vedic_charts.planet_positions( {"datetime": "1990-10-18T14:30:00", "timezone": "Asia/Kolkata", "latitude": 28.6139, "longitude": 77.209, "ayanamsha": "lahiri"} ) data = res.data ``` To explore without code, import the [Postman collection](https://96astroapi.com/docs/sdks.md#postman). A successful response looks like this, trimmed to two of the twelve bodies and fewer fields each: ```json { "data": { "ayanamsha": { "id": "lahiri", "name": "N.C. Lahiri", "degrees": 23.7285 }, "node": "true", "house_system": "whole_sign", "ascendant": { "sign": "Capricorn", "degree": 23.8935, "nakshatra": "Dhanishta", "pada": 1 }, "planets": [ { "name": "Sun", "sign": "Libra", "degree": 0.9951, "nakshatra": "Chitra", "pada": 3, "house": 10 }, { "name": "Moon", "sign": "Virgo", "degree": 27.8766, "nakshatra": "Chitra", "pada": 2, "house": 9 } ] }, "meta": { "request_id": "req_6e985a89a166b73ea220", "api_version": "v1", "credits_used": 0, "warnings": [], "language": "en" } } ``` `credits_used` is `0` because sandbox calls are free. With a live key, planet positions is a heavy calculation and costs 3 credits. ## 4. Go live When you are ready, choose a [plan](https://96astroapi.com/pricing), create a **live** key and swap it in. Sandbox and live keys never cross over, so testing cannot spend live credits. ## Next steps - Learn the input conventions in [Requests and responses](https://96astroapi.com/docs/requests-and-responses.md). - Handle failures properly with [Errors](https://96astroapi.com/docs/errors.md) and [Idempotency](https://96astroapi.com/docs/idempotency.md). - Find every endpoint in the [API reference](https://96astroapi.com/docs/reference), use an [SDK or the Postman collection](https://96astroapi.com/docs/sdks.md), or download the [OpenAPI 3.1 document](https://96astroapi.com/openapi/v1.json) to generate a client in another language. --- Source: https://96astroapi.com/docs/sdks # SDKs and Postman Official TypeScript and Python clients with retries, idempotency and PDF job helpers built in, and a ready-to-run Postman collection. Every SDK method and every Postman request is generated from the [OpenAPI document](https://96astroapi.com/openapi/v1.json), so they cover every capability in the [API reference](https://96astroapi.com/docs/reference) with the same names. The parts that make calls safe (retries, idempotency keys, errors, PDF jobs, webhook signatures) are written by hand and tested. | | TypeScript / JavaScript | Python | |---|---|---| | Package | `@96astro/api` | `astro96-api` (import `astro96_api`) | | Runtime | Node.js 18+ (and other runtimes with `fetch`). Zero dependencies | Python 3.9+, sync and `asyncio` clients on `httpx` | | Formats | ESM and CommonJS, with type declarations | Typed (`py.typed`), `TypedDict` inputs | > **Warning:** **Publishing soon.** Both SDKs are built and tested, but they are not on npm or PyPI yet, so `npm install` and `pip install` will not find them today. Until they are listed, [contact support](https://96astroapi.com/support) for a pre-release package file, or call the API over plain HTTP as in the [Quickstart](https://96astroapi.com/docs/quickstart.md). This page will drop this note when they are published. ## Install ```bash # TypeScript / JavaScript (once published) npm install @96astro/api # Python (once published) pip install astro96-api ``` Both clients read the key from the `ASTRO_API_KEY` environment variable when you do not pass one. > **Warning:** Keys belong on your server. The TypeScript client refuses to start in a browser unless you pass `dangerouslyAllowBrowser: true`, because a key in a web page is visible to every visitor. ## Your first call **TypeScript** ```ts import { Astro96Client } from "@96astro/api"; const astro = new Astro96Client({ apiKey: process.env.ASTRO_API_KEY }); const { data, meta, rateLimit } = await astro.vedicCharts.planetPositions({ datetime: "1990-10-18T14:30:00", timezone: "Asia/Kolkata", latitude: 28.6139, longitude: 77.209, }); console.log(data.ascendant.sign, data.planets.length, meta.credits_used, rateLimit?.remaining); ``` **Python** ```python from astro96_api import Astro96Client astro = Astro96Client() # reads ASTRO_API_KEY res = astro.vedic_charts.planet_positions( {"datetime": "1990-10-18T14:30:00", "timezone": "Asia/Kolkata", "latitude": 28.6139, "longitude": 77.209} ) print(res.data["ascendant"]["sign"], res.meta["credits_used"], res.rate_limit) ``` **Python, async** ```python import asyncio from astro96_api import AsyncAstro96Client async def main() -> None: async with AsyncAstro96Client() as astro: res = await astro.panchang.daily_panchang( {"date": "2026-10-15", "timezone": "Asia/Kolkata", "latitude": 28.6139, "longitude": 77.209} ) print(res.data) asyncio.run(main()) ``` Methods follow the URL: `POST /v1/{family}/{capability}` is `client.family.capability()`, in camelCase for TypeScript (`astro.doshasYogas.manglikDosha`) and snake_case for Python (`astro.doshas_yogas.manglik_dosha`). Each call returns the response's `data` and `meta`, plus `requestId`, `rateLimit` (the `RateLimit-*` headers), `replayed` and the `idempotencyKey` that was sent. ### Types Request bodies are typed from the OpenAPI request schemas, so your editor knows every field, its limits and its default. Response types (`data`) are **inferred from the documented example response**, not a contract: another response may omit a field, set it to `null` or carry more items. Check optional-looking fields before you rely on them. In Python, response `data` is a `TypedDict` of its top-level fields with nested objects as plain dicts. ## Errors A failed call raises an `ApiError` with the fields of the [error envelope](https://96astroapi.com/docs/errors.md): `status`, `code` (stable: program against it), `field`, `retryable` and `requestId`. A network failure or timeout raises `ConnectionError` (`ApiConnectionError` in Python). ```ts import { ApiError } from "@96astro/api"; try { await astro.vedicCharts.planetPositions({ datetime: "1990-10-18T14:30:00", latitude: 99, longitude: 77.2 }); } catch (err) { if (err instanceof ApiError && err.code === "invalid_request") { console.error(`Fix ${err.field}: ${err.message} (request ${err.requestId})`); } else { throw err; } } ``` ```python from astro96_api import ApiError try: astro.vedic_charts.planet_positions({"datetime": "1990-10-18T14:30:00", "latitude": 99, "longitude": 77.2}) except ApiError as e: if e.code == "quota_exhausted": ... # top up or upgrade; retrying will not help print(e.status, e.code, e.field, e.request_id) ``` ## Retries and idempotency The clients retry for you, with exponential backoff and jitter, up to `maxRetries` (`max_retries`, default 2): - `429 rate_limited` and `503` are retried after the server's `Retry-After`. If it asks for longer than `maxRetryDelayMs` (`max_retry_delay`, default 30 seconds), the error is raised instead so you can decide. - `429 quota_exhausted` is never retried. - Other errors marked `retryable` (`500`, `502`, `504`, an idempotency key still in progress) and network failures are retried **only when the call carries an idempotency key**, so a retry can never be charged twice. Every POST gets an `Idempotency-Key` automatically, reused across the client's own retries. To retry safely across processes (say, a job queue), pass your own key and reuse it for the same logical operation: ```ts import { idempotencyKey } from "@96astro/api"; const key = order.idempotencyKey ?? idempotencyKey(); // store it with the order await astro.reports.reportCareer(birth, { idempotencyKey: key }); ``` ```python from astro96_api import idempotency_key key = order.idempotency_key or idempotency_key() # store it with the order astro.reports.report_career(birth, idempotency_key=key) ``` Turn automatic keys off with `autoIdempotency: false` (`auto_idempotency=False`). See [Idempotency](https://96astroapi.com/docs/idempotency.md) for how the API replays a repeated key. ### Options | TypeScript | Python | Default | Meaning | |---|---|---|---| | `apiKey` | `api_key` | `ASTRO_API_KEY` | Your sandbox or live key | | `baseUrl` | `base_url` | `https://api.96astroapi.com` | API address | | `auth` | `auth` | `"bearer"` | `"bearer"` or `"x-api-key"` header | | `timeoutMs` | `timeout` | 60 s | Per attempt | | `maxRetries` | `max_retries` | 2 | Retries after the first attempt | | `fetch` | `http_client` | global `fetch` / new `httpx` client | Bring your own transport, proxy or mock | Each method also takes per-call options: `idempotencyKey`, `timeoutMs`, `maxRetries`, `headers` and an `AbortSignal` to cancel (Python: `idempotency_key=`, `timeout=`, `max_retries=`, `headers=`; cancel an `asyncio` task to stop an async call). ## PDF reports `createPdfJob`, `waitForJob` and `downloadFile` wrap the [PDF job](https://96astroapi.com/docs/jobs-and-webhooks.md) routes. `waitForJob` polls with a growing interval (2 s to 10 s, up to 5 minutes by default) and raises `JobError` if the job fails. `downloadFile` fetches the signed link without your key and refreshes an expired link once. ```ts import { writeFile } from "node:fs/promises"; const birth = { datetime: "1990-10-18T14:30:00", timezone: "Asia/Kolkata", latitude: 28.6139, longitude: 77.209 }; const { job, pdf } = await astro.renderPdf({ capability: "report-career", input: birth, branding: { brand_name: "Shree Jyotish Kendra", accent: "#1f4fd1" }, }); await writeFile(`career-${job.id}.pdf`, pdf); ``` ```python job = astro.create_pdf_job("report-career", birth, branding={"brand_name": "Shree Jyotish Kendra"}).data done = astro.wait_for_job(job, timeout=300) with open(f"career-{done['id']}.pdf", "wb") as f: f.write(astro.download_file(done)) ``` ## Webhooks `verifyWebhook` (`verify_webhook`) checks the `Astro-Signature` of a [webhook](https://96astroapi.com/docs/jobs-and-webhooks.md#webhooks) against your endpoint's secret (or several, while you rotate), refuses timestamps more than 5 minutes off, compares in constant time and returns the parsed event. Pass the **raw** request body. ```ts import express from "express"; import { verifyWebhook, WebhookSignatureError } from "@96astro/api"; app.post("/webhooks/96astro", express.raw({ type: "application/json" }), async (req, res) => { try { const event = await verifyWebhook({ rawBody: req.body, headers: req.headers, secret: process.env.ASTRO_WEBHOOK_SECRET! }); // Deduplicate on event.id, queue the work, then answer quickly. res.sendStatus(204); } catch (err) { if (err instanceof WebhookSignatureError) return res.status(400).send("bad signature"); throw err; } }); ``` ```python from astro96_api import WebhookSignatureError, verify_webhook try: event = verify_webhook(request.body, request.headers, os.environ["ASTRO_WEBHOOK_SECRET"]) except WebhookSignatureError: return 400 ``` ## Postman Download the [Postman collection](https://96astroapi.com/postman/96astro-api.postman_collection.json) and an environment ([Sandbox](https://96astroapi.com/postman/96astro-api-sandbox.postman_environment.json) or [Live](https://96astroapi.com/postman/96astro-api-live.postman_environment.json)), then import them in Postman (**Import**, drop the files). - Select the environment and paste your key into `api_key`. The files carry no key. Start with a sandbox key (`sk_test_...`): calls are not charged. - The collection authenticates every request with `Authorization: Bearer {{api_key}}` and sends a fresh `Idempotency-Key` (`{{$guid}}`). Replace it with a fixed value to try a replay. - Requests are grouped by family, with the documented example body and a saved example response. - The **PDF jobs** folder chains create, poll and download: its scripts carry `job_id` and `download_url` from one request to the next. ## Other languages Any language with an HTTP client can call the API: see the [Quickstart](https://96astroapi.com/docs/quickstart.md) and [Requests and responses](https://96astroapi.com/docs/requests-and-responses.md). The [OpenAPI 3.1 document](https://96astroapi.com/openapi/v1.json) also works with generators such as OpenAPI Generator. --- Source: https://96astroapi.com/docs/ai-assistants # AI assistants and MCP Let Claude, ChatGPT, Cursor and other AI tools search the catalogue and run calculations with your key. The 96Astro API runs a hosted [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server. Connect it to an AI assistant or coding agent and it can find the right calculation, read its exact input and call it for you, with your own key. ```text https://api.96astroapi.com/mcp ``` It uses the Streamable HTTP transport. Your key goes in the `Authorization` header, as with the REST API. > **Warning:** Start with a **sandbox** key (`sk_test_`): sandbox calls are free. With a live key, every calculation the assistant runs spends credits, exactly as a direct API call would. ## Tools | Tool | What it does | Key | |---|---|---| | `search_capabilities` | Finds calculations by keyword, e.g. "manglik" or "choghadiya" | Not needed | | `list_families` | Lists the families of calculations | Not needed | | `describe_capability` | The exact input schema, an example, options, cost and languages of one capability | Not needed | | `call_capability` | Runs one capability and returns its JSON | Your key | | `find_place` | Turns a place name into latitude, longitude and time zone | Your key | `call_capability` goes through the same `/v1` endpoint as your own code, so credits, rate limits, idempotency and errors work the same way. Chart images are left out of the tool result to save the model's context; call the API directly when you need them. ## Claude Code ```bash claude mcp add --transport http 96astro https://api.96astroapi.com/mcp \ --header "Authorization: Bearer sk_test_..." ``` Then ask, for example: *"Using 96astro, what is the moon sign for someone born 18 October 1990 at 14:30 in Delhi?"* ## Cursor In `.cursor/mcp.json` (this project) or `~/.cursor/mcp.json` (every project): ```json { "mcpServers": { "96astro": { "url": "https://api.96astroapi.com/mcp", "headers": { "Authorization": "Bearer sk_test_..." } } } } ``` ## VS Code In `.vscode/mcp.json`. VS Code asks for the key once and stores it securely: ```json { "inputs": [{ "type": "promptString", "id": "astro-key", "description": "96Astro API key", "password": true }], "servers": { "96astro": { "type": "http", "url": "https://api.96astroapi.com/mcp", "headers": { "Authorization": "Bearer ${input:astro-key}" } } } } ``` ## Claude Desktop and other clients without remote servers A client that only starts local (stdio) servers can reach it through the `mcp-remote` bridge, which needs Node.js: ```json { "mcpServers": { "96astro": { "command": "npx", "args": ["-y", "mcp-remote", "https://api.96astroapi.com/mcp", "--header", "Authorization:${ASTRO_AUTH}"], "env": { "ASTRO_AUTH": "Bearer sk_test_..." } } } } ``` Any other client that supports Streamable HTTP with a custom header works the same way: the URL above and `Authorization: Bearer `. ## Docs for language models Without MCP, point an assistant at the documentation written for it: - [/llms.txt](https://96astroapi.com/llms.txt): what the API is, how to call it, and a link to every guide and capability. - [/llms-full.txt](https://96astroapi.com/llms-full.txt): every guide and the whole catalogue in one file. - Any guide or capability page as Markdown: add `.md` to its address, e.g. [/docs/quickstart.md](https://96astroapi.com/docs/quickstart.md.md). Each guide also has **Copy Markdown** and **Open** buttons under its title. ## Keep your key safe - Keep MCP configuration files with a key out of version control, or use the client's secret prompt (as in the VS Code example). - The key can do whatever your account can; give an assistant a sandbox key unless it needs live data. - Revoke a key under **Keys** in the dashboard at any time; the connection stops working at once. --- Source: https://96astroapi.com/docs/authentication # Authentication API keys, sandbox and live environments, and keeping keys safe. Every request is authenticated with an API key sent in a **header**. Keys are never accepted in the URL, so they cannot leak into server logs, proxies or browser history. ```http Authorization: Bearer sk_live_... ``` `X-API-Key: sk_live_...` is accepted as an alternative for clients that cannot set `Authorization`. ## Sandbox and live keys | Prefix | Environment | Charged | Use it for | |---|---|---|---| | `sk_test_` | Sandbox | No | Development and CI: real calculations, up to 500 calls a day | | `sk_live_` | Live | Yes | Production traffic | A key works only in its own environment. ## Managing keys - **Shown once.** We store only a fingerprint, never the key itself. If you lose a key, rotate it. - **Named.** Give each integration its own key, so revoking one never breaks another. Every key can call every capability. - **In a project.** Every key belongs to a [project](https://96astroapi.com/docs/teams-and-projects.md) of your organization. Its calls count toward that project's usage and, if the project has one, its monthly credit budget (`429 project_budget_exceeded` when it is used up). Keys belong to projects, not people: a key keeps working when the teammate who created it leaves the team, unless it is revoked. - **Rotation.** Create the new key, deploy it, then revoke the old one. Both work during the changeover. - **Last used.** The dashboard shows when each key was last used. - **Revocation** takes effect immediately. - **Who can manage keys.** In a team, owners, admins and developers can create keys; developers can revoke the keys they created, owners and admins any key. Billing members and viewers cannot see or create keys. See [Teams and projects](https://96astroapi.com/docs/teams-and-projects.md). ## Keep keys on your server Call the API from your backend. A key inside a mobile app, a single-page app or a WordPress theme can be extracted by anyone. If you need astrology data in a browser or app, have it call your server, and have your server call us. --- Source: https://96astroapi.com/docs/teams-and-projects # Teams and projects Invite teammates with roles, switch between organizations, and split keys, usage and budgets into projects. An **organization** is your account: its plan, credits, invoices and keys. It can have several **members**, each with a role, and several **projects**, each with its own keys, usage and optional monthly credit budget. ## Roles | Role | Can do | |---|---| | **Owner** | Everything, including billing, transferring ownership and asking for the organization to be deleted | | **Admin** | Members, projects, keys and webhooks. Sees billing but cannot pay, change the plan or edit the billing profile | | **Developer** | API keys (creates keys and revokes the ones they created), the playground, usage and webhooks | | **Billing** | Billing, invoices and the GST profile; sees usage. No keys | | **Viewer** | Read-only: overview, keys (never a key's secret), usage, webhooks, billing | Every page of the dashboard checks your role on the server, so a hidden button is never the only protection. An organization always keeps at least one owner: the last owner cannot leave or be demoted until another member is made an owner. These are roles inside **your** organization. They have nothing to do with 96Astro staff. ## Inviting teammates Owners and admins invite people from **Team** in the dashboard. An admin can invite admins, developers and viewers; only an owner can invite billing members. - The invitation email has a link that is valid for **7 days** and works once. **Resend** sends a new link and the old one stops working; **Withdraw** cancels it. - The person must accept with the **same email address** the invitation was sent to. Without an account yet, they create one with that address from the link and join when they confirm it. - Seats count members **and** pending invitations. | Plan | Seats | Active projects | Project budgets | |---|---|---|---| | Trial, Starter | 1 | 1 | No | | Growth | 5 | 3 | No | | Business | 20 | Unlimited | Yes | | Enterprise | By contract | Unlimited | Yes | After a downgrade, existing members and projects stay; you cannot add more until you are within the new plan's limits. ## Several organizations You can belong to several organizations, for example your company's and a client's. Choose the one you are working in with the switcher at the top of the dashboard. Each browser session remembers its own choice, and it is checked against your memberships on every page: if you are removed from an organization, you lose access to it at your next request. ## Removing a member Owners and admins remove members from **Team**; anyone can leave. Keys belong to projects, not to people, so a removed member's keys keep working unless you tick **Also revoke the keys they created**. Review the key list (it shows each key's project) when someone leaves. ## Projects Use projects to separate apps, clients or environments of your own. Each project has: - its own **test and live keys** (choose the project when you create a key); - its own **usage**: filter the usage page and the CSV export by project (the CSV has a `project_id` column); - an optional **monthly credit budget** (Business and Enterprise). Owners and admins create, rename and archive projects. A project with active keys cannot be archived (revoke them first), and an organization keeps at least one active project. Webhook events carry the `project_id` of the job they report (or `null` for organization-wide events), and an endpoint can be scoped to one project. See [webhooks](https://96astroapi.com/docs/jobs-and-webhooks.md#webhooks). ## Project budgets A budget caps the **live** credits a project's keys may use per calendar month (UTC). It is checked before each call under the same lock as your credits, so concurrent calls cannot overshoot it. A call that does not fit returns: ```json { "error": { "code": "project_budget_exceeded", "message": "This project's monthly credit budget (50,000) does not cover this call: 49,995 used this month, 10 needed. …", "field": null, "request_id": "req_…", "retryable": false } } ``` with HTTP status `429`. It is not charged and retrying will not help: raise the budget under **Projects**, use another project's key, or wait for the 1st of the month. Failed calls and sandbox calls never count toward a budget. --- Source: https://96astroapi.com/docs/requests-and-responses # Requests and responses Dates, time zones, places, languages, options and the response envelope. ## Base URL and format ```text https://api.96astroapi.com/v1 ``` Requests are `POST` with a JSON body (`Content-Type: application/json`). Capability responses are always JSON. A few chart capabilities include SVG drawings as strings inside the JSON, and their reference entry says so. PDFs are made by [report jobs](https://96astroapi.com/docs/jobs-and-webhooks.md). ### Chart images as PNG Every capability that returns chart images takes two optional fields: | Field | Values | What it does | |---|---|---| | `image_format` | `svg` (default) or `png` | `png` returns each chart as a `data:image/png;base64,...` URI, ready for an `` tag, an app or an email. An object's `svg` field becomes `png`, and its `format` says `png` | | `image_width` | 200 to 2400 (default 1000) | The width of each PNG in pixels; the height keeps the chart's proportions | ```json { "datetime": "1990-10-18T14:30:00", "timezone": "Asia/Kolkata", "latitude": 28.6139, "longitude": 77.209, "style": "north", "charts": ["D1", "D9"], "image_format": "png", "image_width": 800 } ``` PNG costs nothing extra. On a capability without chart images, `image_format` is refused with `422 invalid_request`. ## Date and time Send the **local** date and time as ISO 8601 without an offset, plus an **IANA time-zone name**: ```json { "datetime": "1990-10-18T14:30:00", "timezone": "Asia/Kolkata" } ``` We resolve the offset for that exact date, including historical changes and daylight saving. If a local time is ambiguous (clocks went back) or does not exist (clocks went forward), you get `422 ambiguous_local_time` listing the valid choices; we never guess. If you only have a fixed offset, send `"utc_offset": "+05:30"` instead of `timezone`. ## Place `latitude` and `longitude` are decimal degrees: north and east positive, south and west negative. To find coordinates and the time zone for a place name, use the place-search capability under **Utilities**. ## Astrology settings | Field | Default | Notes | |---|---|---| | `ayanamsha` | `lahiri` | Sidereal capabilities. The reference lists every supported value. KP capabilities always use the Krishnamurti ayanamsha | | `house_system` | per capability | Western capabilities take `P` Placidus (the default), `K` Koch, `W` whole sign or `E` equal. KP capabilities always use Placidus cusps. The OpenAPI document lists each capability's values | | `node` | `true` | `true` (osculating) or `mean` lunar node, on chart capabilities | An unsupported value is rejected with `422`. The API never silently substitutes a default. Responses echo the settings used where they apply, for example `ayanamsha`, `node` and `house_system` in planet positions. ## Language Each capability lists the languages it answers in: the `language` enum of its request and `x-languages` in the [OpenAPI document](https://96astroapi.com/openapi/v1.json). Today 4 capabilities, the AI readings, answer in 26 languages, and every calculation and report answers in English. Any request can add `labels` for translated display names of the terms in the answer (13 Indian languages and more): see the [languages page](https://96astroapi.com/docs/languages.md#translated-labels). The [languages page](https://96astroapi.com/docs/languages.md) has the table by family. AI readings take these ISO 639-1 codes: `as bn de en es fr gu hi it ja kn ko ml mr ne nl or pa pl pt ru si ta te tr ur` An AI reading is written by a language model in the language you ask for; the text is machine-written and has not been reviewed by native speakers. A language a capability does not support is rejected with `422 unsupported_language`, and the error's `supported` lists the ones it takes. `en` (the default) is accepted everywhere. Field names, IDs, enum values and numbers never change with language; only display text does. `meta.language` states the language the answer is in. ## Response envelope Every successful response has the same shape: ```json { "data": { }, "meta": { "request_id": "req_6e985a89a166b73ea220", "api_version": "v1", "credits_used": 3, "warnings": [], "language": "en" } } ``` - **Lists are arrays.** Planets, houses and periods are arrays of objects with named fields, never objects keyed `"0"`, `"1"`. - **Missing versus empty.** `[]` means the calculation ran and found nothing; `null` means a value does not apply, with the reason in `meta.warnings`. - **Dates** in responses are ISO 8601 with an explicit offset. - **`request_id`** identifies the call (`req_` and 20 hex characters). It is also in the `X-Request-Id` header of every response, including errors; quote it when you contact support. --- Source: https://96astroapi.com/docs/languages # Languages Which capabilities answer in which languages, family by family. {/* Generated by `python -m app.languages_doc --write` (services/commercial). Do not edit by hand. */} 4 AI readings answer in 26 languages and 205 calculations and reports also answer in Hindi; every other capability answers in English. Send `language` with an ISO 639-1 code; `meta.language` states the language the answer is in. A language a capability does not support is refused with `422 unsupported_language`, and the error's `supported` lists what that capability does take. Each operation's `x-languages` in the OpenAPI document lists the same. Field names, IDs, enum values and numbers never change with language: only display text does. AI readings are written by a language model in the language you ask for. The text is machine-written and has not been reviewed by native speakers; the review notes are in our language audit (doc 27). ## Hindi for calculations and reports 205 calculations and reports answer in Hindi (`"language": "hi"`). Their explanatory sentences come from a catalog of pre-translated text that was written and then checked in a second, independent pass, sentence by sentence; nothing is machine-translated at request time. Both passes were made with AI tools and have not yet been reviewed by native speakers. Everything else stays exactly as in English: field names, IDs, enum values, numbers, and the sign, planet and nakshatra names you program against (add `labels` for their Hindi display names). A sentence the catalog does not have stays in English, whole: you never get a sentence that is half Hindi. `meta.translation` counts the display sentences in the answer and how many are in Hindi: ```json "meta": { "language": "hi", "translation": { "sentences": 42, "translated": 40 } } ``` A capability is offered in Hindi when at least 90% of the sentences in a full sample answer were translated. Other calculations and reports answer in English; more open as the catalog grows. The engine's own term renaming is never used for these answers, because it changes identifiers. ## Translated labels Any capability can add display names in another language without changing the answer. Send `"labels": "hi"` with the request: `data` stays exactly as in English, and `meta.labels.terms` maps each sign, planet, nakshatra, tithi, yoga and other term that appears in `data` to its name in that language. Show `terms[value] ?? value`, and keep comparing against the English value. Labels are free. Labels do not translate explanatory sentences; for Hindi sentences use `language` on a capability that offers it. ```json "meta": { "labels": { "language": "hi", "quality": "curated", "terms": { "Aries": "मेष", "Sun": "सूर्य" } } } ``` | Quality | Codes | What you get | |---|---|---| | `curated` | `as` `bn` `gu` `hi` `kn` `ml` `mr` `ne` `or` `pa` `ta` `te` `ur` | The terms that language's own panchangs and Jyotish books print | | `transliterated` | `si` | The Sanskrit term written in the language's script | | `partial` | `de` `es` `fr` `it` `ko` `nl` `pl` `pt` `ru` `tr` | Native zodiac, planet and weekday names; other terms are left out, so show the English | No label pack has been reviewed by native speakers yet. Japanese is not offered: its pack spells the Sanskrit term in kana rather than using the Japanese words. ## By family | Family | Languages | |---|---| | AI interpretation | `ai-chat`, `ai-general`, `ai-insight`, `ai-lens`: 26 languages; English for the rest | | Annual charts (Tajika) | `varshaphal`: English and Hindi; English for the rest | | Bhrigu Nandi Nadi (BNN) | `bnn-dasha`, `bnn-graha-phala`, `bnn-nadi`, `bnn-ratna`, `bnn-yoga`: English and Hindi; English for the rest | | Birth charts & planets | English | | Compatibility matching | `ayu-milan`, `life-stage-match`, `marriage-sustainability`, `papasamya`, `papasamya-single`, `porutham`: English and Hindi; English for the rest | | Dasha systems | `ashtottari-dasha`, `mudda-dasha`, `niryana-shoola-dasha`, `vimshottari-deep`: English and Hindi; English for the rest | | Doshas & yogas | `bundle-kaalsarp-pitra`, `kaalsarp-dosha`, `parashari-yoga-arishta-yogas`, `parashari-yoga-chandra-yogas`, `parashari-yoga-children-yogas`, `parashari-yoga-conjunction-yogas`, `parashari-yoga-daridra-extended`, `parashari-yoga-daridra-yogas`, `parashari-yoga-dhana-extended`, `parashari-yoga-dhana-yogas`, `parashari-yoga-dosha-yogas`, `parashari-yoga-eye-ear-speech-yogas`, `parashari-yoga-fame-fortune-yogas`, `parashari-yoga-fourth-house-extended`, `parashari-yoga-fourth-house-yogas`, `parashari-yoga-health-disease-yogas`, `parashari-yoga-karmajiva-yogas`, `parashari-yoga-knowledge-skill-yogas`, `parashari-yoga-longevity-extended`, `parashari-yoga-longevity-yogas`, `parashari-yoga-malika-yogas`, `parashari-yoga-nabha-extended`, `parashari-yoga-nabha-yogas`, `parashari-yoga-neecha-bhanga`, `parashari-yoga-panch-maha`, `parashari-yoga-parivartan`, `parashari-yoga-parivartana-extended`, `parashari-yoga-pdf-additional-yogas`, `parashari-yoga-physical-speech-yogas`, `parashari-yoga-planet-chandra-yogas`, `parashari-yoga-raj-yoga-extended`, `parashari-yoga-raj-yogas`, `parashari-yoga-raja-sambandha-yogas`, `parashari-yoga-sambu-hora-yogas`, `parashari-yoga-sanyasa-yogas`, `parashari-yoga-sibling-yogas`, `parashari-yoga-special-classical-v2`, `parashari-yoga-special-yogas`, `parashari-yoga-surya-yogas`, `parashari-yoga-two-planet-conjunctions`, `parashari-yoga-vipreet-raj`, `parashari-yoga-yoga-karakas`, `parashari-yoga-yogaristha-yogas`, `pitra-dosha`: English and Hindi; English for the rest | | Festivals & muhurta | `muhurta-finder`, `muhurta-purposes`, `vrat-observances`: English and Hindi; English for the rest | | Jaimini | `jaimini-charts`: English and Hindi; English for the rest | | Krishnamurti Paddhati (KP) | `kp-btr`, `kp-ephemeris`: English and Hindi; English for the rest | | Lal Kitab | `lal-kitab-chart`, `lal-kitab-dasha`, `lal-kitab-debts`, `lal-kitab-prediction`, `lal-kitab-remedies`, `lal-kitab-teva`: English and Hindi; English for the rest | | Location astrology | `acg-lines`, `compare-locations`, `dasha-optimize`, `local-space`, `location-kp-analysis`, `location-navatara`, `rank-cities`, `transit-acg-lines`, `zone-analysis`: English and Hindi; English for the rest | | Mundane astrology | `mundane-ai-forecast`, `mundane-country-impact`, `mundane-eclipses`, `mundane-ingress-charts`, `mundane-kota-chakra`, `mundane-kurma-chakra`, `mundane-nava-nayaka`, `mundane-samvatsara`, `mundane-sanghatta`, `mundane-sapt-nadi`, `mundane-sarvatobhadra`, `mundane-triple-malefic`, `mundane-weather`: English and Hindi; English for the rest | | Numerology | `biorhythm`, `numerology`, `numerology-bundle`: English and Hindi; English for the rest | | Panchang & almanac | `daily-panchang`, `eclipses`, `sankalpa-sacred-tithis`, `special-day-yogas`, `tamil-calendar`, `tamil-timings`: English and Hindi; English for the rest | | Predictions & readings | `ayurdaya`, `daily-personal-forecast`, `detailed-life`, `lifetime-malefic-transits`, `monthly-personal-forecast`, `navatara`, `personal-characteristics`, `personal-characteristics-bundle`, `prediction-bhavesh`, `prediction-classics`, `prediction-dasha`, `prediction-gem`, `prediction-life-report`, `prediction-lucky-info`, `prediction-nakshatra-interp`, `prediction-nature`, `prediction-physical`, `prediction-planetary-dispositions`, `sign-horoscope-daily`, `sign-horoscope-monthly`, `sign-horoscope-next-week`, `sign-horoscope-weekly`, `sign-horoscope-yearly`, `sign-profile`, `twelve-month-prediction`, `weekly-personal-forecast`: English and Hindi; English for the rest | | Remedies & guidance | `gem-details`, `gem-details-all`, `nakshatra-vastu`, `nakshatra-vastu-all`, `rudraksha`: English and Hindi; English for the rest | | Reports | `classical-kundli-report`, `longevity-analysis`, `matching-report`, `report-career`, `report-children`, `report-education`, `report-foreign-travel`, `report-health`, `report-marriage`, `report-politics`, `report-property`, `report-relocation`, `report-romance`, `report-spiritual`, `report-wealth`: English and Hindi | | Strengths & relationships | `ashtakavarga`, `ashtakavarga-bundle`, `saptbal`: English and Hindi; English for the rest | | Tarot | `tarot-business-breakup`, `tarot-career`, `tarot-celtic-cross`, `tarot-compatibility`, `tarot-daily`, `tarot-erotic-love`, `tarot-flirt`, `tarot-fortune-cookie`, `tarot-in-depth-love`, `tarot-love-triangle`, `tarot-past-present-future`, `tarot-romantic-breakup`, `tarot-shuffle`, `tarot-year-ahead`: English and Hindi; English for the rest | | Utilities | English | | Vastu | `vastu-analyse`, `vastu-auspicious-times`, `vastu-ayadi`, `vastu-combined-with-city`, `vastu-compare`, `vastu-heatmap`, `vastu-reference`, `vastu-templates`: English and Hindi; English for the rest | | Western astrology | `synastry-aspects`, `synastry-bulk`, `synastry-career`, `synastry-chart`, `synastry-compatibility`, `synastry-emotion`, `synastry-finance`, `synastry-full`, `synastry-intimacy`, `synastry-predictions`, `synastry-spirituality`, `synastry-wheel`, `western-ascendant-report`, `western-daily-transit`, `western-detailed-report`, `western-general-transits-daily`, `western-general-transits-monthly`, `western-general-transits-weekly`, `western-house-cusps`, `western-natal-aspects`, `western-natal-chart`, `western-natal-wheel`, `western-node-report`, `western-planet-details`, `western-sun-daily`, `western-sun-sign-match`, `western-sun-weekly`, `western-transit-chart`, `western-transit-dates`, `western-transit-wheel`, `western-yearly-forecast`: English and Hindi; English for the rest | ## Language codes | Code | Language | |---|---| | `as` | Assamese | | `bn` | Bengali | | `de` | German | | `en` | English | | `es` | Spanish | | `fr` | French | | `gu` | Gujarati | | `hi` | Hindi | | `it` | Italian | | `ja` | Japanese | | `kn` | Kannada | | `ko` | Korean | | `ml` | Malayalam | | `mr` | Marathi | | `ne` | Nepali | | `nl` | Dutch | | `or` | Odia | | `pa` | Punjabi | | `pl` | Polish | | `pt` | Portuguese | | `ru` | Russian | | `si` | Sinhala | | `ta` | Tamil | | `te` | Telugu | | `tr` | Turkish | | `ur` | Urdu | All codes: `as bn de en es fr gu hi it ja kn ko ml mr ne nl or pa pl pt ru si ta te tr ur`. --- Source: https://96astroapi.com/docs/errors # Errors The error format, every error code, and what your code should do. Errors use standard HTTP status codes and one JSON shape: ```json { "error": { "code": "invalid_request", "message": "Input should be less than or equal to 90", "field": "latitude", "request_id": "req_6e985a89a166b73ea220", "retryable": false } } ``` Program against `code`, which is stable. `message` is for people and may change. `field` names the input at fault, or is `null` when no single field is. | Status | Codes | What to do | |---|---|---| | 400 | `invalid_request` | The body is not valid JSON, the `Idempotency-Key` is too long, or the key was sent in the URL. Fix the request | | 401 | `invalid_key`, `expired_key` | Check or rotate the key. Do not retry in a loop | | 402 | `payment_required` | Your plan's payment is overdue past its grace period. Pay it in the dashboard; sandbox keys keep working | | 403 | `account_suspended` | The account is not active. Contact support | | 403 | `plan_upgrade_required` | The Free plan does not include AI readings or PDF jobs on live keys. Choose a paid plan; sandbox keys can still test them | | 404 | `not_found` | There is no such capability, job or file, or it is not yours | | 409 | `idempotency_conflict` | See [below](#idempotency-conflicts) | | 410 | `link_expired` | A PDF download link has expired. Poll the job for a fresh link | | 410 | `file_expired` | The PDF is no longer kept. Create a new PDF job | | 413 | `payload_too_large` | Reduce the request size | | 422 | `invalid_request`, `ambiguous_local_time`, `unsupported_option`, `unsupported_language` | Fix the input. `field` names the problem | | 429 | `rate_limited` | Wait for `Retry-After` seconds, then retry | | 429 | `quota_exhausted` | No credits left, or a sandbox daily limit was reached. Top up, upgrade or wait for renewal. Retrying will not help | | 429 | `spend_cap_reached` | Your opt-in overage has reached the monthly spending cap you set (or this call would pass it). Raise the cap or buy a top-up in Billing, or wait for the next period. Retrying will not help | | 429 | `project_budget_exceeded` | The key's [project](https://96astroapi.com/docs/teams-and-projects.md) has used its monthly credit budget (or this call would pass it). An owner or admin can raise the budget under Projects; it resets on the 1st of the month (UTC). Retrying will not help | | 500 | `computation_failed` | Safe to retry with the same idempotency key | | 501 | `not_yet_available` | The capability is in the catalogue but not callable on /v1 yet | | 502 / 503 | `unavailable` | Retry with exponential backoff and jitter | | 504 | `deadline_exceeded` | The calculation took too long. Retry with backoff | **You are never charged for an error.** Failed calls do not use credits. ## Idempotency conflicts `409 idempotency_conflict` has several causes; the `message` says which: - the same `Idempotency-Key` was used with a **different body**: use a new key; - a request with that key is **still in progress**: `retryable` is `true`, so retry shortly with the same key; - the key is more than **24 hours** old, or its original response is no longer kept: use a new key. ## Retrying safely Retry only when `retryable` is `true`. Use exponential backoff with jitter, and send an [idempotency key](https://96astroapi.com/docs/idempotency.md) on every request, so a retry after a network timeout can never charge twice. --- Source: https://96astroapi.com/docs/credits-and-rate-limits # Credits and rate limits How calls are charged, how limits work and the headers that report them. ## Credits Each successful call uses credits from your plan: | Compute class | Credits per call | |---|---| | Light and standard | 1 | | Heavy | 3 | | Reports | 10 | | AI readings | Metered from the same credits: typically 60-170 (fast), 250-750 (balanced), 1,500-4,000 (deep) | | PDF of a report (`POST /v1/jobs/pdf`) | The report's 10, plus 120 | Every capability's cost is shown in the [API reference](https://96astroapi.com/docs/reference) and returned in `meta.credits_used`. An AI reading reserves its tier's ceiling before the call and is charged only what it used. Errors are never charged, and sandbox keys never use credits. ## When credits run out The API returns `429 quota_exhausted`, never a silent failure or a surprise bill. You can: - buy a **top-up** from the dashboard; - upgrade your plan; the new allowance applies immediately; - wait for your monthly credits to renew; - turn on **overage** with a monthly spending cap (below), so live calls continue instead of stopping. ## After the trial: the Free plan When the 14-day trial ends, or a paid subscription ends, the account moves to the **Free plan**: 1,000 live credits on the 1st of every month (UTC), at 1 rate-limit unit per second. Unused Free credits do not carry over. Every family is included except AI readings and PDF jobs, which answer `403 plan_upgrade_required` on live keys; sandbox keys still test them. Where Free-plan results appear publicly, show "Powered by 96Astro API" with a link to 96astroapi.com. Choosing a paid plan replaces Free at once. ## Project budgets On the Business and Enterprise plans, each [project](https://96astroapi.com/docs/teams-and-projects.md) can have a **monthly credit budget**: the most live credits its keys may use in a calendar month (UTC). It is checked at admission, under the same lock as your credits, so concurrent calls cannot overshoot it: a call that would take the project past its budget returns `429 project_budget_exceeded` and is not charged. Other projects keep working, and the budget resets on the 1st of the month. Failed calls do not count, and sandbox calls never do. Raise or clear the budget under **Projects** in the dashboard; a call can still stop earlier with `quota_exhausted` or `spend_cap_reached` when the organization's credits or overage cap run out first. ## Overage (opt-in, capped) Overage is **off** unless the account owner turns it on under **Billing**. It needs an active paid plan and billing details, and a monthly cap of at least the price of the smallest top-up. The cap and the overage price exclude GST, like every price. - **Order.** Plan credits are used first, then top-ups, then overage. A top-up bought later is used before any more overage. - **Price.** Overage credits cost your plan's top-up rate per 1,000 credits (the cheapest top-up your plan can buy), shown in Billing. - **Never past the cap.** Before each live call the credits it may use are reserved against the cap's remaining room, so concurrent calls cannot overshoot it. A call that does not fit returns `429 spend_cap_reached`; failed calls give their credits back. - **Alerts.** An email (and, on plans with webhooks, the `overage.started`, `overage.threshold` and `overage.cap_reached` events) when overage starts and at 50 %, 80 % and 100 % of the cap, each once a month. - **Billing.** Overage is billed with GST as soon as the cap is reached, and the rest after each monthly period ends; amounts under 1.00 are waived. You pay the bill from **Billing** within 7 days and the GST invoice is issued with the payment, with the line "Overage credits N at ₹x per 1,000". An unpaid bill past its due date pauses live calls (`402 payment_required`) until it is paid; the sandbox keeps working. - **Sandbox** keys never use overage. ## Rate limits Each plan has a **rate limit in units per second**, shared by every key of your organization (live and sandbox are counted apart); see [pricing](https://96astroapi.com/pricing). A call counts units by its compute class, so the limit follows the work a call asks for: | Call | Units | |---|---| | Light and standard | 1 | | Heavy | 3 | | Reports | 10 | | AI readings | 10, on top of their per-key limit | | PDF of a report (`POST /v1/jobs/pdf`) | 10, the report's; the render itself is queued | | Polling a job (`GET /v1/jobs/{id}`) | 1 | The limit is also the burst: on a 5-units-a-second plan you can make five light calls at once, or one heavy call and two light ones. The allowance refills continuously at the plan's rate. A call larger than the whole allowance (a 10-unit report on a 2-unit plan) is accepted when the allowance is full and then holds further calls back until it has refilled, so a 2-unit plan runs one report every 5 seconds. Successful responses report the current state in units: ```http RateLimit-Limit: 10 RateLimit-Remaining: 7 RateLimit-Reset: 1 ``` `RateLimit-Remaining` is the units you can spend now; `RateLimit-Reset` is the seconds until the allowance is full again. Exceeding the limit returns `429 rate_limited` with these headers and a `Retry-After` header: the seconds until that call would fit. The published rates are provisional: they will be revised once they have been measured on our production hardware. If our calculation service is briefly overloaded you get `503 unavailable` with `retryable: true` and a `Retry-After` header. It is never charged; retry after the time given. ## Other limits | Limit | Applies to | |---|---| | 10 AI readings a minute, per key | Live and sandbox keys | | 500 calls a day | Sandbox keys, per organization | | 20 AI readings a day, fast tier only | Sandbox keys, per organization | | 5 PDF jobs a day | Sandbox keys, per organization | The daily sandbox limits count the last 24 hours and return `429 quota_exhausted` when reached. --- Source: https://96astroapi.com/docs/idempotency # Idempotency Make retries safe so a timeout can never charge you twice. Send a unique `Idempotency-Key` header with each request: ```http Idempotency-Key: 4f8c2a8e-6b1d-4c6e-9a3f-2b7d1e0c9a55 ``` - **Same key and same body** within 24 hours returns the original result, marked `meta.replayed: true` and the `Idempotent-Replayed: true` header, and you are charged once. - **Same key with a different body** returns `409 idempotency_conflict`. - **Same key while the first request is still running** returns `409 idempotency_conflict` with `retryable: true`. It never runs twice; retry shortly with the same key to get the result. - **A failed first attempt** was not charged, so a retry with the same key and body runs again. - After **24 hours** the key expires and returns `409 idempotency_conflict`; use a new one. Generate a new key (a UUID is ideal) for each logical operation, and reuse it only when retrying that same operation. > **Note:** Idempotency protects against duplicate charges from retries. It is not a cache: a new request for the same chart, with a new key, is a new call. --- Source: https://96astroapi.com/docs/jobs-and-webhooks # PDF jobs and webhooks Render a report as a PDF in the background, poll the job or receive a signed webhook, and download the file. Every capability answers directly with JSON. A **report** capability (any capability priced as a report, such as `report-career`) can also be rendered as a PDF. That runs as a **job**: you submit it, poll it, then download the file. ## 1. Submit the job ```bash curl https://api.96astroapi.com/v1/jobs/pdf \ -H "Authorization: Bearer $ASTRO_API_KEY" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: 7b1e4c52-0f3a-4d8e-9c61-5a2f8e3d9b10" \ -d '{ "capability": "report-career", "input": { "datetime": "1990-10-18T14:30:00", "timezone": "Asia/Kolkata", "latitude": 28.6139, "longitude": 77.209 }, "branding": { "brand_name": "Shree Jyotish Kendra", "accent": "#1f4fd1" } }' ``` | Field | Required | Meaning | |---|---|---| | `capability` | Yes | A report capability id | | `input` | Yes | That capability's request body, exactly as for `POST /v1/{family}/{capability}` | | `branding` | No | `brand_name` (up to 60 characters), `accent` (a hex colour with at least 4.5:1 contrast on white), `logo` (a PNG or SVG data URI, up to 200 KB) and `footer_note` (up to 200 characters). Without it the PDF is plain | | `language` | No | `en`, the only document language for now | The API answers `202 Accepted`, with the job's address in the `Location` header: ```json { "data": { "id": "2c863278-518b-407e-8234-0ba0f824404c", "object": "job", "kind": "pdf", "capability": "report-career", "status": "queued", "attempts": 0, "credits": 130, "created_at": "2026-10-14T06:58:59.069427Z", "started_at": null, "finished_at": null, "error": null, "download_url": null, "download_expires_at": null, "file_expires_at": null }, "meta": { "request_id": "req_84c3f093ee178943738c", "api_version": "v1", "credits_reserved": 130, "warnings": [] } } ``` ## 2. Poll the job Poll `GET /v1/jobs/{id}` with the same key until `status` is final. Polling is free. A job moves through: | Status | Meaning | |---|---| | `queued` | Accepted and waiting to run | | `running` | Being rendered | | `succeeded` | Done; `download_url` is set | | `failed` | Did not render; `error` has a `code` and `message`. Nothing is charged | | `expired` | Succeeded, but the file is past its 7-day retention and has been deleted | A job can only be seen with a key of the organization and environment that created it. Poll every few seconds with backoff, or skip polling and receive a [webhook](#webhooks) when the job finishes. ## 3. Download the file On success, `download_url` is a **signed link** that needs no API key and expires at `download_expires_at`, about a day later. Polling again returns a link that is still valid. The file itself is kept until `file_expires_at`, 7 days after it was rendered. Files are private to your account and never publicly listed. - An expired link returns `410 link_expired`: poll the job for a new one. - A file past its retention returns `410 file_expired`: create a new job. ## Charges A PDF costs the report's own credits plus 120, reserved when the job is accepted (`meta.credits_reserved`). A failed job releases them, and re-downloading a file is free. Sandbox keys are not charged and can create 5 PDF jobs a day. ## Webhooks A webhook is an HTTPS `POST` we send to your server when something happens, so you do not have to poll. Add endpoints in the portal under **Webhooks**: each endpoint has a URL, the events it wants and its own signing secret. - **Plans:** live endpoints come with the Growth plan and above. Every plan, including the trial, can add **sandbox** endpoints, which receive events from test keys, so you can build and test the integration first. - **Limits:** up to 5 endpoints per environment. - **URLs:** HTTPS on a public address. A sandbox endpoint may also use plain `http://localhost` for local development. Hosts that resolve to a private, loopback, link-local or other reserved address are refused, when you save the endpoint and again before every delivery. Redirects are not followed. ### Events | Type | Sent when | Environments | |---|---|---| | `job.succeeded` | A PDF job finished. `data` is the job exactly as `GET /v1/jobs/{id}` returns it, with a fresh `download_url` | The job's environment | | `job.failed` | A PDF job failed for good (nothing was charged). `data` is the job, with its `error` | The job's environment | | `credits.low` | Your live balance fell below the threshold you set under **Webhooks**. Sent once per crossing: again only after a top-up or renewal lifts the balance back to the threshold | Live | | `billing.payment_failed` | A renewal payment failed and the plan is in its 7-day grace period | Live | | `billing.restricted` | The grace period ended unpaid: live calls answer `402` until the payment goes through. Also sent when an overage bill passes its due date unpaid (`data.reason` is `overage_unpaid`) | Live | | `overage.started` | Opt-in overage began this period: plan credits and top-ups are used up. `data` has the period, `credits_used`, the `cap` (amount, currency, credits), `rate_per_1000` and `cost_so_far` (excluding GST) | Live | | `overage.threshold` | Overage reached 50 % or 80 % of the monthly cap (`data.percent`); once each per period | Live | | `overage.cap_reached` | Overage reached the cap, or a call was refused for it: further calls that need overage get `429 spend_cap_reached` until the next period | Live | | `webhook.test` | You pressed **Send test event** in the portal | The endpoint's | ### The request ```http POST /webhooks/96astro HTTP/1.1 Content-Type: application/json User-Agent: 96Astro-Webhooks/1 Astro-Webhook-Id: evt_5f0c1e2a7b3d4c6e8f9a0b1c2d3e4f50 Astro-Webhook-Timestamp: 1760425200 Astro-Signature: v1=6f1c0c3d6b0e4c7a2d9e8f1b3a5c7d9e0f2a4b6c8d0e1f3a5b7c9d1e3f5a7b9c ``` ```json { "id": "evt_5f0c1e2a7b3d4c6e8f9a0b1c2d3e4f50", "type": "job.succeeded", "created": 1760425200, "environment": "live", "project_id": "8d7f2b1e-4c3a-4e5f-9a1b-2c3d4e5f6a7b", "data": { "id": "2c863278-518b-407e-8234-0ba0f824404c", "object": "job", "kind": "pdf", "capability": "report-career", "status": "succeeded", "attempts": 1, "credits": 130, "created_at": "2026-10-14T06:58:59.069427Z", "started_at": "2026-10-14T06:59:01.112040Z", "finished_at": "2026-10-14T06:59:09.874120Z", "error": null, "download_url": "https://api.96astroapi.com/v1/files/…", "download_expires_at": "2026-10-15T08:00:00Z", "file_expires_at": "2026-10-21T06:59:09.874120Z" } } ``` | Header | Meaning | |---|---| | `Astro-Webhook-Id` | The event id. It stays the same on every retry and resend: use it to deduplicate | | `Astro-Webhook-Timestamp` | When this attempt was signed, in Unix seconds | | `Astro-Signature` | `v1=` and the hex HMAC-SHA256 of `{id}.{timestamp}.{body}`, keyed with your endpoint's secret. During a secret rotation it carries two signatures, comma-separated | `environment` is `test` for sandbox events and `live` otherwise. `created` is when the event happened, in Unix seconds. `project_id` is the [project](https://96astroapi.com/docs/teams-and-projects.md) whose key made the job, or `null` for organization-wide events (`credits.low`, `billing.*`, `overage.*`). An endpoint can be scoped to one project in the dashboard: it then receives only that project's events. ### Answering, retries and ordering - Answer with any `2xx` within **10 seconds**. Do the real work after answering, for example from a queue. - Anything else (another status, a redirect, a timeout, a connection error) is retried **1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h** later: 8 attempts over about 45 hours. The delivery is then marked failed. - An endpoint that fails every delivery for **3 days** is disabled, and the Webhooks page in the portal says so. Fix the receiver, enable the endpoint again in the portal, and resend what it missed from its delivery log. - **Order is not guaranteed**, and an event can arrive more than once (a retry after a timeout you did answer, or a resend). Deduplicate on `Astro-Webhook-Id`, and for jobs trust the `status` in `data`, or poll the job, rather than the order events arrived in. - The portal keeps a 30-day delivery log per endpoint (status, response code, latency and the first 1 KB of your response body), with **Resend** and **Send test event**. ### Verify the signature Check every request before you trust it: 1. Read the **raw body bytes**, before any JSON parsing. 2. Refuse a timestamp more than **5 minutes** from your clock (this stops replays). 3. Compute HMAC-SHA256 over `{id}.{timestamp}.{body}`, using the whole secret string, `whsec_` prefix included, as the key. 4. Compare it with **each** `v1=` value in `Astro-Signature`, in **constant time**. Accept the request if any one matches. **Node.js** (Express): ```js import crypto from "node:crypto"; import express from "express"; const SECRETS = [process.env.ASTRO_WEBHOOK_SECRET]; // add the new secret here while you rotate const TOLERANCE_SECONDS = 300; function verify(rawBody, headers) { const id = headers["astro-webhook-id"]; const timestamp = headers["astro-webhook-timestamp"]; const signature = headers["astro-signature"]; if (!id || !/^\d+$/.test(timestamp ?? "") || !signature) return false; if (Math.abs(Date.now() / 1000 - Number(timestamp)) > TOLERANCE_SECONDS) return false; const signed = Buffer.concat([Buffer.from(`${id}.${timestamp}.`), rawBody]); const received = signature .split(",") .map((part) => part.trim()) .filter((part) => part.startsWith("v1=")) .map((part) => Buffer.from(part.slice(3), "hex")); return SECRETS.some((secret) => { const expected = crypto.createHmac("sha256", secret).update(signed).digest(); return received.some((sig) => sig.length === expected.length && crypto.timingSafeEqual(sig, expected)); }); } const app = express(); app.post("/webhooks/96astro", express.raw({ type: "application/json" }), (req, res) => { if (!verify(req.body, req.headers)) return res.status(400).send("bad signature"); const event = JSON.parse(req.body.toString("utf8")); // Deduplicate on event.id, queue the work, then answer quickly. res.sendStatus(204); }); app.listen(3000); ``` **Python** (any framework; pass the raw body bytes): ```python import hashlib import hmac import os import time SECRETS = [os.environ["ASTRO_WEBHOOK_SECRET"]] # add the new secret here while you rotate TOLERANCE_SECONDS = 300 def verify(raw_body: bytes, headers) -> bool: event_id = headers.get("Astro-Webhook-Id") timestamp = headers.get("Astro-Webhook-Timestamp", "") signature = headers.get("Astro-Signature", "") if not event_id or not timestamp.isdigit() or not signature: return False if abs(time.time() - int(timestamp)) > TOLERANCE_SECONDS: return False signed = f"{event_id}.{timestamp}.".encode() + raw_body received = [part.strip()[3:] for part in signature.split(",") if part.strip().startswith("v1=")] for secret in SECRETS: expected = hmac.new(secret.encode(), signed, hashlib.sha256).hexdigest() if any(hmac.compare_digest(expected, sig) for sig in received): return True return False ``` **curl**, to test your receiver locally with a correctly signed request (shell tools cannot compare in constant time, so verify in your server code as above): ```bash SECRET='whsec_...' # your sandbox endpoint's secret ID="evt_local_$(date +%s)" TS=$(date +%s) # must be within 5 minutes of your server's clock BODY='{"id":"'"$ID"'","type":"webhook.test","created":'"$TS"',"environment":"test","data":{"message":"hello"}}' SIG=$(printf '%s' "$ID.$TS.$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //') curl -i http://localhost:3000/webhooks/96astro \ -H "Content-Type: application/json" \ -H "Astro-Webhook-Id: $ID" \ -H "Astro-Webhook-Timestamp: $TS" \ -H "Astro-Signature: v1=$SIG" \ --data-raw "$BODY" ``` Your receiver should answer `2xx` to this request, and `400` if you change one character of the body or use a timestamp older than 5 minutes. Then add the endpoint in the portal and press **Send test event** to try the real thing. ### Rotating the secret **Rotate secret** in the portal shows a new secret once. For the next 24 hours every request is signed with both the new and the previous secret, so deploy the new one to your verifier (keeping the old one in the list), then remove the old one. A secret is never shown again after it is created; if you lose it, rotate. --- Source: https://96astroapi.com/docs/versioning # Versioning and changes How the API changes without breaking your integration. The version is in the path: `/v1`. Within a version we only make **additive** changes: - new capabilities, options or languages; - new fields in responses; - new error codes within existing statuses. Your code should ignore fields it does not know. A breaking change ships as a new version, announced in the [changelog](https://96astroapi.com/changelog) with a migration guide and a support period for the old version. Each response includes `meta.api_version`. Calculation fixes that change results, for example a corrected boundary case, are listed in the changelog with the affected capabilities. --- Source: https://96astroapi.com/docs/existing-customers # Existing customers If you already use the 96Astro API, nothing changes until you choose to move. If you already integrate with the current 96Astro API, **your integration keeps working exactly as it does today**: same address, same requests, same responses, same terms. API v1 is a new, separate surface with self-serve accounts, keys and billing. When you would like to move, we will: 1. link your existing agreement to a v1 account; 2. issue you separate v1 keys, while your current access continues; 3. help you switch endpoint by endpoint, comparing results side by side; 4. move billing only when you agree. Contact [support](https://96astroapi.com/support) to plan your move. There is no deadline. --- # 96Astro API catalogue 307 capabilities in 23 families. ## Birth charts & planets Sidereal birth charts, planet positions, divisional and special-lagna charts, rendered chart images and chart markers. - [Full Birth Chart Bundle](https://96astroapi.com/apis/vedic-charts/birth-chart-bundle.md): The core birth chart in one call: ayanamsha, ascendant, planets, the D1 and D9 charts, a Moon and Avakhada summary, Vimshottari periods and the Manglik check. Chart images: use chart-image-styles. `POST /v1/vedic-charts/birth-chart-bundle`, 3 credits - [Avakhada Chakra & Birth Summary](https://96astroapi.com/apis/vedic-charts/avakhada-birth-summary.md): Ascendant, Moon sign and nakshatra with pada, sidereal and tropical Sun sign, the Avakhada attributes (varna, yoni, gana, nadi and more), the birth tithi/yoga/karana, the sunrise panchang and sunrise/sunset times. `POST /v1/vedic-charts/avakhada-birth-summary`, 3 credits - [Planet Positions](https://96astroapi.com/apis/vedic-charts/planet-positions.md): Sidereal longitude, sign and sign lord, nakshatra, nakshatra lord and pada, house, speed, retrograde and combust flags for the Ascendant, the nine grahas and Uranus, Neptune and Pluto. `POST /v1/vedic-charts/planet-positions`, 3 credits - [Divisional Charts (D1-D300)](https://96astroapi.com/apis/vedic-charts/divisional-charts.md): Up to 23 divisional (varga) charts, D1 to D300: each with its ascendant, planet placements and twelve houses with sign and occupants. Pick charts with `charts`; images: use chart-image-styles. `POST /v1/vedic-charts/divisional-charts`, 3 credits - [Special Lagna Charts](https://96astroapi.com/apis/vedic-charts/special-lagna-charts.md): Charts cast from the special lagnas (Hora, Ghati, Bhava, Indu, Sree, Pranapada, Varnada): each lagna's own sign and degree, the planets' houses from it and the twelve houses. `POST /v1/vedic-charts/special-lagna-charts`, 3 credits - [Bhav Chalit Chart & Bhava Table](https://96astroapi.com/apis/vedic-charts/bhav-chalit.md): Bhava (house) table with start, middle and end of each house, the planets in each bhava, and every planet's sign house next to its bhava house. `POST /v1/vedic-charts/bhav-chalit`, 3 credits - [Chandra Kundali (Moon Chart)](https://96astroapi.com/apis/vedic-charts/chandra-kundali.md): The chart re-read with the Moon's sign as the first house: the Ascendant's and each planet's house from the Moon, and the twelve houses with their occupants. `POST /v1/vedic-charts/chandra-kundali`, 3 credits - [Chakra Charts](https://96astroapi.com/apis/vedic-charts/chakra-charts.md): Kalachakra, Kota, Sudarshan and Shoola chakras as SVG drawings built from the birth positions, with the point positions (longitude, nakshatra, pada) used to draw them. `POST /v1/vedic-charts/chakra-charts`, 3 credits - [Upagrahas, Special Lagnas & Sphutas](https://96astroapi.com/apis/vedic-charts/upagrahas-sphutas.md): Positions of the Gulika group, the Sun-based upagrahas (Dhooma and others), special lagnas, the sphutas (Prana, Deha, Mrityu and others) and the MC and IC, plus the chara karakas. `POST /v1/vedic-charts/upagrahas-sphutas`, 3 credits - [Drekkana & 22nd Drekkana](https://96astroapi.com/apis/vedic-charts/drekkana-22nd.md): The D3 sign and lord of the Ascendant and the Moon, and the 22nd drekkana from each. `POST /v1/vedic-charts/drekkana-22nd`, 3 credits - [Chart Image Styles](https://96astroapi.com/apis/vedic-charts/chart-image-styles.md): Chart drawings as SVG in one style per call (north, south, east or western) for the charts you name (D1 to D300, chalit, chandra_kundali, kp, karakamsha, swamsha). `POST /v1/vedic-charts/chart-image-styles`, 3 credits - [D1 Markers (Vargottama, Pushkara)](https://96astroapi.com/apis/vedic-charts/d1-markers.md): Vargottama, Pushkara Navamsa and Pushkara Bhaga flags for the Ascendant and each planet, with its navamsa sign and the Pushkara Bhaga degree of its sign. `POST /v1/vedic-charts/d1-markers`, 3 credits ## Strengths & relationships Ashtakavarga, Shadbala and other strength measures, planetary friendship, avasthas, aspects and dignity tables. - [Varga, Dignity & Deity Tables](https://96astroapi.com/apis/strengths/varga-tables.md): Varga tables: each planet's sign in every division, its dignity in each division, the vaiseshikamsa counts and the varga deity of each body. `POST /v1/strengths/varga-tables`, 3 credits - [Ashtakavarga (in bundle)](https://96astroapi.com/apis/strengths/ashtakavarga-bundle.md): Bhinnashtakavarga per planet with contributors, Sarvashtakavarga by sign, trikona and ekadhipatya reductions with pindas, and Ayus figures for the birth chart. `POST /v1/strengths/ashtakavarga-bundle`, 3 credits - [Shadbala](https://96astroapi.com/apis/strengths/shadbala.md): Six-fold strength (Shadbala) for the seven grahas: sthana, dig, kala, chesta, naisargika and drig components, total in virupas and rupas against the minimum, rank, and ishta/kashta phala. `POST /v1/strengths/shadbala`, 3 credits - [Saptbal Strength Table](https://96astroapi.com/apis/strengths/saptbal.md): A seven-component strength score per planet with workings, normalised score, category and rank, given separately from the Lagna (Bhava Chalit) frame and from the Moon frame. `POST /v1/strengths/saptbal`, 3 credits - [Vimshopaka Bala](https://96astroapi.com/apis/strengths/vimshopaka-bala.md): Vimshopaka (varga-dignity) strength for the seven grahas. `POST /v1/strengths/vimshopaka-bala`, 3 credits - [Five-fold Planetary Friendship](https://96astroapi.com/apis/strengths/five-fold-friendship.md): Natural, temporary and compound (panchadha) friendship between the seven grahas. `POST /v1/strengths/five-fold-friendship`, 3 credits - [Planetary Avasthas](https://96astroapi.com/apis/strengths/avasthas.md): State (avastha) readings for each body in the chart. `POST /v1/strengths/avasthas`, 3 credits - [Planet Aspects](https://96astroapi.com/apis/strengths/planet-aspects.md): Aspect list between bodies with aspect type, major/minor quality, orb and applying flag. `POST /v1/strengths/planet-aspects`, 3 credits - [Ashtakavarga (Multi-School)](https://96astroapi.com/apis/strengths/ashtakavarga.md): Ashtakavarga for a birth under a chosen school (BPHS, Jagannatha Hora or Parashara's Light): bhinnashtakavarga, sarvashtakavarga, reductions with pindas and Ayus; optionally every school. `POST /v1/strengths/ashtakavarga`, 1 credit ## Dasha systems Planetary and sign-based period systems with their sub-periods, computed from the birth moment. - [Vimshottari Dasha](https://96astroapi.com/apis/dashas/vimshottari-dasha.md): Mahadasha and antardasha periods with dates, the dasha balance at birth, and the tara (nakshatra-count) of each dasha lord. `POST /v1/dashas/vimshottari-dasha`, 3 credits - [Yogini Dasha](https://96astroapi.com/apis/dashas/yogini-dasha.md): The eight-yogini 36-year cycle from the Moon's nakshatra with dated periods. `POST /v1/dashas/yogini-dasha`, 3 credits - [Chara Dasha (Jaimini)](https://96astroapi.com/apis/dashas/chara-dasha.md): Sign-based Jaimini Chara dasha: mahadashas by sign with years and dates, their antardashas, the direction used and the current period; Standard or K.N. Rao method. `POST /v1/dashas/chara-dasha`, 3 credits - [Niryana Shoola Dasha](https://96astroapi.com/apis/dashas/niryana-shoola-dasha.md): Niryana Shoola dasha by sign with years, dates and antardashas, the current period, and the method used (four methods available, with the recommended one named). `POST /v1/dashas/niryana-shoola-dasha`, 3 credits - [Trikona Dasha](https://96astroapi.com/apis/dashas/thrikona-dasha.md): Trikona dasha from its start sign: mahadashas with years, dates and antardashas, the direction used and the current period. `POST /v1/dashas/thrikona-dasha`, 3 credits - [Ashtottari Dasha](https://96astroapi.com/apis/dashas/ashtottari-dasha.md): Ashtottari (108-year) dasha with whether it applies to the chart and why, the balance at birth, mahadashas with antardashas and the current period. `POST /v1/dashas/ashtottari-dasha`, 3 credits - [Sthira Dasha](https://96astroapi.com/apis/dashas/sthira-dasha.md): Sthira (fixed) sign dasha with start sign, direction, mahadashas with antardashas and the current period. `POST /v1/dashas/sthira-dasha`, 3 credits - [Mudda Dasha](https://96astroapi.com/apis/dashas/mudda-dasha.md): Mudda dasha for a target year: when the Tajika year starts, each period's lord, dates and house in the annual chart, and the period running now. `POST /v1/dashas/mudda-dasha`, 3 credits - [Vimshottari to Sukshma / Prana Level](https://96astroapi.com/apis/dashas/vimshottari-deep.md): Vimshottari hierarchy Maha, Antar, Pratyantar and Sukshma, optionally down to Prana, from the Moon longitude and birth date. `POST /v1/dashas/vimshottari-deep`, 1 credit ## Panchang & almanac Daily and monthly panchang, timing tables, calendars, eclipses and planetary events for a date and place. - [Daily Panchang](https://96astroapi.com/apis/panchang/daily-panchang.md): The full panchang for one day at one place: limbs, Sun and Moon times, calendar, auspicious and inauspicious periods, choghadiya, hora, festivals, balas, sunrise chart, doshas and more. `POST /v1/panchang/daily-panchang`, 1 credit - [Tithi, Nakshatra, Yoga, Karana & Vara](https://96astroapi.com/apis/panchang/panchang-five-limbs.md): The vara, tithi with paksha, nakshatra, yoga and the karanas of the day, each with its end time. `POST /v1/panchang/panchang-five-limbs`, 1 credit - [Sunrise, Sunset, Moonrise & Twilights](https://96astroapi.com/apis/panchang/sun-moon-timings.md): Sunrise, sunset, solar noon, moonrise, moonset, the Moon's sign and its phase with illumination. `POST /v1/panchang/sun-moon-timings`, 1 credit - [Hindu Calendar Details](https://96astroapi.com/apis/panchang/hindu-calendar.md): Shaka, Vikram and Kali samvat, amanta and purnimanta month, adhik/kshaya masa flags, ritu, ayana and day and night length. `POST /v1/panchang/hindu-calendar`, 1 credit - [Rahu Kaal & Inauspicious Periods](https://96astroapi.com/apis/panchang/inauspicious-timings.md): Rahu Kaal, Yamaganda, Gulika Kaal, Dur Muhurtam, Kulika, Kantaka-Mrityu, Kalavela and Yamaghanta windows for the day. `POST /v1/panchang/inauspicious-timings`, 1 credit - [Abhijit & Auspicious Periods](https://96astroapi.com/apis/panchang/auspicious-timings.md): Brahma Muhurta, Abhijit, Vijaya, Godhuli, Pratah and Sayahna Sandhya and Nishita. `POST /v1/panchang/auspicious-timings`, 1 credit - [Choghadiya](https://96astroapi.com/apis/panchang/choghadiya.md): Eight day and eight night Choghadiya periods with their nature. `POST /v1/panchang/choghadiya`, 1 credit - [Hora Table](https://96astroapi.com/apis/panchang/hora-table.md): Twelve day and twelve night planetary horas with their lord, nature and times. `POST /v1/panchang/hora-table`, 1 credit - [Disha Shoola & Vasa](https://96astroapi.com/apis/panchang/vasa-shoola.md): Disha shoola, Chandra/Rahu/Shoola vasa, Shiva vasa, Agnivasa, Bhadravasa, homahuti and Kumbha chakra. `POST /v1/panchang/vasa-shoola`, 1 credit - [Tarabalam & Chandrabalam](https://96astroapi.com/apis/panchang/tara-chandra-bala.md): Chandra bala of each Moon sign for the day, and tara bala for each birth nakshatra now and after the day's nakshatra changes. `POST /v1/panchang/tara-chandra-bala`, 1 credit - [Sunrise Chart & Planet Positions](https://96astroapi.com/apis/panchang/sunrise-chart.md): The chart cast at sunrise: lagna, the twelve houses and each planet's sign, degree, nakshatra, house, dignity and retrograde/combust flags. `POST /v1/panchang/sunrise-chart`, 1 credit - [Festivals of the Day](https://96astroapi.com/apis/panchang/day-festivals.md): Names of the festivals falling on the day at the place. `POST /v1/panchang/day-festivals`, 1 credit - [Panchak, Ganda Mool, Bhadra & Vinchudo](https://96astroapi.com/apis/panchang/panchak-bhadra.md): Whether and when Panchak, Ganda Mool, Bhadra (Vishti) and Vinchudo run on the day. `POST /v1/panchang/panchak-bhadra`, 1 credit - [Special Day Yogas](https://96astroapi.com/apis/panchang/special-day-yogas.md): The day's special yogas (Ravi yoga and others), each with whether it is active, its category, a description and when it ends. `POST /v1/panchang/special-day-yogas`, 1 credit - [Sankalpa & Manvadi/Yugadi/Kalpadi Tithis](https://96astroapi.com/apis/panchang/sankalpa-sacred-tithis.md): The sankalpa text for the day and whether it is a Manvadi, Yugadi or Kalpadi tithi. `POST /v1/panchang/sankalpa-sacred-tithis`, 1 credit - [Day Quality Heatmap](https://96astroapi.com/apis/panchang/time-heatmap.md): The day and night split into time slots, each with a score, a band and the auspicious and inauspicious periods it contains. `POST /v1/panchang/time-heatmap`, 1 credit - [Monthly Panchang](https://96astroapi.com/apis/panchang/monthly-panchang.md): Panchang for every day of a month at one place. `POST /v1/panchang/monthly-panchang`, 3 credits - [Panchanga Sequence & Udaya Lagna](https://96astroapi.com/apis/panchang/panchanga-sequence.md): Every tithi, karana, nakshatra and pada, yoga, Moon sign and Udaya Lagna that runs from sunrise to the next sunrise, with start and end times. `POST /v1/panchang/panchanga-sequence`, 1 credit - [Tamil Solar Calendar](https://96astroapi.com/apis/panchang/tamil-calendar.md): Tamil year, month and date from the Sun's sidereal sign, and the day-types. `POST /v1/panchang/tamil-calendar`, 1 credit - [Gowri Panchangam & Nalla Neram](https://96astroapi.com/apis/panchang/tamil-timings.md): Gowri Panchangam periods for the day and night, the auspicious Nalla Neram windows and the day's Amritadi yoga. `POST /v1/panchang/tamil-timings`, 1 credit - [Tyajyam (All Kinds)](https://96astroapi.com/apis/panchang/tyajyam.md): Nakshatra, tithi, vara, karana, lagna and Gowri tyajyam windows for the day, each with its cause, plus the dosha check and Amrita Kalam. `POST /v1/panchang/tyajyam`, 1 credit - [Varjyam Windows](https://96astroapi.com/apis/panchang/varjyam.md): Varjyam windows touching one day with their nakshatra and start ghatika, disputed ones flagged, plus the Amrita Kalam windows. `POST /v1/panchang/varjyam`, 1 credit - [Anandadi Yoga](https://96astroapi.com/apis/panchang/anandadi-yoga.md): The 28-fold weekday-and-nakshatra yoga for the day with its transition times. `POST /v1/panchang/anandadi-yoga`, 1 credit - [Eclipses, Equinoxes & Solstices](https://96astroapi.com/apis/panchang/eclipses.md): Every solar and lunar eclipse of a year with type, global contacts and local visibility, magnitude and sutak, plus the equinoxes and solstices. `POST /v1/panchang/eclipses`, 3 credits - [Ingresses & Stations](https://96astroapi.com/apis/panchang/planetary-events.md): Sign and nakshatra ingresses (Sankrantis for the Sun) and retrograde/direct stations over a date range. `POST /v1/panchang/planetary-events`, 3 credits ## Festivals & muhurta Recurring observances, shraddha dates, auspicious-window search and naming syllables. - [Vrat Calendar](https://96astroapi.com/apis/festivals-muhurta/vrat-calendar.md): Every date in a year on which one recurring observance falls at a place, with its tithi, paksha, lunar month and the moment it was judged at. `POST /v1/festivals-muhurta/vrat-calendar`, 3 credits - [Vrat Observance Catalogue](https://96astroapi.com/apis/festivals-muhurta/vrat-observances.md): Lists the observances the vrat calendar supports with cadence and the moment each is judged at. `POST /v1/festivals-muhurta/vrat-observances`, 1 credit - [Muhurta Finder](https://96astroapi.com/apis/festivals-muhurta/muhurta-finder.md): Suitable days for one undertaking over a date range at a place, scored with clear windows; rejected days are returned with what blocked them. `POST /v1/festivals-muhurta/muhurta-finder`, 3 credits - [Muhurta Purpose Catalogue](https://96astroapi.com/apis/festivals-muhurta/muhurta-purposes.md): Lists the purposes the muhurta finder can search for, with each tradition's nakshatra preference and blockers. `POST /v1/festivals-muhurta/muhurta-purposes`, 1 credit - [Shraddha Dates](https://96astroapi.com/apis/festivals-muhurta/shraddha-dates.md): The tithi of a death and, for a year, the annual (varshik) shraddha date and the Pitru Paksha shraddha date. `POST /v1/festivals-muhurta/shraddha-dates`, 1 credit - [Sahasra Chandrodaya](https://96astroapi.com/apis/festivals-muhurta/sahasra-chandrodaya.md): Counts full moons after a birth to find the nth (1000th by default) and its date. `POST /v1/festivals-muhurta/sahasra-chandrodaya`, 1 credit - [Name Syllables (Naamakshar)](https://96astroapi.com/apis/festivals-muhurta/name-syllables.md): Naming syllables for a nakshatra pada, or for a Moon longitude. `POST /v1/festivals-muhurta/name-syllables`, 1 credit ## Compatibility matching Vedic and South Indian compatibility between two people, from full charts or from birth stars, singly or in bulk. - [Kundli Matching (Ayu Milan)](https://96astroapi.com/apis/matching/ayu-milan.md): Ashtakoot matching from two births: koota scores and total, Manglik for both with cancellations, Papasamya, Rajju and Vedha, and classical longevity (Ayurdaya) spans for each. `POST /v1/matching/ayu-milan`, 3 credits - [Quick Nakshatra Match](https://96astroapi.com/apis/matching/quick-match.md): Ashtakoot score from two birth stars (optionally with padas): total, percentage, verdict, each koota's score and the Nadi and Bhakoot doshas. `POST /v1/matching/quick-match`, 1 credit - [Ashtakoot Details](https://96astroapi.com/apis/matching/ashtakoot-details.md): Koota-by-koota Ashtakoot breakdown for two birth stars, with each side's profile, the total, verdict and Nadi and Bhakoot doshas. `POST /v1/matching/ashtakoot-details`, 1 credit - [Dashakoot Match (Ashtakoot + Rajju + Vedha)](https://96astroapi.com/apis/matching/south-match.md): Ten-koota match from two birth stars: the eight Ashtakoot kootas plus Rajju and Vedha. `POST /v1/matching/south-match`, 1 credit - [Porutham (Tamil)](https://96astroapi.com/apis/matching/porutham.md): Tamil porutham check for two birth stars: each porutham with present, severity and a reading, and a summary band with objections. `POST /v1/matching/porutham`, 1 credit - [Rajju & Vedha Check](https://96astroapi.com/apis/matching/rajju-vedha.md): Rajju and Vedha for two birth stars: each side's cord and body part, same-cord and vedha flags with scores, and any objections. `POST /v1/matching/rajju-vedha`, 1 credit - [Bulk Nakshatra Match](https://96astroapi.com/apis/matching/bulk-nakshatra-match.md): Ashtakoot scores for up to 100 star pairs in one call. `POST /v1/matching/bulk-nakshatra-match`, 1 credit - [Aggregate Match Statistics](https://96astroapi.com/apis/matching/aggregate-match.md): Scores up to 100 star pairs and returns the average, best and lowest, a count by verdict and every pair ranked. `POST /v1/matching/aggregate-match`, 1 credit - [Bulk Dashakoot Match](https://96astroapi.com/apis/matching/bulk-south-match.md): Ten-koota scores for many star pairs in one call. `POST /v1/matching/bulk-south-match`, 1 credit - [Papasamya (Pair)](https://96astroapi.com/apis/matching/papasamya.md): Papasamya (malefic balance) for two births: each side's score and contributing planets, the difference and a verdict. `POST /v1/matching/papasamya`, 3 credits - [Papasamya (Single Chart)](https://96astroapi.com/apis/matching/papasamya-single.md): Papasamya (malefic balance) for one birth: the score, the contributing planets by house, the level and whether it counts as a dosha. `POST /v1/matching/papasamya-single`, 3 credits - [Life-Stage Match](https://96astroapi.com/apis/matching/life-stage-match.md): The age gap and where each partner stands in their Saturn and Jupiter cycles, with an alignment band and the reasons for it. `POST /v1/matching/life-stage-match`, 1 credit - [Marriage Sustainability](https://96astroapi.com/apis/matching/marriage-sustainability.md): The single-chart marriage layers (7th house, Navamsa, Upapada, darakaraka) for both partners, a joint verdict, shared timing windows, and which layers could not be measured. `POST /v1/matching/marriage-sustainability`, 3 credits ## Doshas & yogas Dosha checks and classical yoga detection from a birth chart. - [Manglik Dosha (in bundle)](https://96astroapi.com/apis/doshas-yogas/manglik-dosha.md): Mars dosha checked from the Lagna, Moon and Venus, each with Mars's house and the dosha houses, plus an overall Manglik flag and count. `POST /v1/doshas-yogas/manglik-dosha`, 3 credits - [Kaal Sarp & Pitra Dosha (in bundle)](https://96astroapi.com/apis/doshas-yogas/bundle-kaalsarp-pitra.md): Kaal Sarp presence, type and partial flag, and Pitra dosha types, strength and remedies, for the birth chart. `POST /v1/doshas-yogas/bundle-kaalsarp-pitra`, 3 credits - [Sade Sati Periods](https://96astroapi.com/apis/doshas-yogas/sade-sati.md): Saturn's Sade Sati phases (rising, peak, setting) and its 4th- and 8th-from-Moon spells across the life, with dates, murti, the periods running now and the next Sade Sati. `POST /v1/doshas-yogas/sade-sati`, 3 credits - [Kaal Sarp Dosha](https://96astroapi.com/apis/doshas-yogas/kaalsarp-dosha.md): Kaal Sarp presence, type, partial flag, Rahu house, the planets outside the Rahu-Ketu axis, a description and remedies. `POST /v1/doshas-yogas/kaalsarp-dosha`, 3 credits - [Pitra Dosha](https://96astroapi.com/apis/doshas-yogas/pitra-dosha.md): Pitra dosha presence, strength and the types found, checks that could not be assessed, a summary and remedies. `POST /v1/doshas-yogas/pitra-dosha`, 1 credit - [Parashari Yogas: Nabha](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-nabha-yogas.md): Checks the chart for the Nabha yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-nabha-yogas`, 1 credit - [Parashari Yogas: Pancha Mahapurusha](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-panch-maha.md): Checks the chart for the Pancha Mahapurusha yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-panch-maha`, 1 credit - [Parashari Yogas: Yoga karakas](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-yoga-karakas.md): Checks the chart for the Yoga karakas yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-yoga-karakas`, 1 credit - [Parashari Yogas: Raja](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-raj-yogas.md): Checks the chart for the Raja yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-raj-yogas`, 1 credit - [Parashari Yogas: Vipreet Raja](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-vipreet-raj.md): Checks the chart for the Vipreet Raja yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-vipreet-raj`, 1 credit - [Parashari Yogas: Neecha Bhanga](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-neecha-bhanga.md): Checks the chart for the Neecha Bhanga yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-neecha-bhanga`, 1 credit - [Parashari Yogas: Parivartana](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-parivartan.md): Checks the chart for the Parivartana yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-parivartan`, 1 credit - [Parashari Yogas: Dhana](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-dhana-yogas.md): Checks the chart for the Dhana yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-dhana-yogas`, 1 credit - [Parashari Yogas: Daridra](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-daridra-yogas.md): Checks the chart for the Daridra yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-daridra-yogas`, 1 credit - [Parashari Yogas: Chandra](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-chandra-yogas.md): Checks the chart for the Chandra yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-chandra-yogas`, 1 credit - [Parashari Yogas: Surya](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-surya-yogas.md): Checks the chart for the Surya yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-surya-yogas`, 1 credit - [Parashari Yogas: Special](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-special-yogas.md): Checks the chart for the Special yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-special-yogas`, 1 credit - [Parashari Yogas: Arishta](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-arishta-yogas.md): Checks the chart for the Arishta yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-arishta-yogas`, 1 credit - [Parashari Yogas: Sanyasa](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-sanyasa-yogas.md): Checks the chart for the Sanyasa yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-sanyasa-yogas`, 1 credit - [Parashari Yogas: Dosha](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-dosha-yogas.md): Checks the chart for the Dosha yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-dosha-yogas`, 1 credit - [Parashari Yogas: Malika](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-malika-yogas.md): Checks the chart for the Malika yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-malika-yogas`, 1 credit - [Parashari Yogas: Conjunction](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-conjunction-yogas.md): Checks the chart for the Conjunction yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-conjunction-yogas`, 1 credit - [Parashari Yogas: Karmajiva](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-karmajiva-yogas.md): Checks the chart for the Karmajiva yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-karmajiva-yogas`, 1 credit - [Parashari Yogas: Longevity](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-longevity-yogas.md): Checks the chart for the Longevity yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-longevity-yogas`, 1 credit - [Parashari Yogas: Planet-Moon](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-planet-chandra-yogas.md): Checks the chart for the Planet-Moon yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-planet-chandra-yogas`, 1 credit - [Parashari Yogas: Additional classical](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-pdf-additional-yogas.md): Checks the chart for the Additional classical yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-pdf-additional-yogas`, 1 credit - [Parashari Yogas: Fourth house](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-fourth-house-yogas.md): Checks the chart for the Fourth house yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-fourth-house-yogas`, 1 credit - [Parashari Yogas: Children](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-children-yogas.md): Checks the chart for the Children yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-children-yogas`, 1 credit - [Parashari Yogas: Fame & fortune](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-fame-fortune-yogas.md): Checks the chart for the Fame & fortune yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-fame-fortune-yogas`, 1 credit - [Parashari Yogas: Health & disease](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-health-disease-yogas.md): Checks the chart for the Health & disease yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-health-disease-yogas`, 1 credit - [Parashari Yogas: Parivartana (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-parivartana-extended.md): Checks the chart for the Parivartana (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-parivartana-extended`, 1 credit - [Parashari Yogas: Daridra (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-daridra-extended.md): Checks the chart for the Daridra (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-daridra-extended`, 1 credit - [Parashari Yogas: Longevity (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-longevity-extended.md): Checks the chart for the Longevity (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-longevity-extended`, 1 credit - [Parashari Yogas: Nabha (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-nabha-extended.md): Checks the chart for the Nabha (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-nabha-extended`, 1 credit - [Parashari Yogas: Raja (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-raj-yoga-extended.md): Checks the chart for the Raja (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-raj-yoga-extended`, 1 credit - [Parashari Yogas: Dhana (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-dhana-extended.md): Checks the chart for the Dhana (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-dhana-extended`, 1 credit - [Parashari Yogas: Special classical](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-special-classical-v2.md): Checks the chart for the Special classical yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-special-classical-v2`, 1 credit - [Parashari Yogas: Physical & speech](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-physical-speech-yogas.md): Checks the chart for the Physical & speech yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-physical-speech-yogas`, 1 credit - [Parashari Yogas: Siblings](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-sibling-yogas.md): Checks the chart for the Siblings yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-sibling-yogas`, 1 credit - [Parashari Yogas: Fourth house (extended)](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-fourth-house-extended.md): Checks the chart for the Fourth house (extended) yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-fourth-house-extended`, 1 credit - [Parashari Yogas: Yogarishta](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-yogaristha-yogas.md): Checks the chart for the Yogarishta yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-yogaristha-yogas`, 1 credit - [Parashari Yogas: Sambhu Hora](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-sambu-hora-yogas.md): Checks the chart for the Sambhu Hora yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-sambu-hora-yogas`, 1 credit - [Parashari Yogas: Eye, ear & speech](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-eye-ear-speech-yogas.md): Checks the chart for the Eye, ear & speech yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-eye-ear-speech-yogas`, 1 credit - [Parashari Yogas: Knowledge & skill](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-knowledge-skill-yogas.md): Checks the chart for the Knowledge & skill yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-knowledge-skill-yogas`, 1 credit - [Parashari Yogas: Two-planet conjunctions](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-two-planet-conjunctions.md): Checks the chart for the Two-planet conjunctions yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-two-planet-conjunctions`, 1 credit - [Parashari Yogas: Raja sambandha](https://96astroapi.com/apis/doshas-yogas/parashari-yoga-raja-sambandha-yogas.md): Checks the chart for the Raja sambandha yoga group and returns each yoga with whether it is present and why. `POST /v1/doshas-yogas/parashari-yoga-raja-sambandha-yogas`, 1 credit ## Predictions & readings Rule-based readings: sign horoscopes, transits, characteristics, life readings and period forecasts. - [Lifetime Malefic Transit Windows](https://96astroapi.com/apis/predictions/lifetime-malefic-transits.md): The natal signs made sensitive (and why) and every period in which Saturn, Rahu, Ketu or Mars transits them, with dates and ages up to age 120. A screening, not a prediction. `POST /v1/predictions/lifetime-malefic-transits`, 3 credits - [Ayurdaya (Longevity Estimate) & Age](https://96astroapi.com/apis/predictions/ayurdaya.md): Classical Ayurdaya spans by five methods (Pindayu, Nisargayu, Amsayu, Jeevayu, Badrayan) in years, months and days, and the selected method with its basis. `POST /v1/predictions/ayurdaya`, 3 credits - [Personal Characteristics (in bundle)](https://96astroapi.com/apis/predictions/personal-characteristics-bundle.md): Twelve rows, one per house: the sign, its lord, where the lord sits, its dignity, strength, retrograde and combust flags, and a reading derived from that placement. `POST /v1/predictions/personal-characteristics-bundle`, 3 credits - [Moon-Sign Horoscope: Daily](https://96astroapi.com/apis/predictions/sign-horoscope-daily.md): Daily transit-based forecast for each of the twelve Moon signs: a summary, highlights, score, ratings, lucky number and colour, and a remedy. `POST /v1/predictions/sign-horoscope-daily`, 1 credit - [Moon-Sign Horoscope: This week](https://96astroapi.com/apis/predictions/sign-horoscope-weekly.md): This week transit-based forecast for each of the twelve Moon signs: a summary, highlights, score, ratings, lucky number and colour, and a remedy. `POST /v1/predictions/sign-horoscope-weekly`, 1 credit - [Moon-Sign Horoscope: Next week](https://96astroapi.com/apis/predictions/sign-horoscope-next-week.md): Next week transit-based forecast for each of the twelve Moon signs: a summary, highlights, score, ratings, lucky number and colour, and a remedy. `POST /v1/predictions/sign-horoscope-next-week`, 1 credit - [Moon-Sign Horoscope: Monthly](https://96astroapi.com/apis/predictions/sign-horoscope-monthly.md): Monthly transit-based forecast for each of the twelve Moon signs: the period's dates, ratings and themed reading sections. `POST /v1/predictions/sign-horoscope-monthly`, 1 credit - [Moon-Sign Horoscope: Yearly](https://96astroapi.com/apis/predictions/sign-horoscope-yearly.md): Yearly transit-based forecast for each of the twelve Moon signs: the period's dates, ratings and themed reading sections. `POST /v1/predictions/sign-horoscope-yearly`, 1 credit - [Zodiac Sign Profiles](https://96astroapi.com/apis/predictions/sign-profile.md): Reference profile of each of the twelve signs: symbol, element, modality, ruling planet, natural house, mantra, body part, colours, birthstones and tropical Sun dates. `POST /v1/predictions/sign-profile`, 1 credit - [Personal Daily Forecast](https://96astroapi.com/apis/predictions/daily-personal-forecast.md): A day's forecast from a birth (or Moon sign, Sun sign and nakshatra): the transiting Moon and Sun with their effects, the tara of the day and an overall quality. `POST /v1/predictions/daily-personal-forecast`, 1 credit - [Personal Weekly Forecast](https://96astroapi.com/apis/predictions/weekly-personal-forecast.md): Seven days of the personal forecast with the Moon, Sun, tara and quality for each day, and a summary of favourable and challenging days. `POST /v1/predictions/weekly-personal-forecast`, 1 credit - [Personal Monthly Forecast](https://96astroapi.com/apis/predictions/monthly-personal-forecast.md): A month of the personal forecast day by day, grouped into weeks, with favourable and challenging day counts and the best and toughest weeks. `POST /v1/predictions/monthly-personal-forecast`, 1 credit - [Twelve-Month Prediction](https://96astroapi.com/apis/predictions/twelve-month-prediction.md): Twelve months from a start month: the running mahadasha and antardasha in each month with a reading of each. `POST /v1/predictions/twelve-month-prediction`, 1 credit - [Personal Characteristics](https://96astroapi.com/apis/predictions/personal-characteristics.md): Twelve rows, one per house: the sign, its lord, where the lord sits, its dignity and strength, and a sentence derived from that placement. `POST /v1/predictions/personal-characteristics`, 1 credit - [Detailed Life Reading](https://96astroapi.com/apis/predictions/detailed-life.md): A life reading by house (domain): each with its sign, lord and placement, occupants, a score, band and verdict, plus an overview. `POST /v1/predictions/detailed-life`, 10 credits - [Prediction Report: Nature & temperament](https://96astroapi.com/apis/predictions/prediction-nature.md): The nature & temperament section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-nature`, 10 credits - [Prediction Report: Physical traits](https://96astroapi.com/apis/predictions/prediction-physical.md): The physical traits section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-physical`, 10 credits - [Prediction Report: Lucky days, colours, numbers, stones](https://96astroapi.com/apis/predictions/prediction-lucky-info.md): The lucky days, colours, numbers, stones section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-lucky-info`, 10 credits - [Prediction Report: Birth nakshatra interpretation](https://96astroapi.com/apis/predictions/prediction-nakshatra-interp.md): The birth nakshatra interpretation section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-nakshatra-interp`, 10 credits - [Prediction Report: Planetary dispositions](https://96astroapi.com/apis/predictions/prediction-planetary-dispositions.md): The planetary dispositions section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-planetary-dispositions`, 10 credits - [Prediction Report: House lords (bhavesh)](https://96astroapi.com/apis/predictions/prediction-bhavesh.md): The house lords (bhavesh) section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-bhavesh`, 10 credits - [Prediction Report: Current dasha reading](https://96astroapi.com/apis/predictions/prediction-dasha.md): The current dasha reading section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-dasha`, 10 credits - [Prediction Report: Gem recommendation](https://96astroapi.com/apis/predictions/prediction-gem.md): The gem recommendation section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-gem`, 10 credits - [Prediction Report: Classical references](https://96astroapi.com/apis/predictions/prediction-classics.md): The classical references section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-classics`, 10 credits - [Prediction Report: Life report](https://96astroapi.com/apis/predictions/prediction-life-report.md): The life report section of the natal prediction report, derived from the Lagna, Moon nakshatra and planet placements. `POST /v1/predictions/prediction-life-report`, 10 credits - [Vedic Transit (Gochara)](https://96astroapi.com/apis/predictions/vedic-transit.md): Birth and transit positions side by side: the ascendant and each planet's sign, degree and nakshatra at birth and at the transit moment. `POST /v1/predictions/vedic-transit`, 1 credit - [Navatara Chakra](https://96astroapi.com/apis/predictions/navatara.md): The nine taras counted from the birth nakshatra with each planet's tara placement. `POST /v1/predictions/navatara`, 1 credit ## Krishnamurti Paddhati (KP) KP cusps, significators, ruling planets, horary, transit, ephemeris and birth-time rectification aids. - [KP Birth Chart, Fortuna & Significator Grid](https://96astroapi.com/apis/kp/kp-birth-chart.md): KP cusps with star, sub and sub-sub lords, planets with their star lords and houses, significators by planet and by house, and the Part of Fortune with its KP lords. `POST /v1/kp/kp-birth-chart`, 3 credits - [KP Houses & Planets](https://96astroapi.com/apis/kp/kp-houses-planets.md): Placidus cusps and planets with sign, star, sub and sub-sub lords, significators by planet and by house, ruling planets at birth, the Part of Fortune and Vimshottari periods. `POST /v1/kp/kp-houses-planets`, 1 credit - [KP Horary (Prashna)](https://96astroapi.com/apis/kp/kp-horary.md): A KP horary chart from a number 1-249 (or the moment): cusps and planets with sign, star, sub and sub-sub lords, significators, ruling planets and Vimshottari periods. `POST /v1/kp/kp-horary`, 1 credit - [KP Transit](https://96astroapi.com/apis/kp/kp-transit.md): Birth and transit points with their KP lords, the ruling planets at birth and at the transit, and the Vimshottari periods running at the transit. `POST /v1/kp/kp-transit`, 1 credit - [KP Ephemeris](https://96astroapi.com/apis/kp/kp-ephemeris.md): For a month, either daily planetary positions with KP lords, or one planet's sign, star and sub-lord changes with the time each starts. `POST /v1/kp/kp-ephemeris`, 1 credit - [KP Birth-Time Rectification Aid](https://96astroapi.com/apis/kp/kp-btr.md): Ascendant sign, star, sub and sub-sub lord periods within a window around a given birth time, for rectification. `POST /v1/kp/kp-btr`, 1 credit ## Jaimini Chara karakas, Jaimini sign charts and special points. - [Chara & Sthira Karakas](https://96astroapi.com/apis/jaimini/chara-karakas.md): The seven Jaimini chara karakas (Atmakaraka to Darakaraka) with degrees, alongside the sthira karakas. `POST /v1/jaimini/chara-karakas`, 3 credits - [Jaimini Sign Charts](https://96astroapi.com/apis/jaimini/jaimini-charts.md): Atmakaraka, the Karakamsha, Swamsha, Arudha Lagna and Upapada signs and charts built from them, plus the arudha pada of every house with and without the exceptions. `POST /v1/jaimini/jaimini-charts`, 3 credits - [Jaimini Special Points](https://96astroapi.com/apis/jaimini/jaimini-special-points.md): Yogi, Avayogi, dagdha rashis, Brahma/Maheshwara/Rudra, the 64th navamsha and Jaimini sign-aspect pairs. `POST /v1/jaimini/jaimini-special-points`, 3 credits ## Lal Kitab Lal Kitab chart, annual chart, debts, teva, dasha, remedies and predictions. - [Lal Kitab Chart & Predictions](https://96astroapi.com/apis/lal-kitab/lal-kitab-chart.md): Lal Kitab planets and houses (with dormant, fate and permanent-house markers), the chalit, planetary friendship and the Budh bhed check with remedies. `POST /v1/lal-kitab/lal-kitab-chart`, 1 credit - [Lal Kitab Varshaphal](https://96astroapi.com/apis/lal-kitab/lal-kitab-varshaphal.md): Lal Kitab annual chart for a target year: each planet's house and nature, and the monthly charts. `POST /v1/lal-kitab/lal-kitab-varshaphal`, 1 credit - [Lal Kitab Annual Prediction](https://96astroapi.com/apis/lal-kitab/lal-kitab-prediction.md): Readings for a target year: a summary and readings from the birth chart and from the Lal Kitab annual chart. `POST /v1/lal-kitab/lal-kitab-prediction`, 10 credits - [Lal Kitab Debts (Rin)](https://96astroapi.com/apis/lal-kitab/lal-kitab-debts.md): The Lal Kitab ancestral debts (rin): each with whether it is indicated, the rule and placements behind it, and its remedies. `POST /v1/lal-kitab/lal-kitab-debts`, 1 credit - [Lal Kitab Teva](https://96astroapi.com/apis/lal-kitab/lal-kitab-teva.md): Which Lal Kitab teva types the chart is, each with present and the rule used. `POST /v1/lal-kitab/lal-kitab-teva`, 1 credit - [Lal Kitab Dasha](https://96astroapi.com/apis/lal-kitab/lal-kitab-dasha.md): Lal Kitab period system: each period's lord, years, dates and sub-periods. `POST /v1/lal-kitab/lal-kitab-dasha`, 1 credit - [Lal Kitab Remedies](https://96astroapi.com/apis/lal-kitab/lal-kitab-remedies.md): General Lal Kitab rules, then each planet's house, nature and dormancy with its remedies. `POST /v1/lal-kitab/lal-kitab-remedies`, 1 credit ## Bhrigu Nandi Nadi (BNN) BNN progression charts, nadi relations, graha phala, ratna, yogas and dashas. - [BNN Charts (in bundle)](https://96astroapi.com/apis/bnn/bnn-bundle-charts.md): The nine-graha D1 and Bhav Chalit house lists used for BNN reading: each house's sign and planets. `POST /v1/bnn/bnn-bundle-charts`, 3 credits - [BNN Progression](https://96astroapi.com/apis/bnn/bnn-progression.md): Bhrigu Nandi Nadi natal positions, the karaka role and doctrine applied to each planet, and the progressed positions for every age. `POST /v1/bnn/bnn-progression`, 3 credits - [BNN Snapshot for a Date](https://96astroapi.com/apis/bnn/bnn-snapshot.md): The progressed BNN positions for one target date and time, with the age and month offset used. `POST /v1/bnn/bnn-snapshot`, 1 credit - [BNN Nadi Relations](https://96astroapi.com/apis/bnn/bnn-nadi.md): Nadi points with nadiamshas, planets sharing a nakshatra or sign, sign aspects, exchanges and each planet's movement to the next. `POST /v1/bnn/bnn-nadi`, 1 credit - [BNN Graha Phala](https://96astroapi.com/apis/bnn/bnn-graha-phala.md): Lagna and janma nakshatra readings, each planet's sign, house, dignity and nakshatra with its sign and star lords' placements, and the conjunctions by sign and nakshatra. `POST /v1/bnn/bnn-graha-phala`, 10 credits - [BNN Ratna (Gemstones)](https://96astroapi.com/apis/bnn/bnn-ratna.md): Moolank and Bhagyank and a list of gemstones, each with its planet, basis, metal, finger, substitutes and reason. `POST /v1/bnn/bnn-ratna`, 1 credit - [BNN Yogas](https://96astroapi.com/apis/bnn/bnn-yoga.md): Classical and Nadi yogas, Bhrigu Bindu and Nadi chains. `POST /v1/bnn/bnn-yoga`, 1 credit - [BNN Dashas](https://96astroapi.com/apis/bnn/bnn-dasha.md): Ashtottari and Naisargika dasha periods, with the Ashtottari start lord and balance, and the periods running now. `POST /v1/bnn/bnn-dasha`, 1 credit ## Annual charts (Tajika) Varshaphal and Tithi Pravesh annual charts, sahams and annual dashas. - [Natal Sahams](https://96astroapi.com/apis/tajika/natal-sahams.md): The 42 Tajika sahams computed for the birth chart, each with longitude, sign, degree and sign lord, and whether the birth is a day birth. `POST /v1/tajika/natal-sahams`, 3 credits - [Varshaphal (Annual Chart)](https://96astroapi.com/apis/tajika/varshaphal.md): Annual Tajika chart for a target year: the return moment, ascendant and planets, muntha, panchadhikari, sahams, the twelve monthly (Maasa) charts, mudda dasha and Tajika yogas. `POST /v1/tajika/varshaphal`, 3 credits - [Tithi Pravesh](https://96astroapi.com/apis/tajika/tithi-pravesh.md): The annual chart cast at the return of the birth tithi in a target year: the return moment, ascendant and planets, muntha, panchadhikari, mudda dasha and Tajika yogas. `POST /v1/tajika/tithi-pravesh`, 1 credit ## Western astrology Tropical natal charts, transits, sun-sign forecasts and synastry. - [Western Natal Chart](https://96astroapi.com/apis/western/western-natal-chart.md): Tropical natal chart: Sun, Moon and rising signs, ascendant and midheaven, planets with sign and house, the house cusps, and aspects with orb and meaning. `POST /v1/western/western-natal-chart`, 1 credit - [Western Planet Details](https://96astroapi.com/apis/western/western-planet-details.md): Tropical longitude, sign, element, mode, ruler and house for each planet. `POST /v1/western/western-planet-details`, 1 credit - [Western House Cusps](https://96astroapi.com/apis/western/western-house-cusps.md): Twelve house cusps with sign, signification, ruler and the planets in each, plus the ascendant and midheaven. `POST /v1/western/western-house-cusps`, 1 credit - [Western Natal Aspects](https://96astroapi.com/apis/western/western-natal-aspects.md): Aspects between natal planets with orb, nature and meaning, split into major and minor. `POST /v1/western/western-natal-aspects`, 1 credit - [Western Natal Wheel](https://96astroapi.com/apis/western/western-natal-wheel.md): The natal wheel as an SVG drawing with real house cusps and aspect lines, plus the cusp, planet and aspect data drawn. `POST /v1/western/western-natal-wheel`, 1 credit - [Western Detailed Planet Report](https://96astroapi.com/apis/western/western-detailed-report.md): Interpretive report: each planet's sign, house, dignity and meaning, the houses, the dominant element and the key aspects, with a summary. `POST /v1/western/western-detailed-report`, 10 credits - [Lunar Node Report](https://96astroapi.com/apis/western/western-node-report.md): The lunar node's sign, degree and house with the house meaning, its ruler's sign and house, and an interpretation. `POST /v1/western/western-node-report`, 1 credit - [Ascendant Report](https://96astroapi.com/apis/western/western-ascendant-report.md): Rising sign with degree, element and mode, the chart ruler's sign and house, and an interpretation. `POST /v1/western/western-ascendant-report`, 1 credit - [Western Transit Chart](https://96astroapi.com/apis/western/western-transit-chart.md): Natal and current transit planet positions, transit-to-natal aspects with orb, intensity and meaning, and the major transits. `POST /v1/western/western-transit-chart`, 1 credit - [Western Transit Wheel](https://96astroapi.com/apis/western/western-transit-wheel.md): The natal wheel with the transiting planets drawn around it, as an SVG drawing, plus the transit-to-natal aspects and a table of both rings. `POST /v1/western/western-transit-wheel`, 1 credit - [Transit Dates](https://96astroapi.com/apis/western/western-transit-dates.md): Dates when transiting planets aspect natal points within a look-ahead window. `POST /v1/western/western-transit-dates`, 3 credits - [Daily Transit Prediction](https://96astroapi.com/apis/western/western-daily-transit.md): A day's theme from transits to the natal chart, with the active and major transit-to-natal aspects and their meanings. `POST /v1/western/western-daily-transit`, 1 credit - [Western Yearly Forecast](https://96astroapi.com/apis/western/western-yearly-forecast.md): Year ahead from the solar return: the return moment and chart, the year's main transit themes with exact dates, and a summary. `POST /v1/western/western-yearly-forecast`, 10 credits - [Current Planet Positions (Tropical)](https://96astroapi.com/apis/western/western-transit-planets.md): Current tropical planet positions with sign, degree and retrograde flags, plus the dominant element. `POST /v1/western/western-transit-planets`, 1 credit - [General Transits: Daily](https://96astroapi.com/apis/western/western-general-transits-daily.md): The day's tropical planet positions and the aspects between them, not tied to a chart, with the dominant element and retrograde planets. `POST /v1/western/western-general-transits-daily`, 1 credit - [General Transits: Weekly](https://96astroapi.com/apis/western/western-general-transits-weekly.md): Day by day for a week: key aspects, dominant element, retrograde planets and the Moon's sign, not tied to a chart. `POST /v1/western/western-general-transits-weekly`, 1 credit - [General Transits: Monthly](https://96astroapi.com/apis/western/western-general-transits-monthly.md): Week by week for a month: key aspects, dominant element, retrograde planets and the Moon's sign, not tied to a chart. `POST /v1/western/western-general-transits-monthly`, 1 credit - [Sun-Sign Daily Forecast](https://96astroapi.com/apis/western/western-sun-daily.md): A day's forecast for a sun sign: theme, the Moon's sign and phase, aspects to the sign's ruler and the major sky aspects. `POST /v1/western/western-sun-daily`, 1 credit - [Sun-Sign Weekly Forecast](https://96astroapi.com/apis/western/western-sun-weekly.md): Day by day for a week for a sun sign: theme, Moon sign, key aspects and aspects to the sign's ruler. `POST /v1/western/western-sun-weekly`, 1 credit - [Sun-Sign Match](https://96astroapi.com/apis/western/western-sun-sign-match.md): Compatibility from two sun signs alone: their elements, a score out of a maximum, a verdict and a summary. `POST /v1/western/western-sun-sign-match`, 1 credit - [Synastry Chart](https://96astroapi.com/apis/western/synastry-chart.md): Both people's positions, the aspects between their charts, and a compatibility block with score, Sun and Moon compatibility and a verdict. `POST /v1/western/synastry-chart`, 1 credit - [Synastry Wheel](https://96astroapi.com/apis/western/synastry-wheel.md): Person A's wheel with person B's planets drawn around it, as an SVG drawing, plus the inter-chart aspects and a table of both rings. `POST /v1/western/synastry-wheel`, 1 credit - [Synastry Aspects](https://96astroapi.com/apis/western/synastry-aspects.md): Inter-chart aspects between two people, split into harmonious and challenging, with orb and meaning. `POST /v1/western/synastry-aspects`, 1 credit - [Synastry Predictions](https://96astroapi.com/apis/western/synastry-predictions.md): A compatibility score and verdict with the love, passion, emotional and identity aspects between two charts and their meanings. `POST /v1/western/synastry-predictions`, 10 credits - [Synastry Compatibility Score](https://96astroapi.com/apis/western/synastry-compatibility.md): A synastry compatibility score with Sun and Moon compatibility, aspect counts and a verdict. `POST /v1/western/synastry-compatibility`, 1 credit - [Synastry: Career](https://96astroapi.com/apis/western/synastry-career.md): Career compatibility from synastry: a score and band, a summary and narrative, the significators used and the supportive and testing inter-chart aspects. `POST /v1/western/synastry-career`, 1 credit - [Synastry: Finance](https://96astroapi.com/apis/western/synastry-finance.md): Finance compatibility from synastry: a score and band, a summary and narrative, the significators used and the supportive and testing inter-chart aspects. `POST /v1/western/synastry-finance`, 1 credit - [Synastry: Intimacy](https://96astroapi.com/apis/western/synastry-intimacy.md): Intimacy compatibility from synastry: a score and band, a summary and narrative, the significators used and the supportive and testing inter-chart aspects. `POST /v1/western/synastry-intimacy`, 1 credit - [Synastry: Spirituality](https://96astroapi.com/apis/western/synastry-spirituality.md): Spirituality compatibility from synastry: a score and band, a summary and narrative, the significators used and the supportive and testing inter-chart aspects. `POST /v1/western/synastry-spirituality`, 1 credit - [Synastry: Emotion](https://96astroapi.com/apis/western/synastry-emotion.md): Emotion compatibility from synastry: a score and band, a summary and narrative, the significators used and the supportive and testing inter-chart aspects. `POST /v1/western/synastry-emotion`, 1 credit - [Synastry: Everything](https://96astroapi.com/apis/western/synastry-full.md): Compatibility, all five domain readings ranked (career, finance, intimacy, spirituality, emotion) and the sun-sign match, in one call. `POST /v1/western/synastry-full`, 10 credits - [Western Bulk Match](https://96astroapi.com/apis/western/synastry-bulk.md): One person scored against many candidates, paged: score, verdict and aspect counts per candidate; candidates without a birth time are marked approximate. `POST /v1/western/synastry-bulk`, 3 credits ## Tarot Tarot card draws and fixed spreads. - [Tarot Card Draw](https://96astroapi.com/apis/tarot/tarot-shuffle.md): Turns over the top N cards (1-78) of a shuffled deck with orientation, keywords and element; a draw can be replayed by its draw_id, or fixed for the day. `POST /v1/tarot/tarot-shuffle`, 1 credit - [Tarot: Yes / No](https://96astroapi.com/apis/tarot/tarot-yes-no.md): Draws cards for the Yes / No spread and returns them with a reading. `POST /v1/tarot/tarot-yes-no`, 1 credit - [Tarot: Daily Card](https://96astroapi.com/apis/tarot/tarot-daily.md): Draws cards for the Daily Card spread and returns them with a reading. `POST /v1/tarot/tarot-daily`, 1 credit - [Tarot: Fortune Cookie](https://96astroapi.com/apis/tarot/tarot-fortune-cookie.md): Draws cards for the Fortune Cookie spread and returns them with a reading. `POST /v1/tarot/tarot-fortune-cookie`, 1 credit - [Tarot: Flirt](https://96astroapi.com/apis/tarot/tarot-flirt.md): Draws cards for the Flirt spread and returns them with a reading. `POST /v1/tarot/tarot-flirt`, 1 credit - [Tarot: Love Triangle](https://96astroapi.com/apis/tarot/tarot-love-triangle.md): Draws cards for the Love Triangle spread and returns them with a reading. `POST /v1/tarot/tarot-love-triangle`, 1 credit - [Tarot: Career](https://96astroapi.com/apis/tarot/tarot-career.md): Draws cards for the Career spread and returns them with a reading. `POST /v1/tarot/tarot-career`, 1 credit - [Tarot: In-Depth Love](https://96astroapi.com/apis/tarot/tarot-in-depth-love.md): Draws cards for the In-Depth Love spread and returns them with a reading. `POST /v1/tarot/tarot-in-depth-love`, 1 credit - [Tarot: Erotic Love](https://96astroapi.com/apis/tarot/tarot-erotic-love.md): Draws cards for the Erotic Love spread and returns them with a reading. `POST /v1/tarot/tarot-erotic-love`, 1 credit - [Tarot: Compatibility](https://96astroapi.com/apis/tarot/tarot-compatibility.md): Draws cards for the Compatibility spread and returns them with a reading. `POST /v1/tarot/tarot-compatibility`, 1 credit - [Tarot: Romantic Breakup](https://96astroapi.com/apis/tarot/tarot-romantic-breakup.md): Draws cards for the Romantic Breakup spread and returns them with a reading. `POST /v1/tarot/tarot-romantic-breakup`, 1 credit - [Tarot: Business Breakup](https://96astroapi.com/apis/tarot/tarot-business-breakup.md): Draws cards for the Business Breakup spread and returns them with a reading. `POST /v1/tarot/tarot-business-breakup`, 1 credit - [Tarot: Past, Present, Future](https://96astroapi.com/apis/tarot/tarot-past-present-future.md): Draws cards for the Past, Present, Future spread and returns them with a reading. `POST /v1/tarot/tarot-past-present-future`, 1 credit - [Tarot: Celtic Cross](https://96astroapi.com/apis/tarot/tarot-celtic-cross.md): Draws cards for the Celtic Cross spread and returns them with a reading. `POST /v1/tarot/tarot-celtic-cross`, 1 credit - [Tarot: Year Ahead](https://96astroapi.com/apis/tarot/tarot-year-ahead.md): Draws cards for the Year Ahead spread and returns them with a reading. `POST /v1/tarot/tarot-year-ahead`, 1 credit ## Numerology Chaldean/Vedic numerology, name numbers, day numbers and biorhythms. - [Numerology (in bundle)](https://96astroapi.com/apis/numerology/numerology-bundle.md): Radical, destiny and name numbers, Lo Shu and Vedic grids, Kua number, personal cycles and remedies, from the name and birth date. `POST /v1/numerology/numerology-bundle`, 3 credits - [Numerology](https://96astroapi.com/apis/numerology/numerology.md): Radical, destiny and name numbers with their planets and favourable details, Lo Shu and Vedic grids, Kua number, personal cycles, combinations, readings and remedies. `POST /v1/numerology/numerology`, 1 credit - [Name Numerology](https://96astroapi.com/apis/numerology/name-numerology.md): Chaldean letter values with the Expression, Soul Urge and Personality numbers from a name, and alternative name spellings. `POST /v1/numerology/name-numerology`, 1 credit - [Day Number](https://96astroapi.com/apis/numerology/day-number.md): Moolank and Bhagyank of a date with their planets and traits, the compound number, and a lucky day, number and colour. `POST /v1/numerology/day-number`, 1 credit - [Biorhythm](https://96astroapi.com/apis/numerology/biorhythm.md): Physical, emotional and intellectual cycle values and phases for a date, a composite, a day-by-day series around it and the critical days. `POST /v1/numerology/biorhythm`, 1 credit ## Remedies & guidance Gemstone, rudraksha, nakshatra-vastu and Panch Pakshi guidance. - [Gemstone Details](https://96astroapi.com/apis/remedies/gem-details.md): The gemstone for one planet or sign: its planet and deity, colour, substitutes, metal, finger, day, weight, benefits, cautions and mantra. `POST /v1/remedies/gem-details`, 1 credit - [Gemstone Catalogue](https://96astroapi.com/apis/remedies/gem-details-all.md): Every planet's gemstone entry with substitutes, metal, finger, day, weight, nakshatras, signs, houses and benefits. `POST /v1/remedies/gem-details-all`, 1 credit - [Rudraksha Recommendation](https://96astroapi.com/apis/remedies/rudraksha.md): Rudraksha suggestions from any of lagna, Moon and Sun signs, dasha lord, birth date and weak planets: the primary mukhi and each recommendation with reasons. `POST /v1/remedies/rudraksha`, 1 credit - [Nakshatra Vastu](https://96astroapi.com/apis/remedies/nakshatra-vastu.md): Vastu guidance for a birth nakshatra (by name or number): door, sleep, work and cooking directions, colours, numbers, metal, zones and tips. `POST /v1/remedies/nakshatra-vastu`, 1 credit - [Nakshatra Vastu Catalogue](https://96astroapi.com/apis/remedies/nakshatra-vastu-all.md): The nakshatra Vastu guidance for all 27 nakshatras. `POST /v1/remedies/nakshatra-vastu-all`, 1 credit - [Panch Pakshi](https://96astroapi.com/apis/remedies/panch-pakshi.md): Panch Pakshi for a day at a place: the ruling and dying bird with each yama for day and night, and the bird and activity at the given moment. `POST /v1/remedies/panch-pakshi`, 1 credit ## Reports Long multi-section readings assembled from the chart: topic reports, classical Kundli bundles, matching and longevity. - [Marriage & Married Life Report](https://96astroapi.com/apis/reports/report-marriage.md): In-depth marriage & married life reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-marriage`, 10 credits - [Romance Report](https://96astroapi.com/apis/reports/report-romance.md): In-depth romance reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-romance`, 10 credits - [Career Report](https://96astroapi.com/apis/reports/report-career.md): In-depth career reading: an overview score, scored sections with the chart evidence behind each, timing windows, a summary and a confidence statement. `POST /v1/reports/report-career`, 10 credits - [Politics & Public Life Report](https://96astroapi.com/apis/reports/report-politics.md): In-depth politics & public life reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-politics`, 10 credits - [Wealth Report](https://96astroapi.com/apis/reports/report-wealth.md): In-depth wealth reading: an overview score, scored sections with the chart evidence behind each, timing windows, a summary and a confidence statement. `POST /v1/reports/report-wealth`, 10 credits - [Children Report](https://96astroapi.com/apis/reports/report-children.md): In-depth children reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-children`, 10 credits - [Education Report](https://96astroapi.com/apis/reports/report-education.md): In-depth education reading: an overview score, scored sections with the chart evidence behind each, timing windows, a summary and a confidence statement. `POST /v1/reports/report-education`, 10 credits - [Property Report](https://96astroapi.com/apis/reports/report-property.md): In-depth property reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-property`, 10 credits - [Health Report](https://96astroapi.com/apis/reports/report-health.md): In-depth health reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-health`, 10 credits - [Foreign Travel Report](https://96astroapi.com/apis/reports/report-foreign-travel.md): In-depth foreign travel reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-foreign-travel`, 10 credits - [Relocation Report](https://96astroapi.com/apis/reports/report-relocation.md): Relocation reading: relocation potential, stay-or-move verdict, foreign settlement, best directions, house and D4 analysis, dasha support, ranked places, timing and a confidence statement. `POST /v1/reports/report-relocation`, 10 credits - [Spiritual Report](https://96astroapi.com/apis/reports/report-spiritual.md): In-depth spiritual reading: an overview score, scored sections with the chart evidence behind each, timing windows, remedies, a summary and a confidence statement. `POST /v1/reports/report-spiritual`, 10 credits - [Classical Kundli Report Bundles](https://96astroapi.com/apis/reports/classical-kundli-report.md): The extra chapters of a classical Kundli bundle: ascendant reading, gemstones, rudraksha, yogas, graha phala, dasha reading or a month-by-month annual reading, by bundle. `POST /v1/reports/classical-kundli-report`, 10 credits - [Kundli Matching Report](https://96astroapi.com/apis/reports/matching-report.md): Matching report: each side's nakshatra, ascendant and Mangal dosha, Ashtakoot and Dashakoot scores, Rajju and Vedha with readings, koota vetoes, personality notes and a verdict. `POST /v1/reports/matching-report`, 10 credits - [Longevity & Arishta Analysis](https://96astroapi.com/apis/reports/longevity-analysis.md): Classical Balarishta, Arishta, maraka, badhaka and critical-transit factors with an explainable rule log; classical arithmetic, explicitly not a medical or death prediction. `POST /v1/reports/longevity-analysis`, 10 credits ## Location astrology Astrocartography, relocation, city ranking and place-based timing for a birth chart. - [Astrocartography Lines](https://96astroapi.com/apis/location-astrology/acg-lines.md): All planetary ASC/MC/DC/IC lines for a birth moment as map line segments, plus aspect lines, zenith points, parans and midheaven sign bands. `POST /v1/location-astrology/acg-lines`, 1 credit - [Transit Astrocartography Lines](https://96astroapi.com/apis/location-astrology/transit-acg-lines.md): Planetary ASC/MC/DC/IC lines for any moment as map line segments. `POST /v1/location-astrology/transit-acg-lines`, 1 credit - [Relocated Chart](https://96astroapi.com/apis/location-astrology/relocation-chart.md): The chart recast for a new place: angles, house cusps with their lords, and each planet's house there and at the birthplace. `POST /v1/location-astrology/relocation-chart`, 1 credit - [Best Cities for a Goal](https://96astroapi.com/apis/location-astrology/rank-cities.md): Ranks catalogue cities for one life goal: score, distance, rising and midheaven signs with their lords, and the reasons for each. `POST /v1/location-astrology/rank-cities`, 3 credits - [Dasha-Aware City Ranking](https://96astroapi.com/apis/location-astrology/dasha-optimize.md): City ranking for one goal weighted by the dashas running on a date, with the running Vimshottari, Char and Yogini periods. `POST /v1/location-astrology/dasha-optimize`, 3 credits - [KP Verdict for a Place](https://96astroapi.com/apis/location-astrology/location-kp-analysis.md): KP cusps and planets with star, sub and sub-sub lords and significations for one place and date, the running dashas, and a verdict per goal. `POST /v1/location-astrology/location-kp-analysis`, 1 credit - [Compare Two Places](https://96astroapi.com/apis/location-astrology/compare-locations.md): Scores two places per goal under the same birth and date, with each place's angles and KP verdicts, the totals and the overall winner. `POST /v1/location-astrology/compare-locations`, 1 credit - [Char Dasha Schedule (Phaladeepika)](https://96astroapi.com/apis/location-astrology/location-char-dasha.md): Twelve-row Char dasha schedule with each sign's lord, years and dates, and the period running on a date. `POST /v1/location-astrology/location-char-dasha`, 1 credit - [Yogini Dasha Schedule](https://96astroapi.com/apis/location-astrology/location-yogini-dasha.md): Lifetime Yogini schedule from the birth nakshatra with each period's lord, years and dates, and the period running on a date. `POST /v1/location-astrology/location-yogini-dasha`, 1 credit - [Solar Return Moment](https://96astroapi.com/apis/location-astrology/solar-return.md): The sidereal solar return instant for a target year, returned as birth data for reuse. `POST /v1/location-astrology/solar-return`, 1 credit - [Davison Relationship Chart](https://96astroapi.com/apis/location-astrology/davison-chart.md): Time and place midpoint of two births, returned as birth data for reuse. `POST /v1/location-astrology/davison-chart`, 1 credit - [Navatara by Place](https://96astroapi.com/apis/location-astrology/location-navatara.md): The tara of the nakshatras rising and culminating at a place, counted from the birth nakshatra, with a reading; or catalogue cities ranked by it. `POST /v1/location-astrology/location-navatara`, 1 credit - [Region Analysis](https://96astroapi.com/apis/location-astrology/zone-analysis.md): Scores a drawn polygon or bounding box from the cities inside it, with lines and strongest planets. `POST /v1/location-astrology/zone-analysis`, 3 credits - [Local Space Directions](https://96astroapi.com/apis/location-astrology/local-space.md): Each planet's compass bearing and altitude from where the person stands, with its themes and the cities along its great-circle ray. `POST /v1/location-astrology/local-space`, 1 credit - [Location Goal Catalogue](https://96astroapi.com/apis/location-astrology/location-categories.md): The scoring goals with their house formulas and significators. `POST /v1/location-astrology/location-categories`, 1 credit ## Vastu Floor-plan Vastu analysis, Ayadi, comparisons, heatmaps and reference tables. - [Vastu Floor Analysis](https://96astroapi.com/apis/vastu/vastu-analyse.md): Vastu analysis of one floor from its marked-up plan: overall and category scores, zones, rooms, brahmasthan, marma, devatas, defects with remedies, Ayadi and a checklist. `POST /v1/vastu/vastu-analyse`, 3 credits, beta - [Vastu Category Heatmap](https://96astroapi.com/apis/vastu/vastu-heatmap.md): Sampled points across the floor, each scored for one life goal with its zone. `POST /v1/vastu/vastu-heatmap`, 3 credits, beta - [Compare Two Properties](https://96astroapi.com/apis/vastu/vastu-compare.md): Two plans analysed side by side: each one's scores and defects, the winner per category with reasons, and the overall winner. `POST /v1/vastu/vastu-compare`, 3 credits, beta - [Ayadi Calculation](https://96astroapi.com/apis/vastu/vastu-ayadi.md): Ayadi factors (aya-vyaya, yoni, nakshatra, vara) for given dimensions, how many are favourable, and the nearest all-favourable size. `POST /v1/vastu/vastu-ayadi`, 1 credit, beta - [Vastu + City Score](https://96astroapi.com/apis/vastu/vastu-combined-with-city.md): Combines Vastu category scores with a city's location-astrology scores: a combined score and diagnosis per category, and an average. `POST /v1/vastu/vastu-combined-with-city`, 1 credit, beta - [Remedy Timing](https://96astroapi.com/apis/vastu/vastu-auspicious-times.md): Auspicious days in a range for carrying out a Vastu remedy, optionally for a deity: each day's tier, score, reasons, nakshatra and Brahma and Abhijit muhurta. `POST /v1/vastu/vastu-auspicious-times`, 1 credit, beta - [DXF Floor-Plan Import](https://96astroapi.com/apis/vastu/vastu-import-dxf.md): Reads an ASCII DXF drawing into a reviewable plan (boundary, north, rooms, scale) with the drawing units and notes. `POST /v1/vastu/vastu-import-dxf`, 1 credit, beta - [Vastu Plan Templates](https://96astroapi.com/apis/vastu/vastu-templates.md): Lists the starter floor-plan templates with their rooms. `POST /v1/vastu/vastu-templates`, 1 credit, beta - [Vastu Plan Template](https://96astroapi.com/apis/vastu/vastu-template.md): One starter template scaled to the given canvas size. `POST /v1/vastu/vastu-template`, 1 credit, beta - [Vastu Reference Tables](https://96astroapi.com/apis/vastu/vastu-reference.md): The 16 Vastu zones the analysis scores: each with its deity, element, planet, chakra, what it governs and what it suits. `POST /v1/vastu/vastu-reference`, 1 credit, beta ## Mundane astrology World-level forecasting for a moment and place. - [Mundane: Panchanga snapshot](https://96astroapi.com/apis/mundane/mundane-panchanga.md): The panchanga snapshot section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-panchanga`, 3 credits, beta - [Mundane: Samvatsara](https://96astroapi.com/apis/mundane/mundane-samvatsara.md): The samvatsara section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-samvatsara`, 3 credits, beta - [Mundane: Nava Nayaka (cabinet of the year)](https://96astroapi.com/apis/mundane/mundane-nava-nayaka.md): The nava nayaka (cabinet of the year) section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-nava-nayaka`, 3 credits, beta - [Mundane: Planet positions & strength](https://96astroapi.com/apis/mundane/mundane-positions.md): The planet positions & strength section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-positions`, 3 credits, beta - [Mundane: Threat & sector scores](https://96astroapi.com/apis/mundane/mundane-scores.md): The threat & sector scores section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-scores`, 3 credits, beta - [Mundane: Blended outlook (rule-based)](https://96astroapi.com/apis/mundane/mundane-ai-forecast.md): The blended outlook (rule-based) section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-ai-forecast`, 3 credits, beta - [Mundane: Kota Chakra](https://96astroapi.com/apis/mundane/mundane-kota-chakra.md): The kota chakra section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-kota-chakra`, 3 credits, beta - [Mundane: Sarvatobhadra](https://96astroapi.com/apis/mundane/mundane-sarvatobhadra.md): The sarvatobhadra section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-sarvatobhadra`, 3 credits, beta - [Mundane: Kurma Chakra](https://96astroapi.com/apis/mundane/mundane-kurma-chakra.md): The kurma chakra section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-kurma-chakra`, 3 credits, beta - [Mundane: Sanghatta](https://96astroapi.com/apis/mundane/mundane-sanghatta.md): The sanghatta section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-sanghatta`, 3 credits, beta - [Mundane: Eclipses](https://96astroapi.com/apis/mundane/mundane-eclipses.md): The eclipses section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-eclipses`, 3 credits, beta - [Mundane: Ingress charts](https://96astroapi.com/apis/mundane/mundane-ingress-charts.md): The ingress charts section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-ingress-charts`, 3 credits, beta - [Mundane: Weather indications](https://96astroapi.com/apis/mundane/mundane-weather.md): The weather indications section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-weather`, 3 credits, beta - [Mundane: Sapta Nadi](https://96astroapi.com/apis/mundane/mundane-sapt-nadi.md): The sapta nadi section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-sapt-nadi`, 3 credits, beta - [Mundane: Dhoomadi](https://96astroapi.com/apis/mundane/mundane-dhoomadi.md): The dhoomadi section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-dhoomadi`, 3 credits, beta - [Mundane: Latta](https://96astroapi.com/apis/mundane/mundane-latta.md): The latta section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-latta`, 3 credits, beta - [Mundane: Triple malefic](https://96astroapi.com/apis/mundane/mundane-triple-malefic.md): The triple malefic section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-triple-malefic`, 3 credits, beta - [Mundane: Country impact](https://96astroapi.com/apis/mundane/mundane-country-impact.md): The country impact section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-country-impact`, 3 credits, beta - [Mundane: Commodities](https://96astroapi.com/apis/mundane/mundane-commodities.md): The commodities section of the world-level mundane dashboard for a moment and place. `POST /v1/mundane/mundane-commodities`, 3 credits, beta ## AI interpretation AI-written readings and answers grounded in chart, report or Vastu data the service computes. - [Floor-Plan Auto-Detect (Vision)](https://96astroapi.com/apis/ai/vastu-vision-detect.md): An AI vision model proposes a floor plan from a picture of it (PNG, JPEG or WebP): outline, centre, rooms, structures and main entrance in pixel coordinates, shaped as vastu-analyse input, with a confidence note. `POST /v1/ai/vastu-vision-detect`, Metered, from 15 credits, beta - [Vastu Defect Explanation (AI)](https://96astroapi.com/apis/ai/vastu-explain-defect.md): An AI-written explanation of one Vastu defect in sections, with its remedies explained. `POST /v1/ai/vastu-explain-defect`, Metered, from 15 credits, beta - [Vastu Remedy Ranking (AI)](https://96astroapi.com/apis/ai/vastu-rank-remedies.md): AI picks the top three actions across all defects and remedy tiers, each with what it addresses, effort and timeframe, and a summary. `POST /v1/ai/vastu-rank-remedies`, Metered, from 15 credits, beta - [AI Reading: Structured reading](https://96astroapi.com/apis/ai/ai-insight.md): An AI-written reading of a birth chart, grounded in chart data the service computes from the birth (or in one report named in `context`); choose persona, tier and language. Optional JSON output. `POST /v1/ai/ai-insight`, Metered, from 15 credits, beta - [AI Reading: Chat answer](https://96astroapi.com/apis/ai/ai-chat.md): An AI answer to a question about a birth chart, with earlier turns as history; grounded in chart data the service computes from the birth (or in one report named in `context`). `POST /v1/ai/ai-chat`, Metered, from 15 credits, beta - [AI Reading: Custom lens](https://96astroapi.com/apis/ai/ai-lens.md): An AI-written reading of a birth chart through one lens (career, marriage, wealth, health, spiritual or year ahead), grounded in chart data the service computes from the birth. `POST /v1/ai/ai-lens`, Metered, from 15 credits, beta - [AI Reading: General question](https://96astroapi.com/apis/ai/ai-general.md): An AI answer to a general astrology question, grounded in chart data the service computes from the birth (or in one report named in `context`); choose persona, tier and language. `POST /v1/ai/ai-general`, Metered, from 15 credits, beta - [AI Relocation Answer](https://96astroapi.com/apis/ai/location-ai-analysis.md): An AI-written answer to a relocation question, grounded in the cities the service ranks for the birth (and KP analysis of the top ones); returns the answer and the ranked cities. `POST /v1/ai/location-ai-analysis`, Metered, from 15 credits, beta ## Utilities Languages, place search, time-zone resolution and quick sign finders. - [Find Ascendant](https://96astroapi.com/apis/utilities/find-ascendant.md): Rising sign, degree, nakshatra and pada with its KP sign, star and sub lords for a date, time and place, plus the planets' sidereal positions at that moment. `POST /v1/utilities/find-ascendant`, 1 credit - [Find Moon Sign](https://96astroapi.com/apis/utilities/find-moon-sign.md): Sidereal Moon sign (and nakshatra) for a date, time and place. `POST /v1/utilities/find-moon-sign`, 1 credit - [Find Sun Sign](https://96astroapi.com/apis/utilities/find-sun-sign.md): The sidereal (Vedic) Sun sign with degree and nakshatra, and the tropical (Western) Sun sign, for a date; time and place refine it. `POST /v1/utilities/find-sun-sign`, 1 credit - [Supported Languages](https://96astroapi.com/apis/utilities/languages.md): Lists the language codes responses can be localised into, with English and native names and whether each is written right to left. `POST /v1/utilities/languages`, 1 credit - [Place Search](https://96astroapi.com/apis/utilities/geo-search.md): Searches the built-in city list by name and returns coordinates, IANA zone and the UTC offset in force on a given date/time. `POST /v1/utilities/geo-search`, 1 credit - [Place Search (City + Country)](https://96astroapi.com/apis/utilities/geo-search-advanced.md): Place search narrowed by city and country, with DST-aware offset. `POST /v1/utilities/geo-search-advanced`, 1 credit - [Resolve Birth Instant](https://96astroapi.com/apis/utilities/resolve-instant.md): Turns an IANA zone plus local date and time into one UTC instant, or reports that the local time was ambiguous (both candidates returned) or nonexistent across a DST change. `POST /v1/utilities/resolve-instant`, 1 credit