Matchmaking

Ashtakoot Guna Milan and Manglik compatibility for two people.

Ashtakoot Guna Milan (36 points)

POST/v1/match/ashtakoot

1 credit · Secret key (test or live) · getAshtakoot

Request body

  • person_a Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • person_b Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • total number required

    ≥ 0 · ≤ 36

  • max 36 required
  • conclusion string required
  • kootas array of object required
    • name string required
    • label string required
    • score number required
    • max number required
    • note string required
  • doshas object required
    • nadi boolean required
    • bhakoot boolean required
  • person_a MoonProfile required
    • rashi string required
    • nakshatra string required
    • gana string required
    • nadi string required
    • yoni string required
  • person_b MoonProfile required
    • rashi string required
    • nakshatra string required
    • gana string required
    • nadi string required
    • yoni string required

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/match/ashtakoot' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/match/ashtakoot", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "person_a": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "person_b": {
      "date": "1992-03-02",
      "time": "14:10",
      "place": {
        "latitude": 19.076,
        "longitude": 72.8777
      }
    }
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "person_a": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "person_b": {
        "date": "1992-03-02",
        "time": "14:10",
        "place": {
            "latitude": 19.076,
            "longitude": 72.8777,
        },
    },
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/match/ashtakoot",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/match/ashtakoot');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 1,915 characters
{
  "data": {
    "total": 12,
    "max": 36,
    "conclusion": "Below recommended - consult an astrologer",
    "kootas": [
      {
        "name": "varna",
        "label": "Varna",
        "score": 1,
        "max": 1,
        "note": "Kshatriya / Vaishya"
      },
      {
        "name": "vashya",
        "label": "Vashya",
        "score": 0.5,
        "max": 2,
        "note": "Chatushpada / Jalachara"
      },
      {
        "name": "tara_dina",
        "label": "Tara / Dina",
        "score": 1.5,
        "max": 3,
        "note": "Star compatibility"
      },
      {
        "name": "yoni",
        "label": "Yoni",
        "score": 1,
        "max": 4,
        "note": "Elephant / Lion"
      },
      {
        "name": "graha_maitri",
        "label": "Graha Maitri",
        "score": 1,
        "max": 5,
        "note": "Mars / Saturn"
      },
      {
        "name": "gana",
        "label": "Gana",
        "score": 0,
        "max": 6,
        "note": "Manushya / Rakshasa"
      },
      {
        "name": "bhakoot",
        "label": "Bhakoot",
        "score": 7,
        "max": 7,
        "note": "Rasi 4-10 (ok)"
      },
      {
        "name": "nadi",
        "label": "Nadi",
        "score": 0,
        "max": 8,
        "note": "Madhya (Pitta) / Madhya (Pitta) (Nadi dosha)"
      }
    ],
    "doshas": {
      "nadi": true,
      "bhakoot": false
    },
    "person_a": {
      "rashi": "aries",
      "nakshatra": "bharani",
      "gana": "manushya",
      "nadi": "madhya_pitta",
      "yoni": "elephant"
    },
    "person_b": {
      "rashi": "capricorn",
      "nakshatra": "dhanishta",
      "gana": "rakshasa",
      "nadi": "madhya_pitta",
      "yoni": "lion"
    }
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.9.28",
    "mode": "live",
    "credits_charged": 1,
    "ayanamsa": "lahiri"
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one

Manglik status of both and mutual cancellation

POST/v1/match/manglik

2 credits · Secret key (test or live) · getManglikMatch

Request body

  • person_a Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • person_b Birth required
    • date string (date) required

      e.g. "1990-08-13"

    • time string

      pattern ^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$ · e.g. "06:30"

    • time_accuracy string

      With "unknown", lagna- and house-dependent fields are omitted and listed in warnings — never filled with a noon default.

      one of exact, approximate, unknown · default "exact"

    • place Coordinates or object or object required

      Coordinates, a place_id from /v1/places/search, or a free-text query. A vague query returns 422 place_ambiguous with candidates; the API never guesses.

      One of:

      1. Coordinates
        Fields
        • latitude number required

          ≥ -90 · ≤ 90

        • longitude number required

          ≥ -180 · ≤ 180

        No other fields are accepted.

      2. object
        Fields
        • place_id string required

        No other fields are accepted.

      3. object
        Fields
        • query string required

          at least 2 characters · at most 120 characters

        No other fields are accepted.

    • timezone string

      "auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".

      default "auto"

    No other fields are accepted.

  • options Options
    • ayanamsa string

      Each system is its Swiss Ephemeris definition (a constant offset from Lahiri). Applies to chart operations; KP operations always use KP-New and the personal muhurat stays Lahiri. meta.ayanamsa names the system used.

      one of lahiri, raman, krishnamurti, yukteshwar, fagan_bradley · default "lahiri"

    • house_system string

      one of whole_sign · default "whole_sign"

    • node string

      one of true, mean · default "true"

    • lang string

      one of en, hi · default "en"

    • view string

      compact drops labels and prose — for LLM callers.

      one of full, compact · default "full"

    No other fields are accepted.

No other fields are accepted.

Response

JSON { data, meta, warnings }, where data is:

  • person_a Manglik required
    • manglik boolean required
    • severity string
    • house_from_lagna integer or null

      One of:

      1. integer
      2. null
    • house_from_moon integer or null

      One of:

      1. integer
      2. null
    • house_from_venus integer or null

      One of:

      1. integer
      2. null
    • cancellations array of string
  • person_b Manglik required
    • manglik boolean required
    • severity string
    • house_from_lagna integer or null

      One of:

      1. integer
      2. null
    • house_from_moon integer or null

      One of:

      1. integer
      2. null
    • house_from_venus integer or null

      One of:

      1. integer
      2. null
    • cancellations array of string
  • both_manglik boolean required

Errors: 400, 401, 403, 404, 422, 429, 500. See error codes.

Example request

curl -X POST 'https://api.astrologics.in/v1/match/manglik' \
  -H 'Authorization: Bearer al_test_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}'
Node.js
const res = await fetch("https://api.astrologics.in/v1/match/manglik", {
  method: "POST",
  headers: { Authorization: "Bearer al_test_YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    "person_a": {
      "date": "1990-08-13",
      "time": "06:30",
      "place": {
        "latitude": 28.6139,
        "longitude": 77.209
      }
    },
    "person_b": {
      "date": "1992-03-02",
      "time": "14:10",
      "place": {
        "latitude": 19.076,
        "longitude": 72.8777
      }
    }
  }),
});
console.log(JSON.stringify(await res.json(), null, 2));
Python
import json
import urllib.error
import urllib.request

