Authentication

Working from real payloads: every endpoint's exact request and response JSON — captured live, downloadable, nothing hand-written — is on the API samples page.

All API requests require authentication via an API key. Include your API key in the X-Api-Key header with every request.

// Include in all API requests headers: { 'Content-Type': 'application/json', 'X-Api-Key': 'your_api_key_here' }

Important: Your API key is linked to verified domains/IPs. Requests from unverified origins will be rejected. Add domains and IPs in your Dashboard.

Every endpoint on this page requires a key. There is no public or trial access: a request without X-Api-Key is answered with 401, and a key calling from an origin you have not verified is answered with 403. The only exception is GET /v1/health, which returns service status and no astrology data.

Keep the key on your server. If you call KundliAPI straight from a browser or a mobile app, the key ships to every user who opens developer tools — proxy the call through your own backend instead, and keep the verified-origin list as small as it can be.

Base Parameters

Most astrology endpoints require the following birth data parameters:

ParameterTypeRequiredDescription
dayIntegerRequiredBirth day (1-31)
monthIntegerRequiredBirth month (1-12)
yearIntegerRequiredBirth year (e.g., 1990)
hourIntegerRequiredBirth hour in 24h format (0-23)
minIntegerRequiredBirth minute (0-59)
latFloatRequiredBirth latitude (e.g., 28.6139)
lonFloatRequiredBirth longitude (e.g., 77.2090)
tzoneFloatRequiredTimezone offset (e.g., 5.5 for IST)

Getting latitude/longitude for a birth place

KundliAPI does not provide a geocoding (place name → lat/lon) endpoint for API customers, and we recommend against building on top of our internal one even if you discover it — it's meant only for kundliapi.com's own website and isn't covered by our uptime/rate-limit guarantees; it can change or be throttled without notice.

Convert your users' birth place into coordinates using your own mapping provider before calling KundliAPI — e.g. Google Maps Geocoding API, Mapbox Geocoding API, or OpenStreetMap Nominatim (self-hosted or via your own paid usage tier). Cache the result against the place name on your side so you're not re-geocoding on every request.

Accuracy matters here: every downstream calculation (Ascendant, houses, Dasha, Dosha — everything) is computed directly from the exact latitude/longitude/timezone you send. Sending an approximate or wrong location produces a fully self-consistent but incorrect chart, with nothing in the response to indicate it. Always validate that lat/lon/tzone are present and correspond to the actual birth place before calling the API — do not fall back to a default city if your own geocoding step fails.

Language

Language is chosen per request — there is no account-level or key-level language setting, so the same key can ask for Hindi on one call and English on the next.

ParameterWhereValuesEffect
langRequest bodyhi (default), enLanguage of the generated text: predictions, horoscope, remedies, mantra meanings.
labelLangRequest body, chart endpoints onlyenReturns rashi and gender labels in English instead of Devanagari.

Charts use a separate field on purpose: lang already had a meaning there before labelLang existed, and changing it would have altered what live integrations receive. Send labelLang: "en" for English chart labels; omit it and the response is exactly what it has always been.

// English prediction { "day": 15, "month": 8, "year": 1990, "hour": 14, "min": 30, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5, "lang": "en" } // English chart labels { "day": 15, "month": 8, "year": 1990, "hour": 14, "min": 30, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5, "labelLang": "en" }

Panchang names (tithi, nakshatra, yoga, karana, chaughadiya) are returned in Hindi in both modes; they come from the panchang tables rather than the text layer.

Error Handling

The API returns standard HTTP status codes:

CodeMeaning
200Success
400Bad Request — missing or invalid parameters
401Unauthorized — invalid or missing API key
403Forbidden — domain/IP not verified
429Rate limit exceeded
500Internal server error

Panchang

Complete Hindu Panchang data including Tithi, Nakshatra, Yoga, Karana, and timings.

POST/v1/panchang/get_panchang_dataGet Panchang for date

