Baby name numerology looks for names whose number agrees with the child's birth date. Two numbers come from that date: the mulank, from the day of the month, and the bhagyank, from the whole date. Each name is then added up with the Chaldean letter table. Its letters are worth 1 to 8 each. Then the total is reduced: its digits are summed, again and again, down to a single digit. A name is offered only when that digit is a good fit with both of the child's numbers.
Our API runs this check in POST /v1/baby-names, over its own list of 13,859 names. You send the birth date. You can add a surname, a gender, English starting letters, or the first syllables of a birth star (nakshatra) in Hindi letters. The answer sorts the names into one group for each good number, in alphabet order, and never ranks them. Each name carries its meaning, its Hindi spelling and its number.
The route does not work out the birth star. That takes a birth time and place, which is the Astrology API's job. Your app sends the syllables in.
Take the docs' own sample: a boy born on Mar 22, 1992, with the surname Doe, and names that start with J. It returned 28 names, 14 for the number 3 and 14 for the number 5. So a good screen shows each meaning beside its number, and still lets parents choose a name the list left out.

How baby name numerology picks a name
We went through the baby name code in our core service on October 19, 2026. The same day, we sent the route 26 requests on our local copy. Here is what it does, in order.
Step 1: the child's two numbers. The day of birth alone gives the mulank. For the bhagyank, the route sums each digit of the full date. Both sums are done in full in the three core numbers explained.
Step 2: the good numbers. A planet stands behind each single digit, 1 through 9. For each number, the route looks up how the planets behind the child's mulank and bhagyank feel about its planet. Each side can be friendly, neutral or unfriendly. A number is a good fit when at least one side is friendly and neither side is unfriendly. The friendly numbers entry has the full table. The good numbers become targets.
Step 3: the filters. Gender, origin, starting letters or syllables are applied first, before any number is read. The count of names left is searched.
Step 4: the count. Each name is added up letter by letter, with the surname included when you send one. This is the same name number the name checker uses, so the two routes can never read one name two ways.
Step 5: groups, A to Z. A name whose digit is a target joins that number's group. Inside a group, names run in alphabet order, and the answer sets ranked to false. Each group also has found, its full count. The limit field caps how many names each group sends back: 50 by default, up to 200.
The docs' sample, step by step
The docs' sample uses Jane Doe's birth date, Mar 22, 1992, so a free test key gives the same answer. Your app sends the baby's real date.
The day is 22, and 2 + 2 = 4, the mulank. All eight digits of 1992-03-22 come to 28. That reduces to 10, then to 1, the bhagyank.
Number 4 belongs to Rahu, which the route reads as Saturn. Number 1 belongs to the Sun. The Sun and Saturn are unfriendly to each other, both ways. Here is how the route read all nine numbers for this child.
Number | Fit for this child | Planet | Mulank 4 (read as Saturn) finds it | Bhagyank 1 (Sun) finds it |
|---|---|---|---|---|
1 | Mixed | Sun | unfriendly | same number |
2 | Mixed | Moon | unfriendly | friendly |
3 | Good fit | Jupiter | neutral | friendly |
4 | Mixed | Rahu | same number | unfriendly |
5 | Good fit | Mercury | friendly | neutral |
6 | Mixed | Venus | friendly | unfriendly |
7 | Mixed | Ketu | unfriendly | friendly |
8 | Mixed | Saturn | friendly | unfriendly |
9 | Mixed | Mars | unfriendly | friendly |
Seven of the nine numbers are mixed, and that includes the child's own 4 and 1. Only 3 and 5 are good, so targets came back as 3 and 5.
Next come the filters. A boy, an Indian name and a first letter of J left 95 names. Each one was added up with Doe. This is the working for the first name in group 3.
Jahaan Doe | Working |
|---|---|
Letter values (Chaldean) | J 1, A 1, H 5, A 1, A 1, N 5 · D 4, O 7, E 5 |
Sum of each word | Jahaan 14, Doe 16 |
Full name | 14 + 16 = 30 |
Reduced | 3 + 0 = 3, which belongs to Jupiter |
Against the targets | 3 is one of them, so Jahaan joins group 3 |
Of the 95 names, 28 landed on 3 or 5. These are all of them, in the API's order.
Group | Found | Names, A to Z |
|---|---|---|
3, Jupiter | 14 | Jahaan, Jaimini, Jas, Jatinder, Jayanta, Jeel, Jeetendra, Jeevan, Jethalal, Jethmal, Jignesh, Jitendra, Jivin, Jugal |
5, Mercury | 14 | Jaideep, Jainendra, Jairaj, Jaladhi, Janardhan, Jashan, Jaskaran, Jaydeep, Jayesh, Jayprakash, Jeemut, Jetha, Jotiba, Jujhar |
The surname moves every name by the same step. Doe is worth 16 in all, which reduces to 7. So a first name that cuts down to 5 lands on 3 once Doe is added. A first name of 7 lands on 5. Every name in group 3 has a first_name_number of 5, and every name in group 5 has 7.
So the surname changes the list. Without Doe, the same request found 26 names. Only 14 of them were also on the list with Doe. Send the surname whenever the family knows it. This route reads only the Chaldean table; our side-by-side of Chaldean vs Pythagorean numerology shows where the two tables split.
What POST /v1/baby-names returns
Here is the call, with the body the docs use for this route.
A boy born Mar 22, 1992, surname Doe, names starting with J. Only the birth date is required; the other fields narrow the list.
curl -X POST "https://apiforastrology.com/api/numerology/v1/baby-names" \
-H "Authorization: Bearer $ASTROLOGY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"birth_date":"1992-03-22","surname":"Doe","gender":"boy","letters":["J"]}'The answer for this boy, trimmed to one name in each group
{
"person": { "birth_date": "1992-03-22", "mulank": 4, "bhagyank": 1 },
"system": "chaldean",
"filters": { "surname": "Doe", "gender": "boy", "origin": "indian", "syllables": null, "letters": ["J"] },
"targets": [3, 5],
"searched": 95,
"found": 28,
"groups": [
{
"number": 3,
"planet": "Jupiter",
"fit": { "outcome": "good", "outcome_name": "Good fit" },
"found": 14,
"names": [
{
"name": "Jahaan",
"full_name": "Jahaan Doe",
"devanagari": "जहान",
"meaning": "The world",
"meaning_known": true,
"gender": "boy",
"gender_name": "Boy",
"origin": "Persian",
"origin_name": "Persian",
"first_syllable": "ज",
"variants": [],
"number": 3,
"first_name_number": 5,
"needs_check": false
}
]
},
{
"number": 5,
"planet": "Mercury",
"fit": { "outcome": "good", "outcome_name": "Good fit" },
"found": 14,
"names": [
{
"name": "Jaideep",
"full_name": "Jaideep Doe",
"devanagari": "जयदीप",
"meaning": "Lamp of victory",
"meaning_known": true,
"gender": "boy",
"gender_name": "Boy",
"origin": "Sanskrit",
"origin_name": "Sanskrit",
"first_syllable": "ज",
"variants": [],
"number": 5,
"first_name_number": 7,
"needs_check": false
}
]
}
],
"ranked": false,
"list": {
"reviewed": false,
"in_list": 13859,
"suggestable": 13682,
"kept_out": { "sensitive": 177, "unreadable": 0 },
"meaning_unknown": 1373
},
"not_claimed_name": "A number is one thing to think about, not the only one. Choose a name your family loves and will use every day."
}Two counts sit at the top. The searched field counts the names that passed your filters. The found field counts those that landed on a target. With limit set to 2, each group sent back 2 names, and found still said 28.
Each group has its number, its planet, its fit with the child and its own found. The fit block also holds the two links behind the label, one for the mulank and one for the bhagyank.
Each name carries its full name with the surname, its Hindi spelling in devanagari, its meaning, its gender and its origin. The origin field is where the name comes from, such as Sanskrit, Punjabi or Persian. The origin_name field gives the same origin in the language of the answer. The variants field lists other spellings. The first_syllable field is the Hindi sound the name begins with.
Two numbers per name. The number field is the full name's digit, the one the groups use. The first_name_number field is the first name alone.
The `list` block describes the whole name list, not this answer. It says the list is not reviewed yet.
Every answer also carries plain sentences. The about line says how the names were picked. The review_note line says a meaning or Hindi spelling may still change. The not_claimed_name line, shown above, calls the number one thing to think about. The not_claimed line says numbers point to leanings and decide nothing.
One input at a time
Each row below changes a single input and keeps the rest of the docs' sample.
What we changed | Searched | Found | What came back |
|---|---|---|---|
Nothing (the docs' sample) | 95 | 28 | 14 for 3, 14 for 5 |
No surname | 95 | 26 | 12 for 3, 14 for 5, and only 14 names shared with the sample |
Gender left at | 162 | 41 | 23 for 3, 18 for 5 |
Gender | 80 | 15 | 11 for 3, 4 for 5 |
Origin | 250 | 64 | 26 for 3, 38 for 5 |
John Doe's birth date, Aug 15, 1990 | 95 | 38 | Four groups: 8 for 4, 14 for 5, 6 for 6, 10 for 8 |
| 95 | 12 | One group, and its fit is Mixed |
A boy or girl search also returns unisex names. The 95 boy names and the 80 girl names add up to 175. The any search held 162, so 13 J names are marked for either.
Origin is `indian` by default. The list marks 3,702 names as Indian. With all, the search grew from 95 names to 250.
The birth date picks the groups. John Doe's numbers, a mulank of 6 and a bhagyank of 6, give four good numbers: 4, 5, 6 and 8. The same 95 names then fill four groups.
Targets set by the app skip the fit check. We asked for number 1, the child's own bhagyank. We got 12 names back, and the group's fit said Mixed. If parents can choose a number in your app, print the group's fit label too.
Names by birth star: what the route does with syllables
A Hindu naming tradition starts a baby's name with the birth star's own syllable. The birth star, or nakshatra, is the part of the sky where the Moon stood when the baby was born. There are 27, and each has 4 quarters, called padas. Each quarter has its own syllable.
The baby name route does not find the birth star. The star comes from where the Moon was at the moment of birth, so it needs the birth time and the city. The Astrology API gives the star, its quarter and its syllable, as our baby name apps use case shows. Your app passes the syllables to POST /v1/baby-names, in Hindi letters, up to 8 at a time.
A real example: John Doe. He was born on Aug 15, 1990, at 10:30 AM in New York. The Astrology API puts his Moon in Mrigashira, quarter 1, and gives the syllable Ve, written वे. The walkthrough of how a nakshatra is worked out finds his star step by step.
So we asked for boys born on John's date, with the surname Doe.
What we sent | Searched | Found | What came back |
|---|---|---|---|
The syllable of his quarter: वे | 16 | 7 | Ved, Venkata, Vedant, Vedaant, Vedvyas, Venugopal, Vedprakash |
All four Mrigashira syllables: वे, वो, का, की | 80 | 38 | No name for वो |
English letters | 18 | 8 | The 7 above, plus Veerendra |
English letter | 116 | 57 | 8 different first sounds, and only 7 names begin with वे |
Exact and close matches. Ved begins with वे, so it is an exact match. Kahaan begins with क, and the route counted it as close to का. It sets vowel length aside, so a short or a long vowel matches. Each name says which in syllable_match, and matched_syllable names the syllable it matched.
An English letter is not a syllable. Veerendra starts with Ve in English letters. In Hindi it starts with वी, a sound from Rohini, the star just before Mrigashira. So a filter on English letters can pull in names from another star. The docs' J sample shows the same thing. Of its 28 names, 20 match a syllable of Uttara Ashadha (जा or जी), and 6 match one of Shravana (जू, जे or जो). The last 2, Jaimini and Jainendra, begin with जै, which belongs to neither.
A syllable can have no name yet. For Mrigashira, वो found nothing. The answer lists it in syllables_without_names. It also adds the syllable_note line, which tells parents they can still choose a name with that sound.
An answer can be empty. We sent the four syllables of Ashlesha for the boy born Mar 22, 1992. Only 1 name passed the filters, and none landed on 3 or 5. So found was 0, and the none line asked for fewer filters. With gender left at any, 1 girl's name came back.
Take the syllables from one table. Name tables do not all agree. For the fourth quarter of Ardra, the Astrology API's table gives Chha. One page we read gives Na. The name finder matches the syllables you send, so take them from the Astrology API.
See the whole field list. The baby names feature page lists every field the route returns, with its filters and limits.

The name list behind the route
The list holds 13,859 names, and 3,702 of them are marked Indian. The names were checked against published name lists. Every meaning, Hindi spelling and first syllable was written by our own team.
Some names are never suggested. 177 names have a meaning a family may not want, such as death, war or an insult. They stay out, whatever the filters say. That leaves 13,682 names the route can suggest.
Modern names come back without a meaning. The core's notes say parents ask for modern names, even when the meaning is not known. So the route still suggests them, 1,373 in all. Such a name has meaning_known set to false. Its meaning is a sentence saying the meaning is not known yet, never a guess. In the Mrigashira run, 5 of the 38 names had no known meaning.
The list is not reviewed yet. The list.reviewed field is false, and the review_note line says so in words. Some names also carry needs_check: true. That marks a name whose meaning, spelling or origin is still flagged for a closer look. In the Mrigashira run, 11 of the 38 names had it.
The Hindi spelling travels with each name. The devanagari field holds it in English and in Hindi answers alike. So a card can print जहान under Jahaan whatever the reading language.
Inputs the route turns down
Bad input is turned down with a 422 error whose code is invalid_input. Each of the seven errors below names its field, so your form can show the message in the right box.
Input | Field in the error | Allowed |
|---|---|---|
Chu, typed in English letters, as a syllable |
| 1 to 4 Hindi letters each |
Nine syllables |
| 8 at most |
Jaya as a starting letter |
| 1 to 3 English letters each |
डो as the surname |
| English letters only |
|
|
|
201 as the |
| 1 to 200 |
10 as a target |
| 1 to 9 |
Syllables must be in Hindi letters and starting letters in English letters. Build your form so each box takes only its own script.
Build decisions for a baby name screen
Ask for the surname. It moves every name by the same step, so the list without it is a different list. If parents have not settled the surname, say the list may change.
Offer the filters parents use. Gender, a starting letter and the birth star syllables map straight to the request. The route has no length filter. To offer short names, filter name by its letter count in your app. Set limit high when you do, so the cut does not empty a group.
Show the meaning and the number side by side. Each card can show the name, its Hindi spelling, its meaning, its number and planet, and its fit label. When meaning_known is false, print the API's sentence as it is.
Keep the API's order. The groups run by number and the names run A to Z. The answer has no score, so a "top pick" badge would come from your app, not from the numbers.
Never say a name brings luck. Do not write that a name will shape a child's health, money or future. Put the not_claimed_name line near the list. A number is one thing a family weighs, next to how the name sounds.
Let parents keep their own name. Parents may arrive with a name in mind. Let them type it, and check it with the name checker, POST /v1/name. Show its fit in the same way, and never push them off it. Spelling suggestions for a name are a separate job, covered in name correction numerology.
Try a name parents already like. Our free name numerology calculator reads any name a family brings against a birth date, in the Chaldean and Pythagorean tables.

Check a listed spelling before you show it. The variants field lists other spellings, and they are not counted. Jitendra Doe lands on 3, a good fit for our sample boy. Its listed spelling, Jitender Doe, adds up to 43, then 7, which is Mixed. Send a spelling to the name checker before you show it as a fit.
Show the review flags. Print the review_note line once, near the list. Give names with needs_check: true a quiet "meaning being checked" tag.
Use Hindi meanings for Hindi screens. Send lang=hi. Jahaan's meaning comes back as दुनिया, with "The world" kept in meaning_en. Gender labels arrive as लड़का or लड़की. Jahaan's origin_name arrives as फ़ारसी, which means Persian. Codes such as boy and the origin field stay in English, so your filters keep working.
Plan the empty screens. Show the none line when nothing is found, and the syllable_note line when a sound has no name. Offer a way out, such as the whole star's four syllables instead of one.
Ask for the birth time from the record. The syllable comes from the Moon's quarter, and the Moon moves through a quarter in about six hours. A guessed time can give the wrong syllable, so show the time you used.
Test with a free key. Test keys accept the two sample birth dates in the docs, Aug 15, 1990 and Mar 22, 1992. The surname must be Doe, and J is the only starting letter. Syllables need a live key. Each call uses 2 reading credits.
What to remember
Baby name numerology reads a name against the child's birth date. The route works out the good numbers, adds up every name together with the surname, and returns groups in alphabet order. Our sample boy got 28 J names, because only 3 and 5 suit his date. Birth star syllables are a filter your app gets from the Astrology API and passes in. The name the family picks, on the list or not, is still theirs.



