Skip to main content

Kundali Milan — Matchmaking

Complete Vedic compatibility analysis using Ashtakoot Guna Milan (36-point system). Returns all 8 koota scores, Mangal Dosha compatibility with Dosha Samya analysis, classical veto checks (Vedha and Rajju Dosha), supplementary checks (Mahendra, Stree Deergha), and compatibility narrative with strengths, concerns, and recommendation. Also known as Kundali Milan, Gun Milan, or Ashtakoot Milan. Calculates 36-point compatibility score with Rajju, Vedha, and Dosha Samya classical rules.

Endpoint

POST /v1/astro/matchmaking

Request parameters

FieldTypeRequiredDescription
person1objectYes
person1.locationstring | nullNoCity name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required.
person1.namestringNoPerson name associated with the birth record
person1.datestringYesBirth date in YYYY-MM-DD format
person1.timestring | nullNoBirth time in HH:MM 24-hour format. If omitted, sunrise chart is used as fallback.
person1.latitudenumber | nullNoLatitude. Required if location not provided.
person1.longitudenumber | nullNoLongitude. Required if location not provided.
person1.timezonestring | nullNoIANA timezone. Required if location not provided.
person1.ayanamsastringNoSidereal ayanamsa mode used in calculations
person2objectYes
person2.locationstring | nullNoCity name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required.
person2.namestringNoPerson name associated with the birth record
person2.datestringYesBirth date in YYYY-MM-DD format
person2.timestring | nullNoBirth time in HH:MM 24-hour format. If omitted, sunrise chart is used as fallback.
person2.latitudenumber | nullNoLatitude. Required if location not provided.
person2.longitudenumber | nullNoLongitude. Required if location not provided.
person2.timezonestring | nullNoIANA timezone. Required if location not provided.
person2.ayanamsastringNoSidereal ayanamsa mode used in calculations

Example request

curl -X POST "https://api.asterwise.com/v1/astro/matchmaking" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"person1":{"date":"1985-11-12","time":"06:45","latitude":19.076,"longitude":72.8777,"timezone":"Asia/Kolkata"},"person2":{"date":"1988-03-24","time":"14:30","latitude":28.6139,"longitude":77.209,"timezone":"Asia/Kolkata"}}'

Example response

{
"success": true,
"message": "success",
"data": {
"total_score": 27.0,
"breakdown": {
"Varna": 1.0,
"Vashya": 2.0,
"Tara": 3.0,
"Yoni": 2.0,
"GrahaMaitri": 5.0,
"Gana": 6.0,
"Bhakoot": 0.0,
"Nadi": 8.0
},
"compatibility_level": "Very Good",
"doshas": {
"bhakoot_dosha": true,
"bhakoot_dosha_type": "Nav-Pancham"
},
"dosha_cancellations": {
"bhakoot_dosha_cancelled": true
},
"analysis": {
"major_doshas": 1,
"cancelled_doshas": 1,
"recommendation": "This match is recommended by classical Jyotish standards."
},
"classical_vetoes": {
"has_veto": false,
"vedha": {
"present": false,
"description": "No Vedha — Nakshatras are not mutually obstructive."
},
"rajju": {
"present": false,
"description": "Different Rajju groups — no dosha from Rajju.",
"rajju_type": null
},
"veto_note": "No classical veto conditions present."
},
"mangal_compatibility": {
"person_a_manglik": true,
"person_a_severity": "medium",
"person_b_manglik": true,
"person_b_severity": null,
"match_status": "both_manglik_unequal",
"description": "Both partners are Manglik but with different severity levels. Dosha Samya is partial — the higher severity partner carri…"
},
"supplementary_checks": {
"mahendra": {
"is_auspicious": false,
"distance": 11,
"description": "Mahendra is not favorable — no major harm, but this factor is neutral."
},
"stree_deergha": {
"distance": 11,
"quality": "average",
"is_favorable": false,
"description": "Stree Deergha count is 11 (9-15 inclusive) — average. The bride's wellbeing is moderately supported."
}
},
"compatibility_narrative": {
"overall": "Good compatibility with a Guna Milan score of 27.0/36. The match has solid foundations with some areas that benefit from…",
"strengths": [
"Nadi Koota perfect (8/8) — constitutional and genetic compatibility is excellent. No health conflicts indicated.",
"Gana Koota perfect (6/6) — temperaments and behavioral patterns are fully compatible.",
"... and 4 more items"
],
"concerns": [],
"recommendation": "This match is recommended by classical Jyotish standards."
},
"birth_time_provided": true
}
}

Response fields

FieldTypeDescription
successbooleanTrue if the request succeeded
messagestringHuman-readable status message
dataobject
data.total_scorenumberOverall Guna Milan score out of 36
data.breakdownobjectPer-koota score breakdown
data.compatibility_levelstringTextual compatibility band derived from score
data.doshasobjectDetected compatibility doshas
data.dosha_cancellationsobjectTraditional dosha cancellation flags
data.analysisobjectAdditional high-level matchmaking analysis details
data.classical_vetoesobject | nullClassical veto checks (Vedha, Rajju) and veto status
data.mangal_compatibilityobject | nullMangal Dosha compatibility assessment between both partners
data.supplementary_checksobject | nullSupplementary classical checks: Mahendra, Vedha, Rajju
data.compatibility_narrativeobject | nullNarrative compatibility summary with strengths and concerns
data.birth_time_providedbooleanWhether a precise birth time was provided for both persons. False when either person's birth time was not supplied or treated as unknown.

Errors

CodeDescriptionReference
authentication_failedMissing or invalid API key.authentication_failed
ephemeris_unavailableUpstream ephemeris service error.ephemeris_unavailable
insufficient_tierAPI key tier does not include this endpoint.insufficient_tier
internal_errorUnexpected server error.internal_error
ip_rate_limit_exceededToo many requests in a short window.ip_rate_limit_exceeded
payload_too_largeRequest body exceeds the size limit.payload_too_large
resource_not_foundReferenced resource was not found.resource_not_found
validation_errorRequest body failed schema validation.validation_error