Generate a chart with a rendered image from coordinates
Generates a complete Human Design chart from birth date, time, and geographic
coordinates, and returns a svgRenderUrl for the rendered Visual Chart image
alongside the chart data. No geocoding key required — timezone is resolved from
lat/lng directly. Requires the “advanced” access tier.
curl --request POST \
--url https://api.humandesignapi.nl/v2/visual-charts/coordinates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"birthdate": "1990-01-15",
"birthtime": "14:30",
"lat": 52.3676,
"lng": 4.9041
}
'import requests
url = "https://api.humandesignapi.nl/v2/visual-charts/coordinates"
payload = {
"birthdate": "1990-01-15",
"birthtime": "14:30",
"lat": 52.3676,
"lng": 4.9041
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({birthdate: '1990-01-15', birthtime: '14:30', lat: 52.3676, lng: 4.9041})
};
fetch('https://api.humandesignapi.nl/v2/visual-charts/coordinates', 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/visual-charts/coordinates",
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',
'lat' => 52.3676,
'lng' => 4.9041
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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/visual-charts/coordinates"
payload := strings.NewReader("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"lat\": 52.3676,\n \"lng\": 4.9041\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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/visual-charts/coordinates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"lat\": 52.3676,\n \"lng\": 4.9041\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humandesignapi.nl/v2/visual-charts/coordinates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"lat\": 52.3676,\n \"lng\": 4.9041\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"
},
"svgRenderUrl": "https://render.appdebock.nl/default.svg?t=eyJ..."
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Latitude must be a number between -90 and 90",
"errorCode": "INVALID_LATITUDE",
"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": "Advanced access tier required",
"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
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"
Latitude of birth location
-90 <= x <= 9052.3676
Longitude of birth location
-180 <= x <= 1804.9041
Response
Chart and render URL 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
Bearer link to the rendered Visual Chart SVG. Carries a signed render token (HMAC-SHA256) encoding only center/gate activations — no birth data, no account id. Non-expiring; renders the caller's active template, or the default theme when none is set.
"https://render.appdebock.nl/default.svg?t=eyJ..."
curl --request POST \
--url https://api.humandesignapi.nl/v2/visual-charts/coordinates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"birthdate": "1990-01-15",
"birthtime": "14:30",
"lat": 52.3676,
"lng": 4.9041
}
'import requests
url = "https://api.humandesignapi.nl/v2/visual-charts/coordinates"
payload = {
"birthdate": "1990-01-15",
"birthtime": "14:30",
"lat": 52.3676,
"lng": 4.9041
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({birthdate: '1990-01-15', birthtime: '14:30', lat: 52.3676, lng: 4.9041})
};
fetch('https://api.humandesignapi.nl/v2/visual-charts/coordinates', 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/visual-charts/coordinates",
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',
'lat' => 52.3676,
'lng' => 4.9041
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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/visual-charts/coordinates"
payload := strings.NewReader("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"lat\": 52.3676,\n \"lng\": 4.9041\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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/visual-charts/coordinates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"lat\": 52.3676,\n \"lng\": 4.9041\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humandesignapi.nl/v2/visual-charts/coordinates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"birthdate\": \"1990-01-15\",\n \"birthtime\": \"14:30\",\n \"lat\": 52.3676,\n \"lng\": 4.9041\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"
},
"svgRenderUrl": "https://render.appdebock.nl/default.svg?t=eyJ..."
}{
"timestamp": "2026-03-24T12:00:01.000Z",
"success": false,
"message": "Latitude must be a number between -90 and 90",
"errorCode": "INVALID_LATITUDE",
"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": "Advanced access tier required",
"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
}
