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_aBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
person_bBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringone of
true,mean· default"true"langstringone of
en,hi· default"en"viewstringcompact 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:
totalnumber required≥ 0 · ≤ 36
max36 requiredconclusionstring requiredkootasarray of object requirednamestring requiredlabelstring requiredscorenumber requiredmaxnumber requirednotestring required
doshasobject requirednadiboolean requiredbhakootboolean required
person_aMoonProfile requiredrashistring requirednakshatrastring requiredganastring requirednadistring requiredyonistring required
person_bMoonProfile requiredrashistring requirednakshatrastring requiredganastring requirednadistring requiredyonistring 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
Manglik status of both and mutual cancellation
POST/v1/match/manglik
2 credits · Secret key (test or live) · getManglikMatch
Request body
person_aBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
person_bBirth requireddatestring (date) requirede.g.
"1990-08-13"timestringpattern
^([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?$· e.g."06:30"time_accuracystringWith "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"placeCoordinates or object or object requiredCoordinates, 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:
- Coordinates
Fields
latitudenumber required≥ -90 · ≤ 90
longitudenumber required≥ -180 · ≤ 180
No other fields are accepted.
- object
Fields
place_idstring required
No other fields are accepted.
- object
Fields
querystring requiredat least 2 characters · at most 120 characters
No other fields are accepted.
- Coordinates
timezonestring"auto" (from coordinates AND date), an IANA name, or a fixed offset like "+05:30".
default
"auto"
No other fields are accepted.
optionsOptionsayanamsastringEach 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_systemstringone of
whole_sign· default"whole_sign"nodestringone of
true,mean· default"true"langstringone of
en,hi· default"en"viewstringcompact 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_aManglik requiredmanglikboolean requiredseveritystringhouse_from_lagnainteger or nullOne of:
- integer
- null
house_from_mooninteger or nullOne of:
- integer
- null
house_from_venusinteger or nullOne of:
- integer
- null
cancellationsarray of string
person_bManglik requiredmanglikboolean requiredseveritystringhouse_from_lagnainteger or nullOne of:
- integer
- null
house_from_mooninteger or nullOne of:
- integer
- null
house_from_venusinteger or nullOne of:
- integer
- null
cancellationsarray of string
both_manglikboolean 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": []
}