Returns complete Panchang data for the given date and location.

Request Body:

{ "day": 15, "month": 6, "year": 2024, "hour": 6, "min": 0, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5 }

Response includes:

Tithi, Nakshatra, Yoga, Karana, Sunrise, Sunset, Moonrise, Moonset, Rahu Kaal, Gulika Kaal, Yamaganda, Abhijit Muhurat, etc.

POST/v1/panchang/get_choghadiya_dataChoghadiya Muhurat

Returns Choghadiya timings for the day — auspicious and inauspicious periods.

Muhurat Timings

POST/v1/panchang/get_hora_muhurtaHora Muhurat

Returns planetary Hora timings for the day.

Astro Data

Get basic and extended astrological data for a birth chart.

POST/v1/astro/get_astro_dataBasic Astro Data

Returns ascendant sign, nakshatra, deity, and Moon sign information.

Example Request (cURL):

curl -X POST https://kundliapi.com/v1/astro/get_astro_data \ -H "Content-Type: application/json" \ -H "X-Api-Key: your_api_key_here" \ -d '{"day":15,"month":6,"year":1990,"hour":10,"min":30,"lat":28.6139,"lon":77.209,"tzone":5.5}'

Note: Ascendant lord, Rashi lord, Varna, Yoni, Gan, and Nadi are already included in the get_astro_data response above — there is no separate "extended details" endpoint.

Planet Positions

Get planetary positions, dignity, aspects, and house placements.

POST/v1/planet/get_all_planet_dataAll Planet Positions

Returns positions of all 9 planets (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) with sign, degree, nakshatra, house, and retrograde status. Note: this is /planet/ (singular).

Note: Nakshatra sub-lord and sub-sub-lord (KP-style) are returned by the KP Astrology endpoints below, not by /planet/.

Dasha System

Vimshottari and Yogini Dasha periods with precise calculations.

POST/v1/dasha/get_vimshottary_maha_dashaMaha Dasha

Returns all Vimshottari Maha Dasha periods with start/end dates. Use /v1/dasha/get_vimshottary_current_dasha for just the currently running one.

POST/v1/dasha/get_vimshottary_antar_dashaAntar Dasha

Returns Antar Dasha periods within each Maha Dasha.

POST/v1/gemini/get_current_char_dasha_dataChara Dasha (Current)

Returns current running Chara (Jaimini) Dasha. Note: Jaimini-system endpoints (Chara Dasha, Chara Karakas, Karakamsha) are mounted under /v1/gemini/, not /v1/dasha/.

POST/v1/dasha/get_yogini_maha_dashaYogini Dasha

Returns Yogini Dasha periods — 36-year cycle system. Use /v1/dasha/get_current_yogini_dasha for just the current one.

Dosha Analysis

Check major doshas in a birth chart.

POST/v1/dosha/mangal_dosh_analysisMangal Dosha

Returns Mangal (Mars) Dosha analysis with intensity and detailed description.

POST/v1/dosha/kalsharp_dosh_analysisKaal Sarp Dosha

Returns Kaal Sarp Dosha analysis — Rahu/Ketu axis check.

POST/v1/dosha/pitra_dosh_analysisPitra Dosha

Returns Pitra Dosha analysis — ancestral karma effects.

POST/v1/dosha/sadhesati_analysisSadhesati

Returns Sadhesati (Saturn transit) analysis — current phase and dates.

Birth Charts

Generate divisional charts. Note: the path segment is /chart/ (singular).

Which divisions are supported

Twenty divisions are computed with their own rules:

D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D16 D20 D24 D27 D30 D40 D45 D60

Ask for anything else — D13, D999, abc — and the API answers 400 naming what it does support. It will never return a D1 chart under another division's name, so a chart you receive is always the chart you asked for.

The division may be written with or without the D, in either case: 10, D10 and d10 are the same request.

