deep-dive

The Ashtakavarga bindu system via API

How to compute Ashtakavarga bindus, BAV charts, and the Sarvashtakavarga total via the Vedika astrology API, with request shapes, code, and reduction logic.

The Ashtakavarga bindu system is a scoring layer in Vedic astrology that assigns each of the twelve signs a number of benefic points (bindus) for every planet, giving a quantitative measure of strength used mainly for transit timing. Through the Vedika API you can compute the full set in one call: the seven per-planet Bhinnashtakavarga grids, the consolidated Sarvashtakavarga total, and the classical reductions. This article walks through the request shapes, the response model, and how to read the numbers the way the texts intend.

What Ashtakavarga actually computes

Ashtakavarga (literally "the eight-fold division") is described at length in the Brihat Parashara Hora Shastra. The idea is that each planet's results in a given sign are conditioned by where the other planets sit relative to it. For every planet, classical contribution tables list which houses, counted from each of the eight reference points (the seven planets plus the Ascendant), are benefic. Tally those benefic positions across all twelve signs and you get that planet's Bhinnashtakavarga (BAV) chart, a row of twelve numbers from 0 to 8.

Sum the seven planetary BAV charts sign by sign and you get the Sarvashtakavarga (SAV), a single chart of twelve totals that summarises overall sign strength. The technique is computational by nature, which is precisely why it suits an API: the tables are fixed, the arithmetic is deterministic, and the value to a developer is in not re-implementing the contribution matrices by hand.

The three things you get back

The endpoint and request shape

Bindus are part of the Vedic (sidereal) computation surface. You can ask for them through the natural-language query endpoint when you want a narrated reading, or through the V2 computation endpoints when you want the raw grids as structured JSON. For integration work you almost always want the latter.

All requests authenticate with an API key header. The base URL is https://api.vedika.io. Birth input on the V2 surface is flat: datetime (ISO 8601 with offset), latitude, longitude, and an IANA timezone.

curl -X POST https://api.vedika.io/v2/astrology/ashtakavarga \
  -H "x-api-key: vk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "datetime": "1990-08-15T14:30:00+05:30",
    "latitude": 18.5204,
    "longitude": 73.8567,
    "timezone": "Asia/Kolkata",
    "reductions": ["trikona", "ekadhipatya"]
  }'

If you would rather receive an interpreted answer in plain language, the AI query endpoint takes a question plus a nested birthDetails object:

curl -X POST https://api.vedika.io/api/v1/astrology/query \
  -H "x-api-key: vk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "Which signs are strongest in my Sarvashtakavarga and what does that mean for upcoming Saturn transit?",
    "birthDetails": {
      "datetime": "1990-08-15T14:30:00+05:30",
      "latitude": 18.5204,
      "longitude": 73.8567,
      "timezone": "Asia/Kolkata"
    },
    "speed": "fast"
  }'

Reading the structured response

The V2 response returns the per-planet grids keyed by planet, the SAV row, and the reduced figures when requested. Signs are ordered from Aries through Pisces (sign index 1–12) so you can align them with a house or rasi map directly.

FieldShapeMeaning
bavobject keyed by planet → 12 ints (0–8)Each planet's Bhinnashtakavarga grid
savarray of 12 intsSarvashtakavarga totals per sign
savTotalintSum of sav; 337 in the standard scheme
reductions.trikonaobject keyed by planetBAV after trinal reduction
reductions.ekadhipatyaobject keyed by planetBAV after two-sign-lordship rectification

A worked client example

Here is a small JavaScript client that pulls the Ashtakavarga, finds the strongest and weakest signs in the SAV, and flags any sign carrying fewer than 25 SAV bindus, a common threshold practitioners treat as a soft floor for the sign hosting an important house.

const BASE = "https://api.vedika.io";
const SIGNS = ["Aries","Taurus","Gemini","Cancer","Leo","Virgo",
  "Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"];

async function getAshtakavarga(birth) {
  const res = await fetch(`${BASE}/v2/astrology/ashtakavarga`, {
    method: "POST",
    headers: {
      "x-api-key": process.env.VEDIKA_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ ...birth, reductions: ["trikona", "ekadhipatya"] }),
  });
  if (!res.ok) throw new Error(`Ashtakavarga request failed: ${res.status}`);
  return res.json();
}

function summariseSav(sav) {
  const ranked = sav
    .map((bindus, i) => ({ sign: SIGNS[i], bindus }))
    .sort((a, b) => b.bindus - a.bindus);
  return {
    strongest: ranked[0],
    weakest: ranked[ranked.length - 1],
    belowFloor: ranked.filter((r) => r.bindus < 25),
  };
}

const data = await getAshtakavarga({
  datetime: "1990-08-15T14:30:00+05:30",
  latitude: 18.5204,
  longitude: 73.8567,
  timezone: "Asia/Kolkata",
});
console.log(summariseSav(data.sav));

The same flow in Python, using any standard HTTP client:

import os, requests

BASE = "https://api.vedika.io"
SIGNS = ["Aries","Taurus","Gemini","Cancer","Leo","Virgo",
         "Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"]

