Total Human DesignDashboard|
Documentation

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

ParameterTypeRequiredDescription
chartsarrayYesArray of chart request objects (max 10)
charts[].birthDatestringYesDate of birth (YYYY-MM-DD)
charts[].birthTimestringYesTime of birth (HH:MM, 24-hour format)
charts[].birthLocationstringYesBirth city (e.g. "New York, NY")
charts[].latitudenumberNoLatitude override for geocoding
charts[].longitudenumberNoLongitude override for geocoding
thd-api

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

FieldDescription
totalRequestedNumber of charts in the request
totalSucceededNumber of charts successfully generated
totalFailedNumber of charts that failed validation
unitsConsumedTotal units billed (equals totalSucceeded)
results[].indexZero-based position matching the input array order
results[].successWhether this individual chart was generated successfully
results[].dataFull chart data (same structure as Chart API) -- only present on success
results[].errorError details with code and message -- only present on failure

Limits

ConstraintValue
Max charts per request10
Required tieradvanced_chart
Units per successful chart1
Rate limitShared 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.