Multi-Chart Batch API
POST/api/multi-chartPro
Generate multiple Human Design charts in a single request. Returns an array of results with per-chart success or error status. Maximum 10 charts per batch.
Tier Requirement
This endpoint requires the advanced_chart product tier. Basic chart keys will receive a 403 Forbidden response.
Unit Billing
Each successful chart in the batch consumes 1 unit. Failed charts (invalid input) do not consume units. A batch of 10 where 8 succeed costs 8 units.
Request
The request body accepts a charts array containing up to 10 chart objects. Each object uses the same birth data parameters as the single Chart API.
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
charts | array | Yes | Array of chart request objects (max 10) |
charts[].birthDate | string | Yes | Date of birth (YYYY-MM-DD) |
charts[].birthTime | string | Yes | Time of birth (HH:MM, 24-hour format) |
charts[].birthLocation | string | Yes | Birth city (e.g. "New York, NY") |
charts[].latitude | number | No | Latitude override for geocoding |
charts[].longitude | number | No | Longitude override for geocoding |
Response
A successful batch returns an array of results. Each result includes either the full chart data or an error message.
Successful batch (all charts succeed)
Response200
{
"success": true,
"meta": {
"version": "2.0.0",
"timestamp": "2026-03-20T10:30:00.000Z",
"endpoint": "multi-chart"
},
"data": {
"totalRequested": 2,
"totalSucceeded": 2,
"totalFailed": 0,
"unitsConsumed": 2,
"results": [
{
"index": 0,
"success": true,
"data": {
"birthInfo": {
"date": "1990-05-15",
"time": "14:30",
"location": "New York, NY",
"timezone": "America/New_York",
"utcOffset": -4
},
"chart": {
"type": "Generator",
"strategy": "To Respond",
"authority": "Sacral",
"profile": "3/5",
"definition": "Single",
"incarnationCross": "Right Angle Cross of Eden",
"variable": "PLL DRR"
},
"centers": {
"defined": ["sacral", "throat", "g"],
"open": ["head", "ajna", "heart", "spleen", "solar_plexus", "root"]
},
"channels": [
{ "id": "1-8", "gates": "1-8", "name": "Inspiration", "circuitry": "Individual", "centers": ["G", "Throat"] }
],
"gates": { "definedGates": ["1", "8"], "hangingOpen": ["..."], "hangingClosed": ["..."], "openGates": ["..."] },
"personality": { "Sun": { "activation": { "gate": 38, "line": 3 }, "astrology": { "longitude": 294.12, "sign": "Capricorn" } } },
"design": { "Sun": { "..." : "..." } }
}
},
{
"index": 1,
"success": true,
"data": {
"birthInfo": {
"date": "1985-12-03",
"time": "08:45",
"location": "Los Angeles, CA",
"timezone": "America/Los_Angeles",
"utcOffset": -8
},
"chart": {
"type": "Manifestor",
"strategy": "To Inform",
"authority": "Emotional (Solar Plexus)",
"profile": "6/2",
"definition": "Split",
"incarnationCross": "Right Angle Cross of Tension",
"variable": "PRR DLL"
},
"centers": {
"defined": ["throat", "solar_plexus", "heart", "root"],
"open": ["head", "ajna", "g", "sacral", "spleen"]
},
"channels": [
{ "id": "21-45", "gates": "21-45", "name": "Money", "circuitry": "Tribal (Ego)", "centers": ["Heart", "Throat"] }
],
"gates": { "definedGates": ["21", "45"], "hangingOpen": ["..."], "hangingClosed": ["..."], "openGates": ["..."] },
"personality": { "Sun": { "activation": { "gate": 5, "line": 6 }, "astrology": { "longitude": 251.38, "sign": "Sagittarius" } } },
"design": { "Sun": { "..." : "..." } }
}
}
]
}
}Partial failure (mixed results)
When some charts fail validation, the batch still returns 200 OK. Check each result's success field.
Response200
{
"success": true,
"meta": {
"version": "2.0.0",
"timestamp": "2026-03-20T10:30:00.000Z",
"endpoint": "multi-chart"
},
"data": {
"totalRequested": 2,
"totalSucceeded": 1,
"totalFailed": 1,
"unitsConsumed": 1,
"results": [
{
"index": 0,
"success": true,
"data": {
"birthInfo": {
"date": "1990-05-15",
"time": "14:30",
"location": "New York, NY",
"timezone": "America/New_York",
"utcOffset": -4
},
"chart": {
"type": "Generator",
"strategy": "To Respond",
"authority": "Sacral",
"profile": "3/5",
"definition": "Single",
"incarnationCross": "Right Angle Cross of Eden",
"variable": "PLL DRR"
},
"centers": { "..." : "..." },
"channels": [ "..." ],
"gates": { "..." : "..." },
"personality": { "..." : "..." },
"design": { "..." : "..." }
}
},
{
"index": 1,
"success": false,
"error": {
"code": "INVALID_BIRTH_DATA",
"message": "birthTime is required and must be in HH:MM format"
}
}
]
}
}Response fields
| Field | Description |
|---|---|
totalRequested | Number of charts in the request |
totalSucceeded | Number of charts successfully generated |
totalFailed | Number of charts that failed validation |
unitsConsumed | Total units billed (equals totalSucceeded) |
results[].index | Zero-based position matching the input array order |
results[].success | Whether this individual chart was generated successfully |
results[].data | Full chart data (same structure as Chart API) -- only present on success |
results[].error | Error details with code and message -- only present on failure |
Limits
| Constraint | Value |
|---|---|
| Max charts per request | 10 |
| Required tier | advanced_chart |
| Units per successful chart | 1 |
| Rate limit | Shared with your plan's per-minute limit |
Tip
For processing more than 10 charts, send multiple batch requests sequentially. Each batch is processed atomically -- partial failures in one batch do not affect other batches.
