---
title: "Kundali Milan — Matchmaking"
method: POST
path: "/v1/astro/matchmaking"
tags: ["Astrology"]
---

# Kundali Milan — Matchmaking

`POST /v1/astro/matchmaking`

## Request

- Base URL: `https://api.asterwise.com`
- URL: `https://api.asterwise.com/v1/astro/matchmaking`
- Auth: HTTP bearer

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.

## Request body

- MatchmakingRequest
  - `person1` BirthInput, required
    - `location` string, nullable: City name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required.
    - `name` string: Person name associated with the birth record
    - `date` string, required: Birth date in YYYY-MM-DD format
    - `time` string, nullable: Birth time in HH:MM 24-hour format. If omitted, sunrise chart is used as fallback.
    - `latitude` number, nullable: Latitude. Required if location not provided.
    - `longitude` number, nullable: Longitude. Required if location not provided.
    - `timezone` string, nullable: IANA timezone. Required if location not provided (unless utc_offset is given). For dates before the zone adopted a standard time, the birthplace's local mean time (longitude / 15 hours) is used.
    - `utc_offset` string, nullable: Optional explicit UTC offset of the birth time, as ±HH:MM or ±HH:MM:SS (e.g. '+04:51:31' for Bombay mean time). Overrides the offset `timezone` would give. Use it when the birth record states the offset, or for historical local times the IANA database cannot represent.
    - `ayanamsa` 'lahiri' | 'raman' | 'kp' | 'tropical': Sidereal ayanamsa mode used in calculations
  - `person2` BirthInput, required
    - `location` string, nullable: City name to resolve to lat/lon/tz automatically. Example: 'Mumbai' or 'New Delhi, India'. If provided, latitude, longitude and timezone are not required.
    - `name` string: Person name associated with the birth record
    - `date` string, required: Birth date in YYYY-MM-DD format
    - `time` string, nullable: Birth time in HH:MM 24-hour format. If omitted, sunrise chart is used as fallback.
    - `latitude` number, nullable: Latitude. Required if location not provided.
    - `longitude` number, nullable: Longitude. Required if location not provided.
    - `timezone` string, nullable: IANA timezone. Required if location not provided (unless utc_offset is given). For dates before the zone adopted a standard time, the birthplace's local mean time (longitude / 15 hours) is used.
    - `utc_offset` string, nullable: Optional explicit UTC offset of the birth time, as ±HH:MM or ±HH:MM:SS (e.g. '+04:51:31' for Bombay mean time). Overrides the offset `timezone` would give. Use it when the birth record states the offset, or for historical local times the IANA database cannot represent.
    - `ayanamsa` 'lahiri' | 'raman' | 'kp' | 'tropical': Sidereal ayanamsa mode used in calculations

## Response `200`

Matchmaking compatibility score and dosha analysis

- ApiResponseMatchmakingResponse
  - `success` boolean: True if the request succeeded
  - `message` string: Human-readable status message
  - `data` MatchmakingResponse, required
    - `total_score` number, required: Overall Guna Milan score out of 36
    - `breakdown` object, required: Per-koota score breakdown
    - `compatibility_level` string, required: Drik Panchang verdict: Excellent, Very Good, Ordinary or Not Recommended. Nadi 0 is never recommended; Bhakoot 0 is never Excellent.
    - `doshas` object, required: Detected compatibility doshas
    - `dosha_cancellations` object, required: Traditional dosha cancellation flags
    - `analysis` object, required: Additional high-level matchmaking analysis details
    - `classical_vetoes` object, nullable: Classical veto checks (Vedha, Rajju) and veto status
    - `mangal_compatibility` object, nullable: Mangal Dosha compatibility assessment between both partners
    - `supplementary_checks` object, nullable: Supplementary classical checks: Mahendra, Vedha, Rajju
    - `compatibility_narrative` object, nullable: Narrative compatibility summary with strengths and concerns
    - `birth_time_provided` boolean: Whether a precise birth time was provided for both persons. False when either person's birth time was not supplied or treated as unknown.

## Other responses

- `401`: Authentication failed
- `403`: Authorization failed
- `404`: Resource not found
- `413`: Payload too large
- `422`: Validation error
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream provider error
- `503`: Service unavailable

---

[API](https://skmtc.dev/asterwise/apis/asterwise-api.md) · [All operations](https://skmtc.dev/asterwise/apis/asterwise-api/llms.txt) · [OpenAPI document](https://skmtc.dev/asterwise/apis/asterwise-api/revisions/3c4bbb1194e2?raw)
