{"openapi":"3.1.0","info":{"title":"Human Design API","version":"2.0.0","description":"Generate the full Human Design bodygraph from a birth moment: type, strategy, inner authority, profile, definition, incarnation cross, the nine centers, defined channels, and all 26 gate activations. Planetary positions verified against NASA JPL Horizons, the Design side solved on the exact 88 degree solar arc. One key, remote MCP, typed SDKs, 10 endpoints.\n\n# RoxyAPI: AI-Native Insight Infrastructure\n\n> **Base URL:** `https://roxyapi.com/api/v2`\n> All endpoint paths below are relative to this base URL.\n\nThe only multi-domain spiritual intelligence API. 12 domains (astrology, Vedic astrology, human design, forecast, biorhythm, tarot, numerology, crystals, dreams, I-Ching, angel numbers, location), 144+ endpoints, one API key, instant activation. Remote MCP server per domain plus AGENTS.md for AI coding agents.\n\n## Who uses RoxyAPI\n\n- **Developers** building astrology apps, tarot platforms, numerology calculators, or dream journals\n- **AI agent builders** connecting Claude, GPT, or Gemini to real calculation engines via MCP\n- **Vibe coders** shipping insight apps with Cursor, Bolt, or Replit using zero domain knowledge\n- **Founders and brands** launching branded spiritual experiences for their audience\n\n## Quick start (60 seconds)\n\n**1. Get your API key** at [roxyapi.com/pricing](https://roxyapi.com/pricing). Instant delivery, no account required.\n\n**2. Make your first call:**\n```bash\ncurl -H \"X-API-Key: YOUR_KEY\" https://roxyapi.com/api/v2/tarot/draw -X POST -H \"Content-Type: application/json\" -d '{\"count\": 3}'\n```\n\n**3. Monitor usage:**\n```bash\ncurl -H \"X-API-Key: YOUR_KEY\" https://roxyapi.com/api/v2/usage\n```\n\n## AI agent integration (MCP)\n\nRoxyAPI has native Model Context Protocol support. Your AI agent auto-discovers all 144+ endpoints as callable tools with zero configuration:\n- **Claude Desktop, Cursor, Windsurf**: Add MCP server URL in settings\n- **OpenAI Agents, Gemini ADK**: Connect via Streamable HTTP transport\n- **Custom agents**: Use the MCP Python/TypeScript SDK\n\nMCP endpoints: `https://roxyapi.com/mcp/{domain}` (e.g., `/mcp/astrology`, `/mcp/tarot`)\n\nSetup guide: [roxyapi.com/docs/mcp](https://roxyapi.com/docs/mcp)\n\n## Authentication\n\nAll endpoints require an API key via header or query param:\n- **Header (recommended):** `X-API-Key: YOUR_KEY`\n- **Query param (testing):** `?api_key=YOUR_KEY`\n\n## Response format\n\nClean JSON, no wrapper objects. Errors return `{ \"error\": \"message\", \"code\": \"error_code\" }`. The `error` field is human-readable (may change wording). The `code` field is machine-readable (stable — safe to switch on programmatically).\n\nRate limit headers on every response: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Used`\n\n## Errors\n\nAll errors return `{ \"error\": \"message\", \"code\": \"error_code\" }`:\n\n| Status | Code | When |\n|--------|------|------|\n| 400 | `validation_error` | Missing or invalid parameters. Response includes `issues[]` with per-field `path`, `message`, `code`, `expected`, `minimum`, `maximum`, `format`, `pattern`. |\n| 401 | `api_key_required` | No API key provided |\n| 401 | `invalid_api_key` | Key format invalid or tampered |\n| 401 | `subscription_not_found` | Key references non-existent subscription |\n| 401 | `subscription_inactive` | Subscription cancelled, expired, or suspended |\n| 404 | `not_found` | Resource not found. Response may include a ranked `suggestions[]` array (each with `endpoint`, `hint`, and a `docs` deep link) for typo recovery. |\n| 405 | `method_not_allowed` | Path exists for a different HTTP method. Response includes `allow[]` and the `Allow` header lists valid methods. |\n| 429 | `rate_limit_exceeded` | Monthly quota reached |\n| 500 | `internal_error` | Server error |\n\n## Pricing\n\nFlat per-request pricing. Every call counts the same, whether a planet position or a full birth chart with aspects. No credit systems, no variable costs. Plans from $39 to $699/month.\n\nSee [roxyapi.com/pricing](https://roxyapi.com/pricing)\n\n## Resources\n\n- [Quickstart guide](https://roxyapi.com/docs/quickstart) - first API call in 60 seconds\n- [Documentation](https://roxyapi.com/docs) - guides, tutorials, domain reference\n- [MCP setup](https://roxyapi.com/docs/mcp) - connect AI agents\n- [Starter apps](https://roxyapi.com/starters) - clone and deploy in 30 minutes\n- [FAQ](https://roxyapi.com/faq) - common questions\n- [Contact](https://roxyapi.com/contact) - support and API key recovery\n","contact":{"name":"RoxyAPI Support","url":"https://roxyapi.com/contact"},"license":{"name":"Proprietary","url":"https://roxyapi.com/policy/terms"}},"externalDocs":{"description":"Complete API Documentation with Examples","url":"https://roxyapi.com/docs"},"servers":[{"url":"/api/v2","description":"Production API v2"}],"security":[{"apiKey":[]}],"tags":[{"name":"Human Design","description":"Generate the full Human Design bodygraph from a birth moment: type, strategy, inner authority, profile, definition, incarnation cross, the nine centers, defined channels, and all 26 gate activations. Planetary positions verified against NASA JPL Horizons, the Design side solved on the exact 88 degree solar arc. One key, remote MCP, typed SDKs, 10 endpoints."}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Your API key for accessing RoxyAPI. Alternatively, you can pass the API key as a query parameter \"api_key\"."}},"schemas":{},"parameters":{}},"paths":{"/bodygraph":{"post":{"operationId":"generateBodygraph","tags":["Human Design"],"summary":"Generate full Human Design bodygraph - Type, authority, profile, centers, channels, gates","description":"Generate a complete Human Design bodygraph from a birth date, time, and timezone. Returns the energy type, strategy, inner authority, signature, not-self theme, profile, definition, incarnation cross, all nine centers with defined state and active gates, the defined channels, and all 26 planetary activations across the Personality and Design sides. The single endpoint for a full chart in one call, built for Human Design apps, readings, and coaching tools.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"Complete bodygraph with type, authority, profile, centers, channels, and gates","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","example":"Manifestor","description":"Human Design energy type. One of Manifestor, Generator, Manifesting Generator, Projector, Reflector."},"strategy":{"type":"string","example":"Inform","description":"The aura strategy for engaging life correctly for this type."},"authority":{"type":"string","example":"Emotional","description":"Inner authority for decision making. One of Emotional, Sacral, Splenic, Ego, Self-Projected, Mental, Lunar."},"signature":{"type":"string","example":"Peace","description":"The signature feeling of living in alignment with the type."},"notSelf":{"type":"string","example":"Anger","description":"The not-self theme, the recurring feeling that signals being out of alignment."},"profile":{"type":"string","example":"5/1","description":"Profile in conscious/unconscious form from the Personality Sun line over the Design Sun line."},"definition":{"type":"string","example":"Split","description":"Definition type from the number of connected components among defined centers. One of None, Single, Split, Triple Split, Quadruple Split."},"incarnationCross":{"type":"object","properties":{"gates":{"type":"array","items":{"type":"number"},"example":[51,57,61,62],"description":"The four cardinal gates of the cross: Personality Sun, Personality Earth, Design Sun, Design Earth."},"angle":{"type":"string","example":"Left Angle","description":"Cross angle. One of Right Angle, Juxtaposition, Left Angle."},"angleCode":{"type":"string","example":"LAX","description":"Short code for the angle. One of RAX, JXT, LAX."},"name":{"type":"string","example":"LAX Cross (51/57/61/62)","description":"Composed name of the incarnation cross from the angle and the four gates."}},"required":["gates","angle","angleCode","name"],"description":"The incarnation cross built from the four cardinal gates and the profile angle."},"centers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"sacral","description":"Center identifier. One of head, ajna, throat, g, heart, sacral, solar-plexus, spleen, root."},"name":{"type":"string","example":"Sacral","description":"Display name of the center."},"defined":{"type":"boolean","example":true,"description":"Whether the center is defined. A defined center is a consistent source of energy or awareness; an undefined center is open and conditioned by others."},"motor":{"type":"boolean","example":true,"description":"Whether this is a motor center (energy source). The four motors are Heart, Sacral, Solar Plexus, and Root."},"awareness":{"type":"boolean","example":false,"description":"Whether this is an awareness center. The three awareness centers are Ajna, Solar Plexus, and Spleen."},"theme":{"type":"string","description":"Theme text describing the center in its current defined or undefined state."},"gates":{"type":"array","items":{"type":"number"},"example":[5,14,34],"description":"Active gate numbers that sit in this center."}},"required":["id","name","defined","motor","awareness","theme","gates"]},"description":"All nine centers with their defined state and active gates."},"channels":{"type":"array","items":{"type":"object","properties":{"gateA":{"type":"number","example":34,"description":"First gate of the channel."},"gateB":{"type":"number","example":20,"description":"Second gate of the channel."},"name":{"type":"string","example":"Charisma","description":"Name of the defined channel."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal."},"centers":{"type":"array","items":{"type":"string"},"example":["throat","sacral"],"description":"The two centers this channel connects and defines."}},"required":["gateA","gateB","name","circuit","centers"]},"description":"The defined channels where both gates are activated."},"gates":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Activating body. One of Sun, Earth, Moon, North Node, South Node, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto."},"side":{"type":"string","example":"personality","description":"Chart side. personality is the conscious birth-moment activation, design is the unconscious activation 88 degrees of solar arc before birth."},"gate":{"type":"number","example":51,"description":"Human Design gate number from 1 to 64 that this activation falls in."},"line":{"type":"number","example":5,"description":"Line number from 1 to 6 within the gate, setting the line keynote and the profile."},"gateName":{"type":"string","example":"Shock","description":"Human Design keynote name of the gate, describing its bodygraph function."},"ichingHexagram":{"type":"object","properties":{"number":{"type":"number","example":51,"description":"I-Ching hexagram number, identical to the gate number it corresponds to."},"english":{"type":"string","example":"The Arousing","description":"English name of the corresponding I-Ching hexagram."}},"required":["number","english"],"description":"Cross-reference to the I-Ching hexagram that shares this gate number."}},"required":["planet","side","gate","line","gateName","ichingHexagram"]},"description":"All 26 activations, 13 Personality and 13 Design."}},"required":["type","strategy","authority","signature","notSelf","profile","definition","incarnationCross","centers","channels","gates"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/connection":{"post":{"operationId":"calculateConnection","tags":["Human Design"],"summary":"Calculate Human Design connection chart - Two-person composite bodygraph compatibility","description":"Calculate a Human Design connection chart by overlaying two bodygraphs. For each of the 36 channels the dynamic between the two people is classified as electromagnetic, dominance, compromise, or companionship, the four mechanics of how two designs meet. Also returns the nine centers as defined or open in the combined bodygraph with which person defines each, the combined definition, and a count of each dynamic. Built for relationship, dating, and coaching tools.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"personA":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"],"description":"Birth moment of the first person in the connection."},"personB":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"],"description":"Birth moment of the second person in the connection."}},"required":["personA","personB"]}}}},"responses":{"200":{"description":"Connection chart with per-channel dynamics, combined centers, definition, and a dynamic count","content":{"application/json":{"schema":{"type":"object","properties":{"totalChannels":{"type":"number","example":14,"description":"Total number of connected channels between the two people. Equals the length of channels and the sum of the summary counts."},"channels":{"type":"array","items":{"type":"object","properties":{"gateA":{"type":"number","example":34,"description":"First gate of the channel."},"gateB":{"type":"number","example":20,"description":"Second gate of the channel."},"name":{"type":"string","example":"Charisma","description":"Name of the channel whose connection dynamic is reported."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal."},"centers":{"type":"array","items":{"type":"string"},"example":["throat","sacral"],"description":"The two centers this channel connects in the bodygraph."},"dynamic":{"type":"string","example":"Electromagnetic","description":"Connection dynamic for this channel. Electromagnetic means each person holds one of the two gates and the channel completes only together, the classic point of attraction. Dominance means one person holds both gates and the other holds neither, a one-way conditioning. Compromise means one person holds both gates and the other holds a single hanging gate. Companionship means both people independently hold both gates, a shared and familiar frequency."},"personAGates":{"type":"array","items":{"type":"number"},"example":[34],"description":"Which of the channel two gates person A holds, from one to both."},"personBGates":{"type":"array","items":{"type":"number"},"example":[20],"description":"Which of the channel two gates person B holds, from one to both."}},"required":["gateA","gateB","name","circuit","centers","dynamic","personAGates","personBGates"]},"description":"Every connected channel between the two people with its dynamic. A channel is connected when the two people together hold both of its gates."},"centers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"sacral","description":"Center identifier. One of head, ajna, throat, g, heart, sacral, solar-plexus, spleen, root."},"name":{"type":"string","example":"Sacral","description":"Display name of the center."},"defined":{"type":"boolean","example":true,"description":"Whether the center is defined in the combined connection bodygraph, where a channel counts as defined when the two people together hold both of its gates."},"definedBy":{"type":"array","items":{"type":"string"},"example":["A"],"description":"Who defines this center in their own chart. A, B, both, or empty when the center is open in both individual charts."}},"required":["id","name","defined","definedBy"]},"description":"All nine centers with their defined state in the combined connection bodygraph and which person defines each."},"combinedDefinition":{"type":"string","example":"Single","description":"Definition of the combined connection bodygraph from connected components among its defined centers. One of None, Single, Split, Triple Split, Quadruple Split."},"summary":{"type":"object","properties":{"electromagnetic":{"type":"number","example":3,"description":"Count of electromagnetic channels, the points of mutual attraction."},"dominance":{"type":"number","example":2,"description":"Count of dominance channels, where one person conditions the other one way."},"compromise":{"type":"number","example":1,"description":"Count of compromise channels, a full channel meeting a single hanging gate."},"companionship":{"type":"number","example":4,"description":"Count of companionship channels, where both people share the whole channel."}},"required":["electromagnetic","dominance","compromise","companionship"],"description":"Count of each connection dynamic across all connected channels."}},"required":["totalChannels","channels","centers","combinedDefinition","summary"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/transit":{"post":{"operationId":"generateTransit","tags":["Human Design"],"summary":"Generate Human Design transit overlay - Current planetary activations on a natal bodygraph","description":"Overlay the current or any given planetary positions on a natal Human Design bodygraph to see which channels the transit temporarily completes. Returns the 13 transiting body activations with gate and line, the channels the transit completes beyond the natal definition split into personal channels where the transit supplies the partner gate of a natal gate and educational channels where the transit supplies both gates, the natally open centers those channels temporarily define, and a short factual summary. A transit is a single moment, so there is no Design side. When date and time are omitted the overlay is computed for now in UTC. Built for daily Human Design apps, transit widgets, and notification tools.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"birthData":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"],"description":"Birth moment whose natal bodygraph the transit is overlaid on."},"date":{"type":"string","format":"date","example":"2026-05-23","description":"Transit date in YYYY-MM-DD UTC. Optional. Defaults to today in UTC when omitted, giving the just-now transit."},"time":{"type":"string","example":"12:00:00","description":"Transit time in HH:MM:SS UTC. Optional. Defaults to the current UTC time when omitted. Precision matters: the Moon moves through a gate in roughly half a day."}},"required":["birthData"]}}}},"responses":{"200":{"description":"Transit overlay with transiting activations, completed channels, temporary centers, and a summary","content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","example":"2026-05-23","description":"Date the transit overlay was computed for, in YYYY-MM-DD UTC."},"time":{"type":"string","example":"12:00:00","description":"Time the transit overlay was computed for, in HH:MM:SS UTC."},"timezone":{"type":"number","example":0,"description":"UTC offset of the transit moment. Always 0, since the transit is computed in UTC."},"activations":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string","example":"Sun","description":"Transiting body whose current position lands on this gate. One of Sun, Earth, Moon, North Node, South Node, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto."},"gate":{"type":"number","example":51,"description":"Human Design gate number from 1 to 64 this transiting body currently sits in."},"line":{"type":"number","example":3,"description":"Line number from 1 to 6 within the gate, setting the line keynote of the transit."},"gateName":{"type":"string","example":"Shock","description":"Human Design keynote name of the gate the transiting body activates."},"ichingHexagram":{"type":"object","properties":{"number":{"type":"number","example":51,"description":"I-Ching hexagram number, identical to the gate number it corresponds to."},"english":{"type":"string","example":"The Arousing","description":"English name of the corresponding I-Ching hexagram."}},"required":["number","english"],"description":"Cross-reference to the I-Ching hexagram that shares this gate number."}},"required":["body","gate","line","gateName","ichingHexagram"]},"description":"The 13 transiting bodies at this moment with the gate and line each currently activates. A transit is a single instant, so there is no Design side, only current positions."},"completedChannels":{"type":"array","items":{"type":"object","properties":{"gateA":{"type":"number","example":34,"description":"First gate of the completed channel."},"gateB":{"type":"number","example":20,"description":"Second gate of the completed channel."},"name":{"type":"string","example":"Charisma","description":"Name of the channel the transit temporarily completes."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal."},"centers":{"type":"array","items":{"type":"string"},"example":["throat","sacral"],"description":"The two centers this channel connects and temporarily defines."},"kind":{"type":"string","example":"personal","description":"How the transit completes the channel. personal means the natal chart already holds one gate and the transit supplies the other, the classic electromagnetic completion. educational means both gates are open in the natal chart and the transit supplies both at once."},"natalGates":{"type":"array","items":{"type":"number"},"example":[34],"description":"Gate or gates of this channel the natal chart already holds. Empty for an educational channel."},"transitGates":{"type":"array","items":{"type":"number"},"example":[20],"description":"Gate or gates of this channel supplied by the transit. One gate for a personal channel, both gates for an educational channel."}},"required":["gateA","gateB","name","circuit","centers","kind","natalGates","transitGates"]},"description":"Channels the transit temporarily completes that the natal chart did not already define, each labelled personal or educational with the side that supplied each gate."},"temporaryCenters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"sacral","description":"Center identifier. One of head, ajna, throat, g, heart, sacral, solar-plexus, spleen, root."},"name":{"type":"string","example":"Sacral","description":"Display name of the center."},"temporarilyDefined":{"type":"boolean","example":true,"description":"Always true. The center is open in the natal chart and temporarily defined by a transit-completed channel for the duration of the transit."}},"required":["id","name","temporarilyDefined"]},"description":"Centers that are open in the natal chart and temporarily defined by a transit-completed channel."},"summary":{"type":"string","example":"This transit completes 2 channels: 1 personal channel where the transit supplies the partner gate of a natal gate and 1 educational channel where the transit supplies both gates.","description":"Short factual summary of the overlay with channel and center counts only."}},"required":["date","time","timezone","activations","completedChannels","temporaryCenters","summary"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/type":{"post":{"operationId":"calculateType","tags":["Human Design"],"summary":"Calculate Human Design type, authority and profile","description":"Calculate the core Human Design identity from a birth moment: the energy type, the aura strategy, the inner authority, the signature and not-self themes, and the profile. The fast lookup for type-and-authority features without the full bodygraph payload. Verified against NASA JPL Horizons positions.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"Type, strategy, authority, signature, not-self theme, and profile","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","example":"Manifestor","description":"Human Design energy type. One of Manifestor, Generator, Manifesting Generator, Projector, Reflector."},"strategy":{"type":"string","example":"Inform","description":"The aura strategy for engaging life correctly for this type."},"authority":{"type":"string","example":"Emotional","description":"Inner authority for decision making. One of Emotional, Sacral, Splenic, Ego, Self-Projected, Mental, Lunar."},"signature":{"type":"string","example":"Peace","description":"The signature feeling of living in alignment."},"notSelf":{"type":"string","example":"Anger","description":"The not-self theme that signals being out of alignment."},"profile":{"type":"string","example":"5/1","description":"Profile from the Personality Sun line over the Design Sun line."}},"required":["type","strategy","authority","signature","notSelf","profile"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/gates":{"post":{"operationId":"calculateGates","tags":["Human Design"],"summary":"Calculate the 26 Human Design gate activations","description":"Calculate the 26 gate activations for a birth moment, split into the 13 conscious Personality activations at birth and the 13 unconscious Design activations 88 degrees of solar arc earlier. Each activation reports the planet, gate, line, gate keynote, and the matching I-Ching hexagram. Built for activation columns and detailed chart views.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"Personality and Design activation lists, 13 each","content":{"application/json":{"schema":{"type":"object","properties":{"personality":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Activating body. One of Sun, Earth, Moon, North Node, South Node, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto."},"side":{"type":"string","example":"personality","description":"Chart side. personality is the conscious birth-moment activation, design is the unconscious activation 88 degrees of solar arc before birth."},"gate":{"type":"number","example":51,"description":"Human Design gate number from 1 to 64 that this activation falls in."},"line":{"type":"number","example":5,"description":"Line number from 1 to 6 within the gate, setting the line keynote and the profile."},"gateName":{"type":"string","example":"Shock","description":"Human Design keynote name of the gate, describing its bodygraph function."},"ichingHexagram":{"type":"object","properties":{"number":{"type":"number","example":51,"description":"I-Ching hexagram number, identical to the gate number it corresponds to."},"english":{"type":"string","example":"The Arousing","description":"English name of the corresponding I-Ching hexagram."}},"required":["number","english"],"description":"Cross-reference to the I-Ching hexagram that shares this gate number."}},"required":["planet","side","gate","line","gateName","ichingHexagram"]},"description":"The 13 conscious Personality activations computed at the exact birth moment, in black on a standard chart."},"design":{"type":"array","items":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Activating body. One of Sun, Earth, Moon, North Node, South Node, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto."},"side":{"type":"string","example":"personality","description":"Chart side. personality is the conscious birth-moment activation, design is the unconscious activation 88 degrees of solar arc before birth."},"gate":{"type":"number","example":51,"description":"Human Design gate number from 1 to 64 that this activation falls in."},"line":{"type":"number","example":5,"description":"Line number from 1 to 6 within the gate, setting the line keynote and the profile."},"gateName":{"type":"string","example":"Shock","description":"Human Design keynote name of the gate, describing its bodygraph function."},"ichingHexagram":{"type":"object","properties":{"number":{"type":"number","example":51,"description":"I-Ching hexagram number, identical to the gate number it corresponds to."},"english":{"type":"string","example":"The Arousing","description":"English name of the corresponding I-Ching hexagram."}},"required":["number","english"],"description":"Cross-reference to the I-Ching hexagram that shares this gate number."}},"required":["planet","side","gate","line","gateName","ichingHexagram"]},"description":"The 13 unconscious Design activations computed 88 degrees of solar arc before birth, in red on a standard chart."}},"required":["personality","design"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/gates/{number}":{"get":{"operationId":"getGate","tags":["Human Design"],"summary":"Look up a Human Design gate by number","description":"Look up the static reference data for a Human Design gate by its number from 1 to 64: the gate keynote name, the center it sits in, the matching I-Ching hexagram, and the gates that form a channel with it. A pure reference endpoint with no birth data required.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"integer","nullable":true,"example":34,"description":"Gate number from 1 to 64."},"required":false,"description":"Gate number from 1 to 64.","name":"number","in":"path"}],"responses":{"200":{"description":"Gate reference data with center, hexagram, and channel partners","content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"number","example":34,"description":"Gate number from 1 to 64."},"name":{"type":"string","example":"Power","description":"Human Design keynote name of the gate."},"center":{"type":"string","example":"sacral","description":"Center the gate sits in."},"centerName":{"type":"string","example":"Sacral","description":"Display name of the center."},"ichingHexagram":{"type":"object","properties":{"number":{"type":"number","example":34,"description":"I-Ching hexagram number."},"english":{"type":"string","example":"The Power of the Great","description":"Hexagram name."}},"required":["number","english"],"description":"The I-Ching hexagram that shares this gate number."},"channelPartners":{"type":"array","items":{"type":"object","properties":{"gate":{"type":"number","example":20,"description":"Partner gate number."},"channel":{"type":"string","example":"Charisma","description":"Name of the shared channel."}},"required":["gate","channel"]},"description":"Gates that form a channel with this gate, with the channel name for each."}},"required":["number","name","center","centerName","ichingHexagram","channelPartners"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"404":{"description":"Gate number is outside the range 1 to 64","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Resource not found","description":"Human-readable error message. May change wording — do not parse programmatically."},"code":{"type":"string","example":"not_found","description":"Machine-readable error code. Stable identifier for programmatic error handling."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/channels":{"post":{"operationId":"calculateChannels","tags":["Human Design"],"summary":"Calculate the defined Human Design channels","description":"Calculate the defined channels for a birth moment. A channel is defined when both of its gates are activated, and it wires together the two centers it connects. Returns each defined channel with its gates, name, circuit family, and connected centers, plus the full set of centers those channels define. Built for bodygraph rendering and definition analysis.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"Defined channels with circuits and the centers they define","content":{"application/json":{"schema":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"object","properties":{"gateA":{"type":"number","example":34,"description":"First gate of the channel."},"gateB":{"type":"number","example":20,"description":"Second gate of the channel."},"name":{"type":"string","example":"Charisma","description":"Name of the defined channel."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal."},"centers":{"type":"array","items":{"type":"string"},"example":["throat","sacral"],"description":"The two centers this channel connects and defines."}},"required":["gateA","gateB","name","circuit","centers"]},"description":"The defined channels, where both gates are activated."},"total":{"type":"number","example":3,"description":"Number of defined channels in the bodygraph."},"definedCenters":{"type":"array","items":{"type":"string"},"example":["throat","sacral","g"],"description":"The centers defined by these channels."}},"required":["channels","total","definedCenters"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/centers":{"post":{"operationId":"calculateCenters","tags":["Human Design"],"summary":"Calculate the nine Human Design centers","description":"Calculate the state of all nine Human Design centers for a birth moment: whether each is defined or open, whether it is a motor or an awareness center, its theme, and the active gates it holds. The data layer behind a rendered bodygraph where defined centers are colored and open centers are white.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"All nine centers with defined state, flags, theme, and active gates","content":{"application/json":{"schema":{"type":"object","properties":{"centers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"sacral","description":"Center identifier. One of head, ajna, throat, g, heart, sacral, solar-plexus, spleen, root."},"name":{"type":"string","example":"Sacral","description":"Display name of the center."},"defined":{"type":"boolean","example":true,"description":"Whether the center is defined. A defined center is a consistent source of energy or awareness; an undefined center is open and conditioned by others."},"motor":{"type":"boolean","example":true,"description":"Whether this is a motor center (energy source). The four motors are Heart, Sacral, Solar Plexus, and Root."},"awareness":{"type":"boolean","example":false,"description":"Whether this is an awareness center. The three awareness centers are Ajna, Solar Plexus, and Spleen."},"theme":{"type":"string","description":"Theme text describing the center in its current defined or undefined state."},"gates":{"type":"array","items":{"type":"number"},"example":[5,14,34],"description":"Active gate numbers that sit in this center."}},"required":["id","name","defined","motor","awareness","theme","gates"]},"description":"All nine centers with their defined state and active gates."},"definedCount":{"type":"number","example":4,"description":"How many of the nine centers are defined."}},"required":["centers","definedCount"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/centers/{id}":{"get":{"operationId":"getCenter","tags":["Human Design"],"summary":"Look up a Human Design center by id","description":"Look up the static reference data for one of the nine Human Design centers by its id: the display name, whether it is a motor or awareness center, and what it means both defined and undefined. A pure reference endpoint with no birth data required.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["head","ajna","throat","g","heart","sacral","solar-plexus","spleen","root"],"example":"sacral","description":"Center id. One of head, ajna, throat, g, heart, sacral, solar-plexus, spleen, root."},"required":true,"description":"Center id. One of head, ajna, throat, g, heart, sacral, solar-plexus, spleen, root.","name":"id","in":"path"}],"responses":{"200":{"description":"Center reference data with defined and undefined meanings","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","example":"sacral","description":"Center identifier."},"name":{"type":"string","example":"Sacral","description":"Display name of the center."},"motor":{"type":"boolean","example":true,"description":"Whether this is a motor center."},"awareness":{"type":"boolean","example":false,"description":"Whether this is an awareness center."},"definedMeaning":{"type":"string","description":"What this center means when defined: a consistent, reliable energy or awareness."},"undefinedMeaning":{"type":"string","description":"What this center means when undefined and open: a place of conditioning and learning."}},"required":["id","name","motor","awareness","definedMeaning","undefinedMeaning"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}},"/profile":{"post":{"operationId":"calculateProfile","tags":["Human Design"],"summary":"Calculate the Human Design profile and line keynotes","description":"Calculate the Human Design profile for a birth moment: the conscious Personality Sun line over the unconscious Design Sun line, with the keynote for each. The profile is the geometry of the life role, for example 5/1 the Heretic Investigator. Verified against NASA JPL Horizons positions.","security":[{"apiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-07-15","description":"Birth date in YYYY-MM-DD format. The anchor for both the Personality activations at birth and the Design activations 88 degrees of solar arc earlier."},"time":{"type":"string","example":"13:00:00","description":"Birth time in 24-hour HH:MM:SS format. Precision matters: the profile lines and gate boundaries shift with the exact minute of birth."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string","pattern":"^[A-Za-z_]+(?:\\/[A-Za-z0-9_+-]+){0,2}$"}],"description":"Decimal hours (e.g. 5.5 for IST, -5 for EST) OR IANA name (e.g. \"America/New_York\", \"UTC\"). IANA is resolved to the DST-correct offset for the request date. Invalid timezones return 400 with a validation error.","example":5.5},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Optional and does not affect the bodygraph, which depends only on ecliptic longitudes. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"default":0,"example":0,"description":"Birth longitude in decimal degrees. Optional and does not affect the bodygraph. Defaults to 0."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"Profile string, the two line numbers, and line keynotes","content":{"application/json":{"schema":{"type":"object","properties":{"profile":{"type":"string","example":"5/1","description":"Profile in conscious/unconscious form, the Personality Sun line over the Design Sun line."},"personalityLine":{"type":"number","example":5,"description":"Line number from 1 to 6 of the conscious Personality Sun."},"designLine":{"type":"number","example":1,"description":"Line number from 1 to 6 of the unconscious Design Sun."},"personalityKeynote":{"type":"string","description":"Keynote of the Personality line, the conscious half of the profile."},"designKeynote":{"type":"string","description":"Keynote of the Design line, the unconscious half of the profile."}},"required":["profile","personalityLine","designLine","personalityKeynote","designKeynote"]}}}},"400":{"description":"Validation error. `issues[]` lists every failed field.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"First issue summary."},"code":{"type":"string","enum":["validation_error"]},"issues":{"type":"array","description":"Every validation failure. Use this to rebuild a valid request.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dot-separated field path, or \"(root)\" for top-level."},"message":{"type":"string"},"code":{"type":"string","description":"Zod issue code (invalid_type, too_small, too_big, invalid_string, ...)."},"expected":{"type":"string","description":"Expected type for invalid_type."},"minimum":{"description":"Minimum bound for too_small issues.","oneOf":[{"type":"number"},{"type":"string"}]},"maximum":{"description":"Maximum bound for too_big issues.","oneOf":[{"type":"number"},{"type":"string"}]},"inclusive":{"type":"boolean"},"format":{"type":"string","description":"Format name for string issues (regex, email, url, uuid)."},"pattern":{"type":"string","description":"Regex pattern when format is regex."}},"required":["path","message"]}}},"required":["error","code","issues"]}}}},"401":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"405":{"description":"Method not allowed. The path exists but only responds to the methods listed in `allow[]` and the `Allow` response header.","headers":{"Allow":{"description":"Comma-separated list of allowed methods (RFC 9110).","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","enum":["method_not_allowed"]},"allow":{"type":"array","items":{"type":"string"},"description":"Allowed HTTP methods for this path. Mirrors the Allow response header."},"docs":{"type":"string","description":"Link to the product page for this domain."}},"required":["error","code","allow"]}}}},"429":{"description":"Monthly rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message. May change wording."},"code":{"type":"string","description":"Machine-readable error code. Stable identifier."}},"required":["error","code"]}}}}}}}}}