AstroWay/api v2.77.14 · blog
all systems operational

Human Design API: Build HD Apps with 12 Endpoints

Everything developers need to know about building Human Design apps via API. 12 endpoints, bodygraph calculation, group dynamics with Penta, code examples.

🕓 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.

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.

Human Design uses two birth moments:

  1. Personality — your actual birth time. This is the “conscious” side.
  2. 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.

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.

EndpointCreditsWhat it returns
/v1/human-design50Full HD chart
/v1/human-design/transits50HD transits for a given date
/v1/human-design/compatibility100Compatibility between two HD charts
/v1/hd/incarnation-cross50Incarnation Cross
/v1/hd/dream-rave50Dream Rave chart
/v1/hd/hologenetic50Hologenetic Profile
/v1/hd/sensitivity50Time sensitivity analysis
/v1/hd/circuitry20Circuit analysis
/v1/hd/penta100Penta — group dynamics 3–5 people
/v1/hd/group-overlay100Group overlay
/v1/hd/design-date10Design date calculation
/v1/hd/rave-new-years10Rave New Year dates

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": [...]
}

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 min

Use this to warn users: “Your profile might shift at this precision. Consider rectification.”

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).

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).

AstroWay team

Engineering team at AstroWay API. We ship Swiss Ephemeris on a clean REST surface and write about the dull parts that turn out to matter.

// build with this

Same Swiss Ephemeris as Solar Fire — but in 4 lines of code.

Free key, no card. 5,000 calls/month before you pay anything.

More from the blog view all posts →

Engineering 2026-06-05

Natal Chart API in TypeScript: SDK + React Example

Compute a natal chart in TypeScript with the AstroWay SDK — typed responses, a React component, and where it beats a local ephemeris library.

Ephemeris 2026-06-05

How Accurate Is the Swiss Ephemeris? Verified Benchmarks

Swiss Ephemeris accuracy in numbers — planetary positions under 0.1 arcsecond, exact house cusps, eclipses within a minute — and how AstroWay verifies it.

Ephemeris 2026-06-05

Swiss Ephemeris: REST API vs pyswisseph (When to Use Which)

pyswisseph vs a REST API for Swiss Ephemeris calculations — C dependencies, data files, licensing and deployment compared, with a decision guide.