LifeAstroAPILifeAstroAPI

API Reference / Vedic Astrology / Matchmaking (Milan)

GET
30 credits

/v1/milan/ashtakoota

Full 36-point Ashtakoota with the total score and all 8 kootas in one call.

What this tells you

"Guna Milan" or "Ashtakoota" is the classical 8-factor marriage compatibility system. Each koota compares one aspect of the two charts, using each partner's Moon nakshatra and Moon sign. The maximum is 36 points. Traditionally 18 is the minimum for a match. Nadi carries the most points (8), so a Nadi Dosha can pull an otherwise strong match below the line. This endpoint returns the total, a verdict and all 8 kootas with details in one call.

Request

All requests require an Authorization header with your dv_live_* API key.

example request
curl "https://api.lifeastroapi.com/v1/milan/ashtakoota?boy.date=1990-01-15&boy.tz=Asia%2FKolkata&girl.date=1992-03-20&girl.tz=Asia%2FKolkata&boy.time=10%3A30&girl.time=08%3A15" \
  -H "Authorization: Bearer YOUR_API_KEY"

Query parameters

Checked against the API: a parameter is marked required when the request fails without it.

NameRequiredExampleDescription
boy.dateyes1990-01-15Boy's birth date (YYYY-MM-DD).
boy.tzyesAsia/KolkataBoy's birth place timezone: IANA name (Asia/Kolkata) or UTC offset (+05:30).
girl.dateyes1992-03-20Girl's birth date (YYYY-MM-DD).
girl.tzyesAsia/KolkataGirl's birth place timezone: IANA name (Asia/Kolkata) or UTC offset (+05:30).
boy.timeno10:30Boy's birth time (HH:MM, 24-hour, local). Defaults to 12:00.
girl.timeno08:15Girl's birth time (HH:MM, 24-hour, local). Defaults to 12:00.
person1.dateno—
person1.timeno—
person1.tzno—
person2.dateno—
person2.timeno—
person2.tzno—
ayanamsano—Ayanamsa (sidereal offset) to use. Defaults to lahiri.

Response (200 OK)

The real response to the example request above, generated from the API itself. Long arrays are trimmed to their first two items. Field names are stable across versions.

200 response
{
  "total": 9,
  "max": 36,
  "kootas": {
    "bhakoot": {
      "score": 0,
      "max": 7,
      "details": {
        "distance": 2,
        "dosha": true
      }
    },
    "gana": {
      "score": 0,
      "max": 6,
      "details": {
        "boy": "Manushya",
        "girl": "Rakshasa"
      }
    },
    "graha_maitri": {
      "score": 3,
      "max": 5,
      "details": {
        "boy_lord": "Sun",
        "girl_lord": "Mercury",
        "relationship": "neutral"
      }
    },
    "nadi": {
      "score": 0,
      "max": 8,
      "details": {
        "boy": "Madhya",
        "dosha": true,
        "girl": "Madhya"
      }
    },
    "tara": {
      "score": 3,
      "max": 3,
      "details": {
        "cycle_position": 4,
        "distance_nakshatras": 3
      }
    },
    "varna": {
      "score": 1,
      "max": 1,
      "details": {
        "boy": "Kshatriya",
        "girl": "Vaishya"
      }
    },
    "vashya": {
      "score": 0,
      "max": 2,
      "details": {
        "boy": "Vanchar",
        "girl": "Manushya"
      }
    },
    "yoni": {
      "score": 2,
      "max": 4,
      "details": {
        "boy": "Mushaka",
        "girl": "Vyaghra"
      }
    }
  },
  "verdict": "poor"
}

Field reference

Every field in the response, with its type, a real example, and what it means.

