Dsixty API

Kundli Matching API: Ashtakoota Match in One Call

How a kundli matching API works: Ashtakoota and dosha calls with cURL and Python, Hindi, Gujarati or English output, unit cost, and a free test key.

Updated 2026-11-02

A kundli matching API takes the birth details of two people and returns the Ashtakoota (Guna Milan) result, a score out of 36 across eight kootas. With Dsixty API you make that call with POST /v1/matching and check doshas with POST /v1/dosha. Each call costs 1 to 2 units, and you can try both with a free test key.

This guide explains what the match actually measures. It then shows how to send the request, read the answer and show it in Hindi, Gujarati or English. You can use the first part even if you never use our API.

What Ashtakoota matching measures

Ashtakoota compares the Moon position (rashi and nakshatra) of two charts. It scores eight areas, called kootas, and adds them to a total of 36. These are the standard points in the usual North Indian method:

  • Varna: 1 point
  • Vashya: 2 points
  • Tara: 3 points
  • Yoni: 4 points
  • Graha Maitri: 5 points
  • Gana: 6 points
  • Bhakoot: 7 points
  • Nadi: 8 points

Many astrologers look for at least 18 out of 36, but this is a rule of thumb, not a verdict. Some kootas have classical exceptions (for example for Nadi or Bhakoot), and a good astrologer reads those before judging a match. Our matching is Ashtakoota with exceptions, as described on the Kundli and reports page.

Astrology is guidance. Show the score as one input to a conversation, not as a yes or no for a marriage.

Two calls: matching and dosha

Matching and dosha checks answer different questions, so they are two endpoints:

  • POST /v1/matching gives the Ashtakoota match for two people.
  • POST /v1/dosha checks doshas such as Manglik, Kaal Sarp, Pitru and Sade Sati.

Both belong to the group "Matching and doshas", which costs 1 to 2 units per call. Most match pages call both. The score is shown first, and the dosha result sits next to it.

A dosha result needs care in how you word it. A dosha does not mean a match is bad. Keep your wording calm. If you add remedies, keep to simple practices such as mantras and daan.

Your first call with a free test key

Make a test key in the dashboard (start here). Test keys start with dsx_test_. The base address is https://dsixtyapi.com/v1, and you send the key in the X-API-Key header. Every answer is {"ok": true, "data": ...}. Errors carry a code, a plain message and a request id.

First check that your key works with a kundli call (1 unit). The birth object here is the one used across the API:

curl -X POST https://dsixtyapi.com/v1/kundli \ -H "X-API-Key: dsx_test_..." -H "Content-Type: application/json" \ -d '{"birth": {"date": "1991-03-12", "time": "05:40", "tz": "Asia/Kolkata", "latitude": 18.52, "longitude": 73.86}}'

Now the matching call. Put the request body in a file and send it. Build the body from the matching page of the API reference. It holds the birth details of both people, each in the same shape as the birth object above. I do not copy the field names here, so you do not rely on a guess:

curl -X POST https://dsixtyapi.com/v1/matching \ -H "X-API-Key: dsx_test_..." -H "Content-Type: application/json" \ -d @matching.json curl -X POST https://dsixtyapi.com/v1/dosha \ -H "X-API-Key: dsx_test_..." -H "Content-Type: application/json" \ -d @dosha.json

The same calls in Python

Keep the key in an environment variable, never in your front-end code. Call matching and dosha from your server and send only the result to the browser.

import os, json, requests BASE = "https://dsixtyapi.com/v1" HEADERS = {"X-API-Key": os.environ["DSIXTY_KEY"]} def call(path, body): r = requests.post(BASE + path, headers=HEADERS, json=body, timeout=30) out = r.json() if not out["ok"]: # errors carry a code, a message and a request id raise RuntimeError(out) return out["data"] # bodies built from the API reference (two people's birth details) with open("matching.json", encoding="utf-8") as f: match = call("/matching", json.load(f)) with open("dosha.json", encoding="utf-8") as f: dosha = call("/dosha", json.load(f)) print(match) print(dosha)

