Serveur MCP

Chinese Astrology MCP Server by RoxyAPI

com.roxyapi/chinese-astrology
Autres Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Calculates Chinese astrology readings including BaZi charts, compatibility, zodiac profiles, almanac dates, lunar calendar conversions, and luck pillars.

get_chinese_astrology_calendar_day_date
Get the almanac for a day - Tong Shu API with day officers and mansions
Return the full almanac reading of one day: its lunisolar date, the year, month and day pillars with their Na Yin, the day officer from the twelve jian chu sequence, the lunar mansion on duty, the zodiac animal the day clashes with, and the activities the officer favours or opposes. The day officer is the layer a printed almanac reaches its verdict from first, and the response says exactly what it rules on rather than reducing the day to a single score. The year and month pillars here are attributed by whole days, which is what an almanac prints: the day a solar term falls on belongs to the new period for its whole length, however late in the day the term arrives. Built for date pickers, daily calendar widgets, and wedding or opening date tools.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'date': '1990-06-15'}], 'required': ['date'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Gregorian date in YYYY-MM-DD format, evaluated at the reference meridian. Years 1900 to 2100.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['date', 'lunar', 'yearPillar', 'monthPillar', 'dayPillar', 'dayOfficer', 'mansion', 'clashAnimal', 'favours', 'avoids'], 'properties': {'date': {'type': 'string'}, 'lunar': {'type': 'object', 'required': ['year', 'month', 'day', 'isLeapMonth', 'monthLength', 'date'], 'properties': {'day': {'type': 'number'}, 'date': {'type': 'string'}, 'year': {'type': 'number'}, 'month': {'type': 'number'}, 'isLeapMonth': {'type': 'boolean'}, 'monthLength': {'type': 'number'}}}, 'avoids': {'type': 'array', 'items': {'type': 'string'}}, 'favours': {'type': 'array', 'items': {'type': 'string'}}, 'mansion': {'type': 'object', 'required': ['number', 'name', 'chinese', 'pinyin', 'palace', 'planet', 'animal'], 'properties': {'name': {'type': 'string'}, 'animal': {'type': 'string'}, 'number': {'type': 'number'}, 'palace': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'planet': {'type': 'string'}, 'chinese': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'animalLocalized': {'type': 'string'}}}, 'dayPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'dayOfficer': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'quality', 'meaning'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'quality': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'yearPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'clashAnimal': {'type': 'string'}, 'monthPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'clashAnimalLocalized': {'type': 'string'}}}
get_chinese_astrology_calendar_monthly
Get a month of almanac days - Chinese calendar month view API
Return every day of one Gregorian month of the Chinese almanac with its lunisolar date, its three pillars, its day officer, its lunar mansion and its clash animal, plus the solar terms that fall inside the month. This is the month view a calendar widget renders in one call rather than thirty one. Omit the year and month to get the month in progress. Built for calendar UIs, almanac pages, and planning tools that show a whole month at a glance.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{}], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'year': {'type': 'integer', 'example': 1990, 'maximum': 2100, 'minimum': 1900, 'description': 'Gregorian year, 1900 to 2100. Defaults to the current UTC year when omitted, together with month.'}, 'month': {'type': 'integer', 'example': 6, 'maximum': 12, 'minimum': 1, 'description': 'Gregorian month, 1 to 12. Defaults to the current UTC month when omitted, together with year.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['year', 'month', 'total', 'solarTerms', 'days'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'lunar', 'yearPillar', 'monthPillar', 'dayPillar', 'dayOfficer', 'mansion', 'clashAnimal', 'favours', 'avoids'], 'properties': {'date': {'type': 'string'}, 'lunar': {'type': 'object', 'required': ['year', 'month', 'day', 'isLeapMonth', 'monthLength', 'date'], 'properties': {'day': {'type': 'number'}, 'date': {'type': 'string'}, 'year': {'type': 'number'}, 'month': {'type': 'number'}, 'isLeapMonth': {'type': 'boolean'}, 'monthLength': {'type': 'number'}}}, 'avoids': {'type': 'array', 'items': {'type': 'string'}}, 'favours': {'type': 'array', 'items': {'type': 'string'}}, 'mansion': {'type': 'object', 'required': ['number', 'name', 'chinese', 'pinyin', 'palace', 'planet', 'animal'], 'properties': {'name': {'type': 'string'}, 'animal': {'type': 'string'}, 'number': {'type': 'number'}, 'palace': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'planet': {'type': 'string'}, 'chinese': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'animalLocalized': {'type': 'string'}}}, 'dayPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'dayOfficer': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'quality', 'meaning'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'quality': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'yearPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'clashAnimal': {'type': 'string'}, 'monthPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'clashAnimalLocalized': {'type': 'string'}}}}, 'year': {'type': 'number'}, 'month': {'type': 'number'}, 'total': {'type': 'number'}, 'solarTerms': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'type', 'date', 'instantUtc'], 'properties': {'id': {'type': 'string'}, 'date': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'instantUtc': {'type': 'string'}}}}}}
get_chinese_astrology_calendar_solar_terms_year
List the 24 solar terms - Jie Qi calendar API with exact instants
Return all 24 solar terms of a year as astronomical instants rather than dates, each computed from the moment the sun reaches its exact apparent longitude at 15 degree steps. The year is the SOLAR year, which opens at Li Chun in early February, so Minor Cold and Major Cold, the last two terms, are dated in the January of the following Gregorian year. Every instant is returned twice, once in UTC and once at the UTC+8 reference meridian the Chinese calendar is defined on. Built for calendar apps, festival scheduling, and any BaZi feature that has to place a birth on the correct side of a term boundary.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'year': 2026}], 'required': ['year'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'year': {'type': 'integer', 'example': 2026, 'maximum': 2100, 'minimum': 1900, 'description': 'Solar year, 1900 to 2100. The year opens at Li Chun rather than on 1 January, so its last two terms fall in the following January.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['year', 'referenceOffset', 'total', 'terms'], 'properties': {'year': {'type': 'number'}, 'terms': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'longitude', 'type', 'instantUtc', 'localDate', 'localTime'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'localDate': {'type': 'string'}, 'localTime': {'type': 'string'}, 'longitude': {'type': 'number'}, 'instantUtc': {'type': 'string'}}}}, 'total': {'type': 'number'}, 'referenceOffset': {'type': 'number'}}}
get_chinese_astrology_elements
List the five elements - Wu Xing API with generating and controlling cycles
Return the five phases of Wu Xing with the Chinese character, the season and direction each governs, the Heavenly Stems and Earthly Branches that carry it, and both of the cycles that connect them. The generating cycle and the controlling cycle are returned as ordered rings as well as on each phase, so a caller can render either without deriving it. This is the one place the five phase vocabulary is defined: BaZi charts, Na Yin, zodiac element variants and every feng shui star reuse these identifiers rather than restating them.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{}], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'limit': {'type': 'integer', 'default': 5, 'example': 5, 'maximum': 5, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-5, default 5.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['total', 'limit', 'offset', 'generatingCycle', 'controllingCycle', 'elements'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'offset': {'type': 'number'}, 'elements': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'season', 'direction', 'generates', 'generatedBy', 'controls', 'controlledBy', 'stems', 'branches', 'meaning'], 'properties': {'id': {'type': 'string'}, 'stems': {'type': 'array', 'items': {'type': 'string'}}, 'pinyin': {'type': 'string'}, 'season': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'branches': {'type': 'array', 'items': {'type': 'string'}}, 'controls': {'type': 'string'}, 'direction': {'type': 'string'}, 'generates': {'type': 'string'}, 'generatedBy': {'type': 'string'}, 'controlledBy': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}}, 'generatingCycle': {'type': 'array', 'items': {'type': 'string'}}, 'controllingCycle': {'type': 'array', 'items': {'type': 'string'}}}}
get_chinese_astrology_zodiac_animals
List the 12 Chinese zodiac animals - Sheng Xiao sign catalogue
Retrieve all twelve Chinese zodiac animals in cycle order, from Rat through Pig. Each entry returns the machine id, the Chinese character and tone-marked pinyin for the animal, its Earthly Branch, the fixed Five Element phase and yin or yang polarity of that branch, and a set of trait keywords. Built for sign pickers, zodiac cards and compatibility widgets that need the whole set in one call.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{}], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'limit': {'type': 'integer', 'default': 12, 'example': 12, 'maximum': 12, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-12, default 12.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['total', 'limit', 'offset', 'animals'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'offset': {'type': 'number'}, 'animals': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'branch', 'element', 'polarity', 'traits'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'branch': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'traits': {'type': 'array', 'items': {'type': 'string'}}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}}}}
get_chinese_astrology_zodiac_animals_id
Get one Chinese zodiac animal - Full sign profile with compatibility partners
Retrieve the complete profile of one Chinese zodiac animal: character summary, strengths, weaknesses, trait keywords, the double-hour its Earthly Branch governs, and its five element variants with the Gregorian years that carry each one. Also returns the four classical branch relationships, the three-harmony trine it belongs to, its six-harmony secret friend, its clashing opposite and its harming partner. Built for sign detail pages and compatibility features.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'id': 'rat'}], 'required': ['id'], 'properties': {'id': {'enum': ['rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake', 'horse', 'goat', 'monkey', 'rooster', 'dog', 'pig'], 'type': 'string', 'example': 'rat', 'description': 'Animal id, case-insensitive and punctuation-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig. The sheep and the ram are the same animal as the goat and resolve to goat.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'branch', 'element', 'polarity', 'traits', 'summary', 'strengths', 'weaknesses', 'compatibilitySummary', 'hours', 'trine', 'secretFriend', 'clashPartner', 'harmPartner', 'elementVariants'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'hours': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'number'}, 'start': {'type': 'number'}}}, 'trine': {'type': 'object', 'required': ['id', 'number', 'element', 'chinese', 'pinyin', 'members', 'theme'], 'properties': {'id': {'type': 'string'}, 'theme': {'type': 'string'}, 'number': {'type': 'number'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'members': {'type': 'array', 'items': {'type': 'string'}}, 'elementLocalized': {'type': 'string'}}}, 'branch': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'traits': {'type': 'array', 'items': {'type': 'string'}}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'summary': {'type': 'string'}, 'polarity': {'type': 'string'}, 'strengths': {'type': 'array', 'items': {'type': 'string'}}, 'weaknesses': {'type': 'array', 'items': {'type': 'string'}}, 'harmPartner': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'clashPartner': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'secretFriend': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'element'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'nameLocalized': {'type': 'string'}, 'elementVariants': {'type': 'array', 'items': {'type': 'object', 'required': ['element', 'polarity', 'stem', 'pillar', 'years'], 'properties': {'stem': {'type': 'string'}, 'years': {'type': 'array', 'items': {'type': 'number'}}, 'pillar': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}}, 'elementLocalized': {'type': 'string'}, 'compatibilitySummary': {'type': 'string'}}}
get_chinese_astrology_zodiac_compatibility_sign1_sign2
Chinese zodiac compatibility - Trine, six harmony, clash and harm analysis
Score and explain the relationship between two Chinese zodiac animals from the classical branch relations rather than from a lookup table of opinions. Returns which of the six relations the pair stands in, a score out of 100, the phase the two branches combine into where they combine at all, and a composed reading with strengths, frictions and advice. The six relations are mutually exclusive by construction, so exactly one applies to any pair. Built for matchmaking features, relationship reports and compatibility widgets.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'sign1': 'rat', 'sign2': 'dragon'}], 'required': ['sign1', 'sign2'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'sign1': {'enum': ['rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake', 'horse', 'goat', 'monkey', 'rooster', 'dog', 'pig'], 'type': 'string', 'example': 'rat', 'description': 'First animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.'}, 'sign2': {'enum': ['rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake', 'horse', 'goat', 'monkey', 'rooster', 'dog', 'pig'], 'type': 'string', 'example': 'dragon', 'description': 'Second animal id, case-insensitive. The relation is symmetric, so swapping the two returns the same relationship and the same score, with the reading written from the first sign point of view.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Schéma de sortie
{'type': 'object', 'required': ['signs', 'relationship', 'relationshipName', 'relationshipChinese', 'relationshipPinyin', 'score', 'verdict', 'summary', 'strengths', 'frictions', 'advice'], 'properties': {'score': {'type': 'number'}, 'signs': {'type': 'object', 'required': ['first', 'second'], 'properties': {'first': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'branch', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'branch': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'second': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'branch', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'branch': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}}}, 'advice': {'type': 'string'}, 'summary': {'type': 'string'}, 'verdict': {'type': 'string'}, 'frictions': {'type': 'array', 'items': {'type': 'string'}}, 'strengths': {'type': 'array', 'items': {'type': 'string'}}, 'relationship': {'type': 'string'}, 'sharedElement': {'type': 'string'}, 'relationshipName': {'type': 'string'}, 'relationshipPinyin': {'type': 'string'}, 'relationshipChinese': {'type': 'string'}, 'sharedElementLocalized': {'type': 'string'}, 'relationshipNameLocalized': {'type': 'string'}}}
get_chinese_astrology_zodiac_id_daily
Daily Chinese zodiac reading - Day pillar forecast by animal sign
Get the daily reading for one Chinese zodiac animal, built from the sexagenary day pillar rather than from a rotation of stock text. The day carries its own Earthly Branch, that branch stands in exactly one of six classical relations to the requested sign, and the reading is that relation applied to the sign temperament. Returns the day pillar, the relation, an energy rating, overview, love and career guidance, advice, and the sexagenary year in force with its Ben Ming Nian flag. Content is fixed for a given date and rolls over at midnight, by default UTC.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'id': 'rat'}], 'required': ['id'], 'properties': {'id': {'enum': ['rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake', 'horse', 'goat', 'monkey', 'rooster', 'dog', 'pig'], 'type': 'string', 'example': 'rat', 'description': 'Animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.'}, 'date': {'type': 'string', 'format': 'date', 'example': '2026-04-03', 'description': 'Reading date in YYYY-MM-DD format. Past and future dates are both supported, for editorial scheduling and backfill. Defaults to the current day in the timezone parameter.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'timezone': {'type': 'string', 'example': 'America/New_York', 'description': 'Selects which day counts as current when date is omitted. Defaults to UTC, so the reading rolls over at 00:00 UTC each day. Pass the timezone of the end user to roll over on their local clock instead. Ignored when date is set. Accepts an IANA name (e.g. "America/New_York"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00").'}}}
Schéma de sortie
{'type': 'object', 'required': ['animal', 'date', 'dayPillar', 'relationship', 'energyRating', 'overview', 'love', 'career', 'advice', 'year', 'benMingNian'], 'properties': {'date': {'type': 'string'}, 'love': {'type': 'string'}, 'year': {'type': 'object', 'required': ['pillar', 'animal', 'relationship', 'note'], 'properties': {'note': {'type': 'string'}, 'animal': {'type': 'string'}, 'pillar': {'type': 'string'}, 'relationship': {'type': 'string'}, 'animalLocalized': {'type': 'string'}}}, 'advice': {'type': 'string'}, 'animal': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'branch', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'branch': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'career': {'type': 'string'}, 'overview': {'type': 'string'}, 'dayPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'animal', 'element'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'animal': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'element': {'type': 'string'}}}, 'benMingNian': {'type': 'boolean'}, 'energyRating': {'type': 'number', 'maximum': 10, 'minimum': 1}, 'relationship': {'type': 'string'}}}
post_chinese_astrology_bazi_annual_forecast
Calculate BaZi annual forecast - Liu Nian yearly pillar API
Read one Gregorian year against a natal BaZi chart. Returns the annual pillar for that year, the Ten God relation its stem holds to the natal Day Master, the same reading for the hidden stem of its branch, how the annual branch stands to the natal year branch including the ben ming nian return of the birth animal, and every combination, clash, harm and punishment the annual pillar forms with each of the four natal pillars. Built for yearly horoscope features, timing tools, and agents that need a year read against a specific chart rather than against an animal sign.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'date': '1990-06-15', 'time': '14:30:00', 'year': 2026, 'timezone': 'America/New_York'}], 'required': ['date', 'time', 'timezone', 'year'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'time': {'type': 'string', 'format': 'time', 'example': '14:30:00', 'description': 'Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere.'}, 'year': {'type': 'integer', 'example': 2026, 'maximum': 2649, 'minimum': 1551, 'description': 'Gregorian year to read against the natal chart. The annual pillar for that year is resolved under the same year boundary the request selected, so a li-chun reading and a lunar-new-year reading of the same calendar year can differ.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'latitude': {'type': 'number', 'default': 0, 'example': 0, 'maximum': 90, 'minimum': -90, 'description': 'Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string', 'default': 'clock', 'example': 'clock', 'description': 'Which clock the day boundary and the hour branch are read from, so a correction that carries a birth across midnight moves the day pillar with the hour. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it.'}, 'longitude': {'type': 'number', 'example': 116.4, 'maximum': 180, 'minimum': -180, 'description': 'Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock".'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string', 'default': 'split-zi', 'example': 'split-zi', 'description': 'Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth.'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string', 'default': 'li-chun', 'example': 'li-chun', 'description': 'Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun.'}}}
Schéma de sortie
{'type': 'object', 'required': ['birthData', 'conventions', 'year', 'annualPillar', 'animal', 'tenGod', 'branchTenGod', 'yearBranchRelation', 'benMingNian', 'yearBranchRelationMeaning', 'interactions', 'summary'], 'properties': {'year': {'type': 'number'}, 'animal': {'type': 'string'}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'summary': {'type': 'string'}, 'birthData': {'type': 'object', 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date'}, 'time': {'type': 'string', 'format': 'time'}, 'latitude': {'type': 'number', 'default': 0, 'maximum': 90, 'minimum': -90}, 'timezone': {'type': 'number'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}}}, 'benMingNian': {'type': 'boolean'}, 'conventions': {'type': 'object', 'required': ['dayBoundary', 'yearBoundary', 'hourClock'], 'properties': {'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string'}}}, 'annualPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'naYin', 'naYinChinese'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'naYin': {'type': 'string'}, 'branch': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'animal', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'animal': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'animalLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'number': {'type': 'number'}, 'naYinChinese': {'type': 'string'}}}, 'branchTenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'interactions': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'chinese', 'pinyin', 'quality', 'positions', 'members', 'meaning'], 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'members': {'type': 'array', 'items': {'type': 'string'}}, 'quality': {'type': 'string'}, 'variety': {'type': 'string'}, 'complete': {'type': 'boolean'}, 'positions': {'type': 'array', 'items': {'type': 'string'}}, 'transformsTo': {'type': 'string'}}}}, 'animalLocalized': {'type': 'string'}, 'yearBranchRelation': {'type': 'string'}, 'yearBranchRelationMeaning': {'type': 'string'}}}
post_chinese_astrology_bazi_chart
Generate BaZi chart - Four Pillars of Destiny calculator API
Calculate a complete BaZi chart, the Four Pillars of Destiny, from a birth moment. Returns the year, month, day and hour pillars with every Heavenly Stem and Earthly Branch, the stems hidden inside each branch, the Ten God relation each one holds to the Day Master, the Na Yin sound element of each pair, the five-element balance across the chart, and the combinations and clashes running between the pillars. The day boundary, year boundary and hour clock are all selectable and the applied conventions come back on every response, so a chart is self-describing. Built for astrology apps, matchmaking services, and agents that need a Four Pillars reading they can reproduce.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'date': '1990-06-15', 'time': '14:30:00', 'timezone': 'America/New_York'}], 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'time': {'type': 'string', 'format': 'time', 'example': '14:30:00', 'description': 'Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'latitude': {'type': 'number', 'default': 0, 'example': 0, 'maximum': 90, 'minimum': -90, 'description': 'Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string', 'default': 'clock', 'example': 'clock', 'description': 'Which clock the day boundary and the hour branch are read from, so a correction that carries a birth across midnight moves the day pillar with the hour. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it.'}, 'longitude': {'type': 'number', 'example': 116.4, 'maximum': 180, 'minimum': -180, 'description': 'Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock".'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string', 'default': 'split-zi', 'example': 'split-zi', 'description': 'Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth.'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string', 'default': 'li-chun', 'example': 'li-chun', 'description': 'Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun.'}}}
Schéma de sortie
{'type': 'object', 'required': ['birthData', 'conventions', 'pillars', 'dayMaster', 'zodiacAnimal', 'fiveElements', 'interactions', 'summary'], 'properties': {'pillars': {'type': 'array', 'items': {'type': 'object', 'required': ['position', 'id', 'number', 'stem', 'branch', 'tenGod', 'hiddenStems', 'naYin', 'naYinChinese', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'naYin': {'type': 'string'}, 'branch': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'animal', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'animal': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'animalLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'number': {'type': 'number'}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'position': {'type': 'string'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'object', 'required': ['stem', 'role', 'tenGod'], 'properties': {'role': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}}}}, 'naYinChinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}, 'naYinElementLocalized': {'type': 'string'}}}}, 'summary': {'type': 'string'}, 'birthData': {'type': 'object', 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date'}, 'time': {'type': 'string', 'format': 'time'}, 'latitude': {'type': 'number', 'default': 0, 'maximum': 90, 'minimum': -90}, 'timezone': {'type': 'number'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}}}, 'dayMaster': {'type': 'object', 'required': ['stem', 'chinese', 'pinyin', 'element', 'polarity', 'nature'], 'properties': {'stem': {'type': 'string'}, 'nature': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'conventions': {'type': 'object', 'required': ['dayBoundary', 'yearBoundary', 'hourClock'], 'properties': {'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string'}}}, 'fiveElements': {'type': 'array', 'items': {'type': 'object', 'required': ['element', 'count', 'level', 'reading'], 'properties': {'count': {'type': 'number'}, 'level': {'type': 'string'}, 'element': {'type': 'string'}, 'reading': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}}, 'interactions': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'chinese', 'pinyin', 'quality', 'positions', 'members', 'meaning'], 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'members': {'type': 'array', 'items': {'type': 'string'}}, 'quality': {'type': 'string'}, 'variety': {'type': 'string'}, 'complete': {'type': 'boolean'}, 'positions': {'type': 'array', 'items': {'type': 'string'}}, 'transformsTo': {'type': 'string'}}}}, 'zodiacAnimal': {'type': 'string'}, 'zodiacAnimalLocalized': {'type': 'string'}}}
post_chinese_astrology_bazi_compatibility
Calculate BaZi compatibility - Four Pillars matchmaking API
Compare two BaZi charts pillar by pillar, the Chinese astrology reading of how two people match. Returns both resolved charts, how the two Day Masters stand to each other on the five-phase cycle, and every combination, clash, harm and punishment that crosses between them, each naming the two positions it joins. A tallied score summarises the balance and the interaction list behind it is returned in full, so a caller that disagrees with the weighting can recompute its own. Built for matchmaking products, relationship features, and agents that need a defensible two-chart reading.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'personA': {'date': '1990-06-15', 'time': '14:30:00', 'timezone': 'America/New_York'}, 'personB': {'date': '1990-06-15', 'time': '14:30:00', 'timezone': 'America/New_York'}}], 'required': ['personA', 'personB'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'personA': {'type': 'object', 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary.'}, 'time': {'type': 'string', 'format': 'time', 'example': '14:30:00', 'description': 'Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere.'}, 'latitude': {'type': 'number', 'default': 0, 'example': 0, 'maximum': 90, 'minimum': -90, 'description': 'Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string', 'default': 'clock', 'example': 'clock', 'description': 'Which clock the day boundary and the hour branch are read from, so a correction that carries a birth across midnight moves the day pillar with the hour. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it.'}, 'longitude': {'type': 'number', 'example': 116.4, 'maximum': 180, 'minimum': -180, 'description': 'Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock".'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string', 'default': 'split-zi', 'example': 'split-zi', 'description': 'Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth.'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string', 'default': 'li-chun', 'example': 'li-chun', 'description': 'Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun.'}}, 'description': 'Birth moment of the first person. Each subject carries its own school switches, so two charts built under different conventions can still be compared.'}, 'personB': {'type': 'object', 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary.'}, 'time': {'type': 'string', 'format': 'time', 'example': '14:30:00', 'description': 'Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere.'}, 'latitude': {'type': 'number', 'default': 0, 'example': 0, 'maximum': 90, 'minimum': -90, 'description': 'Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string', 'default': 'clock', 'example': 'clock', 'description': 'Which clock the day boundary and the hour branch are read from, so a correction that carries a birth across midnight moves the day pillar with the hour. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it.'}, 'longitude': {'type': 'number', 'example': 116.4, 'maximum': 180, 'minimum': -180, 'description': 'Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock".'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string', 'default': 'split-zi', 'example': 'split-zi', 'description': 'Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth.'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string', 'default': 'li-chun', 'example': 'li-chun', 'description': 'Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun.'}}, 'description': 'Birth moment of the second person.'}}}
Schéma de sortie
{'type': 'object', 'required': ['personA', 'personB', 'dayMasterRelation', 'interactions', 'score', 'harmoniousCount', 'challengingCount', 'summary'], 'properties': {'score': {'type': 'number'}, 'personA': {'type': 'object', 'required': ['pillars', 'dayMaster', 'strength', 'conventions'], 'properties': {'pillars': {'type': 'array', 'items': {'type': 'object', 'required': ['position', 'id', 'number', 'stem', 'branch', 'tenGod', 'hiddenStems', 'naYin', 'naYinChinese', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'naYin': {'type': 'string'}, 'branch': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'animal', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'animal': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'animalLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'number': {'type': 'number'}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'position': {'type': 'string'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'object', 'required': ['stem', 'role', 'tenGod'], 'properties': {'role': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}}}}, 'naYinChinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}, 'naYinElementLocalized': {'type': 'string'}}}}, 'strength': {'type': 'string'}, 'dayMaster': {'type': 'object', 'required': ['stem', 'chinese', 'pinyin', 'element', 'polarity', 'nature'], 'properties': {'stem': {'type': 'string'}, 'nature': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'conventions': {'type': 'object', 'required': ['dayBoundary', 'yearBoundary', 'hourClock'], 'properties': {'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string'}}}}}, 'personB': {'type': 'object', 'required': ['pillars', 'dayMaster', 'strength', 'conventions'], 'properties': {'pillars': {'type': 'array', 'items': {'type': 'object', 'required': ['position', 'id', 'number', 'stem', 'branch', 'tenGod', 'hiddenStems', 'naYin', 'naYinChinese', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'naYin': {'type': 'string'}, 'branch': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'animal', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'animal': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'animalLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'number': {'type': 'number'}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'position': {'type': 'string'}, 'hiddenStems': {'type': 'array', 'items': {'type': 'object', 'required': ['stem', 'role', 'tenGod'], 'properties': {'role': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}}}}, 'naYinChinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}, 'naYinElementLocalized': {'type': 'string'}}}}, 'strength': {'type': 'string'}, 'dayMaster': {'type': 'object', 'required': ['stem', 'chinese', 'pinyin', 'element', 'polarity', 'nature'], 'properties': {'stem': {'type': 'string'}, 'nature': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'conventions': {'type': 'object', 'required': ['dayBoundary', 'yearBoundary', 'hourClock'], 'properties': {'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string'}}}}}, 'summary': {'type': 'string'}, 'interactions': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'chinese', 'pinyin', 'quality', 'positions', 'members', 'meaning'], 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'members': {'type': 'array', 'items': {'type': 'string'}}, 'quality': {'type': 'string'}, 'variety': {'type': 'string'}, 'complete': {'type': 'boolean'}, 'positions': {'type': 'array', 'items': {'type': 'string'}}, 'transformsTo': {'type': 'string'}}}}, 'harmoniousCount': {'type': 'number'}, 'challengingCount': {'type': 'number'}, 'dayMasterRelation': {'type': 'string'}}}
post_chinese_astrology_bazi_day_master
Calculate Day Master strength - BaZi favorable element API
Assess how well the Day Master is supported by the rest of a BaZi chart, and which of the five elements help it. Uses the classical three-factor method: whether the birth month season backs the Day Master element, whether any branch stores a root for it, and whether the other stems and the branches outside the month help or spend it. Returns the verdict, an auditable score with each factor contribution, the seasonal state, the root count, the element headcount, and the favorable and unfavorable element lists that follow from the verdict. Built for chart readers, remedy features, and agents that need the usable half of a Four Pillars reading.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'date': '1990-06-15', 'time': '14:30:00', 'timezone': 'America/New_York'}], 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'time': {'type': 'string', 'format': 'time', 'example': '14:30:00', 'description': 'Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'latitude': {'type': 'number', 'default': 0, 'example': 0, 'maximum': 90, 'minimum': -90, 'description': 'Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string', 'default': 'clock', 'example': 'clock', 'description': 'Which clock the day boundary and the hour branch are read from, so a correction that carries a birth across midnight moves the day pillar with the hour. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it.'}, 'longitude': {'type': 'number', 'example': 116.4, 'maximum': 180, 'minimum': -180, 'description': 'Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock".'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string', 'default': 'split-zi', 'example': 'split-zi', 'description': 'Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth.'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string', 'default': 'li-chun', 'example': 'li-chun', 'description': 'Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun.'}}}
Schéma de sortie
{'type': 'object', 'required': ['birthData', 'conventions', 'dayMaster', 'verdict', 'score', 'seasonalState', 'seasonalStateChinese', 'seasonalStateMeaning', 'rootCount', 'factors', 'favorableElements', 'unfavorableElements', 'fiveElements', 'summary'], 'properties': {'score': {'type': 'number'}, 'factors': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'contribution', 'detail'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'detail': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'contribution': {'type': 'number'}}}}, 'summary': {'type': 'string'}, 'verdict': {'type': 'string'}, 'birthData': {'type': 'object', 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date'}, 'time': {'type': 'string', 'format': 'time'}, 'latitude': {'type': 'number', 'default': 0, 'maximum': 90, 'minimum': -90}, 'timezone': {'type': 'number'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}}}, 'dayMaster': {'type': 'object', 'required': ['stem', 'chinese', 'pinyin', 'element', 'polarity', 'nature'], 'properties': {'stem': {'type': 'string'}, 'nature': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'rootCount': {'type': 'number'}, 'conventions': {'type': 'object', 'required': ['dayBoundary', 'yearBoundary', 'hourClock'], 'properties': {'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string'}}}, 'fiveElements': {'type': 'array', 'items': {'type': 'object', 'required': ['element', 'count', 'level', 'reading'], 'properties': {'count': {'type': 'number'}, 'level': {'type': 'string'}, 'element': {'type': 'string'}, 'reading': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}}, 'seasonalState': {'type': 'string'}, 'favorableElements': {'type': 'array', 'items': {'type': 'string'}}, 'unfavorableElements': {'type': 'array', 'items': {'type': 'string'}}, 'seasonalStateChinese': {'type': 'string'}, 'seasonalStateMeaning': {'type': 'string'}}}
post_chinese_astrology_bazi_luck_pillars
Calculate luck pillars - BaZi Da Yun ten-year cycle API
Calculate the da yun luck pillars, the ten-year periods a BaZi chart walks through after birth. Returns the direction the sequence runs, the age it begins at with the day count behind that age, each ten-year pillar with the Ten God relation its stem holds to the natal Day Master, and an optional year-by-year annual overlay. Direction follows the classical rule: a male born in a yang-stem year and a female born in a yin-stem year run forward through the sexagenary cycle, the other two combinations run backward. Built for astrology apps, life-timing features, and agents that need a reproducible forecast spine.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'date': '1990-06-15', 'time': '14:30:00', 'gender': 'male', 'timezone': 'America/New_York'}], 'required': ['date', 'time', 'timezone', 'gender'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'time': {'type': 'string', 'format': 'time', 'example': '14:30:00', 'description': 'Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere.'}, 'count': {'type': 'integer', 'default': 8, 'example': 8, 'maximum': 12, 'minimum': 1, 'description': 'How many ten-year luck pillars to return, 1 to 12. Eight covers eighty years from the start age, which reaches past a normal lifetime for most start ages.'}, 'gender': {'enum': ['male', 'female'], 'type': 'string', 'example': 'male', 'description': 'Subject sex, used only to pick the luck-pillar direction: a male born in a yang-stem year and a female born in a yin-stem year run forward through the sexagenary cycle, and the other two combinations run backward. It affects nothing else in the response.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'latitude': {'type': 'number', 'default': 0, 'example': 0, 'maximum': 90, 'minimum': -90, 'description': 'Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string', 'default': 'clock', 'example': 'clock', 'description': 'Which clock the day boundary and the hour branch are read from, so a correction that carries a birth across midnight moves the day pillar with the hour. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it.'}, 'longitude': {'type': 'number', 'example': 116.4, 'maximum': 180, 'minimum': -180, 'description': 'Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock".'}, 'annualYears': {'type': 'integer', 'default': 10, 'example': 10, 'maximum': 20, 'minimum': 1, 'description': 'How many consecutive years the annual overlay covers, 1 to 20. Ignored unless annualFromYear is present.'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string', 'default': 'split-zi', 'example': 'split-zi', 'description': 'Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth.'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string', 'default': 'li-chun', 'example': 'li-chun', 'description': 'Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun.'}, 'annualFromYear': {'type': 'integer', 'example': 2026, 'maximum': 2649, 'minimum': 1551, 'description': 'First Gregorian year of the annual pillar overlay. Omit it to leave annualPillars out of the response entirely. The annual pillar is the year the chart is currently walking through, read against the ten-year luck pillar underneath it.'}}}
Schéma de sortie
{'type': 'object', 'required': ['birthData', 'conventions', 'gender', 'direction', 'startAge', 'startAgeMonths', 'daysToTerm', 'boundaryTerm', 'boundaryTermName', 'luckPillars', 'summary'], 'properties': {'gender': {'type': 'string'}, 'summary': {'type': 'string'}, 'startAge': {'type': 'number'}, 'birthData': {'type': 'object', 'required': ['date', 'time', 'timezone'], 'properties': {'date': {'type': 'string', 'format': 'date'}, 'time': {'type': 'string', 'format': 'time'}, 'latitude': {'type': 'number', 'default': 0, 'maximum': 90, 'minimum': -90}, 'timezone': {'type': 'number'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180}}}, 'direction': {'type': 'string'}, 'daysToTerm': {'type': 'number'}, 'conventions': {'type': 'object', 'required': ['dayBoundary', 'yearBoundary', 'hourClock'], 'properties': {'hourClock': {'enum': ['clock', 'local-mean', 'solar'], 'type': 'string'}, 'dayBoundary': {'enum': ['split-zi', 'midnight', 'early-zi'], 'type': 'string'}, 'yearBoundary': {'enum': ['li-chun', 'lunar-new-year'], 'type': 'string'}}}, 'luckPillars': {'type': 'array', 'items': {'type': 'object', 'required': ['index', 'id', 'number', 'stem', 'branch', 'tenGod', 'startAge', 'endAge', 'startYear', 'endYear'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'index': {'type': 'number'}, 'branch': {'type': 'object', 'required': ['id', 'chinese', 'pinyin', 'animal', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'animal': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'animalLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'endAge': {'type': 'number'}, 'number': {'type': 'number'}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'endYear': {'type': 'number'}, 'startAge': {'type': 'number'}, 'startYear': {'type': 'number'}}}}, 'boundaryTerm': {'type': 'string'}, 'annualPillars': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'id', 'number', 'tenGod', 'luckPillarIndex'], 'properties': {'id': {'type': 'string'}, 'year': {'type': 'number'}, 'number': {'type': 'number'}, 'tenGod': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'category', 'keynote'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'keynote': {'type': 'string'}, 'category': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'luckPillarIndex': {'type': 'number'}}}}, 'startAgeMonths': {'type': 'number'}, 'boundaryTermName': {'type': 'string'}}}
post_chinese_astrology_calendar_auspicious_days
Find auspicious days - Chinese date selection API for weddings and openings
Search a date range for the days a chosen activity is favoured on, ranked by the jian chu day officer and filtered against a zodiac animal to protect. Every candidate day comes back with its officer, its pillars, its lunar date and the animal it clashes with, so a caller can show the reasoning rather than a bare verdict. The range is capped at 93 days, which is a quarter, because date selection is done inside a planning window rather than across a lifetime. Built for wedding planners, business opening tools, and moving and travel date pickers.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'endDate': '2026-04-30', 'activity': 'wedding', 'startDate': '2026-03-01'}], 'required': ['activity', 'startDate', 'endDate'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'endDate': {'type': 'string', 'format': 'date', 'example': '2026-04-30', 'description': 'Last date of the range to search, inclusive. The range may not exceed 93 days.'}, 'activity': {'enum': ['wedding', 'travel', 'moving-house', 'opening-business', 'signing-contracts', 'construction', 'groundbreaking', 'burial', 'medical-treatment', 'praying'], 'type': 'string', 'example': 'wedding', 'description': 'Activity to choose a date for. One of wedding, travel, moving-house, opening-business, signing-contracts, construction, groundbreaking, burial, medical-treatment, praying. Matching folds case and punctuation, so moving-house and MOVING_HOUSE both resolve.'}, 'startDate': {'type': 'string', 'format': 'date', 'example': '2026-03-01', 'description': 'First date of the range to search, inclusive.'}, 'avoidAnimal': {'enum': ['rat', 'ox', 'tiger', 'rabbit', 'dragon', 'snake', 'horse', 'goat', 'monkey', 'rooster', 'dog', 'pig'], 'type': 'string', 'example': 'rat', 'description': 'Zodiac animal to protect. Days that clash with this animal are dropped from the results, which is how a date is chosen around the people attending rather than in the abstract. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.'}}}
Schéma de sortie
{'type': 'object', 'required': ['activity', 'activityLabel', 'startDate', 'endDate', 'daysSearched', 'total', 'days'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'lunar', 'yearPillar', 'monthPillar', 'dayPillar', 'dayOfficer', 'mansion', 'clashAnimal', 'favours', 'avoids'], 'properties': {'date': {'type': 'string'}, 'lunar': {'type': 'object', 'required': ['year', 'month', 'day', 'isLeapMonth', 'monthLength', 'date'], 'properties': {'day': {'type': 'number'}, 'date': {'type': 'string'}, 'year': {'type': 'number'}, 'month': {'type': 'number'}, 'isLeapMonth': {'type': 'boolean'}, 'monthLength': {'type': 'number'}}}, 'avoids': {'type': 'array', 'items': {'type': 'string'}}, 'favours': {'type': 'array', 'items': {'type': 'string'}}, 'mansion': {'type': 'object', 'required': ['number', 'name', 'chinese', 'pinyin', 'palace', 'planet', 'animal'], 'properties': {'name': {'type': 'string'}, 'animal': {'type': 'string'}, 'number': {'type': 'number'}, 'palace': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'planet': {'type': 'string'}, 'chinese': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'animalLocalized': {'type': 'string'}}}, 'dayPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'dayOfficer': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'quality', 'meaning'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'meaning': {'type': 'string'}, 'quality': {'type': 'string'}, 'nameLocalized': {'type': 'string'}}}, 'yearPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'clashAnimal': {'type': 'string'}, 'monthPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch', 'chinese', 'naYin', 'naYinElement'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'naYin': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}, 'chinese': {'type': 'string'}, 'naYinElement': {'type': 'string'}}}, 'clashAnimalLocalized': {'type': 'string'}}}}, 'total': {'type': 'number'}, 'endDate': {'type': 'string'}, 'activity': {'type': 'string'}, 'startDate': {'type': 'string'}, 'avoidAnimal': {'type': 'string'}, 'daysSearched': {'type': 'number'}, 'activityLabel': {'type': 'string'}, 'avoidAnimalLocalized': {'type': 'string'}}}
post_chinese_astrology_calendar_lunar_date
Convert lunar and Gregorian dates - Chinese lunisolar calendar API
Convert a Gregorian date to the Chinese lunisolar calendar or convert a lunar date back, in one endpoint. The calendar is computed at the UTC+8 reference meridian with the month containing the winter solstice fixed as month 11 and the leap month placed as the first month of the cycle carrying no major solar term, so a lunar date is the same worldwide rather than shifting with the caller timezone. The response reports the length of the lunar month, whether the date sits in a leap month, and which month the year doubles if any. Built for festival calendars, birthday features that follow the lunar date, and any app that has to survive a leap month without shifting every date after it.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{}], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Gregorian date to convert to the lunisolar calendar. Send this OR the lunar fields, never both. Converts from the first day of lunar year 1551 to the last day of lunar year 2648, a little inside the supported date span, because numbering a lunar month needs the winter solstice on each side of it and placing a leap month needs the year before; a date outside that answers 400 date_out_of_range.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'lunarDay': {'type': 'integer', 'example': 23, 'maximum': 30, 'minimum': 1, 'description': 'Day of the lunar month, 1 to 30. Requires lunarYear and lunarMonth.'}, 'lunarYear': {'type': 'integer', 'example': 1990, 'maximum': 2100, 'minimum': 1900, 'description': 'Lunisolar year to convert back to a Gregorian date. Requires lunarMonth and lunarDay.'}, 'lunarMonth': {'type': 'integer', 'example': 5, 'maximum': 12, 'minimum': 1, 'description': 'Lunar month, 1 to 12. Requires lunarYear and lunarDay.'}, 'isLeapMonth': {'type': 'boolean', 'default': False, 'example': False, 'description': 'Set true to address the leap repetition of lunarMonth rather than the first pass. Requesting a leap month a year does not have returns 400.'}}}
Schéma de sortie
{'type': 'object', 'required': ['gregorianDate', 'lunar', 'referenceOffset'], 'properties': {'lunar': {'type': 'object', 'required': ['year', 'month', 'day', 'isLeapMonth', 'monthLength', 'date'], 'properties': {'day': {'type': 'number'}, 'date': {'type': 'string'}, 'year': {'type': 'number'}, 'month': {'type': 'number'}, 'isLeapMonth': {'type': 'boolean'}, 'monthLength': {'type': 'number'}}}, 'gregorianDate': {'type': 'string'}, 'leapMonthOfYear': {'type': 'number'}, 'referenceOffset': {'type': 'number'}}}
post_chinese_astrology_zodiac_sign
Find the Chinese zodiac animal for a birth date - Sheng Xiao calculator
Resolve a birth date to its Chinese zodiac animal, the sexagenary year pillar behind it, and the Five Element phase of that year, so a 1990 birth returns Horse as a Metal Horse rather than merely a Horse. The year boundary is a request parameter because the two schools genuinely disagree for dates in January and early February, and the resolved convention is echoed back so the answer is self-describing. Built for sign lookups, onboarding forms and birthday features.
Lecture seule
Schéma d’entrée
{'type': 'object', 'examples': [{'date': '1990-06-15'}], 'required': ['date'], 'properties': {'date': {'type': 'string', 'format': 'date', 'example': '1990-06-15', 'description': 'Birth date in YYYY-MM-DD format. Only the date is needed: the zodiac animal is a property of the year, so no time, timezone or place changes the answer.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'yearBoundary': {'enum': ['lunar-new-year', 'li-chun'], 'type': 'string', 'default': 'lunar-new-year', 'example': 'lunar-new-year', 'description': 'Which instant starts the zodiac year. lunar-new-year is the folk rule and the default on this route, because it is the rule people mean when they say what animal they are: the sign turns on Chinese New Year, between late January and late February. li-chun is the classical rule every Four Pillars text uses, turning the year at the solar term Beginning of Spring around 4 February. The two agree for roughly eleven months of every year and disagree for the weeks between them, so a 14 February 2026 birth is a Snake under lunar-new-year and a Horse under li-chun. The BaZi routes default to li-chun instead, because a chart and a folk sign are answering different questions.'}}}
Schéma de sortie
{'type': 'object', 'required': ['date', 'animal', 'yearPillar', 'element', 'polarity', 'interpretation', 'conventions'], 'properties': {'date': {'type': 'string'}, 'animal': {'type': 'object', 'required': ['id', 'name', 'chinese', 'pinyin', 'branch', 'element', 'polarity'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'branch': {'type': 'string'}, 'pinyin': {'type': 'string'}, 'chinese': {'type': 'string'}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'nameLocalized': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}, 'element': {'type': 'string'}, 'polarity': {'type': 'string'}, 'yearPillar': {'type': 'object', 'required': ['id', 'number', 'stem', 'branch'], 'properties': {'id': {'type': 'string'}, 'stem': {'type': 'string'}, 'branch': {'type': 'string'}, 'number': {'type': 'number'}}}, 'conventions': {'type': 'object', 'required': ['yearBoundary'], 'properties': {'yearBoundary': {'type': 'string'}}}, 'interpretation': {'type': 'string'}, 'elementLocalized': {'type': 'string'}}}
Modifié
post_chinese_astrology_calendar_lunar_date
1 October 2026 02:54
Modifié
post_chinese_astrology_bazi_annual_forecast
1 October 2026 02:54
Modifié
post_chinese_astrology_bazi_compatibility
1 October 2026 02:54
Modifié
post_chinese_astrology_bazi_day_master
1 October 2026 02:54
Modifié
post_chinese_astrology_bazi_luck_pillars
1 October 2026 02:54
Modifié
post_chinese_astrology_bazi_chart
1 October 2026 02:54
Modifié
get_chinese_astrology_elements
25 September 2026 03:03
Modifié
get_chinese_astrology_zodiac_animals
25 September 2026 03:03
Modifié
post_chinese_astrology_bazi_compatibility
25 September 2026 03:03
Modifié
post_chinese_astrology_bazi_chart
25 September 2026 03:03
Modifié
get_chinese_astrology_elements
21 September 2026 03:01
Modifié
post_chinese_astrology_calendar_auspicious_days
21 September 2026 03:01
Modifié
get_chinese_astrology_calendar_monthly
21 September 2026 03:01
Modifié
get_chinese_astrology_calendar_day_date
21 September 2026 03:01
Modifié
post_chinese_astrology_calendar_lunar_date
21 September 2026 03:01
Modifié
get_chinese_astrology_calendar_solar_terms_year
21 September 2026 03:01
Modifié
get_chinese_astrology_zodiac_id_daily
21 September 2026 03:01
Modifié
get_chinese_astrology_zodiac_compatibility_sign1_sign2
21 September 2026 03:01
Modifié
post_chinese_astrology_zodiac_sign
21 September 2026 03:01
Modifié
get_chinese_astrology_zodiac_animals_id
21 September 2026 03:01
Modifié
get_chinese_astrology_zodiac_animals
21 September 2026 03:01
Modifié
post_chinese_astrology_bazi_annual_forecast
21 September 2026 03:01
Modifié
post_chinese_astrology_bazi_compatibility
21 September 2026 03:01
Modifié
post_chinese_astrology_bazi_day_master
21 September 2026 03:01
Modifié
post_chinese_astrology_bazi_luck_pillars
21 September 2026 03:01
Modifié
post_chinese_astrology_bazi_chart
21 September 2026 03:01
Modifié
get_chinese_astrology_calendar_monthly
19 September 2026 02:52
Modifié
get_chinese_astrology_calendar_day_date
19 September 2026 02:52
Modifié
get_chinese_astrology_calendar_solar_terms_year
19 September 2026 02:52
Ajouté
get_chinese_astrology_elements
17 September 2026 12:37