FieldTypeMeaning
totalnumber (0–36)
Sum of the 8 koota scores. Can end in .5, because Vashya can give 1.5.
example: 9
Jyotish: Traditionally 18 of 36 is the minimum for a match.
maxnumber
Maximum possible score. Always 36.
example: 36
verdictstring
poor (below 18), fair (18 to below 24), good (24 to below 29), excellent (29 and above).
example: "poor"
kootasobject
One entry per koota, each with score, max and details.
example: { bhakoot, gana, graha_maitri, nadi, tara, varna, vashya, yoni }
kootas.nadi.maxnumber
Maximum for that koota: varna 1, vashya 2, tara 3, yoni 4, graha_maitri 5, gana 6, bhakoot 7, nadi 8.
example: 8
kootas.varna.scorenumber (0 or 1)
1 when the boy's varna ranks equal to or higher than the girl's, otherwise 0.
example: 1
kootas.varna.detailsobject
Varna of each partner's Moon sign: Brahmin, Kshatriya, Vaishya or Shudra.
example: { "boy": "Kshatriya", "girl": "Vaishya" }
kootas.vashya.scorenumber (0–2)
0, 1, 1.5 or 2 from the vashya table.
example: 0
kootas.vashya.detailsobject
Vashya class of each Moon sign: Chatushpada, Manushya, Jalchar, Vanchar or Keeta.
example: { "boy": "Vanchar", "girl": "Manushya" }
kootas.tara.scorenumber (0 or 3)
0 when cycle_position is 3, 5 or 7, otherwise 3.
example: 3
kootas.tara.detailsobject
distance_nakshatras: count from the boy's Moon nakshatra to the girl's (0–26). cycle_position: (distance mod 9) + 1, from 1 to 9.
example: { "cycle_position": 4, "distance_nakshatras": 3 }
kootas.yoni.scorenumber (0–4)
Score from the yoni (animal) compatibility table. 4 for the same yoni.
example: 2
kootas.yoni.detailsobject
Yoni animal of each partner's Moon nakshatra.
example: { "boy": "Mushaka", "girl": "Vyaghra" }
kootas.graha_maitri.scorenumber (1, 3 or 5)
friend 5, neutral 3, enemy 1.
example: 3
kootas.graha_maitri.detailsobject
Lord of each Moon sign and the natural relationship of the boy's lord toward the girl's: friend, neutral or enemy. The same lord counts as friend.
example: { "boy_lord": "Sun", "girl_lord": "Mercury", "relationship": "neutral" }
kootas.gana.scorenumber (0, 5 or 6)
6 for the same gana, 5 for Deva with Manushya, 0 for any pair with one Rakshasa.
example: 0
kootas.gana.detailsobject
Gana (temperament) of each partner: Deva, Manushya or Rakshasa.
example: { "boy": "Manushya", "girl": "Rakshasa" }
kootas.bhakoot.scorenumber (0 or 7)
0 when details.dosha is true, otherwise 7.
example: 0
kootas.bhakoot.detailsobject
distance: sign count from the boy's Moon sign to the girl's (1 = same sign, up to 12). dosha: true when that distance is a Bhakoot dosha.
example: { "distance": 2, "dosha": true }
kootas.nadi.scorenumber (0 or 8)
0 when details.dosha is true, otherwise 8.
example: 0
kootas.nadi.detailsobject
Nadi of each partner (Aadi, Madhya or Antya). dosha is true when both are the same, unless the nakshatra pair is a listed exception.
example: { "boy": "Madhya", "dosha": true, "girl": "Madhya" }

Usage tips

How to use it

  • Score and full breakdown in 1 call
    The total, the verdict and the per-koota details come back together, so a compatibility screen needs one request.
  • Parameter pattern
    Pass each partner's birth data as boy.date, boy.time, boy.tz and girl.date, girl.time, girl.tz (time defaults to 12:00). Only the Moon position is used, so lat/lon are not read. Optional: ayanamsa.
  • Show the nadi carefully
    A nadi score of 0 (same nadi) is a classical red flag, but it has cancellation rules. Show /v1/milan/nadi-dosha for the detail and add a "consult an astrologer" link.
  • Render per-koota
    A 2-column table listing each koota, score/max and a one-line explanation works well. Color-code: red (<50%), yellow (50–75%), green (>75%).
  • Only the total
    /v1/milan/ashtakoota/total returns just total, max and verdict.
  • Localized names
    Pass `locale` (for example locale=hi) to get the boy, girl, boy_lord, girl_lord and relationship values localized. Keys and verdict stay in English.

Errors

Every error follows the same envelope. Use the error.code field (not the message) for conditional logic in your integration.

401 Unauthorized

{
  "error": {
    "code": "unauthorized",
    "message": "missing or invalid API key",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

402 Payment Required

{
  "error": {
    "code": "trial_exhausted",
    "message": "your free trial credits are exhausted — pick a plan to continue",
    "top_up_url": "https://lifeastroapi.com/pricing",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

429 Too Many Requests

{
  "error": {
    "code": "rate_limited",
    "message": "rate limit exceeded; retry after 12 seconds",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

Try it

Get a dv_live_* key from your dashboard and paste into the cURL snippet above. New accounts get 1,500 free credits. Sign up.