AstrologyAPI Node.js / TypeScript SDK
Official Node.js and TypeScript SDK for AstrologyAPI.com.
This SDK uses token-based authentication with an access token.
import { AstrologyAPI } from "astrologyapi";
const client = new AstrologyAPI({
access_token: "YOUR_ACCESS_TOKEN",
});
You can also use an environment variable:
ASTROLOGYAPI_ACCESS_TOKEN=your_access_token
import { AstrologyAPI } from "astrologyapi";
const client = new AstrologyAPI({
access_token: "YOUR_ACCESS_TOKEN",
});
const birthData = {
day: 10,
month: 5,
year: 1990,
hour: 19,
min: 55,
lat: 19.2,
lon: 72.83,
tzone: 5.5,
};
const chart = await client.vedic.getChart("D1", birthData);
const planets = await client.western.getPlanets(birthData);
const daily = await client.horoscopes.getDaily("aries");
type AstrologyAPIConfig = {
access_token: string;
version?: string;
};
Rules:
- access_token is required for authentication
- version defaults to v1
type BirthData = {
day: number;
month: number;
year: number;
hour: number;
min: number;
lat: number;
lon: number;
tzone: number;
};
type MatchBirthData = {
male: BirthData;
female: BirthData;
};
type CoupleBirthData = {
person1: BirthData;
person2: BirthData;
};
type NumerologyData = {
day: number;
month: number;
year: number;
name: string;
};
type VarshaphalData = BirthData & {
varshaphal_year?: number;
year_count?: number;
ayanamsha?: string;
};
Notes:
- varshaphal_year is the preferred field
- year_count is still supported for backward compatibility
- ayanamsha defaults to LAHIRI
type PapasamyamData = BirthData & {
full_name?: string;
name?: string;
date?: number;
ayanamsha?: string;
};
Notes:
- full_name is the preferred name field
- name is accepted as a compatibility alias
- date defaults to day
- ayanamsha defaults to LAHIRI
type PDFBranding = {
logoUrl?: string;
companyName?: string;
companyInfo?: string;
domainUrl?: string;
companyEmail?: string;
companyLandline?: string;
companyMobile?: string;
footerLink?: string;
chartStyle?: "NORTH_INDIAN" | "SOUTH_INDIAN" | "EAST_INDIAN";
};
D1, D2, D3, D4, D5, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45, D60
aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces
sun, moon, mars, mercury, jupiter, venus, saturn, rahu, ketu, ascendant
sun, moon, mars, rahu, jupiter, saturn, mercury, ketu, venus
en, hi, te, ta, ml, kn, mr, bn, gu, or, pa
Use client.vedic.
- getBirthDetails(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getAstroDetails(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getAyanamsha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPlanets(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getExtendedPlanets(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPlanetAshtak(planet: [PlanetName](#planetname-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSarvashtak(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getGhatChakra(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getChart(chartId: [ChartId](#chartid-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getChartImage(chartId: [ChartId](#chartid-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getExtendedChart(chartId: [ChartId](#chartid-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getExtendedChart(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getCurrentDasha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getMajorDasha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSubDasha(mahaDasha: [DashaPlanet](#dashaplanet-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSubSubDasha(mahaDasha: [DashaPlanet](#dashaplanet-values), antarDasha: [DashaPlanet](#dashaplanet-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSubSubSubDasha(mahaDasha: [DashaPlanet](#dashaplanet-values), antarDasha: [DashaPlanet](#dashaplanet-values), pratyantarDasha: [DashaPlanet](#dashaplanet-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSubSubSubSubDasha(mahaDasha: [DashaPlanet](#dashaplanet-values), antarDasha: [DashaPlanet](#dashaplanet-values), pratyantarDasha: [DashaPlanet](#dashaplanet-values), sookshmaDasha: [DashaPlanet](#dashaplanet-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getCurrentCharDasha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getMajorCharDasha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSubCharDasha(mahaDasha: string, data: [BirthData](#birthdata), language?: [Language](#language-values))
- getCurrentYoginiDasha(data: [BirthData](#birthdata), language?: [Language](#language-values))
Doshas, Remedies, Panchang, and Reports
- getKalsarpaDosha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getManglik(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSadhesatiStatus(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSadhesatiLifeDetails(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPitraDosha(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getGemSuggestion(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPujaSuggestion(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getRudrakshaSuggestion(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSadhesatiRemedies(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getBasicPanchang(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getAdvancedPanchang(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPlanetPanchang(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getTamilPanchang(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getFestival(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHoraMuhurta(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getChaughadiyaMuhurta(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getAscendantReport(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getNakshatraReport(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouseReport(planet: [PlanetName](#planetname-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getRashiReport(planet: [PlanetName](#planetname-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getBiorhythm(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getMoonBiorhythm(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getMatchBirthDetails(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getMatchObstructions(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getMatchAstroDetails(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getMatchPlanetDetails(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getMatchManglikReport(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getAshtakootPoints(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getDashakootPoints(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getMatchPercentage(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getMatchReport(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getDetailedMatchReport(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getSimpleMatchReport(data: [MatchBirthData](#matchbirthdata), language?: [Language](#language-values))
- getPapasamyam(data: [PapasamyamData](#papasamyamdata), language?: [Language](#language-values))
- getVarshaphalDetails(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalYearChart(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalMonthChart(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalPlanets(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalMuntha(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalMuddaDasha(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalPanchavargeeya(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalHarshaBala(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalYoga(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
- getVarshaphalSahamPoints(data: [VarshaphalData](#varshaphaldata), language?: [Language](#language-values))
Use client.kp.
- getPlanets(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouseCusps(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getBirthChart(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouseSignificator(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPlanetSignificator(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHoroscope(data: [BirthData](#birthdata), language?: [Language](#language-values))
Use client.lalKitab.
- getHoroscope(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getDebts(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getRemedies(planet: [PlanetName](#planetname-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouses(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getPlanets(data: [BirthData](#birthdata), language?: [Language](#language-values))
Use client.horoscopes.
- getDaily(zodiac: [ZodiacSign](#zodiacsign-values), language?: [Language](#language-values))
- getNext(zodiac: [ZodiacSign](#zodiacsign-values), timezoneOrLanguage?: number | [Language](#language-values), language?: [Language](#language-values))
- getPrevious(zodiac: [ZodiacSign](#zodiacsign-values), timezoneOrLanguage?: number | [Language](#language-values), language?: [Language](#language-values))
- getDailyConsolidated(zodiac: [ZodiacSign](#zodiacsign-values), timezoneOrLanguage?: number | [Language](#language-values), language?: [Language](#language-values))
- getMonthly(zodiac: [ZodiacSign](#zodiacsign-values), timezoneOrLanguage?: number | [Language](#language-values), language?: [Language](#language-values))
- getDailyNakshatra(data: [BirthData](#birthdata), language?: [Language](#language-values))
Use client.numerology.
- getTable(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getReport(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getFavTime(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getPlaceVastu(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getFastsReport(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getFavLord(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getFavMantra(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getDailyPrediction(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getNumerologicalNumbers(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getLifepathNumber(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getPersonalityNumber(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getExpressionNumber(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getSoulUrgeNumber(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getChallengeNumbers(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getPersonalDay(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getPersonalMonth(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
- getPersonalYear(data: [NumerologyData](#numerologydata), language?: [Language](#language-values))
Use client.western.
- getPlanets(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouseCusps(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHoroscope(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getNatalWheelChart(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getNatalInterpretation(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouseCuspsReport(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getNatalHouseCuspReport(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getAscendantReport(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSignReport(planet: [PlanetName](#planetname-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getHouseReport(planet: [PlanetName](#planetname-values), data: [BirthData](#birthdata), language?: [Language](#language-values))
- getMoonPhase(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getLunarMetrics(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getSolarReturnDetails(data: [BirthData](#birthdata) & { year?: number }, language?: [Language](#language-values))
- getSolarReturnPlanets(data: [BirthData](#birthdata) & { year?: number }, language?: [Language](#language-values))
- getSolarReturnHouseCusps(data: [BirthData](#birthdata) & { year?: number }, language?: [Language](#language-values))
- getSolarReturnPlanetReport(data: [BirthData](#birthdata) & { year?: number }, language?: [Language](#language-values))
- getSolarReturnPlanetAspects(data: [BirthData](#birthdata) & { year?: number }, language?: [Language](#language-values))
- getSolarReturnAspectsReport(data: [BirthData](#birthdata) & { year?: number }, language?: [Language](#language-values))
- getPersonality(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getRomanticPersonality(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getFriendship(data: [CoupleBirthData](#couplebirthdata), language?: [Language](#language-values))
- getRomanticForecast(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getKarmaDestiny(data: [CoupleBirthData](#couplebirthdata), language?: [Language](#language-values))
- getZodiacCompatibility(zodiac: [ZodiacSign](#zodiacsign-values), partnerZodiac: [ZodiacSign](#zodiacsign-values), language?: [Language](#language-values))
- getSynastry(data: [CoupleBirthData](#couplebirthdata), language?: [Language](#language-values))
- getComposite(data: [CoupleBirthData](#couplebirthdata), language?: [Language](#language-values))
Use client.westernTransit.
- getDaily(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getWeekly(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getMonthly(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getNatalDaily(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getNatalWeekly(data: [BirthData](#birthdata), language?: [Language](#language-values))
Use client.tarot.
- getPredictions(language?: [Language](#language-values))
- getYesNo(language?: [Language](#language-values))
Use client.chinese.
- getZodiac(data: [BirthData](#birthdata), language?: [Language](#language-values))
- getYearForecast(data: [BirthData](#birthdata), language?: [Language](#language-values))
Use client.pdf.vedic and client.pdf.western.
All PDF requests are sent as form data and accept optional PDFBranding.
type VedicPDFData = BirthData & {
gender?: string;
name?: string;
place?: string;
};
type VedicMatchMakingPDFData = MatchBirthData & {
name?: string;
partner_name?: string;
place?: string;
m_first_name?: string;
m_last_name?: string;
m_place?: string;
f_first_name?: string;
f_last_name?: string;
f_place?: string;
ashtakoot?: boolean;
dashakoot?: boolean;
papasyam?: boolean;
};
- getMiniKundli(data: VedicPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
- getBasicHoroscope(data: VedicPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
- getProfessionalHoroscope(data: VedicPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
- getMatchMaking(data: VedicMatchMakingPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
type WesternPDFData = BirthData & {
name?: string;
place?: string;
solar_year?: number;
};
type WesternSynastryPDFData = CoupleBirthData & {
name?: string;
partner_name?: string;
place?: string;
p_first_name?: string;
p_last_name?: string;
p_place?: string;
s_first_name?: string;
s_last_name?: string;
s_place?: string;
};
- getNatalChart(data: WesternPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
- getLifeForecast(data: WesternPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
- getSolarReturn(data: WesternPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
- getSynastry(data: WesternSynastryPDFData, branding?: [PDFBranding](#pdfbranding), language?: [Language](#language-values))
Use client.location.
- getGeoDetails(place: string, maxRows?: number, language?: [Language](#language-values))
- getTimezone(data: { day: number; month: number; year: number; hour: number; min: number; lat: number; lon: number }, language?: [Language](#language-values))
Use this when you need to call an endpoint that is not yet wrapped by a namespace method.
const result = await client.customRequest({
endpoint: "some_endpoint",
body: {
day: 10,
month: 5,
year: 1990,
hour: 19,
min: 55,
lat: 19.2,
lon: 72.83,
tzone: 5.5,
},
});
client.customRequest<T>({
endpoint: string;
body?: Record<string, unknown>;
domain?: "json" | "pdf";
language?: Language;
});
The SDK throws typed errors:
- AstrologyAPIError
- AuthenticationError
- ValidationError
- RateLimitError
- QuotaExceededError
- PlanRestrictedError
- ServerError
- NetworkError
Example:
import { AstrologyAPI, ValidationError, AstrologyAPIError } from "astrologyapi";
try {
const client = new AstrologyAPI({
access_token: "YOUR_ACCESS_TOKEN",
});
const result = await client.vedic.getPlanets({
day: 10,
month: 5,
year: 1990,
hour: 19,
min: 55,
lat: 19.2,
lon: 72.83,
tzone: 5.5,
});
console.log(result);
} catch (error) {
if (error instanceof ValidationError) {
console.error(error.message, error.body);
} else if (error instanceof AstrologyAPIError) {
console.error(error.status, error.message);
} else {
console.error(error);
}
}
MIT