body = {
    "person_a": {
        "date": "1990-08-13",
        "time": "06:30",
        "place": {
            "latitude": 28.6139,
            "longitude": 77.209,
        },
    },
    "person_b": {
        "date": "1992-03-02",
        "time": "14:10",
        "place": {
            "latitude": 19.076,
            "longitude": 72.8777,
        },
    },
}

req = urllib.request.Request(
    "https://api.astrologics.in/v1/match/manglik",
    method="POST",
    headers={"Authorization": "Bearer al_test_YOUR_KEY", "Content-Type": "application/json"},
    data=json.dumps(body).encode(),
)
try:
    with urllib.request.urlopen(req) as res:
        print(json.dumps(json.load(res), indent=2, ensure_ascii=False))
except urllib.error.HTTPError as err:
    print(err.code, err.read().decode())
PHP
<?php
$ch = curl_init('https://api.astrologics.in/v1/match/manglik');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => ['Authorization: Bearer al_test_YOUR_KEY', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => '{"person_a":{"date":"1990-08-13","time":"06:30","place":{"latitude":28.6139,"longitude":77.209}},"person_b":{"date":"1992-03-02","time":"14:10","place":{"latitude":19.076,"longitude":72.8777}}}',
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch), PHP_EOL;

Example response

200 OK · 1,008 characters
{
  "data": {
    "person_a": {
      "manglik": true,
      "severity": "Low (with cancellation)",
      "house_from_lagna": 9,
      "house_from_moon": 1,
      "house_from_venus": 10,
      "cancellations": [
        "Mars is in its own/exalted sign (Aries) - dosha is greatly reduced.",
        "Mars is conjunct the Moon - the dosha is reduced."
      ]
    },
    "person_b": {
      "manglik": true,
      "severity": "Low (with cancellation)",
      "house_from_lagna": 8,
      "house_from_moon": 1,
      "house_from_venus": 1,
      "cancellations": [
        "Mars is in its own/exalted sign (Capricorn) - dosha is greatly reduced.",
        "Mars is conjunct the Moon - the dosha is reduced.",
        "Mars is conjunct Venus - the dosha is reduced."
      ]
    },
    "both_manglik": true
  },
  "meta": {
    "request_id": "req_example",
    "api_version": "v1",
    "engine_version": "2026.9.28",
    "mode": "live",
    "credits_charged": 2,
    "ayanamsa": "lahiri"
  },
  "warnings": []
}
Try it

Leave empty to use the shared demo key (limited). Test keys only: never charged. Kept in this browser tab and sent through this site to the API. Create one