🕓 Recorded 2026-04-14, updated 2026-05-09. TS / Python / PHP SDKs are now live on public registries —
@astroway/sdk(npm),astroway(PyPI),astroway/sdk(Packagist). Details in changelog.
Human Design has grown from a niche esoteric system in the 1990s to a mainstream personal development framework. Apps like [Human Design App] and platforms with millions of users have normalized it — and developers are asking: how do I calculate a Human Design chart programmatically?
This post covers the technical side: what HD calculations are, which APIs support them, and how to build an HD feature into your app.
What is Human Design, technically?
Section titled “What is Human Design, technically?”Human Design is built on three classical systems:
- Western astrology — planet positions at birth
- I Ching — 64 hexagrams mapped to 64 “gates”
- Chakra system — nine “centers” (energy hubs)
The calculation takes your birth data and produces a bodygraph — a visual chart showing:
- Type (Manifestor, Generator, Manifesting Generator, Projector, Reflector) — your energetic signature
- Strategy — how you make decisions
- Authority — which center you follow for decisions (Sacral, Emotional, Splenic, etc.)
- Profile — line combination (1/3, 4/6, etc.)
- Channels — connections between centers that define your personality
- Incarnation Cross — your life purpose, derived from four key positions
Under the hood, each of the 64 gates corresponds to a range of ecliptic longitude. Your planets’ longitudes at birth map to specific gates (and lines within gates). The “Design” calculation is done for 88° of Sun movement before birth — about 3 months earlier.
The two charts: Personality and Design
Section titled “The two charts: Personality and Design”Human Design uses two birth moments:
- Personality — your actual birth time. This is the “conscious” side.
- Design — when the Sun was 88° before its birth position. This is the “unconscious” side.
Every gate activation belongs to one of these. A full chart has 13 + 13 = 26 activations.
This is what makes HD calculations heavier than a standard astrology chart — you’re effectively calculating two charts.
APIs with Human Design support
Section titled “APIs with Human Design support”Most astrology APIs either don’t support HD at all or have shallow support (type + strategy only). Full HD implementation requires:
- 64 gate mappings (lookup table)
- 6 lines per gate (384 total cells)
- 9 centers with defined/open logic
- 36 channels (each connecting two centers)
- Incarnation Cross calculation
- Profile derivation from Sun gate line + Earth gate line (Personality and Design)
APIs that handle all of this are rare. AstroWay API has 12 HD endpoints — the deepest coverage we’ve seen in a commercial API.
The 12 AstroWay HD endpoints
Section titled “The 12 AstroWay HD endpoints”| Endpoint | Credits | What it returns |
|---|---|---|
/v1/human-design | 50 | Full HD chart |
/v1/human-design/transits | 50 | HD transits for a given date |
/v1/human-design/compatibility | 100 | Compatibility between two HD charts |
/v1/hd/incarnation-cross | 50 | Incarnation Cross |
/v1/hd/dream-rave | 50 | Dream Rave chart |
/v1/hd/hologenetic | 50 | Hologenetic Profile |
/v1/hd/sensitivity | 50 | Time sensitivity analysis |
/v1/hd/circuitry | 20 | Circuit analysis |
/v1/hd/penta | 100 | Penta — group dynamics 3–5 people |
/v1/hd/group-overlay | 100 | Group overlay |
/v1/hd/design-date | 10 | Design date calculation |
/v1/hd/rave-new-years | 10 | Rave New Year dates |
Building an HD feature
Section titled “Building an HD feature”Let’s say you’re adding HD to an existing astrology app. Start with the main endpoint:
import { Astroway } from '@astroway/sdk';
const client = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY! });
const hd = await client.humanDesign({ date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234,});
console.log(`Type: ${hd.type}`); // e.g. "Generator"console.log(`Strategy: ${hd.strategy}`); // e.g. "To Respond"console.log(`Authority: ${hd.authority}`); // e.g. "Sacral"console.log(`Profile: ${hd.profile}`); // e.g. "1/3"console.log(`Defined channels: ${hd.channels.length}`);Response shape:
{ "type": "Generator", "strategy": "To Respond", "notSelfTheme": "Frustration", "authority": "Sacral", "profile": "1/3", "definition": "single", "cross": { "name": "Right Angle Cross of the Sphinx", "quarter": "Civilization", "gates": [1, 2, 7, 13] }, "centers": [ { "name": "Sacral", "defined": true }, ... ], "channels": [ { "gate1": 34, "gate2": 20, "name": "Channel of Charisma", "type": "Generated" } ], "personalityActivations": [...], "designActivations": [...]}Group dynamics with Penta
Section titled “Group dynamics with Penta”Penta is a technique for understanding team dynamics in groups of 3–5 people. It’s rare — most HD calculators don’t offer it. But it’s gold for HR-tech, coaching platforms, and team-building apps.
const penta = await client.hdPenta({ members: [ { date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.45, longitude: 30.52 }, { date: '1988-03-10', time: '08:15:00', timezoneOffset: 2, latitude: 48.85, longitude: 2.35 }, { date: '1985-11-22', time: '18:00:00', timezoneOffset: -5, latitude: 40.71, longitude: -74.00 }, ],});
console.log(`Penta type: ${penta.type}`);console.log(`Defined channels in group: ${penta.definedChannels.length}`);Sensitivity analysis — critical for accuracy
Section titled “Sensitivity analysis — critical for accuracy”HD charts are sensitive to birth time. A 10-minute error can change the profile (e.g. 1/3 → 1/4). For users who don’t know exact birth time, run sensitivity analysis:
const sensitivity = await client.hdSensitivity({ date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234,});
// sensitivity tells you which fields change if time shifts ±5/15/30 minUse this to warn users: “Your profile might shift at this precision. Consider rectification.”
Pricing for HD apps
Section titled “Pricing for HD apps”If you’re building an HD-focused app:
- Basic user: 1 HD chart at signup, cached forever = 50 credits one-time
- Power user: occasional transits + compatibility = ~200 credits/month
- 100 DAU with moderate HD use: ~110,000 credits/month → Starter ($19/mo) easily covers it
- 1,000 DAU: ~150,000 credits/month → Pro ($59/mo)
Compatibility queries are heaviest (100 credits). Cache the result for each user pair forever (results are immutable).
Visualization
Section titled “Visualization”Bodygraph rendering is traditionally done in SVG. The API returns centers + channels data; you render the visual. Example:
function Bodygraph({ hd }: { hd: HDChart }) { return ( <svg viewBox="0 0 400 600"> {hd.centers.map(c => ( <polygon key={c.name} points={CENTER_COORDS[c.name]} fill={c.defined ? CENTER_COLORS[c.name] : 'white'} stroke="black" /> ))} {hd.channels.map(ch => ( <line key={`${ch.gate1}-${ch.gate2}`} x1={GATE_COORDS[ch.gate1].x} y1={GATE_COORDS[ch.gate1].y} x2={GATE_COORDS[ch.gate2].x} y2={GATE_COORDS[ch.gate2].y} stroke="#d4a84c" strokeWidth="3" /> ))} </svg> );}The coordinates are a fixed template (every bodygraph has the same 9 centers and 64 gates in the same positions).
Start building HD features
Section titled “Start building HD features”- Human Design API — product page with full endpoint list
- Example: Human Design — detailed
/v1/human-designwalkthrough - Quick start — get your free API key (up to 200 HD charts/mo on Free)
Same Swiss Ephemeris as Solar Fire — but in 4 lines of code.
Free key, no card. 5,000 calls/month before you pay anything.