def get_ashtakavarga(birth):
    r = requests.post(
        f"{BASE}/v2/astrology/ashtakavarga",
        headers={"x-api-key": os.environ["VEDIKA_API_KEY"]},
        json={**birth, "reductions": ["trikona", "ekadhipatya"]},
        timeout=20,
    )
    r.raise_for_status()
    return r.json()

data = get_ashtakavarga({
    "datetime": "1990-08-15T14:30:00+05:30",
    "latitude": 18.5204,
    "longitude": 73.8567,
    "timezone": "Asia/Kolkata",
})

ranked = sorted(
    ({"sign": SIGNS[i], "bindus": b} for i, b in enumerate(data["sav"])),
    key=lambda x: x["bindus"], reverse=True,
)
print("strongest:", ranked[0], "weakest:", ranked[-1])

From bindus to transit timing

The practical payoff of Ashtakavarga is transit (gochara) evaluation. When a planet transits a sign that holds many bindus in its own BAV, the texts treat its results there as more supportive; a sign with few bindus tends to dilute them. A typical workflow is: fetch the natal BAV once, then for each transit check the bindu count of the sign the transiting planet currently occupies.

Kakshya refinement

Each sign in a planet's BAV is further divided into eight kakshyas of 3°45' each, ruled in a fixed sequence by Saturn, Jupiter, Mars, the Sun, Venus, Mercury, the Moon, and the Ascendant. Whether the kakshya the transiting planet sits in is one that contributed a bindu sharpens the reading from a per-sign score to a per-segment one. If you want the kakshya overlay, request it explicitly and pair it with the planet's current sidereal longitude from the chart endpoint.

Reductions before strength figures

Before deriving Shodya Pinda (the consolidated strength figures), Parashara prescribes two reductions: trikona sodhana, which rectifies bindus among the three signs of a trine, and ekadhipatya sodhana, which adjusts for the two signs ruled by a single planet. The API performs both so you do not have to reproduce the conditional rules, which are easy to get subtly wrong. Reductions are interpretive aids defined in the classical texts; if you only need raw transit floors, the unreduced SAV is enough.

Why compute this server-side

You could implement the contribution matrices yourself; they are public and finite. The reasons to call an API instead come down to correctness and breadth. The bindu tables interact with the sidereal chart, so every count is downstream of the underlying planetary positions. Vedika computes those with the XALEN Ephemeris, its own open-source astronomical engine (Apache-2.0, published to crates.io, PyPI, and npm as a WASM build), which carries roughly 2,200 tests and has been validated against JPL DE440 and swetest with no chart deviating beyond 0.1 degree across a five-million-chart test. That is astronomical precision in the positions the bindu rules consume; the bindu rules themselves are the deterministic classical tables on top.

Because the same key spans more than 600 operations across 25 domains, you can fetch the Ashtakavarga alongside the divisional charts, dashas, and yogas the reading actually depends on, without stitching together multiple vendors. Three systems live in one API: Vedic (sidereal), Western (tropical), and KP, plus Jaimini, Tajaka, Lal Kitab, and numerology, with output available in 30 languages.

Citations and what we do not invent

Every bindu rule in the engine traces to the contribution tables in the Brihat Parashara Hora Shastra, with the gochara reading conventions and reduction procedures drawn from the same classical Jyotish corpus that practitioners train on, including Phaladeepika for transit interpretation. The API does not fabricate verse numbers or attach invented strength percentages to a chart; it returns the computed bindus and the classically defined reductions, and any narrated interpretation is grounded in those sources rather than paraphrased generalities.

Key facts

Getting started

You can try the request shapes against the free sandbox with no key, then move to a live key when you are ready. Per-query usage runs from a few cents, and plans start at the Starter tier; see pricing for the full breakdown. Full request and response schemas live in the documentation, and if you are working with divisional charts alongside bindus, the vargas via API deep dive pairs well with this one.

FAQ

What is a bindu in Ashtakavarga?

A bindu is a benefic point a planet contributes to a sign. In each planet's Bhinnashtakavarga, every sign receives 0 to 8 bindus from the seven planets plus the Ascendant, per the classical contribution tables. More bindus mark signs where that planet expresses more favourably.

How is the Sarvashtakavarga total computed?

It is the sum of the seven planetary BAV charts, sign by sign. Each sign lands roughly between 19 and 39, and the twelve values total 337 in the standard Ascendant-excluded scheme. The API returns both the BAV grids and the consolidated SAV.

Can I get Ashtakavarga for Western or KP charts?

Bindus run on the Vedic (sidereal) chart, consistent with the classical definition. Western and KP computations are available on their own endpoints, but bindus are returned only for the Vedic system.

Do you support trikona and ekadhipatya reduction?

Yes. The response includes the raw grids and, on request, the values after trikona sodhana and ekadhipatya sodhana, the two reductions Parashara prescribes before reading Shodya Pinda strength.

Build on the Vedika astrology API

700+ operations, Vedic + Western + KP, 30 languages, an open-source XALEN ephemeris, and a built-in LLM. Free sandbox — no signup.

Try the free sandbox