Print the full data once with a test key. You will see the exact shape, and you can map it to your page. We also offer SDKs for Python, Node and PHP with no dependencies, listed on the developers page.

If a call fails, log the request id from the error. It is the quickest way to get help from [email protected].

Reading the result and showing it in Hindi, Gujarati or English

Build the match screen in this order:

  1. Check ok before you touch data.
  2. Show the total out of 36 first, in large type.
  3. List the eight kootas as rows, with the points scored beside the maximum (1, 2, 3, 4, 5, 6, 7, 8).
  4. Show any exception the result mentions next to its koota, so the reader sees why a low score may not tell the whole story.
  5. Show the dosha result in a separate block below, with calm wording.

Hindi, Gujarati and English are supported for readings, widgets and PDFs. Choose the language per user, as the language choice is a field of the request. Look up its exact name in the API reference.

On your side, keep three things in mind:

  • Keep your own interface labels (headings, buttons, error texts) in three language files. Do not mix a Hindi result with English buttons.
  • Save the page as UTF-8 and use a font with Devanagari and Gujarati support, or the letters will break on some phones.
  • Store the user's language choice with the match, so a shared link opens in the same language.

If you only need to put a kundli on a page, the widget needs no code. It has a language setting (for example data-lang="hi"). See the Kundli and reports page.

What it costs in units

Matching and doshas cost 1 to 2 units per call, so one match page with both calls uses a few units. Every call uses units, also for the same pair again, as with every astrology API. Every answer shows the units charged in its headers, so you can log the cost per call.

  • Free plan: ₹0, 2,500 units a month, 10 calls a minute. It stops at the limit.
  • Starter: ₹7,999 a month, 25,000 units, 30 calls a minute, ₹0.10 per extra unit.
  • Growth: ₹12,999 a month, 50,000 units, 120 calls a minute, ₹0.06 per extra unit.

Pro and Business have more units and higher speed. Prices exclude 18% GST. See pricing for all plans. As a simple example, a 2-unit call above the Starter limit costs ₹0.20.

One saving for your own app: save each match result against the two people's details. When the same pair opens the page again, show the saved result instead of calling again.

Build, test, then go live

A sensible order for your project:

  • Make a free test key. Every API works on it, and you pay only when you go live.
  • Run the kundli call, then matching and dosha, and print the full answer.
  • Build the score and koota screen. Test it in all three languages.
  • Look at the samples to see real charts and documents.
  • Switch to a live key (dsx_live_...) when you are ready.

If an astrologer runs the site, you can also add booking and video sessions with the same key. A client can see the match, then book a consultation to discuss it. Read about video sessions (₹599 per confirmed session, plus GST). Also see the guides for more walk-throughs.

Questions

What is a kundli matching API?

It is a web service that takes the birth details of two people and returns the Ashtakoota result, a score out of 36 across eight kootas. With Dsixty API it is POST /v1/matching, and doshas are checked with POST /v1/dosha.

How many units does a matching call use?

Matching and doshas cost 1 to 2 units per call. The Free plan gives 2,500 units a month. Every answer shows the units charged in its headers.

Can I try kundli matching for free?

Yes. Make a free test key in the dashboard. Every API works on it, and you pay only when you go live. The Free plan costs nothing and has no end date.

Which languages can the result be shown in?

Hindi, Gujarati and English. Choose the language per request (see the API reference for the field). Keep your own interface labels in the same three languages.

Is 18 out of 36 a pass mark?

Many astrologers use 18 as a rough minimum, but it is only a rule of thumb. Some kootas have classical exceptions, and doshas are read separately. Treat the score as guidance for a talk with an astrologer, not a final answer.

Do I need to call the matching API again for the same couple?

Every call uses units, also for the same people again. Save the result in your own database and show it from there when the same pair returns.

See how it works · Prices · Sample documents · More guides

Start with a free test key

Every API, the booking page and sample documents work on a free test key. Pay only when you go live.