- Docs
- Agent Reference
- Agent Task Cheatsheet
Astrology API cheatsheet for AI agents
One-line semantics for the most-reached-for endpoints, grouped by API domain. Read this first when an agent needs a starting point. Full request and response schemas live in each per-product OpenAPI spec at /api/v2/{slug}/openapi.json.
Astrology
POST /astrology/natal-chart: Western birth chart with planets, houses, aspects, ascendant, midheaven.GET /astrology/horoscope/{sign}/daily: Daily horoscope. Also/weeklyand/monthlyvariants.POST /astrology/synastry: Inter-chart aspect analysis between two people.POST /astrology/compatibility-score: Percent plus category breakdowns and archetype.POST /astrology/transits: Current sky. Pass optionalnatalChartfor personalized aspects.GET /astrology/moon-phase/current: Current moon phase, illumination, sign.
TypeScript SDK example
roxy.astrology.generateNatalChart({ body: { date: '1990-06-15', time: '14:30:00', latitude: 40.7128, longitude: -74.006, timezone: 'America/New_York' } })
Python SDK example
roxy.astrology.generate_natal_chart(date="1990-06-15", time="14:30:00", latitude=40.7128, longitude=-74.006, timezone="America/New_York")
PHP SDK example
$roxy->astrology->generateNatalChart(date: '1990-06-15', time: '14:30:00', latitude: 40.7128, longitude: -74.006, timezone: 'America/New_York')
C# SDK example
roxy.Astrology.NatalChart.PostAsync(new() { Date = new Date(1990, 6, 15), Time = new Time(14, 30, 0), Latitude = 40.7128, Longitude = -74.006, Timezone = new() { String = "America/New_York" } })
Vedic
POST /vedic-astrology/birth-chart: Kundli with twelve rashi houses, planet placements, interpretations.POST /vedic-astrology/panchang/detailed: Daily panchang with rahu kaal, muhurtas, gulika, chandrabalam, tarabalam.POST /vedic-astrology/panchang/basic: Tithi, nakshatra, yoga, karana.POST /vedic-astrology/panchang/choghadiya: Eight day and eight night electional periods.POST /vedic-astrology/dasha/current: Current Mahadasha, Antardasha, Pratyantardasha, Sookshma.POST /vedic-astrology/dasha/major: Full 120-year Vimshottari timeline.POST /vedic-astrology/dosha/manglik: Mangal Dosha check.POST /vedic-astrology/dosha/kalsarpa: Kaal Sarp Dosha check.POST /vedic-astrology/dosha/sadhesati: Sade Sati (Saturn transit) check.POST /vedic-astrology/compatibility: Guna Milan (36-point Ashtakoota matching).POST /vedic-astrology/navamsa: D9 chart.POST /vedic-astrology/kp/chart: KP chart with cusps, planets, sub-lords.POST /vedic-astrology/kp/planets: KP planets with sub-lord and sub-sub-lord.POST /vedic-astrology/kp/ruling-planets: KP ruling planets for horary.GET /vedic-astrology/nakshatras/{id}: Single nakshatra detail (e.g.ashwini,pushya).
TypeScript SDK example
roxy.vedicAstrology.generateBirthChart({ body: { date: '1990-06-15', time: '14:30:00', latitude: 51.5074, longitude: -0.1278, timezone: 'Europe/London' } })
Python SDK example
roxy.vedic_astrology.generate_birth_chart(date="1990-06-15", time="14:30:00", latitude=51.5074, longitude=-0.1278, timezone="Europe/London")
PHP SDK example
$roxy->vedicAstrology->generateBirthChart(date: '1990-06-15', time: '14:30:00', latitude: 51.5074, longitude: -0.1278, timezone: 'Europe/London')
C# SDK example
roxy.VedicAstrology.BirthChart.PostAsync(new() { Date = new Date(1990, 6, 15), Time = new Time(14, 30, 0), Latitude = 51.5074, Longitude = -0.1278, Timezone = new() { String = "Europe/London" } })
Forecast
Cross-domain timing in one stateless call. Body wraps birthData (date, time, timezone; latitude/longitude optional, default 0), plus optional startDate, endDate (clamped to a 90-day horizon), and minSignificance. Event type and domain are stable English codes; only description localizes with ?lang=.
POST /forecast/transits: Western transit-to-natal aspects, sign ingresses, and retrograde stations over the window.POST /forecast/timeline: Cross-domain merge: Western transits plus Vedic Vimshottari dasha boundaries plus biorhythm critical days, significance-scored and time-ordered. Optionaldomainssubset.POST /forecast/solar-return: Annual solar-return chart cast on the Sun's return to its natal longitude (birthday / year-ahead). Needs coordinates: body isdate,time,year,latitude,longitude,timezone, so call/location/searchfirst.POST /forecast/significant-dates: High-significance highlights only (minSignificancedefaults to 70).POST /forecast/digest: Ranked top-N summary of the most significant events for a date.
TypeScript SDK example
roxy.forecast.forecastTransits({ body: { birthData: { date: '1990-06-15', time: '14:30:00', timezone: 'America/New_York' } } })
Python SDK example
roxy.forecast.forecast_transits(birth_data={"date": "1990-06-15", "time": "14:30:00", "timezone": "America/New_York"})
PHP SDK example
$roxy->forecast->forecastTransits(birthData: ['date' => '1990-06-15', 'time' => '14:30:00', 'timezone' => 'America/New_York'])
C# SDK example
roxy.Forecast.Transits.PostAsync(new() { BirthData = new() { Date = new Date(1990, 6, 15), Time = new Time(14, 30, 0), Timezone = new() { String = "America/New_York" } } })
Human Design
No coordinates needed: Human Design uses the birth instant and ecliptic longitudes, not the observer location. Body is date, time, timezone (no latitude/longitude, no /location/search step).
POST /human-design/bodygraph: Full chart in one call: type, strategy, authority, profile, definition, incarnation cross, the 9 centers, defined channels, and all 26 gate activations.POST /human-design/type: Energy type (Generator, Manifesting Generator, Projector, Manifestor, Reflector) with strategy and authority. The quiz-style entry point.POST /human-design/connection: Two-person compatibility across the 36 channels (electromagnetic, dominance, compromise, companionship).POST /human-design/profile: Profile (e.g. 5/1, 6/2) with personality and design line keynotes.POST /human-design/transit: Today's planetary activations overlaid on a natal bodygraph. Body wrapsbirthData.GET /human-design/gates/{number}: Single gate reference (1-64).
TypeScript SDK example
roxy.humanDesign.generateBodygraph({ body: { date: '1990-06-15', time: '14:30:00', timezone: 'America/New_York' } })
Python SDK example
roxy.human_design.generate_bodygraph(date="1990-06-15", time="14:30:00", timezone="America/New_York")
PHP SDK example
$roxy->humanDesign->generateBodygraph(date: '1990-06-15', time: '14:30:00', timezone: 'America/New_York')
C# SDK example
roxy.HumanDesign.Bodygraph.PostAsync(new() { Date = new Date(1990, 6, 15), Time = new Time(14, 30, 0), Timezone = new() { String = "America/New_York" } })
Chinese Astrology
No coordinates needed for the default clock. Body is date, time, timezone; longitude is required only when hourClock is local-mean or solar, which return 400 without it. Three school splits are typed request fields with named defaults and are echoed back on every response in conventions: dayBoundary (split-zi default, also midnight, early-zi), yearBoundary (li-chun default on the BaZi family, lunar-new-year default on /zodiac/sign), hourClock (clock default). Machine identifiers stay canonical English in every language; display text arrives in *Localized siblings.
POST /chinese-astrology/bazi/chart: Four Pillars in one call: year, month, day and hour pillars with stems, branches, Ten Gods, hidden stems and Na Yin, plusdayMaster,fiveElements,interactionsandconventions. The day pillar ispillars[2]and itstenGod.nameis alwaysDay Master.POST /chinese-astrology/bazi/day-master: Strong or weakverdictwith a numericscore, the three contributingfactors, andfavorableElements/unfavorableElements.POST /chinese-astrology/bazi/luck-pillars: Ten-year decade cycles withstartAge,startYear,endYear. Requiresgenderin the body, which sets the direction the pillars run and cannot be derived from the chart.POST /chinese-astrology/bazi/annual-forecast: Oneyearagainst the natal chart, withtenGod,yearBranchRelationand thebenMingNianflag.POST /chinese-astrology/zodiac/sign: Zodiac animal from a date alone. DefaultsyearBoundarytolunar-new-year, unlike the BaZi family.GET /chinese-astrology/zodiac/compatibility/{sign1}/{sign2}: Pair relationship,scoreout of 100, strengths, frictions, advice. No birth time.GET /chinese-astrology/calendar/day/{date}: Tong Shu almanac day:dayOfficer,mansion,clashAnimal,favours,avoids.POST /chinese-astrology/calendar/auspicious-days: Date selection. Takesactivity,startDate,endDate; the range is capped at 93 days and a wider one returns 400.POST /chinese-astrology/calendar/lunar-date: Gregorian to lunar and back, leap months handled. Computed on one world reference frame, so a lunar date does not shift with caller timezone.
TypeScript SDK example
roxy.chineseAstrology.generateBaziChart({ body: { date: '1990-06-15', time: '14:30:00', timezone: 'America/New_York' } })
Python SDK example
roxy.chinese_astrology.generate_bazi_chart(date="1990-06-15", time="14:30:00", timezone="America/New_York")
PHP SDK example
$roxy->chineseAstrology->generateBaziChart(date: '1990-06-15', time: '14:30:00', timezone: 'America/New_York')
C# SDK example
roxy.ChineseAstrology.Bazi.Chart.PostAsync(new() { Date = new Date(1990, 6, 15), Time = new Time(14, 30, 0), Timezone = new() { String = "America/New_York" } })
Feng Shui
The lightest input in the catalog. Personal calls need a birth date plus gender, which selects the Kua formula variant, and nothing else: no birth time, no coordinates, no /location/search step. Building calls need a period (1 to 9) and a facing direction. The feng shui year turns at Li Chun in early February, so a January birthday resolves to the previous solarYear, which the response states along with the boundaryDate it used.
POST /feng-shui/kua: Kua number withrawKua,reassigned, east or westgroup, the personal trigram, and all eight sectors withstar,natureandrank.kuais never 5; a raw 5 becomes 2 under themaleformula and 8 under thefemaleone.POST /feng-shui/eight-mansions: Full Ba Zhai map with a composedreadingper sector plusbestSectorandworstSector. Accepts akuadirectly or derives one fromdateandgender. Optionalfacinghere is a capitalised compass sector such asSouth.POST /feng-shui/flying-stars/natal: Nine-palace chart for a building. SendfacingDegrees(0 to 360, measured looking out from inside) orfacing(one of the 24 mountains, by id such aswuor label such asS2). Sending neither returns 400.GET /feng-shui/flying-stars/annual/{year}: Annual star overlay withcenterStar,changeoverDateand nine palaces.GET /feng-shui/afflictions/{year}: Tai Sui, Sui Po, San Sha and the Five Yellow. Their directional rules differ: Tai Sui should be behind you and never faced, San Sha is the reverse, and San Sha spans 75 degrees with three namedpartsrather than one direction.GET /feng-shui/periods: The 1864 to 2043 cycle pluscurrentPeriod. Read the period from here rather than hardcoding it.GET /feng-shui/bagua: Later Heaven bagua. Returns 9 sectors, not 8: the eight compass sectors plushealthat the Center, wheredirectionandtrigramare absent rather than null.
TypeScript SDK example
roxy.fengShui.calculateKuaNumber({ body: { date: '1990-06-15', gender: 'female' } })
Python SDK example
roxy.feng_shui.calculate_kua_number(date="1990-06-15", gender="female")
PHP SDK example
$roxy->fengShui->calculateKuaNumber(date: '1990-06-15', gender: 'female')
C# SDK example
roxy.FengShui.Kua.PostAsync(new() { Date = new Date(1990, 6, 15), Gender = RoxyApi.FengShui.Kua.KuaPostRequestBody_gender.Female })
Mesoamerican
The lightest input in the catalog alongside feng shui: every route takes a birth date in YYYY-MM-DD and nothing else, no birth time, no coordinates, no timezone, no /location/search step. Dates are read as proleptic Gregorian throughout, including before the 1582 reform, so a converter that switches to the Julian calendar there will differ by ten or eleven days. Three school splits are typed request fields with named defaults: correlation on every Maya route, yearBearerSystem on the chart, directionScheme on compatibility and the sign catalogue. Whichever was used comes back under conventions on every response, which is the field to echo when a user says another site disagrees.
POST /mesoamerican-astrology/mayan/tzolkin: Mayan day sign from a birth date, with coefficient, trecena and a composed nawal reading. The sign arrives in three namings:daySign(canonical id, never translated),daySignName,daySignClassicanddaySignKiche.POST /mesoamerican-astrology/mayan/chart: The whole day in one call. Tzolkin, Haab, the five positionlongCountwithdaysSinceEpochandjulianDayNumber,calendarRound,lordOfNight,yearBearer, the five point Cruz Maya and asummary.POST /mesoamerican-astrology/mayan/long-count/convert: Long Count to civil date or back. Send exactly one ofdateorlongCount; both or neither returns 400. Pre-1582 dates come back with anoteexplaining the proleptic Gregorian reading.GET /mesoamerican-astrology/mayan/daily: Day sign of the day plus anoverviewnaming the trecena. Optionaldate, cached to the UTC rollover, so a content schedule built weeks ahead matches what ships.GET /mesoamerican-astrology/mayan/calendar/monthly: Every civil day of ayearandmonthwith its day sign, number, trecena,haabstring andlongCount. One call fills a calendar UI.POST /mesoamerican-astrology/mayan/compatibility: Two dates in, both days plusdaysApart, five weightedcomponentswithholds, a compositescore, averdictband and asummary. The score is a RoxyAPI composite with a floor of 45, so render the components rather than the number alone.GET /mesoamerican-astrology/mayan/day-signsand/{id}: The twenty signs. The list carries both glosses,directionandcolor; the single call adds the full reading and the trecena the sign opens.GET /mesoamerican-astrology/mayan/trecenasand/{number}: The twenty thirteen day periods, each composed from the sign it opens on.GET /mesoamerican-astrology/mayan/haab-monthsand/{id}: The nineteen Haab periods, eighteen of twenty days plus Wayebʼ of five.POST /mesoamerican-astrology/aztec/tonalpohualli: The Aztec 260 day count. Same structure as the Tzolkin under Nahuatl names and a different anchor. Takes nocorrelationfield and echoes its own anchor instead.GET /mesoamerican-astrology/aztec/daily: Tonalpohualli sign of the day, same shape and same UTC rollover as the Maya daily.GET /mesoamerican-astrology/aztec/day-signsand/{id},GET /mesoamerican-astrology/aztec/trecenasand/{number}: The matching Aztec catalogues.
Two response conventions worth knowing before you parse: numberBand is ABSENT rather than null for coefficients 4, 5, 6 and 10, because only nine of the thirteen have a character recorded, and the Aztec responses carry a scope sentence naming the fields that domain deliberately does not return.
TypeScript SDK example
roxy.mesoamericanAstrology.calculateTzolkin({ body: { date: '1990-06-15' } })
Python SDK example
roxy.mesoamerican_astrology.calculate_tzolkin(date="1990-06-15")
PHP SDK example
$roxy->mesoamericanAstrology->calculateTzolkin(date: '1990-06-15')
C# SDK example
roxy.MesoamericanAstrology.Mayan.Tzolkin.PostAsync(new() { Date = new Date(1990, 6, 15) })
Vastu
Geometry in, citation out. Every route takes a plot and a facing and no birth data at all: send plot.width plus plot.depth for a compass aligned rectangle or plot.polygon for anything else, and either facing (one of the eight sectors) or facingDegrees (a bearing measured looking out), never both. The x axis runs east and the y axis north, and the mandala is aligned to the compass rather than to the building, so facing only says which side the front is on. Every verdict carries a source object: either a text, chapter, verse, translation and year, or the literal text: "convention" with a basis naming the practice, which is the discriminator to branch on. Seven school splits are typed request fields with named defaults, echoed back under conventions on every response: grid, ayadiText, vyayaFormula, slopeSchool, unit, hastaInches and muhurtaText.
POST /vastu/entrance: Which of the 32 perimeter padas a main door falls on, with thedevata, the classicaleffect,auspiciousnessandrecommendedPadas, the favourable padas on the same side. Senddoorcoordinates ordoorPosition, a fraction along the facing side, never both.doorPositionneeds a cardinal facing and returns 400 on an intercardinal one.POST /vastu/rooms: A verdict per room over a closed enum of twelve types, each withzone,idealDirections,avoidDirections, aremedyand its own source. Four types carry a verse and the other eight carry convention.scoreis a RoxyAPI composite andscoringpublishes the weights it was built from.POST /vastu/plot:shape,ratio,slope,water,extensions,cutsandroad, each with a verdict and a source.slopeLowDirectionis where the ground is LOW.slope.schoolsalways returns BOTH the classical and the modern reading whicheverslopeSchoolyou sent, withslope.chosennaming the one you led with.POST /vastu/mandala: The Vastu Purusha Mandala projected over the plot. 81cellseach with its devata and acenterpoint in your coordinates,brahmasthanas squares plus a polygon plus an area,marma, the sixvamsadiagonals and the nineatimarmacrossings. Ongrid: "64-pada"the chapter gives structure only, so there is no devata, marma, vamsa or atimarma.POST /vastu/ayadi: The six Ayadi formulas withmultiplier,divisor,product,remainderandgroupSizeshown per varga, plusvayasand averdictwhoseayaVyayais one ofaya-greater,equal,aya-lesserorzero-remainder. Every remainder is unit sensitive, sounitandhastaInchesare inputs and never assumed.POST /vastu/timing/griha-pravesh: Every day in a window that clears the day level muhurta rules, withadmittedBynaming the limbs that qualified it,rulescarrying each requirement and its source, andrejectionsByRulecounting what knocked the rest out. The window is capped at 93 days.leftToTheAstrologerpublishes the lagna, house and owner dependent rules a date search cannot settle.GET /vastu/directions: The eight directions withdikpala,kind, the mandalasquaresand the devatas on them, and thewatereffect for that quarter.GET /vastu/directions/{id}: One of them in full, addingelementandplaces. Ids are the sector names with case and punctuation folded, sonortheast,north-eastandNortheastall resolve.GET /vastu/devatas: The 45 devatas, paginated withtotal,limitandoffset.GET /vastu/devatas/{id}: One devata withclass,group,side,quadrant,squares,cells,padaCount,entrancePada, a composedrole, theversesit rests on and anoterecording a competing reading where two texts disagree.
TypeScript SDK example
roxy.vastu.calculateEntrancePada({ body: { plot: { width: 30, depth: 40 }, facing: 'East', doorPosition: 0.3 } })
Python SDK example
roxy.vastu.calculate_entrance_pada(plot={"width": 30, "depth": 40}, facing="East", door_position=0.3)
PHP SDK example
$roxy->vastu->calculateEntrancePada(plot: ['width' => 30, 'depth' => 40], facing: 'East', doorPosition: 0.3)
C# SDK example
roxy.Vastu.Entrance.PostAsync(new() { Plot = new() { Width = 30, Depth = 40 }, Facing = RoxyApi.Vastu.Entrance.EntrancePostRequestBody_facing.East, DoorPosition = 0.3 })
Numerology
POST /numerology/life-path: Pythagorean life path with master-number (11, 22, 33) and karmic-debt detection.POST /numerology/chart: Full profile: life path, expression, soul urge, personality, birth day, maturity.POST /numerology/compatibility: Couple matching by life-path / expression / soul urge. No birth time needed.POST /numerology/personal-year: Annual forecast from birthdate plus target year.POST /numerology/expression: Name-based destiny number.
TypeScript SDK example
roxy.numerology.calculateLifePath({ body: { year: 1990, month: 6, day: 15 } })
Python SDK example
roxy.numerology.calculate_life_path(year=1990, month=6, day=15)
PHP SDK example
$roxy->numerology->calculateLifePath(year: 1990, month: 6, day: 15)
C# SDK example
roxy.Numerology.LifePath.PostAsync(new() { Year = 1990, Month = 6, Day = 15 })
Kabbalah
A string in, a number and the spelling it came from out. POST /kabbalah/gematria takes either text, a Latin name that must be written in Hebrew first, or textHebrew, a spelling you supply; sending both or neither returns 400. There is no standard for writing a Latin name in Hebrew, so the response returns EVERY candidate spelling in hebrewForms with its own values, names the one it used in chosen, and states the rule that chose it. Two letter maps are offered under transliteration: letter-map-mathers, the 1887 plate, writes no letter for the vowel e and has no Hebrew for c, f, w or x, so a name containing one of those four returns 400 naming the letters rather than dropping them; letter-map-modern, the modern Israeli rules, covers every Latin letter. Every form states the readings it used in rule. Only the birth profile needs birth data, and it takes no latitude and no longitude at all: date, time and timezone and nothing else. Nine school splits are typed request fields with named defaults, echoed back under conventions on every response that has one: transliteration, misparGadol, atbashOutput, letterAttribution, treeVariant, sephirotSystem, angelDating, yearStart and leapDayPolicy, plus the afterSunset boolean. Every cipher, letter table and path attribution carries a tradition and a century, so a Renaissance Christian cipher is never returned as rabbinic practice.
POST /kabbalah/gematria: Every Hebrew spelling of the input with its cipher values and per letter breakdown, the AtBash and Albam substitutions, and the curated equal valuematcheswith at least two sources each.ciphersfilters the top levelvalues; eachhebrewFormsentry keeps the full set. Top level rows carry aname, the catalogue display name for thatidin the requested language, so a row labels itself without a second call.latinCiphers: trueadds three Latin alphabet ciphers with alineagesentence naming the authors, valid only with a Latintext.GET /kabbalah/ciphers: The provenance catalogue, 16 rows acrossciphers,latinCiphersandtransformations, each with adefinition,tradition,century,computedflag andsources.mispar-mispariis the one row withcomputed: false, and this catalogue is the only place it appears: the scored arrays leave it out rather than sending it without a number.POST /kabbalah/name-profile: A name across four named readings as an OBJECT,values.standard,large,smallandpreceding, pluslettersand thesephirahthe reduced value points at. Use this for a name card and the gematria route when a reader wants every cipher.POST /kabbalah/birth-profile:hebrewDatewith the Hebrew string and theafterSunsetecho,hebrewBirthday(null with a note when that Hebrew day is missing from the target year),angels, always three entries with rolesbody,characterandspirit, and the birthsephirah.timedefaults to noon and the response says so.GET /kabbalah/names: The 72 names, paginated withtotal,limitandoffset. Passlongitudeinstead and it returns the single name governing that five degree arc of the ecliptic.GET /kabbalah/names/{number}: One name by index 1 to 72, because the Latin spellings differ between published tables while the index never does.lettersnormalizes word final forms andlettersAsWrittenkeeps them, andpublishedDisagreementappears on the one row where a second published list differs.GET /kabbalah/tree: Elevensephirotrows, the 22paths, the fourworldsand the ten steplightningFlash. Daat is the eleventh row and carriesnumber: nulland no path, so filter onnumberwhen drawing the ten. Each world publishes BOTH readings assephirotandsephirotAlternate.GET /kabbalah/sephirot/{id}: One sphere withpillar,pillarName,world,attributionand every path that touches it. Ids are the ten plusdaat.GET /kabbalah/letters: All 22 letters withtotal,classCounts(3 mother, 7 double, 12 simple) and theletterAttributionin force. No pagination. Each letter carriesattribution.kindofelement,planetorsign, the tarottrumpand itspathnumber.GET /kabbalah/letters/{id}: One letter in full, addingfinalandfinalValuefor the five that take a word final form, andclassReadingfor its class.POST /kabbalah/compatibility: Two names,sharedValues, ascoreand aband, and four weightedcomponentseach withpoints,maximumandmatched. The score is a RoxyAPI composite, so render the components rather than the number alone. SendfirstNameHebrewandsecondNameHebrewto score exact spellings.GET /kabbalah/daily: The Omer day, itsweekSephirahanddaySephirahpairing and the printedhebrewLabel. The count runs forty nine days a year, so branch oninOmerfirst: outside the window the response carriesnextStartand no reading.
Two response conventions worth knowing before you parse: every scored cipher row carries a number, because the one catalogued cipher that is not computed is omitted from values and hebrewForms[].values rather than sent with an empty one; and a cipher can be multi valued, so otiyot-be-milui carries alternateValues beside value. Hebrew strings are data and never translate, while meaning, note, reading, rule, classReading, window, definition and the letter name on a breakdown row do.
TypeScript SDK example
roxy.kabbalah.calculateGematria({ body: { text: 'Ruth' } })
Python SDK example
roxy.kabbalah.calculate_gematria(text="Ruth")
PHP SDK example
$roxy->kabbalah->calculateGematria(text: 'Ruth')
C# SDK example
roxy.Kabbalah.Gematria.PostAsync(new() { Text = "Ruth" })
Tarot
POST /tarot/daily: Seeded daily card.POST /tarot/draw: Custom draw of N cards (1-78).POST /tarot/spreads/three-card: Past / present / future.POST /tarot/spreads/celtic-cross: Ten-position spread.POST /tarot/yes-no: One-question, one-card reading.POST /tarot/spreads/love: Five-position relationship spread.GET /tarot/cards: 78-card catalog.GET /tarot/cards/{id}: Card detail with upright, reversed, and life-area meanings.
TypeScript SDK example
roxy.tarot.drawCards({ body: { count: 3 } })
Python SDK example
roxy.tarot.draw_cards(count=3)
PHP SDK example
$roxy->tarot->drawCards(count: 3)
C# SDK example
roxy.Tarot.Draw.PostAsync(new() { Count = 3 })
Biorhythm
POST /biorhythm/daily: Seeded daily biorhythm reading.POST /biorhythm/forecast: Multi-day range (30 to 90 days) with best, worst, and critical days.POST /biorhythm/compatibility: Cycle alignment between two people.POST /biorhythm/critical-days: Zero-crossing days in a 90 to 180 day window.
TypeScript SDK example
roxy.biorhythm.getReading({ body: { birthDate: '1990-06-15', targetDate: '2026-06-15' } })
Python SDK example
roxy.biorhythm.get_reading(birth_date="1990-06-15", target_date="2026-06-15")
PHP SDK example
$roxy->biorhythm->getReading(birthDate: '1990-06-15', targetDate: '2026-06-15')
C# SDK example
roxy.Biorhythm.Reading.PostAsync(new() { BirthDate = new Date(1990, 6, 15), TargetDate = new Date(2026, 6, 15) })
Ayurveda
Birth data, a date and a place in; a cited reading out. Nothing here asks a user about their own body: there is no questionnaire, no balancing route, no field naming a substance and no input for a health complaint. Every value carries a source object naming the text, chapter and verse behind it, with translation, year and a publicDomain flag, and every response carries meta.disclaimer, a scope sentence in the requested language that says the reading is for general wellness and cultural interest rather than medical advice. Render it. Five school splits are typed request fields with named defaults, echoed back under conventions: signDoshaScheme on the constitution, doshaClock on the dinacharya, and ritucharyaScheme, rituZodiac and hemisphere on the ritucharya. Sanskrit identifiers (vata, vasanta, madhura, guru) never translate; the gloss beside them does.
POST /ayurveda/constitution: The vata, pitta and kapha shares from a birth chart.factorsis exactly three, the rising sign, the sign the Moon occupies and the strongest graha by shadbala, each with its owndoshas,weightandsource.compositecarriesdominant,secondary,typeandconvention: "roxyapi/v1"with itsweightingpublished inside the response, because the texts give the factors and never the weighting.strengthRankingand the seven rowplanetDoshastable come back beside it. Takesdate,time,latitude,longitude, optionaltimezone,ayanamsaandsignDoshaScheme.POST /ayurveda/dinacharya:sunrise,sunset,nextSunrise, thebrahmaMuhurtawindow with themuhurtaMinutesandmuhurtasPerAhoratrait was built from, the sixdoshaPeriodsand theroutineas ordered items with atimingsentence each. Both clocks always come back:doshaPeriodsis whicheverdoshaClockyou sent andalternatePeriodsis the other, so a product can show one and reconcile against the other. Takesdate,latitude,longitude, optionaltimezoneanddoshaClock.POST /ayurveda/ritucharya: The season for a date with its realstartandendingress instants and thesolarMonthsit spans, plusayana,phasewith the tastes that grow in it,strength,tasteIncreasing, the nine slotdoshaCycleand theregimenitems. Takesdateonly, plus optionalritucharyaScheme,rituZodiacandhemisphere.GET /ayurveda/daily: The day composed for one place under the defaults, a lighter shape than the two POSTs combined:brahmaMuhurta,doshaPeriods, therituflattened to its ids, and a one linesummary. Optionaldate,latitude,longitudeandtimezone, cached to the UTC rollover.GET /ayurveda/doshas: The three, each withsanskritName,devanagari,alsoCalled, the singleelementthe verses give beside themodernElementPairin circulation,qualities,qualityGunasjoining across to the guna table,seatswith aspecialSeatand aseatsVariantrecording where a second text differs,functions,statesand the fivesubDoshas.GET /ayurveda/doshas/{id}: One ofvata,pittaorkapha. Any other id returns 400 naming the three.GET /ayurveda/tastes: The six rasas in the order the verse names them, which is alsostrengthOrderand is not the order most modern lists print. Each carrieselements,decreasesandincreases, andmatrixis the same eighteen cells inverted, keyed by dosha withdecreasedByandincreasedBy.GET /ayurveda/qualities: The twenty gunas as ten opposedpairs, each member with itsenglish, itsactionandactionSanskrit, and thedoshasit belongs to.ruleis the like-increases-like sentence the whole domain runs on.
Two response conventions worth knowing before you parse. Pagination is nominal on the three catalogue routes, since the collections are three, six and ten rows, so limit is capped at the collection size and offset is there for shape rather than for paging. And a recorded disagreement between two texts is always served rather than resolved, as a note inside a source or as a named field like seatsVariant, so a UI can show both readings instead of picking one silently.
TypeScript SDK example
roxy.ayurveda.calculateAyurvedicConstitution({ body: { date: '1990-07-04', time: '10:12:00', latitude: 28.6139, longitude: 77.209, timezone: 'Asia/Kolkata' } })
Python SDK example
roxy.ayurveda.calculate_ayurvedic_constitution(date="1990-07-04", time="10:12:00", latitude=28.6139, longitude=77.209, timezone="Asia/Kolkata")
PHP SDK example
$roxy->ayurveda->calculateAyurvedicConstitution(date: '1990-07-04', time: '10:12:00', latitude: 28.6139, longitude: 77.209, timezone: 'Asia/Kolkata')
C# SDK example
roxy.Ayurveda.Constitution.PostAsync(new() { Date = new Date(1990, 7, 4), Time = new Time(10, 12, 0), Latitude = 28.6139, Longitude = 77.209, Timezone = new() { String = "Asia/Kolkata" } })
I-Ching
POST /iching/daily: Seeded daily hexagram.POST /iching/daily/cast: Seeded three-coin daily variant.GET /iching/cast: Random three-coin cast (optionalseedfor determinism).GET /iching/hexagrams/{number}: Hexagram 1 to 64 detail.
TypeScript SDK example
roxy.iching.castReading({})
Python SDK example
roxy.iching.cast_reading()
PHP SDK example
$roxy->iching->castReading()
C# SDK example
roxy.Iching.Cast.GetAsync()
Crystals
GET /crystals/zodiac/{sign}: Crystals paired with a zodiac sign.GET /crystals/chakra/{chakra}: Chakra stones. Path is case-insensitive, space-separated:Heart,Root,Sacral,Solar Plexus(URL-encodedSolar%20Plexus),Throat,Third Eye(Third%20Eye),Crown.GET /crystals/birthstone/{month}: Birthstones by month (1 to 12).GET /crystals/search?q=: Free-text crystal search.
TypeScript SDK example
roxy.crystals.getCrystalsByZodiac({ path: { sign: 'aries' } })
Python SDK example
roxy.crystals.get_crystals_by_zodiac(sign="aries")
PHP SDK example
$roxy->crystals->getCrystalsByZodiac(sign: 'aries')
C# SDK example
roxy.Crystals.Zodiac["aries"].GetAsync()
Dreams
GET /dreams/symbols/{id}: Dream symbol detail (e.g.flying,losing-teeth).GET /dreams/symbols: Browse catalog.POST /dreams/daily: Daily dream symbol prompt.
TypeScript SDK example
roxy.dreams.getDreamSymbol({ path: { id: 'flying' } })
Python SDK example
roxy.dreams.get_dream_symbol(id="flying")
PHP SDK example
$roxy->dreams->getDreamSymbol(id: 'flying')
C# SDK example
roxy.Dreams.Symbols["flying"].GetAsync()
Angel Numbers
GET /angel-numbers/numbers/{number}: Canonical number meaning (string param, e.g.1111,777).GET /angel-numbers/lookup?number=: Universal lookup for any positive integer with digit-root fallback.POST /angel-numbers/daily: Daily-message endpoint.
TypeScript SDK example
roxy.angelNumbers.analyzeNumberSequence({ query: { number: '1111' } })
Python SDK example
roxy.angel_numbers.analyze_number_sequence(number='1111')
PHP SDK example
$roxy->angelNumbers->analyzeNumberSequence(number: '1111')
C# SDK example
roxy.AngelNumbers.Lookup.GetAsync(c => c.QueryParameters.Number = "1111")
Location
GET /location/search?q={city}: City search. Paginated envelope:{ total, limit, offset, cities: [...] }. Each city hascity,province,country,iso2,latitude,longitude,timezone(IANA string, e.g."America/New_York"),utcOffset(decimal hours, DST-adjusted for today),population. Chart endpoints accepttimezoneas either the IANA string orutcOffsetdecimal: both work, IANA is preferred because it resolves to the DST-correct offset for the request'sdate. Call first for any coordinate-dependent endpoint.
TypeScript SDK example
roxy.location.searchCities({ query: { q: 'New York' } })
Python SDK example
roxy.location.search_cities(q="New York")
PHP SDK example
$roxy->location->searchCities(q: 'New York')
C# SDK example
roxy.Location.Search.GetAsync(c => c.QueryParameters.Q = "New York")