Generate a full chart
Generates a complete Human Design chart from birth date, time, and location. Requires the “advanced” access tier.
curl --request POST \
--url https://api.humandesignapi.nl/v2/charts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'HD-Geocode-Key: <api-key>' \
--data '
{
"birthdate": "1990-01-15",
"birthtime": "14:30",
"location": "Amsterdam, The Netherlands"
}
'import requests
url = "https://api.humandesignapi.nl/v2/charts"
payload = {
"birthdate": "1990-01-15",
"birthtime": "14:30",
"location": "Amsterdam, The Netherlands"
}
headers = {
"Authorization": "Bearer <token>",
"HD-Geocode-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'HD-Geocode-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
birthdate: '1990-01-15',
birthtime: '14:30',
location: 'Amsterdam, The Netherlands'
})
};
fetch('https://api.humandesignapi.nl/v2/charts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.humandesignapi.nl/v2/charts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'birthdate' => '1990-01-15',
'birthtime' => '14:30',
'location' => 'Amsterdam, The Netherlands'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"HD-Geocode-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.humandesignapi.nl/v2/charts"
payload := strings.NewReader("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"location\": \"Amsterdam, The Netherlands\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("HD-Geocode-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.humandesignapi.nl/v2/charts")
.header("Authorization", "Bearer <token>")
.header("HD-Geocode-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"location\": \"Amsterdam, The Netherlands\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humandesignapi.nl/v2/charts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["HD-Geocode-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"location\": \"Amsterdam, The Netherlands\"\n}"
response = http.request(request)
puts response.read_body{
"timestamp": "2026-03-24T12:00:00.000Z",
"success": true,
"message": "Chart generated",
"errorCode": "",
"type": "ChartResult",
"data": {
"type": "Generator",
"profile": "6/2",
"channelsShort": [
"20-34",
"10-57"
],
"centers": [
"G",
"Sacral",
"Spleen",
"Throat"
],
"strategy": "To Respond",
"authority": "Sacral",
"incarnationCross": "Right Angle Cross of Tension (39/38 | 51/57)",
"definition": "Split Definition",
"signature": "Satisfaction",
"notSelfTheme": "Frustration",
"cognition": "Smell",
"determination": "Calm Appetite",
"variables": "PLL DRL",
"motivation": "Hope",
"transference": "Guilt",
"perspective": "Survival",
"distraction": "Power",
"environment": "Selective Caves",
"circuitries": "Individual, Tribal",
"channelsLong": [
"The Channel of Charisma (20-34)",
"The Channel of the Brainwave (57-10)"
],
"gates": [
"20",
"34",
"10",
"57"
],
"activations": {
"design": {
"sun": "20.1",
"earth": "34.1",
"northNode": "10.3",
"southNode": "15.3",
"moon": "57.4",
"mercury": "48.2",
"venus": "18.5",
"mars": "28.1",
"jupiter": "32.6",
"saturn": "50.3",
"uranus": "44.2",
"neptune": "26.4",
"pluto": "54.1"
},
"personality": {
"sun": "20.1",
"earth": "34.1",
"northNode": "10.3",
"southNode": "15.3",
"moon": "57.4",
"mercury": "48.2",
"venus": "18.5",
"mars": "28.1",
"jupiter": "32.6",
"saturn": "50.3",
"uranus": "44.2",
"neptune": "26.4",
"pluto": "54.1"
}
},
"birthDateUtc": "1990-01-15T13:30:00.000Z"
}
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Birthdate must be in YYYY-MM-DD format",
"errorCode": "INVALID_BIRTHDATE",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "No Authorization header provided",
"errorCode": "API_KEY_MISSING",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "No credits remaining. Enable overage or upgrade your plan.",
"errorCode": "CREDITS_EXHAUSTED",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Your plan does not include this endpoint",
"errorCode": "ACCESS_DENIED",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Too many requests. Please try again later.",
"errorCode": "RATE_LIMIT_EXCEEDED",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "An unexpected error occurred",
"errorCode": "INTERNAL_ERROR",
"type": "",
"data": null
}Authorizations
API key used as Bearer token in the Authorization header
Google Geocoding API key
Body
Date of birth in YYYY-MM-DD format
^\d{4}-\d{2}-\d{2}$"1990-01-15"
Time of birth in HH:MM format (24-hour)
^\d{2}:\d{2}$"14:30"
Location of birth (city, country)
4 - 200"Amsterdam, The Netherlands"
Response
Chart generated successfully
Standard API response envelope wrapping all responses
ISO 8601 timestamp of response generation
"2026-03-24T12:00:00.000Z"
Whether the request succeeded
true
Human-readable success or error message
"Chart generated"
Machine-readable error code (empty string on success)
""
Data type name of the object in the data field
"ChartResult"
Full Human Design chart with all properties
Show child attributes
Show child attributes
curl --request POST \
--url https://api.humandesignapi.nl/v2/charts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'HD-Geocode-Key: <api-key>' \
--data '
{
"birthdate": "1990-01-15",
"birthtime": "14:30",
"location": "Amsterdam, The Netherlands"
}
'import requests
url = "https://api.humandesignapi.nl/v2/charts"
payload = {
"birthdate": "1990-01-15",
"birthtime": "14:30",
"location": "Amsterdam, The Netherlands"
}
headers = {
"Authorization": "Bearer <token>",
"HD-Geocode-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'HD-Geocode-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
birthdate: '1990-01-15',
birthtime: '14:30',
location: 'Amsterdam, The Netherlands'
})
};
fetch('https://api.humandesignapi.nl/v2/charts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.humandesignapi.nl/v2/charts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'birthdate' => '1990-01-15',
'birthtime' => '14:30',
'location' => 'Amsterdam, The Netherlands'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"HD-Geocode-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.humandesignapi.nl/v2/charts"
payload := strings.NewReader("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"location\": \"Amsterdam, The Netherlands\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("HD-Geocode-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.humandesignapi.nl/v2/charts")
.header("Authorization", "Bearer <token>")
.header("HD-Geocode-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"location\": \"Amsterdam, The Netherlands\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humandesignapi.nl/v2/charts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["HD-Geocode-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"location\": \"Amsterdam, The Netherlands\"\n}"
response = http.request(request)
puts response.read_body{
"timestamp": "2026-03-24T12:00:00.000Z",
"success": true,
"message": "Chart generated",
"errorCode": "",
"type": "ChartResult",
"data": {
"type": "Generator",
"profile": "6/2",
"channelsShort": [
"20-34",
"10-57"
],
"centers": [
"G",
"Sacral",
"Spleen",
"Throat"
],
"strategy": "To Respond",
"authority": "Sacral",
"incarnationCross": "Right Angle Cross of Tension (39/38 | 51/57)",
"definition": "Split Definition",
"signature": "Satisfaction",
"notSelfTheme": "Frustration",
"cognition": "Smell",
"determination": "Calm Appetite",
"variables": "PLL DRL",
"motivation": "Hope",
"transference": "Guilt",
"perspective": "Survival",
"distraction": "Power",
"environment": "Selective Caves",
"circuitries": "Individual, Tribal",
"channelsLong": [
"The Channel of Charisma (20-34)",
"The Channel of the Brainwave (57-10)"
],
"gates": [
"20",
"34",
"10",
"57"
],
"activations": {
"design": {
"sun": "20.1",
"earth": "34.1",
"northNode": "10.3",
"southNode": "15.3",
"moon": "57.4",
"mercury": "48.2",
"venus": "18.5",
"mars": "28.1",
"jupiter": "32.6",
"saturn": "50.3",
"uranus": "44.2",
"neptune": "26.4",
"pluto": "54.1"
},
"personality": {
"sun": "20.1",
"earth": "34.1",
"northNode": "10.3",
"southNode": "15.3",
"moon": "57.4",
"mercury": "48.2",
"venus": "18.5",
"mars": "28.1",
"jupiter": "32.6",
"saturn": "50.3",
"uranus": "44.2",
"neptune": "26.4",
"pluto": "54.1"
}
},
"birthDateUtc": "1990-01-15T13:30:00.000Z"
}
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Birthdate must be in YYYY-MM-DD format",
"errorCode": "INVALID_BIRTHDATE",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "No Authorization header provided",
"errorCode": "API_KEY_MISSING",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "No credits remaining. Enable overage or upgrade your plan.",
"errorCode": "CREDITS_EXHAUSTED",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Your plan does not include this endpoint",
"errorCode": "ACCESS_DENIED",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Too many requests. Please try again later.",
"errorCode": "RATE_LIMIT_EXCEEDED",
"type": "",
"data": null
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "An unexpected error occurred",
"errorCode": "INTERNAL_ERROR",
"type": "",
"data": null
}