POST/v1/chart/get_lagna_chartLagna Chart (D-1)

Returns Lagna (Ascendant) chart data with planet placements in houses.

POST/v1/chart/get_navamsa_chartNavamsa Chart (D-9)

Returns Navamsa chart data — used for marriage and dharma analysis. Every other division is available at /v1/chart/get_divisional_chart/:division.

POST/v1/chart/get_divisional_chart/:divisionAny single division

One divisional chart. The division goes in the path, the birth data in the body.

Request:

POST /v1/chart/get_divisional_chart/D10 { "name": "Test", "day": 15, "month": 8, "year": 1990, "hour": 14, "min": 30, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5, "gender": "male" }

Response:

"chartData": { "name", "year", "month", "day", "hour", "min", "latitude", "longitude", "timezone", "gender", "division": "D10", "divisionName": "Dashamsha", "chart": [ { "house": 1, "ascendant": true, "rashi": "वृश्चिक", "rashiIndex": 8, "planets": [] }, { "house": 2, "ascendant": false, "rashi": "धनु", "rashiIndex": 9, "planets": [ { "name": "Sa", "degree": { "deg": 26, "min": 8, "sec": 18 }, "retrograde": true, "combust": false, "color": "#00008B" } ] } // 12 entries ] }

rashiIndex is 1-indexed. Planet names inside chart are two-letter codes (Su Mo Ma Me Ju Ve Sa Ra Ke). division and divisionName appear only on this endpoint, where you named a division.

Add "labelLang": "en" to the body for English rashi and gender labels.

POST/v1/chart/get_all_divisional_chartsFifteen charts in one call

Returns allDivisionalCharts with the fifteen standard vargas — D2, D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45, D60 — each in the same chart shape as above. Use this instead of fifteen separate calls.

POST/v1/chart/get_chalit_chartChalit Chart

Returns Bhava Chalit chart — houses based on actual house cusps.

One shape difference worth knowing: get_divisional_chart, get_moon_chart, get_sun_chart and get_chalit_chart nest everything under chartData, while get_birth_chart returns the same fields directly on data[0] with no chartData wrapper. Handle that one case and the rest are identical.

Daily / Weekly / Monthly Horoscope

Sign-based readings with the life areas split into their own fields, so you can lay them out without parsing prose.

POST/v1/horoscope/get_horoscopeAll four windows in one call

No birth data needed — just the sign.

Request Body:

{ "sign": "aries", "lang": "en" }

sign is one of aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces (case-insensitive).

Response:

"horoscope": { "sign": "Aries", // ready-to-render HTML, one per window "daily": "<p>…</p>", "weekly": "…", "monthly": "…", "yearly": "…", // 0-100 scores per area, one set per window "dailytag": { "love": 80, "wealth": 75, "health": 67, "business": 76, "career": 67, "luck": 75 }, "weeklytag": { … }, "monthlytag": { … }, "yearlytag": { … }, // plain text, no HTML, no "Career:" prefix "categories": { "general": "…", "love": "…", "friends": "…", "career": "…", "family": "…", "home": "…", "health": "…", "finance": "…" }, "remedy": "Recite Sundarkand. Fast on Tuesdays for Lord Hanuman.", "lucky": { "color": "Pink", "numbers": [8, 3], "direction": "North-West" }, "weeklyCategories": { … same eight keys … }, "weeklyRemedy": "…", "monthlyCategories": { … same eight keys … }, "monthlyRemedy": "…" }

The eight category keys are always present and always strings. lucky.numbers is always two integers between 1 and 9. The text is deterministic: the same sign on the same day returns the same sentences, so you can cache per sign per day.

Prediction

POST/v1/prediction/get_predictionChart-based reading

A reading built from the birth chart: the ascendant, its lord, and what each planet is doing in the house it occupies.

Request Body:

{ "name": "Test", "day": 15, "month": 8, "year": 1990, "hour": 14, "min": 30, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5, "gender": "male", "lang": "en" }

Response (lang: "en"):

"ascendant": "Scorpio", "ascendantLord": "Mars", "prediction": "Scorpio Lagna - you may be deep and private by nature…", "planetInfluences": [ { "planet": "Sun", "house": 9, "rashi": "Cancer", "houseMeaning": "House of Fortune (fortune, dharma, father)", "isRetrograde": false, "isCombust": false, "effect": "Good fortune and a religious bent are likely" } ]

With lang absent or "hi", every one of those values comes back in Devanagari instead.

Mantra

Traditional graha and rashi mantras, with the Devanagari text, a Roman transliteration, a plain-language meaning and the japa count. Available on starter and above.

POST/v1/mantra/get_daily_mantraMantra of the day

The mantra for the weekday's ruling planet, plus the mantra for the moon sign. Every field is optional; send no date and you get today.

Request Body:

{ "day": 19, "month": 8, "year": 2026, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5, "lang": "en" }

Response:

{ "date": "2026-08-19", "weekday": "Wednesday", "planet": "Mercury", "mantra": { "sanskrit": "ॐ बुं बुधाय नमः", "transliteration": "Om Bum Budhaya Namah", "meaning": "Salutations to Budha, Mercury — chanted for clear speech…", "count": 108, "bestTime": "Wednesday morning after a bath, facing north." }, "rashi": { "sign": "Libra", "mantra": { … same shape … } } }
POST/v1/mantra/get_rashi_mantraMantra for a sign

Request body: { "sign": "libra", "lang": "en" } — the sign may be given in English or Hindi. Returns sign, lord, mantra and beejMantra.

POST/v1/mantra/get_graha_mantraMantra for a planet

Request body: { "planet": "Saturn", "lang": "en" }. Omit planet to receive all nine under mantras.

Each planet carries its beejMantra and the traditional japa count — Sun 7,000 · Moon 11,000 · Mars 10,000 · Mercury 9,000 · Jupiter 19,000 · Venus 16,000 · Saturn 23,000 · Rahu 18,000 · Ketu 17,000.

An unknown planet or sign returns 400 listing the accepted values.

Kundli Matching

Ashtakoota and other matching systems for marriage compatibility.

POST/v1/kundali/matchAshtakoota Matching

Returns 8-fold matching (Gun Milan) score out of 36 points.

Request Body:

{ "boy": { "day": 15, "month": 6, "year": 1990, "hour": 10, "min": 30, "lat": 28.6139, "lon": 77.209, "tzone": 5.5 }, "girl": { "day": 20, "month": 3, "year": 1992, "hour": 14, "min": 15, "lat": 28.6139, "lon": 77.209, "tzone": 5.5 } }

Response includes scores for: Varna, Vashya, Tara, Yoni, Graha Maitri, Gana, Bhakoot, Nadi.

KP Astrology

Krishnamurti Paddhati system endpoints.

POST/v1/kp/get_cusps_dataKP House Cusps

Returns KP house cusps with sign lord, star lord, and sub lord.

POST/v1/kp/get_planet_dataKP Planets

Returns planets with sign lord, star lord, sub lord — KP style.

Numerology

Complete numerology analysis endpoints.

POST/v1/numerology/completeNumerology Data

Returns birth number, life path number, name analysis.

Additional Parameters:

ParameterTypeRequiredDescription
nameStringRequiredFull name for numerology analysis
POST/v1/numerology/lo_shu_gridLo Shu Grid

Returns Lo Shu Grid (magic square) analysis based on birth date.

Western Astrology — Natal

Tropical/Western astrology calculations using Placidus house system.

POST/v1/western/natal_chartWestern Natal Chart

Returns Western natal chart with tropical zodiac positions, aspects, house placements, element/modality analysis.

Response includes:

Sun sign, Moon sign, Rising sign, all planet positions in tropical zodiac, major & minor aspects with orbs, house system data, element balance, hemisphere emphasis.

Western — Synastry & Composite

POST/v1/western/synastrySynastry Chart

Compares two birth charts for relationship compatibility. Returns inter-aspects between both charts.

Additional Parameters:

ParameterTypeRequiredDescription
day2, month2, year2IntegerRequiredSecond person's birth date
hour2, min2IntegerRequiredSecond person's birth time
latitude2, longitude2FloatRequiredSecond person's birth location
timezone2FloatRequiredSecond person's timezone
POST/v1/western/compositeComposite Chart

Returns midpoint composite chart of two people — the relationship chart. Same parameters as Synastry.

Western — Transits & Progressions

POST/v1/western/solar_returnSolar Return

Returns Solar Return chart for a specific year (birthday chart). Add targetYear to request body.

POST/v1/western/progressionsSecondary Progressions

Returns progressed chart positions (day-for-a-year method).

POST/v1/western/current_transitsCurrent Transits

Returns current planetary positions in tropical zodiac.

POST/v1/western/moon_phasesMoon Phase Calendar

Returns moon phases for a given month/year with New Moon, Full Moon, and quarter phases.

Western — Reports

POST/v1/western/personalityPersonality Report

Returns detailed personality analysis based on Western chart — Sun, Moon, Rising, elements, and aspects.

POST/v1/western/romanticRomantic Forecast

Returns romantic forecast based on Venus, Mars, 7th house and relationship aspects.

POST/v1/western/karmaKarma & Destiny Report

Returns karma and destiny analysis based on Saturn, Nodes, and 12th house.

Tarot Card API

Complete 78-card Tarot engine with multiple spread types.

POST/v1/tarot/three_card3-Card Spread

Returns Past, Present, Future reading with full card interpretations.

Optional Parameters:

ParameterTypeDescription
questionStringYour question for the reading
seedIntegerSeed for reproducible readings
POST/v1/tarot/celtic_crossCeltic Cross (10 cards)

Returns full Celtic Cross spread — the most comprehensive single-question reading.

POST/v1/tarot/yes_noYes/No Tarot

Returns Yes, No, or Maybe answer with supporting card and explanation.

POST/v1/tarot/card_of_dayCard of the Day

Returns today's daily tarot card with guidance message.

GET/v1/tarot/all_cardsAll 78 Cards

Returns complete deck — 22 Major Arcana + 56 Minor Arcana with all meanings.

Varshaphal (Annual Horoscope)

Vedic Solar Return / Tajika astrology system for annual predictions.

POST/v1/varshaphal/get_varshaphalVarshaphal Chart

Returns annual horoscope chart with Muntha, Panchadhikari, and Harsha Bala. Add targetYear to request body.

POST/v1/varshaphal/get_yogasTajika Yogas

Returns Tajika yogas: Ithasala, Easarapha, Nakta, Yamaya, Manaú, Kamboola.

POST/v1/varshaphal/get_sahamsSahams (Arabic Parts)

Returns 16 Sahams — Punya, Vidya, Yashas, Mitra, and more.

Gochar (Transit Analysis)

Personalized transit analysis with Vedha (obstruction) logic.

POST/v1/gochar/get_personalizedPersonalized Gochar

Returns current transits relative to your natal Moon sign with Vedha analysis and benefic/malefic determination.

POST/v1/gochar/get_saturn_transitSaturn Transit / Sade Sati

Returns detailed Saturn transit analysis — Sade Sati phase, Dhaiya, Kantaka, with start/end dates and remedies.

POST/v1/gochar/get_jupiter_transitJupiter Transit

Returns Jupiter (Guru) transit analysis with effects based on house from Moon.

Lal Kitab

Complete Lal Kitab astrology system with unique remedies.

POST/v1/lalkitab/get_chartLal Kitab Chart

Returns Lal Kitab chart with Pakka Ghar assignments and sleeping/awakened planet status.

POST/v1/lalkitab/get_remediesLal Kitab Remedies

Returns planet-specific remedies — materials, donations, rituals based on house placements.

POST/v1/lalkitab/get_debtsPlanetary Debts (Rin)

Returns 6 planetary debts: Pitru Rin, Matru Rin, Stri Rin, Swa Rin, Bandhu Rin, Sasur Rin with symptoms and remedies.

Biorhythm

Physical, Emotional, Intellectual, and extended cycles.

POST/v1/biorhythm/get_biorhythmDaily Biorhythm

Returns 6 biorhythm cycles: Physical (23d), Emotional (28d), Intellectual (33d), Intuitive (38d), Aesthetic (43d), Spiritual (53d).

POST/v1/biorhythm/get_compatibilityBiorhythm Compatibility

Compare biorhythm cycles between two people. Uses day2/month2/year2 parameters.

Human Design

BodyGraph, Type, Strategy, Authority, Gates, Channels, and Profile.

POST/v1/human_design/get_chartFull BodyGraph

Returns complete Human Design analysis: Type (Generator, Projector, Manifestor, Reflector, MG), Strategy, Authority, Profile, all defined/undefined Centers, active Channels, Gates, and Incarnation Cross.

POST/v1/human_design/get_summaryBodyGraph Summary

Returns simplified summary: Type, Strategy, Authority, Profile, defined/undefined centers list.

Yoga Combinations

Identify powerful yoga combinations in a birth chart — Raj Yoga, Dhan Yoga, Panch Mahapurush, and Moon-based yogas.

POST/v1/yoga/get_allAll Yoga Combinations

Returns all yoga combinations present in a birth chart — including Raj Yoga, Dhan Yoga, Panch Mahapurush Yoga, Chandra Yoga, and more.

Example Request (cURL):

curl -X POST https://kundliapi.com/v1/yoga/get_all \ -H "Content-Type: application/json" \ -H "X-Api-Key: your_api_key_here" \ -d '{"day":15,"month":6,"year":1990,"hour":10,"min":30,"lat":28.6139,"lon":77.209,"tzone":5.5}'
POST/v1/yoga/get_raj_yogasRaj Yoga Analysis

Returns Raj Yoga analysis — combinations of Kendra and Trikona lords that indicate power, authority, and success.

POST/v1/yoga/get_dhan_yogasDhan Yoga (Wealth)

Returns Dhan Yoga (wealth yoga) analysis — planetary combinations indicating financial prosperity and material gains.

POST/v1/yoga/get_panch_mahapurushPanch Mahapurush Yoga

Returns Panch Mahapurush Yoga analysis — Ruchaka, Bhadra, Hamsa, Malavya, and Sasa yogas formed by Mars, Mercury, Jupiter, Venus, and Saturn in Kendra in own/exaltation sign.

POST/v1/yoga/get_chandra_yogasChandra (Moon) Yogas

Returns Moon-based yoga analysis — Sunaphа, Anaphа, Durudhara, Kemadruma, Gajakesari, and other Chandra yogas.

Muhurat Finder

Find auspicious dates and times (Muhurat) for important life events — marriage, housewarming, business, travel, and more.

POST/v1/muhurat/get_marriageMarriage Muhurat

Returns auspicious dates for marriage (Vivah Muhurat) within the given date range.

Request Body:

curl -X POST https://kundliapi.com/v1/muhurat/get_marriage \ -H "Content-Type: application/json" \ -H "X-Api-Key: your_api_key_here" \ -d '{"start_year":2026,"start_month":1,"start_day":1,"end_year":2026,"end_month":12,"end_day":31,"lat":28.6139,"lon":77.209,"tzone":5.5}'

Muhurat Parameters:

ParameterTypeRequiredDescription
start_yearIntegerRequiredStart year of the search range
start_monthIntegerRequiredStart month (1-12)
start_dayIntegerRequiredStart day (1-31)
end_yearIntegerRequiredEnd year of the search range
end_monthIntegerRequiredEnd month (1-12)
end_dayIntegerRequiredEnd day (1-31)
latFloatRequiredLocation latitude
lonFloatRequiredLocation longitude
tzoneFloatRequiredTimezone offset (e.g., 5.5 for IST)
POST/v1/muhurat/get_grihapraveshGrihapravesh Muhurat

Returns auspicious dates for housewarming (Grihapravesh) ceremony within the given date range.

POST/v1/muhurat/get_namkaranNamkaran Muhurat

Returns auspicious dates for naming ceremony (Namkaran) within the given date range.

POST/v1/muhurat/get_businessBusiness Opening Muhurat

Returns auspicious dates for business or shop opening within the given date range.

POST/v1/muhurat/get_travelTravel Muhurat

Returns auspicious dates for travel within the given date range.

POST/v1/muhurat/get_vehicleVehicle Purchase Muhurat

Returns auspicious dates for vehicle purchase within the given date range.

POST/v1/muhurat/get_propertyProperty Purchase Muhurat

Returns auspicious dates for property purchase within the given date range.

POST/v1/muhurat/get_mundanMundan Muhurat

Returns auspicious dates for Mundan (first head shaving) ceremony within the given date range.

POST/v1/muhurat/get_annaprashanAnnaprashan Muhurat

Returns auspicious dates for Annaprashan (first rice feeding) ceremony within the given date range.

POST/v1/muhurat/check_dateCheck Date Auspiciousness

Check if a specific date and time is auspicious for general activities.

Request Body:

{ "year": 2026, "month": 3, "day": 22, "hour": 10, "min": 30, "lat": 28.6139, "lon": 77.209, "tzone": 5.5 }

Note: This endpoint uses standard birth-data parameters (year, month, day, hour, min, lat, lon, tzone) instead of the date-range parameters used by other muhurat endpoints.

How to Generate a PDF Report

There are two ways to get a Kundli PDF, depending on how much design control you want.

Option A — /v1/pdf/generate: a ready-made, fully-branded PDF in one call

Send birth details plus your own branding — business name, astrologer name, logo, photo, footer banner, colors, contact info — and get back a complete, print-ready Kundli PDF with your branding on it, not ours. Nothing to set up beforehand: every field is sent per request, so there's no separate "save your branding" step and nothing stored on our side between calls.

Available on professional and enterprise plans. PDF rendering is significantly heavier than a JSON endpoint (typically 10–25 seconds per call), so it isn't part of the free/starter tier — each call still counts as a single request against your plan's quota.

POST/v1/pdf/generateBranded Kundli PDF

Returns the PDF file directly — the response's Content-Type is application/pdf, not JSON.

Request Body:

{ "name": "Rohit Sharma", "day": 15, "month": 8, "year": 1990, "hour": 10, "min": 30, "lat": 28.6139, "lon": 77.2090, "tzone": 5.5, "gender": "male", "lang": "en", "variant": "detailed", "branding": { "brandName": "Nova Astro Consultancy", "panditName": "Acharya Ramesh", "brandPhone": "9876543210", "brandEmail": "contact@novaastro.example", "brandWebsite": "www.novaastro.example", "brandFooter": "For appointments, call us or visit our website.", "businessColor": "#1a1a6b", "titleColor": "#7a1e1e", "nameColor": "#5e1a1a", "logoUrl": "https://novaastro.example/logo.png", "profileImageUrl": "https://novaastro.example/astrologer-photo.jpg", "footerBannerUrl": "https://novaastro.example/report-footer-banner.png", "socialLinks": { "instagram": "https://instagram.com/novaastro" }, "youtubeVideo": { "url": "https://youtube.com/watch?v=...", "title": "About us" } } }

Example Request (cURL):

curl -X POST https://kundliapi.com/v1/pdf/generate \ -H "Content-Type: application/json" \ -H "X-Api-Key: your_api_key_here" \ -d '{"name":"Rohit Sharma","day":15,"month":8,"year":1990,"hour":10,"min":30,"lat":28.6139,"lon":77.209,"tzone":5.5,"gender":"male","branding":{"brandName":"Nova Astro Consultancy","panditName":"Acharya Ramesh","brandPhone":"9876543210"}}' \ --output kundli.pdf

Branding fields

FieldTypeNotes
brandNamestringYour business/brand name — heads the cover page.
panditNamestringThe astrologer who signs the report. Left blank, that line is simply not printed — it never falls back to any name of ours.
brandPhone, brandEmail, brandWebsitestringContact line on the cover.
brandFooterstringShort text shown in the report footer.
logoUrl, profileImageUrl, footerBannerUrlstring (URL)See "Supplying images" below.
businessColor, titleColor, nameColorhex stringe.g. "#7a1e1e". Anything not a valid #rgb/#rrggbb/#rrggbbaa string is ignored.
socialLinksobjectAny of facebook, instagram, youtube, twitter, linkedin — printed on the closing page.
youtubeVideoobject{ url, title, description } — an optional featured-video block.

Supplying images

logoUrl, profileImageUrl and footerBannerUrl each accept either:

  • An https:// URL you host yourself (recommended — no size limit from us; our renderer fetches it directly while building the PDF). Plain http:// is not accepted.
  • An inline data:image/...;base64,... URI, for small images (logos, icons) you'd rather send directly — capped at roughly 900KB decoded per image, since up to three of these travel in the same request body.

A URL that resolves to a private, loopback or link-local address (e.g. 127.0.0.1, 192.168.x.x, cloud metadata endpoints) is refused rather than fetched. If an image URL is unreachable or invalid, that one image is silently skipped — a bad logoUrl does not fail the whole report.

Other fields

variant"detailed" (default) for the full report, or "basic" for the shorter free-tier-style report. lang — same language codes as every other endpoint (en, hi, mr, bn, ta, gu, te, kn).

Option B — build the PDF yourself from JSON

If you want full design control over the layout (not just the branding), you can still fetch the underlying data as JSON and render it however you like — this is how every KundliAPI PDF was generated before /v1/pdf/generate existed, and it's still fully supported.

1. Fetch the data. Call the endpoints you need for the same birth details — e.g. /v1/astro/get_astro_data, /v1/planet/get_all_planet_data, /v1/chart/get_lagna_chart, /v1/chart/get_navamsa_chart, /v1/dasha/get_vimshottary_maha_dasha, /v1/dosha/mangal_dosh_analysis — and combine the JSON responses.

2. Render that JSON into a PDF, using your own code. Two common approaches:

ApproachHow it worksTypical libraries
Draw the PDF programmaticallyYour code places text, tables, and lines at specific coordinates directly onto a blank PDF canvas.PDFKit (Node.js), ReportLab (Python), iText (Java), QuestPDF (.NET)
HTML → PDF conversionDesign the report as a normal HTML/CSS page, inject the API's JSON values into it, then "print" that page to a PDF using a headless browser.Puppeteer / Playwright (Chromium), wkhtmltopdf, WeasyPrint

The HTML → PDF route is usually easier to start with — you can design and preview the report visually in a normal browser before exporting it.

3. Drawing the Kundli chart itself. The API only tells you which planet sits in which house as JSON (e.g. { "house": 1, "planet": "Sun" }) — it does not return a chart image. You need to draw the diamond shape (North Indian style) or the fixed 12-box grid (South Indian style) yourself, then place each planet's abbreviation into the correct box based on that house data.

Need More Details?

This documentation covers the most commonly used endpoints. For a complete list of all 203+ endpoints, test them directly from your dashboard or contact our support.

Get API Access Contact Support View SDKs