HDAI API: Complete Reference
Human Design AI API — Complete Reference
The HDAI API is a RESTful service built on ASP.NET Core that calculates Human Design bodygraph charts using the Swiss Ephemeris. It powers chart generation, transit tracking, calendar features, and the reference library across all HDAI applications.
Base URL: Hosted on Railway. All endpoints accept query parameters unless noted otherwise. Authentication is via the api_key query parameter on every request.
Authentication
Every request requires a valid api_key parameter. Include it as a query string parameter:
GET /hd-data?api_key=YOUR_KEY&date=1990-05-15T14:30:00&timezone=America/New_York
Common Parameters
| Parameter | Type | Description |
|---|---|---|
api_key |
string (required) | Your API key for authentication |
date |
DateTime (required) | Birth date/time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS |
timezone |
string (required) | IANA timezone identifier (e.g., America/New_York, Europe/London, Asia/Tokyo) |
Chart Generation Endpoints
GET /hd-data
Generate a personal Human Design bodygraph chart (v1 format).
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Birth date/time in ISO 8601 |
timezone |
string | Yes | IANA timezone for birth location |
Returns: Full bodygraph chart data including Type, Strategy, Authority, Profile, defined centers, gates (with planetary activations), channels, and properties.
GET /v2/hd-data
Generate a personal Human Design chart (v2 format with structured property IDs).
Same parameters as /hd-data. Returns chart data with structured IDs for Type, Profile, etc., making it easier to programmatically process.
GET /v3/hd-data
Generate a personal Human Design chart (v3 format — latest and most detailed).
Same parameters as /hd-data. Enhanced response includes:
- Zodiac sign for each planetary position
- Retrograde status for each planet
- Gate categories (personality vs. design activation)
- Full variable terminology
GET /hd-data-composite
Generate a composite (relationship) chart comparing two people.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | First person’s birth date/time |
timezone |
string | Yes | First person’s birth timezone |
date1 |
DateTime | Yes | Second person’s birth date/time |
timezone1 |
string | Yes | Second person’s birth timezone |
Returns: Three objects — Person 0’s chart, Person 1’s chart, and the Combined composite showing electromagnetic channels, companion channels, compromise channels, and dominant channels.
GET /v2/hd-data-composite
Enhanced composite chart with detailed relationship analysis (v2).
Same parameters as /hd-data-composite. Enhanced response includes chemistry scores, gate-by-gate comparison, and detailed relationship dynamics analysis.
POST /group-composite
Generate a group composite chart for 3–12 people.
Request Body (JSON):
{
"api_key": "YOUR_KEY",
"members": [
{ "name": "Alice", "date": "1990-05-15T14:30:00", "timezone": "America/New_York" },
{ "name": "Bob", "date": "1988-03-22T08:00:00", "timezone": "Europe/London" },
{ "name": "Carol", "date": "1995-11-10T20:45:00", "timezone": "Asia/Tokyo" }
]
}
Returns: Group composite analysis with shared gates, channels, chemistry scores, and individual chart summaries. Minimum 3, maximum 12 members.
POST /batch/charts
Generate multiple individual charts in a single request (max 50).
Request Body (JSON):
{
"api_key": "YOUR_KEY",
"version": "v3",
"charts": [
{ "id": "person-1", "date": "1990-05-15T14:30:00", "timezone": "America/New_York" },
{ "id": "person-2", "date": "1988-03-22T08:00:00", "timezone": "Europe/London" }
]
}
| Field | Type | Description |
|---|---|---|
version |
string | Chart version: v1, v2, or v3 (default: v3) |
charts[].id |
string | Optional custom identifier for each chart |
charts[].date |
DateTime | Birth date/time |
charts[].timezone |
string | IANA timezone |
Returns: Array of results (each with success/error status and chart data), plus summary statistics including Type distribution, Profile distribution, most common gates, and processing time.
Transit & Forecast Endpoints
GET /hd-data-transit
Generate a transit chart overlaying current (or specified) planetary positions on a natal chart.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Natal birth date/time |
timezone |
string | Yes | Natal birth timezone |
transitDate |
DateTime | Yes | Transit date/time to overlay |
transitTimezone |
string | Yes | Timezone for transit location (your current location) |
Returns: Transit chart showing which transiting gates and channels are activating your natal chart, with channel activation details and gate overlays.
GET /planetary-positions
Get current (or specified) planetary positions with dignity states and gate activations.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | No | Date/time (defaults to current UTC) |
timezone |
string | No | Timezone (defaults to UTC) |
Returns: All planetary positions with gate number, line, zodiac sign, and retrograde status for Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, North Node, South Node, and Chiron.
GET /planetary-forecast
Get a multi-day planetary forecast showing daily gate activations and transitions.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
startDate |
DateTime | Yes | Forecast start date |
endDate |
DateTime | Yes | Forecast end date (max 31 days from start) |
timezone |
string | No | Timezone (defaults to UTC) |
Returns: Daily planetary positions, gate transitions (when a planet moves from one gate to another), and forecast summary for the period.
Calendar Endpoints
GET /gate-calendar
Get a monthly gate activation calendar showing daily planetary positions.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
year |
int | Yes | Calendar year (1900–2100) |
month |
int | Yes | Calendar month (1–12) |
timezone |
string | No | Timezone (default: UTC) |
Returns: For each day of the month: planetary positions with gate/line/sign/retrograde, active gates, active channels, gate changes. Plus a summary of most active gates, total gate changes, and significant dates.
GET /transit-alerts
Get personalized transit alerts based on your natal chart.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
days |
int | No | Days to forecast (default: 30, max: 90) |
Returns: List of alerts categorized by type (ChannelCompletion, SunGateChange, NewMoon, FullMoon, Retrograde) with severity level (High/Medium/Low), title, description, and details (planet, gates involved, channel formed). Includes summary with high-priority count and upcoming highlights.
GET /moon-phases
Get moon phases and daily moon gate positions for a month.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
year |
int | Yes | Calendar year (1900–2100) |
month |
int | Yes | Calendar month (1–12) |
timezone |
string | No | Timezone (default: UTC) |
Returns: Moon phases (New Moon, First Quarter, Full Moon, Last Quarter) with gate/line/sign for each phase. Daily moon positions with gate, line, sign, phase description (e.g., Waxing Crescent), and illumination percentage. Summary includes next New/Full Moon and total moon gate changes.
GET /ical-export
Export transit forecast as a downloadable iCal (.ics) calendar file.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
days |
int | No | Days to include (default: 30, max: 90) |
Returns: A .ics file download (text/calendar content type) that can be imported into Google Calendar, Apple Calendar, Outlook, etc.
Return & Progressed Chart Endpoints
GET /solar-return
Calculate your Solar Return chart for a specific year (annual birthday chart).
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
year |
int | Yes | Target year (1900–2100) |
Returns: Solar Return date/time, chart Type/Definition/Authority/Profile, planetary positions, active gates and channels, defined centers, and a Year Theme (main theme, Sun/Earth gate focus, key channels, year highlights).
GET /lunar-return
Calculate your Lunar Return chart for a specific month.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
month |
string | Yes | Target month in YYYY-MM format (e.g., 2024-06) |
Returns: Lunar Return date/time, chart Type/Profile, planetary positions, active gates and channels, and Month Theme (main theme, Moon gate focus, emotional tone, month highlights).
GET /saturn-return
Calculate your Saturn Return dates and charts (occurs ~every 29.5 years).
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
Returns: Natal Saturn position (gate, line, sign), list of return events (1st ~29, 2nd ~58, 3rd ~87) each with approximate date/age, whether it has occurred, and chart data. Also includes Saturn Return Meaning with gate theme, life lesson, maturity challenge, and key questions for reflection.
GET /chiron-return
Calculate your Chiron Return date and chart (occurs ~age 50–51).
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
Returns: Natal Chiron position, return event with approximate date/age and chart data, and Chiron Return Meaning with wound theme, healing path, wisdom gift, and reflection questions.
GET /progressed-chart
Calculate a Secondary Progressed chart (1 day of life = 1 year of progression).
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
date |
DateTime | Yes | Your birth date/time |
timezone |
string | Yes | Your birth timezone |
progressedTo |
DateTime | Yes | Date to progress to (must be after birth date) |
Returns: Progressed chart Type/Definition/Authority/Profile, comparison with natal Type/Profile, a Changes object detailing whether Type/Profile/Authority changed, new gate activations, new channel activations, new defined centers, and a summary. Also returns full progressed planetary positions, active gates, channels, and defined centers.
Celebrity Endpoints
GET /celebrity/search
Search for celebrity Human Design charts by name.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
query |
string | Yes | Search term (name) |
limit |
int | No | Max results (default: 20, max: 100) |
Returns: List of matching celebrities from the Supabase database with chart information.
GET /celebrity/{slugOrId}
Get a specific celebrity’s chart data by slug or numeric ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key (query param) |
slugOrId |
string | Yes | Celebrity slug (e.g., elon-musk) or numeric ID (path param) |
Returns: Celebrity data including birth information and Human Design chart details.
Location Search
GET /locations
Search for birth locations (city/timezone lookup).
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | City or location name to search |
Returns: List of matching cities with timezone information for use in chart generation.
Library Reference Endpoints
All library endpoints are prefixed with /library.
GET /library/gates
Get all 64 Human Design gates with summary information.
Returns: List of all gates with basic details including gate number, name, center, and theme.
GET /library/gates/{gateNumber}
Get detailed information for a specific gate (1–64).
Returns: Complete gate information including I Ching correlation, Gene Keys connection, all 6 line descriptions, associated center, and theme.
GET /library/channels
Get all 36 Human Design channels with summary information.
Returns: List of all channels with basic details including connecting gates, centers, and circuit.
GET /library/channels/{channelId}
Get detailed information for a specific channel.
| Parameter | Type | Description |
|---|---|---|
channelId |
string | Channel identifier, e.g., 1-8 or 8-1 (either direction works) |
Returns: Complete channel information including both gates, connecting centers, circuit, and theme.
GET /library/centers
Get all 9 Human Design centers with summary information.
Returns: List of all centers with basic details including biological correlation and associated gates.
GET /library/centers/{centerName}
Get detailed information for a specific center.
| Parameter | Type | Description |
|---|---|---|
centerName |
string | Center name: Head, Ajna, Throat, G, Heart, Sacral, Solar Plexus, Spleen, Root |
Returns: Complete center information including gates belonging to this center, biological correlation, defined/open themes, and not-self theme.
GET /library/profiles
Get all 12 Human Design profiles with summary information.
Returns: List of all profiles (1/3, 1/4, 2/4, 2/5, 3/5, 3/6, 4/6, 4/1, 5/1, 5/2, 6/2, 6/3) with basic details.
GET /library/profiles/{profileId}
Get detailed information for a specific profile.
| Parameter | Type | Description |
|---|---|---|
profileId |
string | Profile identifier: 1/3, 4-6, or 51 (various formats accepted) |
Returns: Complete profile information including characteristics, strategy, strengths, and life theme.
Webhook & Streaming Endpoints
POST /webhooks/subscribe
Subscribe to receive transit alert notifications via webhook.
Request Body (JSON):
{
"api_key": "YOUR_KEY",
"callbackUrl": "https://your-server.com/webhook",
"natalDate": "1990-05-15T14:30:00",
"timezone": "America/New_York",
"alertTypes": ["channel_completion", "sun_gate_change", "moon_phase", "retrograde"],
"secret": "optional-signing-secret"
}
| Field | Type | Required | Description |
|---|---|---|---|
callbackUrl |
string (URL) | Yes | URL to receive POST notifications |
natalDate |
DateTime | Yes | Birth date to track transits for |
timezone |
string | Yes | IANA timezone |
alertTypes |
string[] | No | Types: channel_completion, sun_gate_change, moon_phase, retrograde. Default: channel_completion + sun_gate_change |
secret |
string | No | Secret key for signing webhook payloads |
Returns: Subscription confirmation with subscriptionId, status, alert types, created/expires timestamps.
POST /webhooks/unsubscribe
Unsubscribe from webhook notifications.
Request Body (JSON):
{
"api_key": "YOUR_KEY",
"subscriptionId": "sub_abc123"
}
GET /webhooks/status
Check the status of a webhook subscription.
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
subscriptionId |
string | Yes | The subscription ID to check |
Returns: Full subscription details or 404 if not found.
Webhook Payload Format
When a transit event occurs, the API sends a POST request to your callback URL:
{
"eventId": "evt_abc123",
"eventType": "transit_alert",
"timestamp": "2024-06-15T12:00:00Z",
"subscriptionId": "sub_abc123",
"data": {
"alertType": "channel_completion",
"title": "Channel 1-8 Activated",
"description": "Transit Sun in Gate 1 completes your natal Gate 8...",
"date": "2024-06-15",
"details": { ... }
}
}
GET /stream/planetary-positions
Stream real-time planetary positions via Server-Sent Events (SSE).
| Parameter | Type | Required | Description |
|---|---|---|---|
api_key |
string | Yes | API key |
interval |
int | No | Update interval in seconds (min: 10, max: 3600, default: 60) |
Returns: A Server-Sent Events stream. Each event contains:
event: planetary-updatedata:JSON with planets (each with gate, line, sign, retrograde status) and highlights (current Sun gate, Moon gate, active channels, retrograde planets)
Connect with an EventSource client. The stream continues until the client disconnects.
Error Handling
All endpoints return standard HTTP status codes:
| Code | Meaning |
|---|---|
200 |
Success |
400 |
Bad Request — invalid parameters (timezone format, date range, etc.) |
404 |
Not Found — resource doesn’t exist (celebrity, subscription, library item) |
500 |
Internal Server Error — calculation or server failure |
Error responses include a JSON object with error and optional message fields:
{ "error": "time zone not properly formatted" }
Technical Details
- Calculation Engine: Swiss Ephemeris (SwissEphNet) for astronomical calculations
- Database: Supabase (PostgreSQL) for celebrity data and persistent storage
- Deployment: Railway (Docker container)
- Response Format: All responses use capitalized property names (custom JSON naming policy)
- Date Format: All dates in ISO 8601 format (
YYYY-MM-DDTHH:MM:SS) - Timezone Format: IANA timezone identifiers only (e.g.,
America/New_York, notESTorUTC-5)
