Changelog
Every change to the askTIAN API is documented here. Breaking changes are clearly marked.
GET /api/trpc/catalogue.changelogSubscribe via RSSv3.75.4Added
systemContent — relatedEndpoints on 19 system pages — All major system pages now surface a Related Endpoints section linking to companion tRPC procedures. New cross-links: qi…Playground — bazi.chart rich visualisation panel — The Playground result panel for bazi.chart now renders a full BaZi Four Pillars table: 4-pillar grid with element colour…Updated
predict.binary — 11 systems (was 10) — BaZi Four Pillars added as system 11 to predict.binary and predict.binaryBatch. Vote logic: Day Master element strength …predict.multi — 8 systems (was 7) — BaZi Four Pillars added as system 8 to predict.multi. Vote logic: element affinity scoring between Day Master element an…ApiDocs + Pricing — predict system counts — Updated all predict.binary/multi system count references from 10→11 and 7→8 across ApiDocs.tsx and Pricing.tsx.systemContent — relatedEndpoints on 19 system pagesAll major system pages now surface a Related Endpoints section linking to companion tRPC procedures. New cross-links: qimen→tian.eastern/tian.eastwest, compatibility→bazi.chart/bazi.shenSha, fengshui→iching.houseNumber/iching.businessName, name→iching.businessName/bazi.shenSha, liuyao→tian.eastern/divination.iching, numerology→iching.batchNumbers/bazi.shenSha, tian-eastern/tian-global→bazi.chart/qimen.calculate, ichingHouseNumber→iching.businessName/iching.batchNumbers, boneWeight/twelvepalaces→bazi.chart/bazi.shenSha, daliu→daLiuRen.calculate/tian.eastern, taiyi→taiYi.calculate/tian.eastern, ifa/vodun/hakata→respective endpoints+tian.african, rammal→rammal.calculate/tian.islamic, anka→anka.calculate/tian.indian, mahabote→mahabote.calculate/bazi.chart.
Playground — bazi.chart rich visualisation panelThe Playground result panel for bazi.chart now renders a full BaZi Four Pillars table: 4-pillar grid with element colour-coding (Wood=green, Fire=red, Earth=amber, Metal=white, Water=blue), Ten Gods badges, Nayin sound, Twelve Life Stage, Day Master card with element analysis, five-element balance chips, and an 8-period Da Yun timeline with age ranges and stem-branch labels.
predict.binary — 11 systems (was 10)BaZi Four Pillars added as system 11 to predict.binary and predict.binaryBatch. Vote logic: Day Master element strength relative to the resolution year's stem element — Yang cycle favours option A, Yin cycle favours option B.
predict.multi — 8 systems (was 7)BaZi Four Pillars added as system 8 to predict.multi. Vote logic: element affinity scoring between Day Master element and each option's semantic energy.
ApiDocs + Pricing — predict system countsUpdated all predict.binary/multi system count references from 10→11 and 7→8 across ApiDocs.tsx and Pricing.tsx.
v3.75.0bazi.chartBaZi Four Pillars of Destiny natal chart endpoint. Computes all four pillars (Year/Month/Day/Hour) with Heavenly Stems, Earthly Branches, Nayin sound, Hidden Stems (藏干), Ten Gods (十神), and Twelve Life Stages (十二長生) for any birth date between 1900 and 2100. Returns Day Master analysis, five-element balance, and eight Da Yun (大運) Major Luck Cycles with LLM interpretation in English or Traditional Chinese. Supports Local Mean Time correction, Late-Zi convention, and configurable timezone offset. 15 TIAN Points per call.
Systems — /systems/baziNew BaZi system page with full SEO content, OG image, and system detail article covering origin, history, how it works, use cases, famous examples (Jack Ma, Bruce Lee, Confucius), and key terms.
Site-wide — endpoint countUpdated endpoint count from 64 to 65 and system count from 57 to 58 across Home, Systems, and ApiDocs pages.
v3.74.0OG Images — all 46 system pagesRegenerated per-tradition OG images for all 46 system pages. Every system now has a unique 1200×630 AI-generated social card with tradition-appropriate iconography, Chinese/Japanese/Korean/Arabic/Sanskrit characters, tradition badge, and askTIAN API branding. Previously missing ogImageUrl entries for boneWeight, mahabote, twelvepalaces, ichingHouseNumber, ichingCarPlate, ichingPhoneNumber, ichingIcNumber, ichingBusinessName, tian-chinese, and tian-asian are now populated.
v3.73.0Systems — tian-chinese and tian-asian OG imagesTIAN Chinese and TIAN Asian system pages now have dedicated OG images showing the 14-system Chinese constellation network and the 4-civilisation Asian quadrant design respectively.
v3.72.0ApiDocs — tian.chinese guideSlugtian.chinese card now links to /guides/whats-new-v3-66-0 (asianBlended guide)
ApiDocs — tian.asian guideSlugtian.asian card now links to /guides/whats-new-v3-66-0 (asianBlended guide)
ApiDocs — tian.global rateLimitOrange rate-limit callout on tian.global card: Max 6 req/min sustained; SSE stream counts as 1 call
Playground — tian.chinese in ENDPOINT_GUIDE_MAPRelated Guide panel for tian.chinese links to app.asktian.com Integration Guide
v3.71.0Systems page statsSystems page now shows 57 systems / 7 traditions / 64 endpoints (was 34 traditions / 46 endpoints)
Home.tsx hero stats57 systems, 64 endpoints, 3,481 lots, 11 I Ching endpoints (was 48 / 46 / 3,531 / 9)
ApiDocs — predict.binaryBatch rateLimit calloutOrange rate-limit callout on predict.binaryBatch card: Max 18 req/min sustained
ApiDocs — tian.global guideSlug deep-linktian.global card now links to /guides/whats-new-v3-66-0
Playground — ENDPOINT_GUIDE_MAP Related Guides panelRelated Guide panel appears for tian.global and predict.binaryBatch when selected
v3.70.0Guides — tag filter auto-includes Predict/binaryBatch/Oracle tagsThe Guides tag filter pills are fully dynamic — derived from every guide's tags array. The predict-binary-batch guide's tags (predict, binaryBatch, Oracle, SDK) now appear as filter pills automatically. No hardcoded tag list to maintain.
ApiDocs — predict.binaryBatch deep-link to guideThe predict.binaryBatch endpoint card now shows a 'Read the guide →' amber link at the bottom connecting to /guides/predict-binary-batch. The guideSlug field is a new optional field on the ApiEndpoint type — any future endpoint can get a guide deep-link by adding guideSlug to its definition.
Playground — predict.binaryBatch fixture confirmed completeThe predict.binaryBatch fixture already contains 12 questions with 1 failed question (LLM timeout error), per-system breakdown for all 10 systems, and the full error field. The Load Sample button renders the full result panel including the failed question card.
v3.69.0SiteNav — amber New dot on Guides nav linkBoth desktop and mobile Guides nav links now show a pulsing amber dot when any guide was published within the last 30 days. The dot uses the same amber-400 token as the guide card New badge and auto-expires without any code change. Logic mirrors the existing red dot on the Changelog nav link.
SiteNav — Guides count confirmed dynamicThe Guides count badge in the nav (currently showing 5) is driven by trpc.guides.list.useQuery() with a 5-minute stale time. Adding new guides to the server automatically increments the count without any frontend changes.
Guides — predict.binaryBatch guideNew guide at /guides/predict-binary-batch: batch construction (1–20 questions), resolutionDate ISO 8601 format, proximity weighting table (near-term vs long-horizon), interpreting the systemBreakdown array, confidence threshold table, handling partial failures, idempotent retries with idempotencyKey, recovering lost responses with predict.batchResult, webhook payload shape, and a full SDK example. Tagged: predict, binaryBatch, Oracle, SDK.
v3.68.0Guides — 30-day amber New badge added to guide cardsAll guide cards on /guides now show an amber New badge when the guide was published within the last 30 days. The badge uses the same amber-500/20 token as the Playground endpoint badge. Currently all four guides qualify (oldest: April 8, 2026). The badge auto-expires after 30 days without any code change.
Guides — tag filter verified for whats-new-v3-66-0 (tian.global, asianBlended, SSE, SDK)The Guides index tag filter dynamically collects all unique tags from the guides.list response. The whats-new-v3-66-0 guide is tagged [tian.global, asianBlended, SSE, SDK] and correctly appears when any of those tags are selected. All four tag pills now appear in the filter row.
v3.67.0Guides — What's New in v3.66.0 guide addedA new developer guide at /guides/whats-new-v3-66-0 explains the asianBlended field end-to-end: what it is, when the East–West divergence callout fires (≥8 pts), how to read response.asianBlended in SDK v2.5.1 code, the SSE done event payload shape, and a cost comparison table showing tian.global includes tian.asian for free. Tagged: tian.global, asianBlended, SSE, SDK.
Playground — Simulate SSE Stream button keyboard shortcut S addedThe violet Simulate SSE Stream (free) button for tian.global now shows a [S] keyboard hint badge and has title="Press S to simulate stream". A useEffect keydown listener fires simulateGlobalStream() when S is pressed and tian.global is selected, making the simulation one keypress away.
Guides — app_asktian_integration_guide.md webhook payload updated with asianBlendedThe SSE done event table in the app.asktian.com Integration Guide now lists asianBlended as a new field (✦✦ New in v3.61.0) with a footnote explaining its shape and the ≥8-pt divergence trigger. The TypeScript consumer code block is updated to capture asianBlended, compute eastWestDivergence, and forward both fields to the frontend in the synthesis_complete proxy event.
v3.66.0Pricing — sticky in-page jump nav with TIAN Blended anchorA sticky tab bar now appears below the Pricing hero with six jump links: Plans, How to subscribe, Exchanges, TIAN Blended, Predict Oracle, and FAQ. Each section has a matching id and scroll-mt-12 offset. Enterprise users can jump directly to the TIAN Blended cost comparison table.
ApiDocs — SSE done event code block includes asianBlendedThe traditionScores done event code block in the Streaming section now shows the asianBlended field with blendedScore 82, per-tradition scores, and systemsIncluded: 31. A note below explains it is only present in tian.global done events and that an 8-pt divergence triggers the East–West narrative callout.
Playground — Simulate SSE Stream button for tian.globalA violet 'Simulate SSE Stream (free)' button appears below the Load Sample / Run Live pair when tian.global is selected. Clicking it replays a mock 15-system SSE sequence with synthesis streaming and a done event that includes asianBlended (82/100 vs global 74/100), firing the violet divergence callout — no Enterprise key or TIAN Points required.
v3.65.0Playground — tian.global fixture blendedScore bumped to 74The tian.global fixture blendedScore is now 74 while asianBlended.blendedScore remains 82, creating an 8-point East–West divergence. The violet divergence callout now fires in Sample mode so developers can see the feature without making a live API call.
ApiDocs — tian.global SDK code tab includes asianBlended destructure exampleThe SDK tab for tian.global in ApiDocs now shows a typed asianBlended destructure block with per-tradition scores, systemsIncluded, and a divergence detection check. The streaming done event example is preserved above it.
Pricing — TIAN Blended endpoint cost comparison table addedA new 'TIAN Blended Readings' section on the Pricing page lists all 11 TIAN Blended endpoints with their per-call TIAN Points costs, system counts, and notes. The tian.global row is highlighted as BEST VALUE with a green callout explaining that it includes tian.asian for free (saves 100 pts per call).
v3.64.0Playground — tian.global fixture includes asianBlended fieldThe tian.global pre-built fixture in playgroundFixtures.ts now includes the asianBlended object (blendedScore: 82, traditions: {chinese:76, japanese:84, korean:81, indian:79}, systemsIncluded: 31). The Cross-Asian Sub-Aggregate card now renders in Sample mode without requiring a live API call, and the divergence callout appears correctly when the sub-aggregate diverges from the global score by ≥8 points.
Home.tsx — tian.global hero code block response includes asianBlended fieldThe tian.global rotating code snippet on the landing page now shows asianBlended in the sample response JSON, giving developers an immediate visual of the new field without running a live call.
ApiDocs — tian.asian vs tian.global comparison note addedA green callout box now appears between the tian.asian and tian.global endpoint cards in the TIAN Blended Readings section. It explains that every tian.global response includes asianBlended — a pre-computed cross-Asian sub-aggregate equivalent to a standalone tian.asian call — so Enterprise users do not need a separate tian.asian call when they already have a tian.global response. A secondary note explains when to use tian.asian standalone (100 pts vs 145 pts for tian.global).
v3.63.0Home.tsx — SDK badge bumped to v2.5.1The hero section SDK install badge and npmjs link updated from [email protected] to [email protected], ensuring first-time visitors install the latest version with full TypeScript type safety for TianGlobalResponse, TianGlobalAsianBlended, TianChineseResponse, and TianAsianResponse.
Playground — tian.global Cross-Asian Sub-Aggregate card addedThe tian.global SSE streaming result panel now renders a Cross-Asian Sub-Aggregate card after the synthesis, showing the asianBlended.blendedScore, per-tradition scores (Chinese/Japanese/Korean/Indian) with flag icons, and systemsIncluded: 31. When asianBlended.blendedScore diverges from blendedScore by ≥8 points, a violet divergence callout is shown explaining the East–West tension and noting that the LLM synthesis will explicitly name it. The SSE done event in tianStream.ts now includes asianBlended in its payload.
SystemPage — tian-global How It Works section updated with asianBlended divergence calloutThe TIAN Global system detail page now includes a Cross-Asian Sub-Aggregate & East–West Divergence callout box in the How It Works section. It explains the asianBlended field, the ≥8-point divergence trigger, and provides two worked examples showing how the LLM synthesis narrative shifts when Asian traditions diverge from the global consensus.
v3.62.0SDK v2.5.1 — TianGlobalResponse, TianChineseResponse, TianAsianResponse, TianGlobalAsianBlended types addedasktian-sdk v2.5.1 published to npm. Adds four new exported TypeScript interfaces: TianGlobalResponse (full tian.global response with asianBlended field), TianGlobalAsianBlended (cross-Asian sub-aggregate with blendedScore, traditions breakdown, and systemsIncluded: 31), TianChineseResponse (tian.chinese response), and TianAsianResponse (tian.asian response). The TianNamespace type signatures for chinese, asian, and global are updated from Promise<unknown> to their respective typed interfaces. No breaking changes.
ApiDocs — tian.global response fields table updated with asianBlended sub-fieldsThe tian.global response fields table in ApiDocs now documents the asianBlended object and all four sub-fields: asianBlended.blendedScore (0–100 across 31 Asian systems), asianBlended.traditions.chinese/japanese/korean/indian (per-tradition scores), and asianBlended.systemsIncluded (always 31). The synthesis field description is updated to note that when asianBlended.blendedScore diverges notably from blendedScore, the synthesis explicitly calls out the cross-Asian convergence. The sample response JSON is updated to include asianBlended.
tian.global — LLM synthesis prompt updated to reference asianBlended aggregateThe tian.global LLM synthesis system prompt now instructs the model to explicitly call out East–West divergence when the cross-Asian sub-aggregate score differs from the global blended score by 8 or more points. The user message now includes a CROSS-ASIAN SUB-AGGREGATE section showing per-tradition scores and the combined score, giving the LLM explicit context to reason about Asian convergence vs global divergence.
v3.61.0tian.global — asianBlended sub-aggregate added to responsetian.global now returns an asianBlended field in the response object. This pre-computed cross-Asian synthesis aggregates Chinese (easternOverall), Japanese, Korean, and Indian (Jyotish + Anka average) tradition scores into a single blendedScore, exposes per-tradition scores, and reports systemsIncluded: 31 — matching the tian.asian endpoint scope. Gives consumers a free Asian sub-aggregate without a separate tian.asian call.
/systems — hero stats updated to 50 systems / 68 endpointsThe /systems page hero stats updated to reflect the current platform scope: 68 endpoints, 50 systems, 11 TIAN Blended synthesis endpoints.
Home.tsx — tian.chinese and tian.asian hero code tabs addedThe landing page rotating code snippet now includes tian.chinese (🀄) and tian.asian (🌏) as selectable tabs alongside tian.global, tian.japanese, tian.korean, predict.binaryBatch, compatibility.birthday, almanac.daily, and iching.
v3.60.0tian.chinese — Chinese synthesis alias (14 systems, 70 $TIAN)New TIAN synthesis endpoint. tian.chinese is a clean alias of tian.eastern, fanning out across all 14 classical Chinese metaphysical systems in parallel. Provides a more semantically clear endpoint name for developers building China-focused applications. 70 $TIAN per call. Dedicated /systems/tian-chinese detail page, Playground panel, ApiDocs entry, and catalogue entry added.
tian.asian — Pan-Asian synthesis (31 systems, 100 $TIAN, Enterprise)New TIAN synthesis endpoint. tian.asian fans out across 31 Asian divination systems spanning four civilisations: Chinese (14), Japanese (8), Korean (7), and Indian (2: Jyotish + Anka Shastra). Returns per-tradition blended scores, a single pan-Asian blended score, and an LLM synthesis narrative identifying cross-civilisational convergences. 100 $TIAN per call. Enterprise tier only. Dedicated /systems/tian-asian detail page, Playground panel, ApiDocs entry, and catalogue entry added.
catalogue.list — 66 → 68 entriestian-chinese and tian-asian added to the catalogue. catalogue.list now returns 68 entries. Both entries include iconUrl, description, credits, tier, and tradition metadata.
SystemsIndex — TIAN Blended count 9 → 11The /systems page TIAN Blended section header, SEO copy, JSON-LD, and hero stats updated to reflect 11 TIAN Blended synthesis endpoints. Hero callout sections added for tian-chinese and tian-asian with dedicated icons, description, and Playground CTAs.
Home.tsx — hero stats updated to 11 TIAN BlendedLanding page hero copy, ogImageAlt, and JSON-LD description updated from 9 to 11 TIAN Blended synthesis endpoints.
ApiDocs — tian.chinese and tian.asian entries addedAPI reference docs now include full entries for tian.chinese and tian.asian: request schema, response schema with responseFields, credit cost, tier requirement, and curl examples. SLUG_TO_ENDPOINT map updated. SSE section updated to 11 TIAN Blended.
v3.59.0Playground — Japanese & Korean filter tabA dedicated "Japanese & Korean" filter tab has been added to the Playground endpoint list. The tab covers all 15 individual Japanese/Korean system endpoints (japanese.*, korean.*) plus the two TIAN synthesis endpoints (tian.japanese, tian.korean), making them easy to discover without scrolling through all 66 catalogue entries.
catalogue.list — tian-japanese and tian-korean added (now 66 entries)tian-japanese and tian-korean are now included in the catalogue.list response with full metadata: name, description, tradition, icon URL, credit cost, and system count. Catalogue grows from 64 to 66 entries.
ApiDocs — tian.japanese and tian.korean SSE traditions listThe SSE streaming section in ApiDocs now lists tian.japanese and tian.korean as supported traditions in the traditionScores example object. The "9 blended" count is reflected throughout the SSE section.
Home.tsx — hero stats updated to 9 TIAN Blended synthesis endpointsThe landing page hero copy, ogImageAlt, and JSON-LD SoftwareApplication description now correctly state 9 TIAN Blended synthesis endpoints (previously 7). The /systems hero stats also updated to show 9 TIAN Blended endpoints.
v3.57.0/systems/tian-japanese — TIAN Japanese detail pageNew dedicated system detail page for TIAN Japanese (天日本合成) at /systems/tian-japanese. Includes full overview, origin story, Edo-period and Meiji-era history, how-it-works, use cases, famous examples (Nishida Kitaro, Meiji Jingu), key terms (Rokuyō, Jūnisei, Honmei-sei, Nikkan, Eto), curl/fetch/Python/SDK code snippets, sample response, and related systems. OG image generated for social sharing.
/systems/tian-korean — TIAN Korean detail pageNew dedicated system detail page for TIAN Korean (天韓國合成) at /systems/tian-korean. Includes full overview, origin story, Goryeo and Joseon Dynasty history, how-it-works, use cases, famous examples (Lee Ji-ham/Tojeong, Gwansang Gam), key terms (Saju, Tojeong Bigyeol, Gunghap, Cheonmun), curl/fetch/Python/SDK code snippets, sample response, and related systems. OG image generated for social sharing.
tian.global — fan-out expanded to 44 systems (7 traditions)tian.global now fans out across all 44 systems spanning 7 civilisational traditions: Eastern (8), Western (6), Indian (6), African (5), Islamic (5), Japanese (8), Korean (7). The LLM synthesis prompt, response object, and blended score calculation have all been updated to incorporate the full Japanese and Korean corpora. Previous fan-out covered 27 systems across 5 traditions.
Home.tsx — tian.japanese and tian.korean hero code tabsThe landing page rotating code snippet now includes tian.japanese (🇯🇵) and tian.korean (🇰🇷) as selectable tabs alongside tian.global, predict.binaryBatch, compatibility.birthday, almanac.daily, and iching. The tian.global tab comment updated to 'All 7 Traditions · 44 systems'. Japanese and Korean tradition pills added to the hero tradition badge row.
systemContent.ts — tian.global copy updated to 44 systems / 7 traditionsAll tian.global copy in systemContent.ts updated: overview, howItWorks, keyTerms, and apiHighlight now reflect 44 systems and 7 civilisational traditions. The catalogue description in routers.ts also updated. Related systems list for tian-global now includes tian-japanese and tian-korean.
v3.54.0tian.japanese — Japanese synthesis (8 systems, 40 $TIAN)New TIAN synthesis endpoint. tian.japanese fans out across all 8 Japanese metaphysical systems in parallel: kyuseiKigaku (Nine Star Ki), doubutsuUranai (Animal Fortune), koyomi (Almanac Day Annotations), omikuji (Sacred Fortune Lots), shichusuimei (Four Pillars), sanmei (Destiny Calculation), bloodType (Blood Type Personality), and etoJikkan (Eto Jikkan-Junishi). Returns a blended score, per-system scores, and an LLM synthesis narrative. 40 $TIAN per call. Accepts birthdate, birthTime, birthPlace, question, and optional partnerBirthdate.
tian.korean — Korean synthesis (7 systems, 35 $TIAN)New TIAN synthesis endpoint. tian.korean fans out across all 7 Korean metaphysical systems in parallel: saju (Four Pillars), tojeong (Tojeong Bigyeol), gunghap (Compatibility), yukyo (Six Lines I Ching), cheonmun (28 Lunar Mansions), ttii (Animal Zodiac), and bloodTypeMbti (Blood Type × MBTI). Returns a blended score, per-system scores, and an LLM synthesis narrative. 35 $TIAN per call. Accepts birthdate, birthTime, birthPlace, question, and optional partnerBirthdate.
trackUsage — unreachable calls in tian.african, tian.global, tian.islamic, tian.indianBug fix. trackUsage() was placed after the return statement in 4 TIAN synthesis procedures (tian.african, tian.global, tian.islamic, tian.indian), making it unreachable. Usage was never recorded for these endpoints. Fixed by moving trackUsage() before the return statement in all 4 procedures.
Webhooks — changelog.release added to event type listchangelog.release is now listed as a selectable event type in the webhook registration and update forms. Partners can now explicitly subscribe to changelog.release events without using the wildcard (*). webhook.test also added to the form for completeness.
SDK — v2.4.0 published to npmasktian-sdk v2.4.0 published. Adds TianJapaneseResponse and TianKoreanResponse typed interfaces. Adds tian.japanese and tian.korean methods to TianNamespace with full streaming support. Both methods accept BirthdateTimeInput and return typed promises.
Playground — tian.japanese and tian.korean panelsPlayground now includes tian.japanese and tian.korean in the TIAN tradition selector. Each has a dedicated result panel showing per-system score cards for all 8 Japanese and 7 Korean sub-systems respectively, plus a blended score and synthesis narrative.
v3.53.0/systems — Japanese tradition section (8 endpoints)Systems page now includes a dedicated Japanese section with all 8 endpoints: kyuseiKigaku, doubutsuUranai, koyomi, omikuji, shichusuimei, sanmei, bloodType, etoJikkan. Each row links directly to the Playground. Section includes origin story copy covering Nine Star Ki, Doubutsu Uranai, Omikuji, and the Japanese adaptations of Four Pillars and Sanmei. Quick-jump nav updated with Japanese (red) pill. Hero copy, SEO title, meta description, OG alt, and JSON-LD updated to 64 endpoints / 7 traditions / 48 systems.
/systems — Korean tradition section (7 endpoints)Systems page now includes a dedicated Korean section with all 7 endpoints: saju, tojeong, gunghap, yukyo, cheonmun, ttii, bloodTypeMbti. Each row links directly to the Playground. Section includes origin story copy covering Joseon-era Tojeong Bigyeol, 사주 Four Pillars, 육효 Six Lines, 천문 Lunar Mansions, and the modern 띠 × 혈액형 × MBTI fusion. Quick-jump nav updated with Korean (pink) pill.
tian.global Playground panel — Japanese/Korean tradition blockstian.global Playground panel now surfaces the 7 new Japanese/Korean fields as collapsible tradition blocks. Japanese block (🎌): Kyusei Kigaku (year/month star, element, trigram, year fortune), Shichusuimei (Day Master, element, year/day pillars), Sanmei (Day Master, main star, life theme). Korean block (🇰🇷): Saju (Day Master, dominant element, year/day pillars), Tojeong Bigyeol (Gwe code, grade, annual fortune), Gunghap (score, level, Samhap), Yukyo (hexagram, judgment, commentary). System count label updated to '41 systems across 7 traditions'.
v3.52.0SDK — v2.3.0 published to npmasktian-sdk v2.3.0 published. Adds 15 new typed response interfaces for all Japanese and Korean endpoints added in v3.50.0 and v3.51.0: JapaneseKyuseiResponse, JapaneseDoubutsuResponse, JapaneseKoyomiResponse, JapaneseOmikujiResponse, JapaneseShichusuimeiResponse, JapaneseSanmeiResponse, JapaneseBloodTypeResponse, JapaneseEtoJikkanResponse, KoreanSajuResponse, KoreanTojeongResponse, KoreanGunghapResponse, KoreanYukyoResponse, KoreanCheonmunResponse, KoreanTtiiResponse, KoreanBloodTypeMbtiResponse. Also adds JapaneseNamespace and KoreanNamespace to the AskTianClient class. All 15 methods now return typed promises instead of Promise<unknown>.
Homepage — 7 traditions, 64 endpoints, 48 systemsHomepage hero copy updated: endpoint count 60→64, traditions 5→7, systems 33→48. Added Japanese 🎌 and Korean 🇰🇷 tradition pills alongside the existing Eastern/Western/Indian/African/Islamic row. SDK badge updated to v2.3.0. Meta description, OG alt, and JSON-LD description updated to reflect 64 endpoints and 7 traditions.
tian.global — fan-out expanded with 7 Japanese/Korean systemstian.global synthesis now fans out across 7 additional Japanese/Korean systems: kyuseiKigaku (Nine Star Ki), shichusuimei (Japanese Four Pillars), sanmei (Destiny Calculation), saju (Korean Four Pillars), tojeong (Tojeong Bigyeol), gunghap (Compatibility), and yukyo (Six Lines I Ching). The LLM synthesis prompt has been updated to incorporate these traditions. The response object now includes japaneseKyusei, japaneseShichusuimei, japaneseSanmei, koreanSaju, koreanTojeong, koreanGunghap, and koreanYukyo fields.
v3.51.0japanese.shichusuimei — Four Pillars 四柱推命New endpoint. Japanese Four Pillars (四柱推命) derives year, month, day, and hour pillars from birth date and optional birth time. Returns Day Master (Nikkan) element and strength, 12 Stages (Jūni Unsei) for each pillar, Ten Gods (十神), element balance percentages, and compatibility rules. 5 TIAN Points.
japanese.sanmei — Destiny Calculation 算命学New endpoint. Sanmei (算命学) Japanese destiny calculation. Returns four pillars, Ten Main Stars (Jūdai Shusei) computed from year/month/hour pillars vs Day Master, 12 Auxiliary Stars (Jūnidai Jūsei) per pillar, Yang/Yin chart classification, and a synthesis narrative. 5 TIAN Points.
japanese.bloodType — Blood Type Personality 血液型New endpoint. Blood Type Personality (血液型性格判断) — Japan's most popular pop-psychology system. Returns personality profile, strengths, weaknesses, love style, work style, and optional compatibility score with a partner blood type. 3 TIAN Points.
japanese.etoJikkan — Eto Jikkan-Junishi 干支New endpoint. The 60-year sexagenary cycle (干支). Returns year, month, and day Eto with element, polarity, animal, naYin, and personality narrative for each. Includes compatibility notes with other Eto combinations. 3 TIAN Points.
korean.yukyo — Six Lines Divination 육효New endpoint. Yukyo (육효/六玄) — Korean I Ching divination using six coin tosses. Returns primary hexagram (number, name, Korean name, judgment, image), moving lines, resulting hexagram, Yongsin (ruling line), day/month GanZhi, and overall judgment (길/흉). 5 TIAN Points.
korean.cheonmun — 28 Lunar Mansions 천문New endpoint. Cheonmun (천문/天文) — Korean 28 Lunar Mansions. Identifies the mansion for any date, returns mansion name (Korean/Chinese/English), quadrant, season, body part, affairs domain, auspicious/inauspicious activities, overall rating, and Jupiter station. 3 TIAN Points.
korean.ttii — Animal Zodiac 띠New endpoint. Ttii (띠) — Korean 12-animal zodiac personality. Returns animal, element, polarity, personality, strengths, weaknesses, lucky color/numbers, career fit, and optional blended profile with blood type and MBTI. 3 TIAN Points.
korean.bloodTypeMbti — Blood Type × MBTI 혈액형New endpoint. Blood Type × MBTI (혈액형 × MBTI) — Korea's modern personality fusion system. Blends blood type traits with MBTI archetype to produce a combined profile, love/work style, best/worst matches, and optional partner compatibility score. 3 TIAN Points.
catalogue.list — 8 new entries (56 → 64)catalogue.list now includes 8 new entries: shichusuimei, sanmei, jpBloodType, etoJikkan (Japanese tradition) and yukyo, cheonmun, ttii, bloodTypeMbti (Korean tradition). Total catalogue entries: 48.
Playground — 8 new endpoint panelsPlayground now renders rich panels for all 8 new deep Japanese and Korean endpoints. Japanese: Shichusuimei (four-pillar table, Day Master card, Ten Gods table, element balance, 12 Stages per pillar), Sanmei (pillars, Ten Main Stars, 12 Auxiliary Stars, Yang/Yin chart), Blood Type (personality card, strengths/weaknesses, love/work style, compatibility), Eto Jikkan (year/month/day eto cards, element/animal badges, naYin, personality). Korean: Yukyo (hexagram display, moving lines, resulting hexagram, Yongsin, judgment), Cheonmun (mansion card, quadrant/season badges, auspicious/inauspicious chips), Ttii (animal card, element/polarity, lucky color/numbers, blended profile), Blood Type × MBTI (blended profile card, love/work style, best/worst matches).
v3.50.0japanese.kyuseiKigaku — Nine Star Ki 九星気学New endpoint. Derives three Ki stars (Honmei-sei year star, Getsumei-sei month star, Ninnei-sei day star) from birth date. Returns star number (1–9), element, trigram, auspicious directions, inauspicious directions, compatible stars, incompatible stars, and a 2026 year fortune narrative. 5 TIAN Points.
japanese.doubutsuUranai — Animal Fortune 動物占いNew endpoint. Assigns one of 60 animal-colour types (12 animals × 5 colour modifiers) from birth date using the Doubutsu Uranai system. Returns animal, colour, index (1–60), personality traits, work style, love style, and compatibility with all other animals. 5 TIAN Points.
japanese.koyomi — Daily Almanac 暦New endpoint. Computes Japanese daily almanac annotations for any date: Rokuyō (六曜 six-day cycle), Jūnicho (十二直 twelve values), Jūnisei (十二星 twelve stars), special day flags (Ichiryū Manbaibi 一粒万倍日, Tenshabi 天赦日, Fujōjubi 不成就日), and auspicious/inauspicious activities. Free (0 TIAN Points).
japanese.omikuji — Fortune Slip おみくじNew endpoint. Draws one of 100 Omikuji lots ranked from 大吉 (Daikichi) to 大凶 (Daikyō). Returns lot number, rank, classical Japanese verse, English translation, and domain-specific guidance for wishes, travel, business, love, health, studies, and money. Free (0 TIAN Points).
korean.saju — Four Pillars 사주New endpoint. Korean Saju (사주) derives year, month, day, and hour pillars from birth date using the Korean adaptation of Bazi. Returns the four pillars (GanZhi), Day Master element and strength, Ten Gods (십신) for each pillar, element balance (wood/fire/earth/metal/water percentages), and Daeun (大運) luck cycles with age ranges. 5 TIAN Points.
korean.tojeong — Tojeong Bigyeol 토정비결New endpoint. Korea's most beloved annual fortune book. Computes the three-digit Gwe code from lunar birth month, Korean age, and lunar birth day using CNY anchor dates and GanZhi day-pillar lookup. Returns Gwe code (e.g. '451'), annual fortune grade (상/중/하), summary, advice, and 12 monthly fortune grades. Worked example verified: lunar 1985-03-06, target year 2018 → Gwe 451. 5 TIAN Points.
korean.gunghap — Compatibility 궁합New endpoint. Korean compatibility (궁합) analyses two birth years using four classical methods: Samhap (三合 triple harmony), Yukhap (六合 six harmonies), Yukchung (六冲 six conflicts), and Wonjin (怨嗔 resentment). Returns a 0–100 score, level (Perfect/Excellent/Good/Fair/Challenging/Difficult), and narrative. 5 TIAN Points.
catalogue.list — 7 new entries (Japanese + Korean)catalogue.list now includes 7 new entries: kyuseiKigaku, doubutsuUranai, koyomi, omikuji (Japanese tradition) and saju, tojeong, gunghap (Korean tradition). Total catalogue entries: 40.
Playground — 7 new endpoint panelsPlayground now renders rich panels for all 7 new Japanese and Korean endpoints. Japanese panels: Kyusei Kigaku (star cards, element/trigram badges, direction compass, year fortune), Doubutsu Uranai (animal card, colour badge, personality/work/love blocks, compatibility grid), Koyomi (Rokuyō/Jūnicho/Jūnisei badges, special day flags, 宜/忌 chips), Omikuji (rank badge, verse block, domain guidance cards). Korean panels: Saju (four-pillar table, Day Master card, Ten Gods table, element balance bar, Daeun cycles), Tojeong (Gwe code display, annual grade badge, monthly fortune grid), Gunghap (score gauge, compatibility method breakdown, narrative).
Banner — updated to v3.50.0 copyHomepage announcement banner updated to v3.50.0 copy, highlighting the Japanese and Korean astrology expansion.
v3.49.0almanac.daily — DB extended to 2050-12-31 (3,652 new rows)The almanac_daily_data table now covers 2041-01-01 through 2050-12-31 (3,652 rows), giving a full 25-year DB horizon (2020–2050). All dates through 2050 now use the fast DB path with complete 黃曆 field coverage. Three spot-check dates verified: 2041-01-01 (甲午 定 金匮), 2045-07-04 (己未 闭 勾陈), 2050-12-31 (乙酉 成 天牢).
Playground — almanac.daily fixtureThe almanac.daily Playground fixture has been updated from a minimal 8-field response to a full 32-field response matching the actual API shape. The fixture now includes all fields added in v3.47.0: jiShen, xiongSha, pengZuGan, pengZuZhi, taiShen, xiu, xiuLuck, xiuSong, liuYao, nineStar, positionYangGui, positionYinGui, and all direction fields. The sample date is 2026-04-22 (丙寅 开 司命).
SDK — v2.2.0 published to npmasktian-sdk v2.2.0 published. Adds AlmanacDailyResponse interface with all 32 almanac.daily fields (十二建除, 十二神, 吉神凶煞, 彭祖百忌, 胎神, 二十八宿, 六曜, 九星, direction fields). client.almanac.daily() now returns Promise<AlmanacDailyResponse> and client.almanac.zodiacSign() returns Promise<AlmanacZodiacResponse> instead of Promise<unknown>.
v3.48.0almanac.daily — DB extended to 2040-12-31 (3,653 new rows)The almanac_daily_data table now covers 2031-01-01 through 2040-12-31 (3,653 rows) using the corrected 黃曆 engine from v3.47.0. All dates in this range now use the fast DB path with full field coverage (建除, 十二神, naYin, chong/sha, pengZu, taiShen, jiShen/xiongSha, nineStar, xiu, liuYao, position fields). Three spot-check dates verified: 2031-01-01 (辛丑 閉 勾陈), 2035-06-15 (丁未 建 青龙), 2040-12-31 (癸巳 定 金匮).
Playground — almanac.daily rich panelThe Playground now renders a dedicated rich panel for almanac.daily results. The panel includes: GanZhi three-pillar row (year/month/day), overall fortune badge with score, 建除/十二神/納音/六曜/九星 badges, 宜/忌 activity chips (green/red), 吉神/凶煞 spirit tags, chong/sha/taiShen/pengZu block, and financial/auspicious direction row. The deity badge is highlighted in gold for 黃道 days.
Playground — horoscope.calculate Sign Deep Dive panelThe horoscope.calculate Playground panel now includes a collapsible 'Sign Deep Dive' section (collapsed by default) showing the signProfile data: Mantra, Major Arcana, Minor Arcana cards, Body Parts, Medical Astrology, Symbolism, and Famous People. The section is keyed to h.signProfile and appears below the chart synthesis block.
v3.47.0almanac.daily — full 黃曆 engine for post-2030 datesThe fallback almanac engine (used for dates beyond the pre-computed 2020–2030 DB range) has been replaced with a fully correct implementation. The new engine computes: GanZhi day pillar (correct epoch-based 60-cycle), 十二建除 (twelve values via month-branch/day-branch offset), 十二神 (twelve deities via 建 position + day-branch offset), naYin (五行納音 from 60-cycle table), chong/sha (computed from day stem/branch offsets), pengZu (彭祖百忌 per stem and branch), taiShen (胎神 60-cycle table), jiShen/xiongSha (auspicious/inauspicious spirits derived from twelveValue and deity), 宜/忌 (suitable/avoid activities from 建除 and deity tables), position fields (財/喜/福 directions), liuYao, nineStar, and xiu. All 6 reference dates verified against the DB.
Playground — horoscope.calculate rich panelThe Playground now renders a dedicated rich panel for horoscope.calculate results. The panel includes: Sun/Moon/Rising placement cards (sign symbol, element, modality, ruling planet, decan influence), element profile block (dominant element, breakdown, interpretation), placements table (all three placements with element/modality/ruling), trait pills for each placement, and the full chart synthesis narrative. Previously the endpoint fell through to generic JSON output.
v3.46.0divination.draw — holyMeaning field (聖意)divination.draw now returns a structured holyMeaning field (parsed from the 聖意 oracle column) alongside the existing poem and interpretation. The field is a key-value object mapping oracle categories (求财, 交易, 婚姻, 六甲, 自身, 疾病, 家运, 寻人, 失物, 移徒) to their classical guidance text. Currently populated for wenshu (100 lots). Additional systems will be backfilled in future releases.
Divination Lot Systems — poem backfill (8 systems, ~287 poems)Poem text backfilled from authoritative source files across 8 temple systems: 文殊菩薩靈籤 wenshu (25 poems, now 100/100), 觀音二四籤 guanyin24 (24 lots, fully inserted), 觀音二八籤 guanyin28 (28 lots, fully inserted), 車公靈籤 chegong (94 poems), 佛祖靈籤 fozhu (51 poems, now 51/51), 關帝廟靈籤 guandimiao (39 poems, now 101/101), 觀音菩薩靈籤 guanyinpusa (8 poems, now 100/100), 北帝靈籤 beidi (28 poems). Total divination lots with poem coverage now exceeds 95% across all 49 systems.
nameAnalysis.analyze — richer 81-number formation dataThe five-formations response now includes chineseName, element (五行), yinYang, rating (1–5), characteristics[], and a full Chinese description for each formation. Stroke count table expanded from 130 to 221 characters. Data sourced from authoritative 81-number numerology corpus.
auspicious.analyzeNumber — 81-number lookup (auspiciousNumber81)analyzeNumber now returns an auspiciousNumber81 object with two sub-entries: modulo80 (mod-80 reduction) and digitSum (digit-sum reduction). Each entry includes the classical Chinese name, element, yin/yang, and full Chinese interpretation. 11-digit phone numbers also receive a threeSegment breakdown mapping prefix, middle, and suffix to their respective 81-number entries.
compatibility.bloodType — rating + personalityProfilesBlood type compatibility now returns a rating field (Excellent/Good/Fair/Poor) and a personalityProfiles object with per-type traits, strengths, weaknesses, and compatibility notes for all four blood types (A, B, O, AB).
compatibility.zodiac — relationshipType + pairChinese + ratingChinese zodiac compatibility now returns relationshipType (三合/六合/相沖/相害/Neutral/Same Sign with English label), pairChinese (Chinese pair name), animal1Chinese and animal2Chinese, and a rating field.
compatibility.birthday — westernDimensionsBirthday compatibility now returns a westernDimensions object with love, friendship, work, and overall numeric scores plus a rating label, sourced from the western zodiac compatibility dataset.
Shengyi (聖意) backfill — 8 temple systems (692 lots)Holy-meaning (shengyi) data backfilled for 7 additional temple systems: guanyinpusa (95 lots), yuelao (100), guandimiao (100), chegong (95), beidi (51), lvzumiao (100), fozhu (51). Combined with wenshu (100 lots, done in v3.46.0 initial release), all 8 systems now have full shengyi coverage — 692 lots total.
Shengyi (聖意) backfill — 4 additional temple systems (203 lots)Holy-meaning (shengyi) data backfilled for 4 remaining temple systems: laojunmiao (28 lots), tudimiao (100 lots), wangmu (49 lots), sanpingzushi (26 lots). All 203 lots now return a structured holyMeaning key-value object via divination.draw. Combined with the 8 systems backfilled earlier, 12 temple systems now have full shengyi coverage.
Banner — updated to v3.46.0 copyHomepage announcement banner updated to v3.46.0 copy, highlighting the poem backfill milestone and new holyMeaning field.
v3.45.0Divination Lot Systems — 4 systems reseeded from authoritative source dataFour temple lot systems have been fully reseeded from verified authoritative source files, replacing earlier placeholder content: 金錢卦三十二籤 jinqiangua (32 lots), 澎湖天后宮一百籤 penghutianhougong (100 lots), 三平祖師公靈簽 sanpingzushi (75 lots), 註生娘娘三十籤 zhushengniangniang (30 lots). All lots now carry correct traditional Chinese poem text, interpretation, and fortune level metadata.
predict.binary + predict.multi — prompt-injection sanitisationThe question field in predict.binary and predict.multi now strips common prompt-injection patterns (e.g. 'ignore previous instructions', 'act as', 'system prompt') before the text is forwarded to the LLM. Patterns are replaced with [redacted]. No change to the public API contract.
tian.islamic + tian.indian — birthDate input hardeningThe birthDate field in tian.islamic and tian.indian now enforces a strict YYYY-MM-DD regex at the tRPC input layer, rejecting malformed date strings with a typed validation error before they reach the LLM.
ApiDocs — divination.list + divination.systems deep-link anchorsdivination.list and divination.systems were missing from the PATH_TO_SLUG anchor map in ApiDocs, causing the Playground 'View Docs' deep-link to land on the wrong section. Both entries are now correctly mapped.
ApiDocs — duplicate iching.personalYear entry removedA duplicate iching.personalYear category block (copy-paste artefact) has been removed from ApiDocs. Only one canonical entry remains.
Playground — catalogue.listcatalogue.list is now available in the Playground endpoint selector, allowing developers to browse the full 60-endpoint catalogue interactively without leaving the Playground.
WEBHOOK_SECRET env var — dedicated HMAC signing key for outbound webhooksThe legacy fireWebhook helper previously signed outbound webhook payloads with JWT_SECRET (cookieSecret), coupling session auth and webhook signing to the same key. A new WEBHOOK_SECRET env var is now supported and used preferentially for X-Signature-256 HMAC signing. Falls back to JWT_SECRET if WEBHOOK_SECRET is not set (backwards-compatible). Operators should set WEBHOOK_SECRET to isolate webhook key rotation from session auth.
Endpoint count updated to 60 across all surfacesHomepage hero, Systems nav badge, Dashboard onboarding copy, Status page, and SystemsIndex all now reflect the correct total of 60 documented endpoints.
Banner — updated to v3.45.0 copyHomepage announcement banner updated to v3.45.0 copy, highlighting the lot data quality improvements and security hardening.
v3.44.0Divination Lot Systems — 7 new temple traditionsSeven new temple lot systems seeded from comprehensive source data: 三平祖師公靈籤 sanpingzushi (75 lots), 廣澤聖王靈籤 guangzeshengwang (100 lots), 清水祖師靈籤 qingshuizushiling (76 lots), 日本觀音廟靈籤 ribenguanyin (100 lots), 九仙君靈籤 jiuxianjun (100 lots), 土地廟靈籤 tudimiao (101 lots), 老君廟靈籤 laojunmiao (28 lots). Total temple lot systems: 49. Total lots: 3,481.
Systems page — Lot Systems sectionThe /systems page now includes a dedicated Lot Systems section listing all 49 temple systems with lot counts, tradition tags, and direct Playground links.
Divination Lot Systems — interpretation backfill (271 lots)271 lots across 7 systems (liushijiazi, yuexialaoren, kongsheng, wenshu, wenchang, sanpingzushi, guanyin24) had their 典故 (historical story) field promoted to interpretation, improving overall interpretation coverage from 81% to 90.9%.
Banner — updated to v3.44.0 copyHomepage announcement banner updated to v3.44.0 copy, highlighting the expanded 49 temple lot systems and 3,481-lot milestone.
v3.43.0iching.icNumberI Ching IC/NRIC/Passport Number Feng Shui — analyses a national identity card, NRIC, or passport number by stripping non-digit characters and mapping consecutive digit pairs to the 8 feng shui stars. Returns star type, romance/career/wealth/health/family influences, overall rating (1–5), dominant star, and LLM feng shui assessment. 5 TIAN Points per call.
iching.businessNameI Ching Business Name Feng Shui — analyses a business or company name by converting each character to its stroke count, then mapping consecutive stroke-count digit pairs to the 8 feng shui stars. Returns per-character stroke counts, pair star analysis, overall rating (1–5), dominant star, and LLM feng shui assessment. 5 TIAN Points per call.
iching.batchNumbersBatch I Ching number analysis — submit up to 10 numbers in a single call (phone, house, car plate, or IC). Returns the same 8-star pair analysis for each number, sorted by overall rating descending. 5 TIAN Points per number.
predict.binary calibrationNotepredict.binary now returns a calibrationNote field — a plain-language sentence explaining what the confidence score means. Reduces partner confusion about score interpretation.
Webhook event filter UIDashboard webhook card now shows a multi-select event filter so partners can choose which event types each webhook receives.
Admin Notify Partners buttonAdminPanel now has a Notify Partners of Release button that calls catalogue.notifyRelease to fire a changelog.release webhook event to all registered partner webhooks.
/systems/ichingPhoneNumber + ichingCarPlate + ichingHouseNumberThree new system detail pages for the I Ching number endpoints, each with overview, origin, how it works, 8-star table, sample response, SDK snippets, and Playground link.
SDK v2.1.0 methodsasktian-sdk v2.1.0 adds typed methods for iching.phoneNumber, iching.carPlate, iching.houseNumber, iching.icNumber, iching.businessName, and iching.batchNumbers.
Playground Compare modePlayground now has a Compare tab that runs the same number through houseNumber, carPlate, phoneNumber, icNumber, businessName, and batchNumbers side by side — all 6 I Ching Numerology endpoints benchmarked in one view.
Banner — updated to v3.43.0 copyHomepage announcement banner updated to v3.43.0 copy, highlighting the full I Ching Numerology suite: IC/NRIC number feng shui, business name stroke analysis, and batch multi-number analysis.
v3.42.5iching.phoneNumber — I Ching Phone Number Feng ShuiAnalyses a mobile or phone number by extracting the numeric digits and mapping consecutive pairs to one of the 8 feng shui stars. Returns star type, romance/career/wealth/health/family influences, overall rating (1–5), and an LLM feng shui assessment. Costs 5 TIAN Points. Particularly popular in Southeast Asia where phone number selection is a common feng shui practice.
Playground — iching.phoneNumber addediching.phoneNumber is now selectable in the Playground with a phone number input, language selector, sample fixture, and 5 TIAN Points cost badge. Results render as grouped star cards with colour-coded auspicious/inauspicious indicators — identical pattern to iching.carPlate and iching.houseNumber.
SiteFooter — RSS subscribe linkThe site footer now includes an RSS icon/link pointing to /api/changelog.rss so developers can subscribe to release notes directly from the site without needing to know the endpoint URL.
Webhooks — changelog.release eventPartners with registered webhooks now receive a changelog.release event payload whenever a new version is published. The payload includes version, date, and the full entries array. Opt in by adding changelog.release (or *) to your webhook event subscriptions.
Banner — updated to v3.42.5 copyHomepage announcement banner updated to v3.42.5 copy, highlighting iching.phoneNumber as the mobile number feng shui endpoint.
Platform — endpoint count updated to 58All endpoint count references updated from 57 to 58 across SiteNav, Home, Status, SystemsIndex, ApiDocs, and Dashboard.
v3.42.4iching.carPlate — I Ching Car Plate Feng ShuiAnalyses a vehicle registration number by extracting the numeric digits and mapping consecutive pairs to one of the 8 feng shui stars. Returns star type, romance/career/wealth/health/family influences, overall rating (1–5), and an LLM feng shui assessment. Costs 5 TIAN Points.
Playground — iching.carPlate addediching.carPlate is now selectable in the Playground with a plate number input, language selector, sample fixture, and 5 TIAN Points cost badge. Results render as grouped star cards with colour-coded auspicious/inauspicious indicators.
RSS feed at /changelog.rssPartners can now subscribe to the changelog via RSS at /changelog.rss. The feed is generated from the live CHANGELOG array and updates automatically with each release. Compatible with Slack /feed, Discord RSS bots, Zapier, and any RSS reader.
Dashboard — What's New badgeLogged-in partners now see a red dot on the API dashboard nav when there are changelog entries newer than their last-seen timestamp. Clicking the badge marks all entries as seen.
Banner — updated to v3.42.3 copyHomepage announcement banner updated to v3.42.3 copy, highlighting iching.houseNumber as the property buyer use case.
Systems Index — I Ching Numerology section addedThe /systems page now includes a dedicated I Ching Numerology section listing all 6 I Ching endpoints (numberReading, rootNumber, partnerCompat, personalYear, coinToss, houseNumber, carPlate).
Platform — endpoint count updated to 57All endpoint count references updated from 56 to 57 across SiteNav, Home, Status, SystemsIndex, ApiDocs, and Dashboard.
v3.42.3iching.houseNumber — I Ching House Number Feng ShuiAnalyses a house or unit number by extracting consecutive digit pairs and mapping each to one of the 8 feng shui stars (生气 Sheng Qi, 延年 Yan Nian, 天医 Tian Yi, 伏位 Fu Wei, 祸害 Huo Hai, 六煞 Liu Sha, 五鬼 Wu Gui, 绝命 Jue Ming). Returns star type, romance/career/wealth/health/family influences, overall rating (1–5), and an LLM feng shui assessment. Costs 5 TIAN Points.
Playground — iching.coinToss hexagram card rendereriching.coinToss results now render as a visual hexagram card with the hexagram symbol displayed large, the 6 line values as a solid/broken line stack, the hexagram title and summary, and the LLM oracle reading in a readable card layout.
Playground — iching.houseNumber addediching.houseNumber is now selectable in the Playground with a house number input, language selector, sample fixture, and 5 TIAN Points cost badge.
Banner — updated to v3.42.2 copyHomepage announcement banner updated to v3.42.2 copy, highlighting iching.coinToss as the lowest-cost entry point at 2 TIAN Points.
Platform — endpoint count updated to 56All endpoint count references updated from 55 to 56 across SiteNav, Home, Status, SystemsIndex, ApiDocs, and Dashboard.
v3.42.2iching.coinToss — I Ching Coin Toss OracleSimulates the traditional 3-coin toss method to generate one of the 64 hexagrams and returns the hexagram symbol, title, summary, full description, line values, and an LLM oracle reading for the querent's question. All 64 hexagrams seeded from the King Wen sequence. Costs 2 TIAN Points — the lowest-cost endpoint on the platform.
Playground — iching.coinToss addediching.coinToss is now selectable in the Playground with an optional question field, language selector, sample fixture, and 2 TIAN Points cost badge.
Playground — bazi.shenSha card rendererbazi.shenSha results now render as grouped spirit cards (auspicious vs. inauspicious) instead of raw JSON, with type badge, summary, lookup rule, and LLM interpretation sections.
Banner — updated to v3.42.1 copyHomepage announcement banner updated to v3.42.1 copy, highlighting the new bazi.shenSha endpoint alongside the I Ching Numerology suite.
Platform — endpoint count updated to 55All endpoint count references updated from 54 to 55 across SiteNav, Home, Status, SystemsIndex, ApiDocs, and Dashboard to reflect the new iching.coinToss endpoint.
v3.42.1bazi.shenSha — Bazi 神煞 (ShenSha) divine spiritsIdentifies the auspicious and inauspicious divine spirits (神煞) active in a Bazi chart based on the birth date. Looks up 42 spirits from the 问真神煞大全 reference and returns which ones are present with their classical formulas, summaries, and LLM interpretation. Costs 5 TIAN Points.
Playground — four I Ching Numerology endpoints addediching.numberReading, iching.rootNumber, iching.partnerCompat, and iching.personalYear are now selectable in the Playground with dedicated form inputs, sample fixtures, and cost badges.
Playground — bazi.shenSha addedbazi.shenSha is now selectable in the Playground with birth date and optional birth hour inputs, sample fixture, and cost badge.
Banner — updated to v3.42.0 copyHomepage announcement banner updated from v3.41.0 to v3.42.0 copy, highlighting the four new I Ching Numerology endpoints.
Platform — endpoint count updated to 54All endpoint count references updated from 53 to 54 across SiteNav, Home, Status, SystemsIndex, ApiDocs, and Dashboard to reflect the new bazi.shenSha endpoint.
v3.42.0iching.numberReading — I Ching Numerology number analysisAnalyses any number string (phone, IC, car plate, house number) by extracting digit pairs and mapping them to the eight I Ching Numerology stars (1-Water, 2-Earth, 3-Wood, 4-Wood, 5-Earth, 6-Metal, 7-Metal, 8-Earth, 9-Fire). Returns star names, elements, personality traits, career guidance, and a ranked best-to-worst assessment for each pair. Costs 5 TIAN Points.
iching.rootNumber — I Ching Numerology root number profileComputes a root number (1–9) from a birth date using I Ching Numerology digit-sum reduction, then returns a full personality and life-path profile including strengths, weaknesses, career fit, and relationship style. Costs 5 TIAN Points.
iching.partnerCompatibility — I Ching Numerology partner pairingCompares two root numbers and returns a compatibility analysis covering harmony reasons, conflict reasons, and a compatibility score. All 81 pairings covered. Costs 5 TIAN Points.
iching.personalYear — I Ching Numerology 9-year cycle forecastCalculates the current personal year number (1–9) from a birth date and the current year, then returns a full forecast covering the year's theme, opportunities, challenges, and recommended actions. Costs 5 TIAN Points.
Platform — endpoint count updated to 53All endpoint count references updated from 49 to 53 across SiteNav, Home, Status, SystemsIndex, ApiDocs, and Dashboard to reflect the four new I Ching Numerology endpoints.
v3.41.0Auth — Bearer token pattern (all clients)Migrated all auth flows to use Privy JWT directly as Authorization: Bearer <token>. Eliminates the sign-in loop caused by the Privy iframe being blocked by X-Frame-Options: SAMEORIGIN. Matches the pattern used by wallet.asktian.com and chat.asktian.com. SyncErrorBanner and retrySync removed from Dashboard, Playground, and ApiDocs.
GET /api/v1/stats/economy — per-category breakdownEconomy endpoint now returns categoryBreakdown (all-time TIAN Points spent by tradition), categoryBreakdownLast30 (last 30 days), perSystemBreakdown (top 20 systems by credits with category field), and subscriptionBreakdown (per-plan TIAN payment history). All burn/burned fields renamed to spent/spentTian/spendRatePct.
Playground — live TIAN balance UXPlayground page now shows a live TIAN balance pill in the header, refreshed automatically after each API call. Run Live button is disabled with an amber warning when balance is insufficient for the selected endpoint. Per-call TIAN cost badge shown above Run buttons for all 49 endpoints. Nav dropdown shows live balance with amber delta highlight on decrease and a relative last-refreshed timestamp.
life.boneWeight — trackUsage missingAdded trackUsage() call to the life.boneWeight procedure. Bone weight calls now appear in api_usage and the economy breakdown.
v3.40.6Auth — Bearer token pattern (eliminates sign-in loop)Rewrote auth flow to use Privy JWT directly as Authorization: Bearer <token> on every tRPC request, matching the pattern used by wallet.asktian.com and chat.asktian.com. The old flow (getAccessToken → POST /api/auth/privy → session cookie) depended on the Privy embedded wallet iframe loading successfully. The iframe was blocked by X-Frame-Options: SAMEORIGIN from privy.asktian.com (Cloudflare proxy), causing getAccessToken() to hang indefinitely and the dashboard to show a permanent 'Completing sign-in…' spinner. New flow: (1) tRPC client calls getAccessToken() lazily in headers() on every request; (2) server/context.ts verifies non-API-key Bearer tokens via PrivyClient.verifyAuthToken() and upserts the user on first login; (3) useAuth.ts simplified — isAuthenticated = privyAuthenticated directly, no session sync needed; (4) SyncErrorBanner and retrySync removed from Dashboard, Playground, and ApiDocs.
v3.40.5Sign-in loop — switched to PrivyClient.verifyAuthToken()Replaced manual SPKI/jwtVerify approach in privyAuth.ts with the official @privy-io/server-auth PrivyClient.verifyAuthToken(). The manual approach required knowing the exact issuer, audience, and algorithm — any mismatch caused a 401 loop. PrivyClient handles all of this automatically including JWKS key rotation. PRIVY_APP_SECRET added to ENV. Vitest added: server/privy.auth.test.ts (4 tests).
CSP — explicit base-uri, form-action, script-src-attrAdded base-uri: 'self', form-action: 'self', and script-src-attr: 'none' explicitly to the helmet CSP config instead of relying on helmet defaults. Prevents base tag injection, form hijacking, and inline event handler injection.
v3.40.4Auth — Privy login modal console warningCapped loginMethodsAndOrder.primary to 4 methods (Privy enforces a maximum of 4). Telegram moved from primary to overflow. Primary is now: email, google, apple, twitter. Overflow: telegram, coinbase_wallet, okx_wallet, metamask, wallet_connect.
v3.40.3DependenciesUpgraded @privy-io/react-auth from 3.18.0 to 3.20.0. Changes: 3.19.1 — fixed invalid email submission in auth modal, fixed MoonPay back button bug; 3.20.0 — added defaultSolanaRpcsPlugin for Solana RPC support, added emailDomain config in PrivyProvider, updated @privy-io/js-sdk-core to 0.60.8.
v3.40.2Dashboard — Completing sign-in hang (new sign-ins)getAccessToken() in useAuth was gated on privyReady=true. When the Privy embedded wallet iframe fails to load (custom_api_url proxy not serving iframe HTML), privyReady stays false, so getAccessToken() was never called and syncSession() never ran. Fix: (1) removed privyReady gate from the sync useEffect — sync now starts as soon as privyAuthenticated=true; (2) added 10s timeout to getAccessToken() via Promise.race so it fails fast instead of hanging; (3) moved syncError display outside the loading block so it renders even after loading=false; (4) removed (!isAuthenticated && privyAuthenticated) from the spinner condition so users are not stuck in an infinite spinner if sync has already failed.
v3.40.1Dashboard — Completing sign-in hanguseAuth loading state no longer blocks on privyReady when a valid session cookie already exists. Previously, if the Privy embedded wallet iframe failed to load (e.g. custom_api_url proxy issue), privyReady stayed false forever, keeping loading=true and the dashboard stuck on 'Completing sign-in…'. Now loading only waits for privyReady when there is no session yet (i.e. a fresh first-time login). Users with existing session cookies see the dashboard immediately regardless of Privy iframe state.
v3.40.0api_usage table — creditsUsed columnAdded creditsUsed INT column to api_usage table (migration applied). All non-predict endpoints (tian.global, tian.eastern, tian.western, tian.eastwest, tian.african, tian.islamic, tian.indian, compatibility.*, almanac.daily, divination.draw, qimen.calculate, liuyao.calculate, meihua.calculate, nameAnalysis.analyze, auspicious.analyzeNumber, ifa.draw, vodun.calculate, hakata.calculate, rammal.calculate, khatt.calculate, jyotish.calculate, anka.calculate, horoscope.calculate, mahabote.calculate, twelvepalaces.calculate) now record their TIAN Points cost in api_usage.creditsUsed on every call. predict.* endpoints also pass their cost (100/150/batchTotal) to trackUsage().
GET /api/v1/stats/predict — totalPointsSpenttotalPointsSpent and pointsSpentLast30Days now include creditsUsed from api_usage in addition to predict_binary_usage, predict_multi_usage, and predict_batch_results. The daily volume time series also incorporates api_usage daily points. Two new unified alias fields added: totalPointsConsumed and pointsConsumedLast30Days.
mahabote.calculate + twelvepalaces.calculateBug fix: these two endpoints were passing statusCode=5 (the credit cost) as the HTTP status code argument to trackUsage(). Corrected to statusCode=200 with creditsUsed=5 in the correct position.
v3.39.0Homepage hero paragraphReplaced verbose copy with concise single-line: '29 divination systems across 5 traditions — plus 7 TIAN Blended synthesis endpoints. Structured JSON. Typed responses.'
Homepage status pillRemoved 'Base network' from the status pill and from the code block footer status bar.
Homepage hero code blockCode block auto-rotation now pauses when the user hovers over the block, resuming on mouse leave. almanac.daily response example filled with realistic fields: date, dayRating, luckyColor, luckyNumber, auspiciousHours, avoidHours.
GET /systemsHash-based scroll-to-tradition: navigating to /systems#Eastern (or any tradition) now smoothly scrolls to and briefly highlights the matching section on mount.
v3.38.0Homepage hero code blockCode block now rotates through 4 examples (predict.binaryBatch, tian.global, compatibility.birthday, almanac.daily) every 6 seconds with manual tab switcher. Each example shows correct endpoint, body, response, and latency. Amber dot indicators show current position.
Homepage tradition pillsTradition pills (Eastern/Western/Indian/African/Islamic) now link to /systems#Tradition anchors for direct discovery.
GET /systemsAdded id anchors (Eastern, Western, African, Indian, Islamic) to each tradition section for direct deep-linking from the homepage tradition pills.
v3.37.0Homepage banner badgeBanner version badge is now dynamic — reads CHANGELOG[0].version from trpc.catalogue.changelog instead of the hardcoded 'v3.30.0' string.
tian.global catalogue entryCatalogue description corrected from '29 divination systems' to '28 divination systems (Life Blueprint excluded)'. The tian.global fan-out has always excluded boneWeight; the description now reflects this accurately.
Homepage heroTradition tag row added between the hero paragraph and CTA buttons: five colour-coded pill tags (Eastern/amber, Western/blue, Indian/orange, African/green, Islamic/teal) give the hero section visual breathing room and immediately communicate the tradition breadth.
v3.36.0tian.global — all pagesCorrected tian.global credits from 140 to 145 TIAN Points across ApiDocs, Playground, EpistemicAgentGuide (3 occurrences), and Home.tsx TIAN Blended section. System count corrected from 26/35 to 28 across all occurrences.
Homepage hero statstian.global hero card now shows 28 systems · 145 TIAN Points (was 26 systems · 130 TIAN Points). Tags updated from all-26 to all-28.
Status pageGlobal TIAN note corrected from '37 traditions · 140 TIAN Points' to '28 systems · 145 TIAN Points'.
v3.35.0Homepage hero paragraphRewrote hero copy from the bloated 37-tradition/46-endpoint version to the accurate concise form: '29 divination systems across 5 traditions — Eastern, Western, Indian, African, and Islamic — plus 7 TIAN Blended synthesis endpoints and 5 Predict Oracle endpoints.'
Homepage hero statsEndpoint stat corrected from 46 to 49. Third stat replaced from 'TIAN Points / for Predict Oracle' to '5 traditions / 29 divination systems'.
Homepage SeoHeadSEO description and ogImageAlt updated to use 49 endpoints, 29 systems, 5 traditions. LD+JSON description also corrected.
v3.34.0Homepage bannerBanner 'See what's new' anchor is now dynamic — reads CHANGELOG[0].version from trpc.catalogue.changelog (staleTime 10 min, fallback v3.33.0). Will auto-update with every new version without code changes.
GET /guides/:slugIndividual guide pages now render a per-guide SeoHead using guide title, description, and tags from trpc.guides.list. Each guide has its own canonical URL and OG card.
GET /docsDocs sidebar now shows 'Developer Guides' (amber, links to /guides) and 'Agent Guide' (zinc, links to /docs/epistemic-agent) below the nav items, giving Docs-first developers a direct path to integration guides.
v3.33.0Homepage bannerBanner anchor fixed from #v3.31.0 to #v3.32.0 so 'See what's new' lands on the correct changelog entry.
SiteNavGuides badge count now driven from trpc.guides.list.useQuery() (staleTime 5 min, fallback 3). Auto-updates when new guides are added without touching SiteNav.tsx.
GET /guidesAdded SeoHead with title 'Integration Guides — askTIAN API', description, and keyword set for Telegram bot and app integration discoverability.
v3.32.0Homepage bannerBanner anchor fixed from #v3.30.0 to #v3.31.0 so 'See what's new' lands on the correct changelog entry.
SiteNavGuides nav link now shows a count badge (3) in both desktop and mobile nav, matching the Systems badge pattern.
EpistemicAgentGuideAdded 'More integration guides' callout above the Launch Checklist section, linking to /guides with a brief description of the 3 available guides.
v3.31.0Homepage bannerBanner bumped to v3.30.0 with copy referencing the new /guides section, EpistemicAgentGuide Sections 10.5–10.8, and SDK v2.0.0. Banner key updated so returning users see the new message.
SiteFooterAdded Guides link to footer nav pointing to /guides index page.
GET /guidesAdded tag-filter row above guide cards. Clicking a tag filters the list; clicking the active tag or 'All' resets. Tags on guide cards are also clickable to filter inline.
v3.30.0GET /guidesNew /guides index page listing all 3 developer integration guides with title, description, audience, version, date, and tags. Accessible from the top nav Guides link.
GET /guides/:slugIndividual guide pages rendering Markdown content via react-markdown + remark-gfm. Supports slugs: app-integration, telegram-bot, telegram-bot-api.
tRPC guides.listPublic tRPC procedure returning metadata for all 3 developer guides.
tRPC guides.getPublic tRPC procedure returning full Markdown content for a guide by slug.
SiteNav Guides linkGuides nav link now points to /guides index page instead of /docs/epistemic-agent directly.
Homepage banner anchorBanner 'See what's new' anchor updated from #v3.25.0 to #v3.29.0.
v3.29.0docs/telegram_bot_chatapi_wishlist_response.mdEngineering response to Telegram bot Chat API wishlist: resolves session token TTL discrepancy (privyToken=24h vs sessionToken=5min single-use), accepts conversations.list pagination and rate limit headers for v3.30.0, partially accepts conversation metadata (lastMessageAt + messageCount) for v3.31.0, declines bulk deduct (security model), resolves Telegram webhook retry policy (third-party docs + idempotency pattern), defers analytics endpoint.
v3.28.0EpistemicAgentGuide — Launch Checklist Sprint 4 (Telegram Bot)New Sprint 4 block added to the Launch Checklist with 11 items covering bot registration, wallet callback URL registration, DB schema, /start, wallet auth flow, message handler, /system two-level picker, /balance and /topup, /history and /new, webhook migration, and message splitting.
EpistemicAgentGuide — Wallet Callback Registration noteAmber note added below the checklist explaining how to register the /wallet-callback URL and obtain TIAN_WALLET_API_KEY: email [email protected] with bot username and callback URL; mailto link pre-fills subject and body for one-click submission.
v3.27.0Homepage banner textBanner copy updated from 'Sections 10.5 & 10.6' to 'Sections 10.5–10.8' and version badge bumped to v3.26.0 to reflect all new guide sections.
EpistemicAgentGuide — Launch Checklist Sprint 2Sprint 2 checklist updated: replaced apiFanout.ts and SSEStreamer items with native SSE stream reference (Section 10.7), added tradition-to-animation mapping item, updated quota enforcement to reference creditsUsed from done event.
EpistemicAgentGuide — Launch Checklist Sprint 3Sprint 3 checklist updated: Daily Anchor items now reference two-call composition (almanac.daily + horoscope.calculate, Section 10.8) with 90-day and 24-hour cache TTLs, and DailyAnchorData interface migration note.
docs/telegram_bot_integration_response.mdEngineering response to Telegram bot integration guide v1.0: 12 sections covering credentials, architecture, DB schema, session token lifecycle, system picker UX, TIAN Blend typing indicator pattern, complete error code reference, webhook setup, message splitting, /history implementation, and sprint plan.
v3.26.0Homepage banner anchorBanner 'See what's new' link corrected from /changelog#v3.24.0 to /changelog#v3.25.0 so it lands on the latest changelog entry.
EpistemicAgentGuide — Section 10.8 Daily Anchor PatternNew Section 10.8 documents the Daily Anchor card pattern: interim two-call composition (almanac.daily + horoscope.calculate) with field reference table and cache TTLs, future daily.anchor single-call preview with new luckyHours/dominantTheme fields, and a migration path table mapping interim fields to future API fields.
v3.25.0Homepage banner — bumped to v3.24.0Homepage What's New banner updated to v3.24.0 highlighting EpistemicAgentGuide Sections 10.5 & 10.6 and SDK v2.0.0 typed response interfaces.
Homepage SDK badge — bumped to v2.0.0Homepage npm install badge updated from [email protected] to [email protected] with updated npmjs.com link.
EpistemicAgentGuide — Section 10.7 SSE Contract AlignmentNew Section 10.7 documents the complete v3.24.0 SSE event contract: new synthesis_start event, tradition/iconUrl/systemSlug fields on system events, complete event sequence table, TypeScript consumer example, tradition-to-animation mapping, and app-side event type alignment table.
docs/app_asktian_integration_guide.md — app.asktian.com integration guideComprehensive 13-section developer integration guide for app.asktian.com covering authentication, core bug fixes, tian.global pattern profile, SSE v3.24.0 contract, decision guidance fan-out, daily anchor, compatibility features, SDK v2.0.0 reference, error handling, caching strategy, and roadmap.
v3.24.0EpistemicAgentGuide — Section 10.5 Western Sign Profile in Agent PromptsNew Section 10.5 covers horoscope.calculate signProfile in agent prompts: source comparison table (tian.global vs horoscope.calculate vs almanac.zodiacSign), wellness prompt builder, and Tarot spread context builder. Includes nav entry.
EpistemicAgentGuide — Section 10.6 Zodiac Compatibility DimensionsNew Section 10.6 covers compatibility.zodiac dimensions in agent prompts: dimension overview table, quick compatibility card builder, LLM prompt injection pattern, and upgrade path to compatibility.birthday for Western 4D. Includes nav entry.
SDK v2.0.0 — ZodiacCompatResponse, BirthdayCompatResponse, AlmanacZodiacResponse, HoroscopeResponseSDK v2.0.0 published to npm. Adds four response-shape interfaces for all 4 enriched endpoints so consumers can type their database storage and React props. Fully backwards-compatible with v1.x. Quick Reference table updated.
v3.23.0Homepage banner — bumped to v3.22.0Homepage What's New banner updated to v3.22.0 highlighting that all 4 enriched endpoints (compatibility.birthday, almanac.zodiacSign, horoscope.calculate, compatibility.zodiac) now have full Response Fields tables in ApiDocs.
ApiDocs — horoscope.calculate responseFields tablehoroscope.calculate endpoint now has a dedicated Response Fields table listing 16 fields: sunSign, moonSign, ascendant, elementProfile, placements, synthesis, signProfile.medical, signProfile.bodyParts, signProfile.herbalAllies, signProfile.symbolism, signProfile.houseRulership, signProfile.mantra, signProfile.majorArcana, signProfile.minorArcana, signProfile.famousPeople, and creditsUsed.
ApiDocs — compatibility.zodiac responseFields tablecompatibility.zodiac endpoint now has a dedicated Response Fields table listing 8 fields: score, level, description, and dimensions.love/career/wealth/health/marriage (each with label + text from YouApp ZodiacCompatibility dataset). All 4 enriched endpoints now have parity in ApiDocs documentation.
v3.22.0Playground — tian.global Copy as cURL uses SSE formatgetCurlCommand() now generates curl -N with Accept: text/event-stream for tian.global, matching the SSE streaming behaviour. Previously it generated a standard POST curl which would not receive the streamed response correctly.
ApiDocs — compatibility.birthday responseFields tablecompatibility.birthday endpoint now has a dedicated Response Fields table listing all 15 fields: score, romanceScore, friendshipScore, marriageScore, dimensions.* (5 Chinese zodiac 4D fields), and horoscopeDimensions.* (5 Western 4D fields).
ApiDocs — almanac.zodiacSign responseFields tablealmanac.zodiacSign endpoint now has a dedicated Response Fields table listing all 20 fields: western.*, chinese.*, chineseProfile.* (7 fields), and westernProfile.* (9 fields including mantra, majorArcana, minorArcana, famousPeople).
v3.21.0Homepage banner — bumped to v3.20.0Homepage What's New banner updated to v3.20.0 with a note about the new compatProfile collapsible panel in the Playground.
Playground — Copy as cURL buttonAll endpoints now have a 'Copy as cURL' button (slate-outlined, Terminal icon) below the Load Sample button. getCurlCommand() maps the current form state to a properly-formatted curl command with Authorization: Bearer at_live_YOUR_API_KEY_HERE header.
ApiDocs — tian.global responseFields tabletian.global endpoint now has a dedicated Response Fields table listing all 10 top-level fields including signProfile.westernSign, signProfile.mantra, signProfile.majorArcana, compatProfile.chineseAnimal, compatProfile.partnerAnimal, compatProfile.loveDimensionLabel, and creditsUsed.
v3.20.0Playground — compatProfile collapsible paneltian.global Playground sample response now renders a dedicated 'Chinese Zodiac Compat' collapsible panel showing chineseAnimal, partnerAnimal, and loveDimensionLabel (color-coded green/amber/red). Previously, compatProfile was only visible in the raw JSON dump.
EpistemicAgentGuide — Section 10.4 badge updatedSection 10.4 (tian.global Streaming Pattern) badge updated from 'v1.9.0' to 'v3.16.0 · SDK v1.9.0' to show both the API release version and the SDK version, consistent with Section 10.1–10.3 badge style.
v3.19.0Changelog — scroll-mt on section elementscroll-mt-20 moved from inner div to the <section> element (the hash target) so deep-links like /changelog#v3.13.0 land correctly below the sticky nav.
EpistemicAgentGuide — Section 10.3 badge addedSection 10.3 (Chinese Zodiac Profile — 60-Element Enrichment) now has a v3.9.0 amber badge matching the visual treatment of Sections 10.1 and 10.2.
RSS feed — v3.17.0 entry verifiedChangelog RSS feed at /api/changelog.rss verified to include v3.17.0 entry (3 changes). Feed renders correctly with correct <title> and <description> per release.
v3.18.0Changelog — v3.17.0 entry addedv3.17.0 entry added to the CHANGELOG data array (banner bump, SDK v1.9.1 Streaming README, EpistemicAgentGuide nav fix). The 'See what's new →' deep-link from the banner now lands on a real section.
SDK README — Quick Start install command cleanSDK README Quick Start install command confirmed clean: npm install asktian-sdk with no stale version pin. No @1.6.0 or earlier version reference in the install block.
EpistemicAgentGuide — Section 10 badge v3.9.0–v3.16.0Section 10 ('Rich Profiles & 4D Compatibility') badge updated from 'v3.9.0 — YouApp dataset' to 'v3.9.0–v3.16.0 — YouApp dataset' to signal that this section covers multiple releases.
v3.17.0Homepage banner: v3.12.0 → v3.16.0What's New banner updated to v3.16.0 with messaging about TianGlobalStreamChunk streaming type in SDK v1.9.0 — fully typed for-await loop with signProfile and compatProfile on the done event. BANNER_KEY bumped so returning visitors see the updated announcement.
SDK v1.9.1 (npm) — Streaming README sectionasktian-sdk v1.9.1 published to npm. Adds a dedicated 'Streaming — tian.global' section to the README with a full for-await loop example using TianGlobalStreamChunk, a type cast note, and v1.9.0/v1.9.1 changelog entries. Quick Reference table updated with TianGlobalDoneEvent and TianGlobalStreamChunk entries. Homepage badge updated to v1.9.1.
EpistemicAgentGuide nav order fixEpistemicAgentGuide sidebar nav reordered so '10. Rich Profiles & 4D Compat' and '10.4 Streaming Pattern' appear before 'Launch Checklist', matching the DOM render order for correct scroll-spy behaviour.
v3.13.0Homepage banner: v3.10.0 → v3.12.0 → v3.13.0What's New banner updated to v3.13.0 with messaging about tian.global signProfile/compatProfile fields and SDK v1.8.0. BANNER_KEY bumped so returning visitors see the updated announcement.
SDK v1.8.0 (npm)asktian-sdk v1.8.0 published to npm. Adds 2 new exported TypeScript interfaces: TianGlobalSignProfile (westernSign, mantra, majorArcana) and TianGlobalCompatProfile (chineseAnimal, partnerAnimal, loveDimensionLabel). These type the new signProfile and compatProfile fields returned directly by tian.global.
ApiDocs — tian.global response exampletian.global response example in ApiDocs now shows signProfile and compatProfile at the top level alongside eastern/western/african/islamic blocks, making the new fields immediately discoverable in the docs.
Playground — Load Sample button redesignThe 'View Sample Response' button across all Playground endpoints has been restyled to an amber-outlined 'Load Sample Response' button with FlaskConical icon, visually distinct from live-run actions. A 'Pre-built fixture — no TIAN Points consumed' note appears below each button. Blended TIAN endpoints (with Run Live SSE) are consistent.
tian.global — signProfile + compatProfile in returntian.global return object now includes signProfile {westernSign, mantra, majorArcana} and compatProfile {chineseAnimal, partnerAnimal, loveDimensionLabel} at the top level. These are derived from almanac.zodiacSign and compatibility.zodiac enrichment data, allowing API consumers to access rich profile anchors in a single tian.global call without a separate almanac.zodiacSign call.
v3.10.0compatibility.birthday — dimensions (Chinese 4D parity)compatibility.birthday now returns a dimensions object (same structure as compatibility.zodiac) with marriage, love, career, wealth, and health sub-fields sourced from the YouApp ZodiacCompatibility dataset, keyed to the two persons' Chinese zodiac animals derived from their birth dates. This gives compatibility.birthday full parity with compatibility.zodiac for Chinese 4D analysis. The endpoint now returns both dimensions (Chinese) and horoscopeDimensions (Western) simultaneously.
Playground fixtures — 4 enriched endpointsPlayground sample responses for almanac.zodiacSign, compatibility.zodiac, compatibility.birthday, and horoscope.calculate updated to include the new enrichment fields: chineseProfile, westernProfile, dimensions, horoscopeDimensions, and signProfile. Developers testing in the Playground now see realistic full responses.
EpistemicAgentGuide — Section 10: Rich Profiles & 4D CompatibilityNew Section 10 added to the Epistemic Agent Guide covering three agent use-cases: (10.1) Sign Profile — how to use mantra, majorArcana, minorArcana, medical, herbalAllies, and symbolism fields to build daily intention cards and LLM system prompts; (10.2) 4-Dimension Compatibility — how to use dimensions and horoscopeDimensions for relationship report generation; (10.3) Chinese Zodiac Profile — how to use chineseProfile for identity cards and onboarding flows. Includes code examples for all three patterns.
v3.9.0almanac.zodiacSign — chineseProfile + westernProfilealmanac.zodiacSign now returns two new enrichment objects. chineseProfile (ChineseZodiacProfile) contains the full 60-element Chinese zodiac profile (12 animals × 5 elements): general overview, personality, strengths, weakness, career, love, and compatibility prose sourced from YouApp dataset. westernProfile (HoroscopeSignProfile) contains the full Western horoscope sign profile: description, personality, strengths, weaknesses, career, love, medical astrology, body parts, herbal allies, symbolism, element, season, house rulership, mantra, major arcana (Tarot), minor arcana, and famous people. Both fields are null if no matching profile is found.
compatibility.zodiac — dimensions (4D)compatibility.zodiac now returns a dimensions object with 5 sub-fields: marriage, love, career, wealth, health. Each sub-field has a label (e.g. 'Positive', 'Neutral', 'Negative') and a text description sourced from YouApp ZodiacCompatibility dataset. Covers all 144 Chinese zodiac animal pairs. Existing fields (score, auspiciousness, description, chineseCompatibility) are unchanged.
compatibility.birthday — horoscopeDimensions (4D)compatibility.birthday now returns a horoscopeDimensions object with intro and 4 sub-fields: love, career, wealth, health. Each sub-field has a label and text sourced from YouApp HoroscopeCompatibility dataset. Covers all 144 Western zodiac sign pairs. Existing fields (romanceScore, friendshipScore, marriageScore, astroDescription) are unchanged.
horoscope.calculate — signProfilehoroscope.calculate now returns a signProfile object (HoroscopeSignProfile) keyed to the computed sun sign. Contains medical astrology, body parts, herbal allies, symbolism, house rulership, mantra, major arcana (Tarot card), minor arcana, and famous people for the sun sign. Field is null if no profile is found.
SDK v1.7.0 (npm)asktian-sdk v1.7.0 published to npm. Adds 5 new exported TypeScript interfaces: ChineseZodiacProfile, HoroscopeSignProfile, CompatDimension, ZodiacDimensions, HoroscopeDimensions. These type the new enrichment fields on almanac.zodiacSign, compatibility.zodiac, compatibility.birthday, and horoscope.calculate.
v3.8.0twelvepalaces.calculateTwelve Palaces (十二宮) — Classical Chinese lunar birth fortune system attributed to Guiguzi. Accepts zodiac year, lunar month, lunar day, and birth hour. Derives palace (1–14) and degree via the traditional scoring table. Returns classical poem (詩曰), marriage fortune (婚姻), wealth fortune (財運), fortune title, and LLM synthesis. FORTUNE_DB covers all 29 palace-degree combinations with authentic classical text sourced from the original Guiguzi transmission. Costs 5 TIAN Points per call.
tian.global — 28 → 29 systems, 140 → 145 TIAN PointsTwelve Palaces added to the tian.global fan-out. The procedure now runs 29 systems in parallel (was 28). Credit cost updated from 140 to 145 TIAN Points (29 × 5). LLM synthesis prompt updated to include Twelve Palaces palace name alongside Mahabote, Jyotish, and other Eastern traditions.
Homepage banner: v3.7.0 → v3.8.0What's New banner updated to v3.8.0 and now mentions both Mahabote (မဟာဘုတ်) and 十二宮 Twelve Palaces as new Eastern systems. BANNER_KEY bumped so returning visitors see the updated announcement.
ApiDocs: isPM Wednesday PM callout boxThe isPM parameter row in the mahabote.calculate parameter table now has a small amber callout box explaining that the example date 1990-03-14 was a real Wednesday, making the isPM: true example concrete rather than arbitrary.
ApiDocs: tian.eastern + tian.global mention MahaboteThe tian.eastern and tian.global endpoint descriptions in ApiDocs now explicitly mention mahabote.calculate as one of the 28/29 systems they fan out to, helping developers understand the coverage.
SystemPage: Mahabote planet icon CDN hashesAll 8 shiny planet icon URLs on the /systems/mahabote hero section were using placeholder CDN hashes. Fixed to use the correct production hashes. The hover shiny effect on all 8 planet icons now works correctly.
SDK v1.6.0 (npm)TwelvePalacesNamespace added to asktian-sdk. Exposes tian.twelvepalaces.calculate(input) with full TypeScript types for TwelvePalacesInput (zodiac, lunarMonth, lunarDay, birthHour, language, question). Published to npm as v1.6.0.
v3.7.0mahabote.calculateMahabote (မဟာဘုတ်) — Burmese planetary house system. Accepts birthDate (YYYY-MM-DD), optional isPM flag for Wednesday PM births (Rahu), and optional queryDate for year-chart analysis. Returns natal house chart (7 houses), birth planet, current major and minor periods from the 108-year cycle, Grand Trine and Minor Trine quality, year chart, planetary relationships, fortune score, and LLM synthesis. Costs 5 TIAN Points per call.
tian.global — 27 → 28 systems, 135 → 140 TIAN PointsMahabote added to the tian.global fan-out. The procedure now runs 28 systems in parallel (was 27). Credit cost updated from 135 to 140 TIAN Points (28 × 5). LLM synthesis prompt updated to reference Burmese tradition alongside Chinese, Vedic, Western, African, and Islamic.
Sitewide count: 47 → 48 endpoints, 35 → 36 traditionsSiteNav Systems badge, homepage hero, Dashboard welcome card, Status page endpoint list, ApiDocs hero, SystemsIndex header, and all JSON-LD structured data updated from 47 to 48 endpoints and from 35 to 36 traditions to reflect the addition of Mahabote.
v3.6.0GET /api/v1/systems — REST catalogue endpointNew versioned REST endpoint at /api/v1/systems returns the full 35-entry system catalogue as plain JSON (no tRPC envelope). No authentication required. Response is CDN-cached for 5 minutes (Cache-Control: public, s-maxage=300). The legacy /systems path is preserved as a backwards-compatible alias. Documented in the System Catalogue section of the API Reference.
horoscope and boneWeight missing from /systems REST endpointThe /systems REST endpoint had 33 entries — horoscope and boneWeight were never added when they were introduced in v3.5.0. Both entries are now included with correct dedicated icon URLs, tradition fields, and systemUrl links.
Sitewide count: 46 →47 endpoints, 34 →35 traditionsSiteNav Systems badge, homepage hero, Dashboard welcome card, Playground tian.global label, Status page endpoint list, ApiDocs hero, and all JSON-LD structured data updated from 46 to 47 endpoints and from 34 to 35 traditions to reflect the addition of horoscope and boneWeight.
v3.5.0SDK v1.4.0: 9 wrong procedure names correctedDaliuNamespace, XiaoliuNamespace, TaiyiNamespace were calling daliu.calculate / xiaoliu.calculate / taiyi.calculate — all wrong. Correct router names are daLiuRen.calculate, xiaoLiuRen.calculate, taiYi.calculate. CompatibilityNamespace was calling compatibility.calculate (does not exist); split into three methods: compatibility.zodiac, compatibility.birthday, compatibility.bloodType. AuspiciousNamespace was calling auspicious.analyze; corrected to auspicious.analyzeNumber. AlmanacNamespace was calling almanac.get; split into almanac.daily and almanac.zodiacSign. IfaNamespace was calling ifa.calculate; corrected to ifa.draw. All namespace classes and the README method table updated.
ApiDocs PATH_TO_SLUG: life-boneWeight key corrected to boneWeightPATH_TO_SLUG in ApiDocs.tsx mapped /api/trpc/life.boneWeight to "life-boneWeight" but SAMPLE_RESPONSES keys the entry as "boneWeight". The mismatch caused the full sample response panel to show nothing for the Life Blueprint endpoint. Fixed by aligning the slug to "boneWeight".
systemContent.ts: horoscope and boneWeight system entriesWestern Horoscope (slug: horoscope, tradition: Western) and Life Blueprint / 稱骨算命 (slug: boneWeight, tradition: Eastern) were missing from SYSTEM_CONTENT. Both entries added with full overview, origin, history, howItWorks, goodFor, useCases, famousExamples, keyTerms, apiHighlight, and relatedSystems fields. They now appear in the Systems Index under their respective tradition sections.
codeSnippets.ts: 9 wrong SDK method names and 2 missing entriesgetSdkMethod() was returning stale method names for compatibility (was compatibility.calculate), auspicious (was auspicious.analyze), almanac (was almanac.get), ifa (was ifa.calculate). Updated to compatibility.zodiac, auspicious.analyzeNumber, almanac.daily, ifa.draw. Added horoscope and boneWeight entries. Added getExampleInput() cases for horoscope and boneWeight so SDK code snippets on system detail pages render correct inputs.
systemContent.ts: compatibility and khatt endpoint pathscompatibility endpoint was stored as /compatibility/zodiac (slash-separated) and khatt as /khatt/calculate — both using the wrong path separator. Corrected to dot-notation: compatibility.zodiac and khatt.calculate to match the tRPC router.
Homepage SDK badge: v1.3.0 → v1.4.0npm install snippet and npmjs.com link on the homepage updated from [email protected] to [email protected].
v3.4.08 new standalone divination endpointsIfá (ifa.draw), Fa/Vodun (vodun.calculate), Hakata (hakata.calculate), Rammal (rammal.calculate), Khatt al-Raml (khatt.calculate), Jyotish (jyotish.calculate), Anka Shastra (anka.calculate), and Western Horoscope (horoscope.calculate) are now callable as independent endpoints. Previously these systems were only accessible via the tian.african, tian.islamic, tian.indian, and tian.western blended endpoints. Each costs 1 TIAN Points per call and accepts birthDate + optional question. Total public endpoint count: 46.
Playground: 8 new endpoint formsAll 8 new standalone endpoints now have dedicated form sections in the Playground with birth date input, optional question field, and realistic sample fixture responses. Horoscope additionally accepts a birth hour for improved Ascendant accuracy.
ApiDocs: horoscope.calculate endpoint documentationWestern Horoscope endpoint added to ApiDocs with full request schema, sample response, and TIAN Point cost. All 46 public endpoints are now fully documented.
Privy sign-in 401 loop — wrong JWT issuer in privyAuth.tsprivyAuth.ts was verifying Privy JWTs with issuer "privy.asktian.com" and "auth.privy.io" — both wrong. Privy always issues tokens with iss="privy.io" regardless of custom domain. Rewrote privyAuth.ts to use the official @privy-io/server-auth PrivyClient.verifyAuthToken() which handles issuer, JWKS, and SPKI key automatically. The /api/auth/privy 401 loop is resolved.
Systems page: 9 new system cards across 6 sectionsSystems page fully rewritten with 6 sections (Chinese, Western, African, Islamic, Indian, Life & Oracle). 9 new cards added: Horoscope, Ifá, Vodun, Hakata, Rammal, Khatt, Jyotish, Anka Shastra, Bone Weight Reading, and Predict Oracle. Header updated to "46 Divination Endpoints · 34 traditions".
Sitewide endpoint count: 38 → 46SiteNav badge, homepage hero, status pill, metrics card, SEO meta, and JSON-LD all updated from 38 to 46 endpoints and from 26 to 34 traditions.
v3.3.0TIAN Points billing via wallet.asktian.compredict.binary, predict.multi, and predict.binaryBatch now deduct TIAN Points from wallet.asktian.com on every call. Non-Enterprise callers must pass privyToken (Privy access token from getAccessToken()) in the request body. The server calls wallet.asktian.com POST /api/v1/auth/verify to validate the token and check balance, then POST /api/v1/points/deduct to atomically deduct. Enterprise subscribers bypass deduction entirely. Insufficient balance returns HTTP 402 PAYMENT_REQUIRED with the user's current balance, required amount, and a pre-filled top-up URL.
Idempotency keys on all predict deductionsEach verifyAndDeduct call now passes a deterministic idempotencyKey (userId:endpoint:requestTimestamp) to wallet.asktian.com, preventing double-charges on client retries. The key is scoped per user, per endpoint, and per request start time.
Fetch timeout + 5xx retry on wallet API callsAll wallet.asktian.com fetch calls now abort after 5 seconds via AbortController. 5xx responses are retried once with a 500ms backoff before propagating the error. This prevents predict endpoints from hanging indefinitely if the wallet service is slow.
predict.binaryBatch: Premium plan now allowedpredict.binaryBatch and predict.batchResult previously required Enterprise subscription. Both endpoints now accept Premium subscribers as well, with TIAN Points deduction applied (80 TIAN Points × N questions). Enterprise users continue to bypass deduction.
ApiDocs: privyToken param added to predict endpointspredict.binary, predict.multi, and predict.binaryBatch parameter tables in ApiDocs now document the privyToken field with type string? and a full description of when it is required. predict.binaryBatch and predict.batchResult plan requirement updated from Enterprise to Premium or Enterprise.
Pricing page: Predict Oracle TIAN Points cost tableNew section on the Pricing page lists all 5 predict.* endpoints with their TIAN Points cost, required plan, and notes. Includes a link to wallet.asktian.com for top-ups.
SDK snippets: privyToken in predict examplesgetSnippets() in codeSnippets.ts now injects privyToken: '<privy_access_token>' into the SDK example input for predict.binary, predict.multi, and predict.binaryBatch, with a comment explaining when it is required vs optional.
Get API Key button: Privy login race conditionThe Get API Key button on the homepage and the Sign In button in SiteNav called privyLogin() before the auth.me tRPC query resolved, causing Privy to throw 'Attempted to log in, but user is already logged in'. Fixed by guarding all login() calls with authLoading check — if auth state is still loading, the click is a no-op. SiteNav Sign In button also gains disabled={authLoading} to prevent double-clicks.
v3.2.0PWA manifest.jsonAdded manifest.json to client/public with name, short_name, icons (192×192, 512×512), theme_color (#09090b), and display: standalone. The site is now installable as a PWA on iOS and Android, and mobile browser chrome matches the dark theme.
Changelog RSS feed (/api/changelog.rss)New Express endpoint at /api/changelog.rss serves the full CHANGELOG as a valid RSS 2.0 feed with atom:link self-reference, XML-escaped content, per-release <item> blocks, and Cache-Control: public, max-age=3600. Developers can subscribe to release notes directly in their feed reader.
Subscribe via RSS button on Changelog pageOrange RSS icon button added to the Changelog page hero section next to the endpoint code block. Links directly to /api/changelog.rss and opens in a new tab, surfacing the feed to visitors who don't inspect <head>.
Critical JS modulepreloadVite build plugin now injects <link rel="modulepreload"> for the entry chunk (assets/index-*.js, ~113 KB) into the built index.html. Browsers that support modulepreload (Chrome, Edge, Firefox 115+) fetch this script in parallel with HTML parsing, reducing LCP on cold visits by ~100–200 ms.
React Query staleTime / gcTimeGlobal QueryClient default staleTime raised from 30 s to 5 min; gcTime set to 10 min. Navigating back to any previously visited page is now instant with no re-fetch spinner. Per-query overrides (staleTime: 0 on Status, staleTime: Infinity on Changelog) still take precedence.
DB composite indexes on predict tablesAdded composite (userId, createdAt) indexes on predict_binary_usage, predict_multi_usage, and predict_batch_results. Dashboard history queries (WHERE userId = ? ORDER BY createdAt DESC) now hit a single index instead of scanning the userId index then sorting.
v3.1.0SDK v1.2.2 (npm)SDK README fully rewritten to document all 5 predict.* methods with typed input/output examples, a pricing table, error handling reference, and a changelog. SDK v1.2.0 and v1.2.1 deprecated on npm with migration message pointing to v1.2.2.
ApiDocs: Predict Oracle Quick-Start sectionNew sidebar section with a 3-step walkthrough (get key → call predict.binary → read confidence). Includes a curl/SDK tab block, annotated response, confidence threshold table, and a Try it live button that deep-links to the Playground pre-filled with predict.binary.
Homepage hero code exampleHero code block replaced from divination.draw to a 2-question predict.binaryBatch call with matching response tab (two results, totalCreditsUsed, batchId). Homepage View Docs CTA updated to deep-link to /docs#predict-quickstart.
Playground: ConfidenceGauge componentNew ConfidenceGauge component renders a horizontal 0–100 bar with four colour-banded threshold zones (red <50, orange 50–64, amber 65–74, emerald ≥75). Full gauge appears in predict.binary and predict.multi result panels; compact variant appears in each predict.binaryBatch question card and in Dashboard Batch History expanded rows.
Playground: Copy-as-SDK buttonCopy-as-SDK button appears below the run buttons for all predict.* endpoints. Copies the ready-to-run TypeScript SDK snippet to the clipboard. Snippet reflects live form values (question text, options, resolution date) — not hardcoded defaults.
Playground: Reset defaults linkReset defaults link added to predict.binary, predict.multi, and predict.binaryBatch forms. One click restores the canonical example values without a page refresh.
Playground: predict.batchResult endpointpredict.batchResult added to the Playground endpoint selector with a batchId input field and a 3-question sample fixture (2 succeeded, 1 timed out).
ApiDocs: predict.multi SDK tab in calloutThe predict.multi next-steps callout now has a curl/SDK toggle, matching the step 2 pattern. The SDK tab shows client.predict.multi() with a 3-option example.
codeSnippets.ts: AskTianClient → AskTianFixed class name in all SDK snippets in the endpoint reference from AskTianClient to AskTian (matching the published v1.2.2 API). Also corrected predict field names: targetDate → resolutionDate, added optionA/optionB.
Dashboard: stale system count fixedDashboard new-user welcome card and onboarding step 2 updated from '33 divination systems' to '38 endpoints (26 traditions, 7 TIAN Blended, 5 Predict Oracle)'. Changelog SEO description updated from '26 divination systems' to '38 endpoints'.
v3.0.0Blank page on load (Privy TDZ crash)Removed @privy-io and wagmi/viem from Vite manualChunks. Privy imports wagmi/viem internally; splitting them into separate chunks caused Rollup to linearise the circular dependency graph in the wrong order, producing a 'Cannot access Vn/Nz before initialization' TDZ crash that prevented the app from mounting. Removing the split lets Rollup keep the full dependency graph intact in the vendor chunk.
Auto-redirect from / to /dashboardRemoved the post-login redirect in useAuth.ts that fired window.location.href = '/dashboard' on every page load for authenticated users. Visitors can now browse the homepage, docs, systems, and pricing while logged in without being redirected.
LLM Service degraded on /statusThe health check was probing GET /models which does not exist on the Manus built-in API (returning 404 in ~20ms). Now probes POST /v1/chat/completions with max_tokens:1, accepting HTTP 200 or 400 as healthy.
predict.binaryBinary oracle for Yes/No prediction market questions. Consults 10 metaphysical systems in parallel with automatic resolutionDate proximity weighting. Returns confidence 0-100, predicted option, per-system votes, and an LLM-synthesised thesis. Costs 100 TIAN Points per call.
predict.multiMulti-option oracle for prediction markets with 3–500 choices. Consults 7 systems in parallel with proximity weighting. Returns per-option probability distribution, top pick, and an LLM-synthesised thesis. Costs 150 TIAN Points per call.
predict.binaryBatchBatch binary oracle for up to 20 questions in a single call. Questions are processed in 5-concurrent rounds (4 rounds max for 20 questions), with a typical response time of 8–15 seconds. Each successful question costs 80 TIAN Points (20% discount vs predict.binary); failed questions are not charged. Requires Premium or Enterprise subscription. Fires predict.batch.completed webhook on completion.
predict.completed webhook eventpredict.binary and predict.multi now fire a predict.completed webhook event after each successful prediction. Payload includes question, resolutionDate, predictedOption, confidence, type (binary/multi), and timestamp. Enables integrators to receive push updates instead of polling.
resolutionDate proximity weightingpredict.binary and predict.multi now apply automatic proximity weighting based on days until resolution. Near-term markets (≤7 days) weight time-sensitive systems (Qimen, Da Liu Ren, Tarot, Runes) up to 1.4×. Long-horizon markets (≥90 days) weight long-cycle systems (Tai Yi, Jyotish, Meihua) up to 1.4×.
Dashboard empty-state for new usersNew users with no API keys or usage now see a guided 'Welcome to askTIAN API' panel with three actionable steps: create an API key, make a first call, and explore the Playground.
Dashboard rate-limit warning bannersAmber banner when monthly remaining quota drops below 20% and a red banner when quota is fully exhausted (monthlyRemaining === 0). The red banner explains that all API calls are returning 429 and shows the reset date.
Dashboard ← Home breadcrumbA subtle '← Home / Dashboard' breadcrumb in the dashboard sub-header lets users navigate back to the homepage without using the browser back button.
predict.batchResultRe-fetch a completed binaryBatch result by its batchId. Results are persisted server-side before the predict.batch.completed webhook fires, so callers can always recover a lost response. Returns the full per-question results array, totalCreditsUsed, successCount, and createdAt. Free — no TIAN Points cost.
predict.batchHistoryReturns the last 100 binaryBatch results for the authenticated user, ordered by creation time descending. Used by the Dashboard Batch History card for self-serve audit trail. Free — no TIAN Points cost.
predict.batch.completed webhook eventpredict.binaryBatch now fires a predict.batch.completed webhook event after the batch completes. Payload includes batchId, successCount, failureCount, totalCreditsUsed, and timestamp. Enables integrators to trigger recovery via predict.batchResult without polling.
Endpoint count: 33 → 38Five Predict Oracle endpoints (predict.binary, predict.multi, predict.binaryBatch, predict.batchResult, predict.batchHistory) bring the total public endpoint count to 38 (23 core divination + 7 TIAN blended + 5 Predict Oracle + 3 catalogue/status).
v2.9.0Payment replay attack fixsubmitTxHash now verifies that the ERC-20 Transfer log topics[1] (FROM address) matches the submitting user's registered wallet address. A second check in recordTianPayment rejects any txHash that already belongs to a different user, preventing cross-user payment replay attacks.
Error message sanitisationtRPC errorFormatter now strips raw database and internal error messages from INTERNAL_SERVER_ERROR (HTTP 500) responses in production, replacing them with a generic message and removing stack traces to prevent information leakage.
Request body limitGlobal Express body parser limit reduced from 50 MB to 1 MB to prevent request body bombing attacks. File upload routes retain their own per-route limits.
Trust proxy & real IP rate limitingapp.set('trust proxy', 1) added so the IP-based rate limiter (apiLimiter 300/15 min, authLimiter 20/15 min) sees the real client IP behind the reverse proxy instead of the proxy's IP.
Content-Security-PolicyHelmet CSP enabled in production with an allowlist covering CDN assets, Privy, Base RPC, and Vite dev server. CSP remains disabled in development to preserve Vite HMR.
X-RateLimit-* response headersEvery /api/trpc response now includes X-RateLimit-Limit (monthly quota), X-RateLimit-Remaining (calls left this month, clamped to 0), and X-RateLimit-Reset (Unix timestamp of the first second of next month UTC). Unauthenticated requests receive no headers. Plans with no monthly cap return 'unlimited'.
Retry-After on 429 responsesBoth the monthly quota exhaustion (TOO_MANY_REQUESTS from requireQuota) and the IP-based rate limiters (apiLimiter, authLimiter) now set a Retry-After header on 429 responses, giving clients the exact number of seconds to wait before retrying.
Error Reference in ApiDocsNew 'Error Reference' section in ApiDocs listing all 7 tRPC error codes (UNAUTHORIZED, FORBIDDEN, TOO_MANY_REQUESTS, BAD_REQUEST, NOT_FOUND, CONFLICT, INTERNAL_SERVER_ERROR) with HTTP status mappings, error envelope shape, and a Python error-handling code example.
Rate Limits section in ApiDocsNew 'Rate Limits' section in ApiDocs documenting the three X-RateLimit-* headers, the monthly reset cycle, the two IP-based rate limit tiers, a comparison table, and a Python backoff code example with Retry-After support.
Webhook delivery receiptswebhook_logs now stores the first 2 KB of each HTTP response body. A collapsible delivery log appears in the Dashboard webhook card showing status code, event name, duration, timestamp, and expandable response body. A Retry button on failed entries calls the new webhook.retry procedure to re-trigger deliveries without leaving the Dashboard.
API key environment tagsAPI keys can now be tagged with an environment label (production / staging / dev) via a colour-coded dropdown on each key row in the Dashboard. Tags are stored in the api_keys table and included in all key list responses.
Per-key usage sparklineEach API key row in the Dashboard now shows a 7-day bar sparkline of daily call volume when usage data is present, backed by the new apiKeys.dailyUsage procedure and getKeyDailyUsage db helper.
Per-key monthly / all-time call countsEach API key row shows a violet badge with 'this-month / all-time' call counts, backed by the extended getUsagePerApiKey helper using parallel DB queries.
Admin DB Pool Health widgetAdminPanel Overview tab now includes a live DB Pool Health card showing active connections, free connections, queue depth, a colour-coded status badge, and a connection utilisation bar. Auto-refreshes every 10 seconds via the new admin.dbHealth procedure.
DB connection pool hardeningmysql2 pool now configured with queueLimit: 50 (was unlimited) to fail fast under extreme load. A pool enqueue event listener warns at queue depth ≥40/50 with an actionable log message.
Playground deep-links from system pagesEvery /systems/[slug] SEO page's 'Try in Playground' button now passes ?endpoint= so the Playground pre-selects the matching endpoint on arrival.
Treasury wallet Basescan linkThe treasury wallet address in the Dashboard payment card is now a clickable link to https://basescan.org/address/{wallet} with an ExternalLink icon.
Vite build optimisationmanualChunks added to Vite config splitting Privy, Radix UI, syntax highlighters, and recharts/d3 into separate async chunks. Build target set to es2022 to reduce polyfill overhead.
DB indexes on api_usageAdded apiKeyId_idx and apiKeyId_date_idx compound indexes on the api_usage table to eliminate full table scans on per-key usage queries (sparkline, breakdown, monthly count).
v2.8.0Systems nav badgeThe "Systems" link in the top navigation bar now displays a violet "33" pill badge on both desktop and mobile, signalling the full 33-system catalogue depth at a glance.
tian.eastwest Playground formThe tian.eastwest Playground form now shows clearly labelled section dividers — "Eastern inputs (14 systems)" and "Western inputs (5 systems)" — between the shared fields and the tradition-specific inputs, making it clear which parameters feed which sub-systems.
Homepage hero statsHero stat counter updated from "26 Systems / 14+2+5+3+2" to "33 Systems / 26+7 (Core + TIAN Blended)". SEO meta description and hero body copy updated to reference all 33 systems and 7 TIAN Blended synthesis endpoints.
Playground tian.african formtian.african Playground form now includes Ancestral Lineage/Clan input, Offering Preference selector (Ifá/Fa-Vodun/Hakata/No preference), and an explanatory callout describing the three-system synthesis.
Playground tian.islamic formtian.islamic Playground form now includes Geomantic Method selector (Both/Rammal only/Khatt al-Raml only), Niyyah/Intention field, and an explanatory callout describing the two-system synthesis.
Playground tian.indian formtian.indian Playground form now includes Birth Time (HH:MM), Birth Place, and Full Name (for Anka Shastra) inputs, plus an explanatory callout describing the Jyotish + Anka Shastra synthesis.
Enterprise plan call limitEnterprise plan monthly call limit changed from Unlimited to 500,000 calls/mth across Pricing page, Dashboard, Home, and the subscription_plans database record.
Icon Pack white-variant previewThe Icon Pack table in ApiDocs now shows the white-variant icon (white monochrome PNG) on a dark grey container, and the transparent-variant icon (colored PNG) on a white container. Previously the backgrounds were swapped, making the white icon invisible.
33 SEO system pagesAll 7 TIAN Blended systems (tian-eastern, tian-western, tian-eastwest, tian-african, tian-islamic, tian-indian, tian-global) now have individual SEO-optimised pages at /systems/[slug] with full article content, JSON-LD structured data, and a "Blended Systems" section in the /systems index. Total: 33 system pages.
v2.7.0Credit multiplier 5×All 7 TIAN blended endpoints updated from 2× to 5× per-system credit cost: tian.eastern 70 TIAN Points (14×5), tian.western 25 TIAN Points (5×5), tian.eastwest 95 TIAN Points (19×5), tian.african 15 TIAN Points (3×5), tian.islamic 10 TIAN Points (2×5), tian.indian 10 TIAN Points (2×5), tian.global 130 TIAN Points (26×5). Reflects the premium synthesis value of multi-system LLM readings.
7 individual system endpoints in ApiDocsIfá, Fa/Vodun, Hakata, Rammal, Khatt al-Raml, Jyotish, and Anka Shastra are now individually documented in ApiDocs with full parameter specs, curl examples, and sample responses. Total documented endpoints: 39.
khatt entry in catalogue.listKhatt al-Raml is now a standalone entry in catalogue.list (id: "khatt") with all 4 icon colour variants.
catalogue.list iconVariants fieldEvery entry in catalogue.list now includes an iconVariants object with original, transparent, white, and black CDN URLs for programmatic icon access.
ApiDocs hero endpoint countApiDocs hero updated to 39 endpoints. Changelog link added to ApiDocs hero section. Changelog link removed from top navigation bar.
Pricing page TIAN Points labelPricing page plan prices now correctly display "TIAN Points" (was "TIAN") next to the token amount. FAQ updated to match.
tian.eastwest callout on /systemstian.eastwest hero callout added to the /systems page between the Western tradition table and the tian.global callout.
v2.6.0predict.binaryNew Prediction Market Oracle endpoint for binary (Yes/No) questions. Consults 10 metaphysical systems (Qimen Dunjia, Da Liu Ren, Tai Yi, Liuyao, Meihua Yi Shu, Jyotish Prashna, Rammal, Western Horary, Tarot, Runes). Returns predicted option, per-system confidence-weighted aggregate score, system breakdown, and LLM-synthesised analyst thesis. Costs 100 TIAN Points per call. Requires Premium or Enterprise subscription.
predict.multiNew Prediction Market Oracle endpoint for multi-option questions (3–20 candidates). Consults 7 systems best suited for multi-candidate ranking (Da Liu Ren, Jyotish Prashna, Western Horary, Tarot, Runes, Meihua Yi Shu, Qimen Dunjia). Returns predicted winner, per-option composite scores, confidence score (margin-based), and LLM-synthesised analyst thesis. Costs 150 TIAN Points per call.
Playground predict UIPlayground now includes Binary Oracle and Multi-Option Oracle endpoints with dedicated input forms (question, options, resolution date) and a rich result display showing the confidence gauge, system breakdown, and per-option score bars.
ApiDocs Predict Oracle sectionNew Predict Oracle category added to ApiDocs with full parameter documentation and curl examples for both predict.binary and predict.multi.
Hero and Status endpoint countsHero status pill, feature card, and Status page endpoint availability table updated from 33 to 35 endpoints to reflect the two new predict endpoints.
Icon borders sitewideAll system icon containers across SystemsIndex, Home, SystemPage, and ApiDocs updated to rounded-xl with white/20 border and white/50 hover border, replacing the previous zinc-800 dark border style.
Pricing page Enterprise rowsRemoved SLA guarantee, Dedicated account manager, and White-label options from the Enterprise tier feature comparison table.
ApiDocs catalogue.list sampleSample response fixture updated from "22 entries total" to "33 entries total" to match the current endpoint count.
v2.5.0TIAN Points language sitewideAll user-facing "credits" labels replaced with "TIAN Points" across Home, ApiDocs, SystemsIndex, Playground, Status, SystemPage, and AdminPanel pages to reinforce the 1 TIAN Points = 1 TIAN credit equivalence.
tian.global display creditsHome and Playground now correctly show 52 TIAN Points for tian.global (was 50). The "4 traditions" label in Playground corrected to "5 traditions".
Status page endpoint tableEndpoint availability table expanded from 3 to 8 entries, now listing all 7 TIAN blended endpoints (Eastern, Western, East-West, African, Islamic, Indian, Global) with correct TIAN Points costs.
Home hero SEO descriptionSEO meta description updated to reference 26 systems and 5 traditions (Indian added alongside Eastern, Western, African, Islamic).
v2.4.0Changelog pagePublic /changelog page now live at api.asktian.com/changelog — shows all release notes in a structured table with colour-coded type badges (Added/Fixed/Updated/Renamed/Breaking). Powered by the catalogue.changelog tRPC endpoint. Linked from SiteNav and SiteFooter.
tian.eastwest descriptionApiDocs description now explicitly states 14 Eastern + 5 Western = 19 systems, and clarifies that Indian systems (Jyotish, Anka Shastra) are covered by tian.indian, not this endpoint.
tian.global credit trackingrouters.ts ALL_GLOBAL_SYSTEMS now includes khatt (26 systems total). creditsUsed updated from 50 to 52 TIAN credits. Comment updated to reflect 26 systems × 2 = 52 TIAN credits.
TIAN blend descriptionsAll TIAN blend endpoint descriptions in ApiDocs now say "TIAN credits" instead of "credits" to reinforce the TIAN Points token utility.
Changelog type coloursChangelog page now renders Renamed entries in violet and Updated entries in cyan, in addition to the existing Added/Fixed/Changed/Breaking/Deprecated colour scheme.
v2.3.0tian.global descriptionUpdated tian.global description across ApiDocs and SystemsIndex from "all 25 systems" to "all 26 systems", and from 4 traditions to 5 traditions (Eastern, Indian, Western, African, Islamic). Credit cost updated to 52 (26 systems × 2).
SystemsIndex descriptionThe /systems page description now correctly lists 14 Eastern, 2 Indian, 5 Western, 3 African, and 2 Islamic systems (5 distinct traditions).
tian.global response sampleThe ApiDocs sample response for tian.global now includes the indian tradition score and reflects 5 traditions in the globalSynthesis field.
v2.2.0tian.indianIndian TIAN — runs Jyotish (Vedic Astrology) and Anka Shastra (Indian Numerology) in parallel and synthesises a unified Indian metaphysical reading via LLM. Costs 2 credits. Requires Premium or Enterprise subscription.
tian.indian (Playground)tian.indian is now available in the interactive Playground with sample fixtures for birthDate and question inputs.
tian.indian (ApiDocs)tian.indian is now fully documented in the ApiDocs TIAN Blended section with parameters, example curl, and sample response.
tian.indian (SystemsIndex)The /systems page now features a dedicated tian.indian hero callout (rose border) between the Islamic and Global callouts, with Jyotish and Anka Shastra tradition badges.
Khatt al-Raml (Homepage)Khatt al-Raml (system 26) is now listed in the homepage SYSTEMS table with its CDN icon and Islamic tradition tag.
Homepage metric labelThe tradition breakdown label updated from "16+6+3" to "16+6+2+2" (14 Eastern + 2 Indian, 5 Western, 3 African, 2 Islamic) to reflect distinct Indian and Islamic traditions.
Homepage TIAN gridThe TIAN Blended section on the homepage is now a 7-column grid (Eastern, Western, African, East-West, Islamic, Indian, Global) reflecting all 7 blend endpoints.
GET /systemsNow returns 33 entries (26 core + 7 TIAN Blended) including tian.indian.
SystemsIndex titleThe /systems page title and description updated to "All 26 Divination Systems" with the correct tradition breakdown.
v2.1.0Homepage stat badgeThe "Systems" stat badge on the homepage now correctly reads 26 (was 25). Hero description updated to include Khatt al-Raml.
tian.islamic hero calloutThe /systems page now features a dedicated tian.islamic hero section between the Islamic tradition table and the tian.global callout, with tradition badges for Rammal and Khatt al-Raml, and direct links to the Playground and Docs.
Islamic tradition tableKhatt al-Raml (tradition: Islamic) now automatically appears in the Islamic tradition table on the /systems page alongside Rammal.
v2.0.0khatt.calculateKhatt al-Raml (North African Geomancy) — the Maghrebi and Saharan variant of Islamic geomancy, using sand-line figures (Ashkal) and the Qadi verdict system. Covers Morocco, Algeria, Tunisia, Libya, and the wider Saharan tradition.
tian.islamicIslamic TIAN — runs Rammal and Khatt al-Raml in parallel and synthesises a unified Islamic geomantic reading via LLM. Costs 2 credits. Requires Premium or Enterprise subscription.
tian.islamic (Playground)tian.islamic is now available in the interactive Playground with sample fixtures for birthDate and question inputs.
tian.islamic (ApiDocs)tian.islamic is now fully documented in the ApiDocs TIAN Blended section with parameters, example curl, and sample response.
Homepage TIAN gridThe TIAN Blended section on the homepage is now a 6-column grid (Eastern, Western, African, East-West, Islamic, Global) reflecting all 6 blend endpoints.
GET /systemsNow returns 32 entries (26 core + 6 TIAN Blended) including khatt and tian.islamic.
Homepage countersHero badge updated from 21 to 30 endpoints. ApiDocs Icon Pack count updated to 30 icons. TIAN global description updated to 26 systems.
v1.9.0tian.harmonized → tian.eastwesttian.harmonized has been renamed to tian.eastwest across all endpoints, documentation, and the Playground. The endpoint path is now /tian/eastwest. The procedure synthesises all 19 Eastern and Western systems into a unified East-West reading.
tian.global iconDedicated tian.global icon (globe with Bagua, Odu, Sri Yantra, and crescent-star at the four cardinal points) added to the Icon Pack in 4 variants: original, transparent, white, black.
Islamic tradition tableThe /systems page now shows a dedicated Islamic tradition table listing Rammal (and future Islamic systems) separately from Eastern, Western, and African traditions.
tian.global hero calloutThe /systems page now features a dedicated tian.global hero section at the bottom with tradition badges, description, and direct links to the Playground and Docs.
v1.8.0tian.globalGlobal TIAN — runs all 25 divination systems across Eastern, Western, African, and Islamic traditions in parallel and synthesises a fully cross-civilisational reading via LLM. Costs 50 credits (25 systems × 2). Requires Enterprise subscription.
tian.african (Playground)tian.african is now available in the interactive Playground with sample fixtures for birthDate and question inputs.
tian.global (Playground)tian.global is now available in the interactive Playground with full 10-parameter form and sample fixtures.
System detail pagesFull dedicated detail pages now live at /systems/vodun, /systems/hakata, /systems/rammal, /systems/anka — completing the SEO footprint for all 25 systems.
GET /systemsNow returns 30 entries (25 core + 5 TIAN Blended) including tian.global.
v1.7.0vodun.calculateFa/Vodun (West African Divination) — 256 Du signs from the Fon and Ewe corpus, with Hwe myths, Ebo prescriptions, and Legba guidance. Covers the Beninese and Togolese Vodun tradition.
hakata.calculateHakata (Southern African Bone Throwing) — 16 configurations from the Shona oracle, with ancestral guidance and Nganga prescriptions. Covers Zimbabwe, Zambia, and Mozambique traditions.
rammal.calculateRammal (Islamic Geomancy) — full Darb al-Raml shield chart with 16 geomantic figures, Judge interpretation, and domain-specific guidance. Covers the Arabic, Persian, and Ottoman geomantic traditions.
anka.calculateAnka Shastra (Indian Numerology) — Moolank (root number), Bhagyank (destiny number), Namank (name number), and Lo Shu grid analysis with Navagraha planetary ruler interpretations.
tian.africanAfrican TIAN — blends Ifá, Fa/Vodun, and Hakata in parallel and synthesises a unified African divination reading via LLM. Costs 3 credits. Requires Premium or Enterprise plan.
GET /systemsNow returns 29 systems (25 core + 4 TIAN Blended) including the 4 new African and Islamic systems and tian.african blend.
v1.6.0GET /systemsNew REST-style endpoint returning all 29 systems (25 core + 4 TIAN Blended) with id, name, zh, tradition, endpoint, credits, iconUrl, description, and systemUrl. Mirrors catalogue.list at a cleaner path for developers who prefer REST over tRPC.
jyotish.calculateJyotish (Vedic Astrology) — sidereal birth chart with Navagraha, 27 Nakshatras, and Vimshottari Dasha planetary period timing. India's ancient science of light, one of the six Vedangas.
ifa.drawIfá (Yoruba Divination) — 256 Odù chapters with ese verses, Ebo prescriptions, and Orisha guidance. UNESCO Intangible Cultural Heritage of Humanity.
v1.5.0catalogue.listPublic endpoint returning all 22 divination systems with metadata, tradition tag, credit cost, and CDN icon URL.
catalogue.changelogPublic endpoint returning the full API changelog (this response).
status.checkPublic health-check endpoint returning DB, Base RPC, and LLM Service latency and status.
admin.webhookLogsAdmin endpoint returning webhook delivery log with timestamp, user, event, URL, HTTP status, and duration.
admin.retryWebhookAdmin endpoint to re-fire a failed webhook delivery to the user's current webhook URL.
v1.4.0tian.easternBlended Eastern TIAN reading — fans out to all 14 Eastern systems, synthesises via LLM. Costs 28 credits (14 × 2). Requires Premium or Enterprise plan.
tian.westernBlended Western TIAN reading — fans out to all 5 Western systems, synthesises via LLM. Costs 10 credits (5 × 2). Requires Premium or Enterprise plan.
tian.eastwestEast-West TIAN reading — fans out to all 19 systems across both traditions, synthesises via LLM with cross-tradition commentary. Costs 38 credits (19 × 2). Requires Premium or Enterprise plan.
v1.3.0All divination endpointsEvery divination response now includes a deterministic `score` field (0–100) computed from the reading's fortune level, element relationships, and spread composition. No additional credits consumed.
admin.getTianStatsAdmin endpoint returning per-endpoint usage counts for tian.eastern, tian.western, and tian.eastwest.
admin.getAllUsersResponse now includes `walletAddress` from the users table (set on Privy wallet login) in addition to `latestWallet` from payment history.
v1.2.0divination.draw591+ divination lots across 10 temple systems. Each lot includes a fortune level, poem, interpretation, and advice.
daLiuRen.calculateDa Liu Ren (大六壬) — Four Courses and Three Transmissions classical divination.
xiaoLiuRen.calculateXiao Liu Ren (小六壬) — Six Gods cycle folk divination.
taiYi.calculateTai Yi Shen Shu (太乙神數) — 72-year Grand Cycle cosmic forecasting.
compatibility.bloodTypeBlood type personality compatibility — A, B, O, AB compatibility matrix.
v1.1.0qimen.calculateQimen Dunjia (奇門遁甲) — 9 palaces, 8 gates, 9 stars, 8 deities.
liuyao.calculateLiuyao (六爻) — Six Lines I Ching with 64 hexagrams and changing lines.
meihua.calculateMeihua Yishu (梅花易數) — Plum Blossom divination.
nameAnalysis.analyzeName Analysis (姓名學) — Five formations numerology with stroke analysis.
compatibility.zodiacZodiac compatibility — Chinese zodiac animal harmony scores.
compatibility.birthdayBirthday compatibility — Chinese calendar element theory.
auspicious.analyzeNumberAuspiciousness analysis for phone numbers, license plates, and ID numbers.
almanac.dailyDaily almanac (黃曆) — twelve values, deities, and auspicious activities.
v1.0.0tarot.drawTarot — 78-card Rider-Waite deck, single card, 3-card, and Celtic Cross spreads.
coinFlip.flipCoin Flip Oracle — yes/no oracle with 7 domain-specific interpretations.
runes.castRunes — Elder Futhark 24-rune casting, single, three-rune, and five-rune spreads.
numerology.calculateNumerology — Pythagorean Life Path, Expression, Soul Urge, Personality, Birthday numbers.
astrology.calculateWestern Astrology — Sun, Moon, Rising sign analysis with decanates and ruling planets.
auth.meInitial platform launch — Manus OAuth, API key management, subscription plans, and usage tracking.