{"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, plus two-person connection charts and small-group Penta analysis. Planetary positions verified against NASA JPL Horizons, the Design side solved on the exact 88 degree solar arc. One key, Remote MCP, typed SDKs.\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, forecast, human design, numerology, tarot, biorhythm, I-Ching, crystals, dreams, angel numbers, location), 178+ 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 (Remote MCP)\n\nRoxyAPI ships a Remote MCP server per product over Streamable HTTP, with no local setup and no Docker. Your AI agent auto-discovers all 178+ 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 per month for 50K requests, up to 3M requests, with custom volume above that.\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, plus two-person connection charts and small-group Penta analysis. Planetary positions verified against NASA JPL Horizons, the Design side solved on the exact 88 degree solar arc. One key, Remote MCP, typed SDKs."}],"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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use typeLocalized for anything a reader sees."},"typeLocalized":{"type":"string","example":"Manifestador","description":"Energy type name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"typeDescription":{"type":"string","example":"An initiating, impactful aura built to start things and set them in motion. Informing others before acting clears resistance and brings peace.","description":"What the aura of this type does and how it is designed to engage life. The grounding text for the type label, so a consuming agent does not have to supply the meaning itself."},"aura":{"type":"string","example":"Closed and repelling. The field pushes outward and deflects influence, so a Manifestor is felt before anything is said, and others tend to brace against energy they cannot read.","description":"The aura mechanic of the type: how the energy field itself operates, for example open and enveloping, or closed and repelling."},"strategy":{"type":"string","example":"Inform","description":"The aura strategy for engaging life correctly for this type. Always English, whatever the lang parameter says. Use strategyLocalized for anything a reader sees."},"strategyLocalized":{"type":"string","example":"Informar","description":"Strategy name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"strategyDescription":{"type":"string","example":"Inform everyone an action will affect, before taking it. This is not asking permission and not seeking approval: it removes the surprise that provokes resistance, which is what turns anger into peace.","description":"How to actually apply the strategy. The strategy field alone is a bare label such as Respond or Inform; this is the operating instruction behind it."},"authority":{"type":"string","example":"Emotional","description":"Inner authority for decision making. One of Emotional, Sacral, Splenic, Ego, Self-Projected, Mental, Lunar. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use authorityLocalized for anything a reader sees."},"authorityLocalized":{"type":"string","example":"Emocional","description":"Inner authority name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"authorityDescription":{"type":"string","example":"Decisions are made across an emotional wave rather than inside a moment. The defined Solar Plexus moves on its own rhythm between hope and pain, so no single moment carries the truth: clarity is what remains once the wave has run its course and settled toward neutral. The trap is committing at the peak, where enthusiasm reads as certainty, or at the trough, where gloom reads as insight, and treating any pressure to answer now as a reason to skip the wait.","description":"How the decision is made, the timing it requires, and the characteristic trap. Inner authority is the most actionable output of a Human Design chart, so this is the field to lean on when grounding a reading."},"signature":{"type":"string","example":"Peace","description":"The signature feeling of living in alignment with the type. Always English, whatever the lang parameter says. Use signatureLocalized for anything a reader sees."},"signatureLocalized":{"type":"string","example":"Paz","description":"Signature theme name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"notSelf":{"type":"string","example":"Anger","description":"The not-self theme, the recurring feeling that signals being out of alignment. Always English, whatever the lang parameter says. Use notSelfLocalized for anything a reader sees."},"notSelfLocalized":{"type":"string","example":"Ira","description":"Not-self theme name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"profile":{"type":"string","example":"5/1","description":"Profile in conscious/unconscious form from the Personality Sun line over the Design Sun line."},"profileKeynotes":{"type":"object","properties":{"personalityLine":{"type":"number","example":5,"description":"Line number 1 to 6 of the conscious Personality Sun, the first digit of the profile."},"designLine":{"type":"number","example":1,"description":"Line number 1 to 6 of the unconscious Design Sun, the second digit of the profile."},"personality":{"type":"string","example":"Heretic: a universalizing, practical force others project expectations onto.","description":"Keynote of the conscious Personality line. The half of the life role the person is aware of and can speak to."},"design":{"type":"string","example":"Investigator: builds a secure foundation through study before acting.","description":"Keynote of the unconscious Design line. The half of the life role others see operating in the body, which the person does not directly experience."}},"required":["personalityLine","designLine","personality","design"],"description":"The two line keynotes the profile is built from, conscious over unconscious, so the profile is readable without a separate lookup."},"profileDescription":{"type":"string","example":"Heretic over Investigator. A conscious projection field leads others to assume a solution is already at hand, and the unconscious first line quietly supplies the foundation that can actually answer. Reputation is both the currency and the risk: with real preparation the practical solution lands far beyond the personal, and without it the same projection curdles into blame.","description":"Meaning of the combined profile. A profile is not the sum of its two lines: 6/2 has its own meaning that neither the line 6 nor the line 2 keynote carries alone."},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use definitionLocalized for anything a reader sees."},"definitionLocalized":{"type":"string","example":"Dividida","description":"Definition type name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"definitionDescription":{"type":"string","example":"The defined centers fall into two groups with no channel between them, so energy is consistent inside each group and does not cross the divide. The gap is bridged by the gates other people carry, which is why particular company can make thinking suddenly feel joined up, and why that company is easily mistaken for completion rather than recognized as a temporary bridge. What the configuration needs is time for the two areas to synthesize and awareness of who is bridging them, not a rushed decision taken while the halves are still speaking separately.","description":"How energy flows through the defined centers in this configuration, and what the configuration needs. For a split, this is where the bridging gates of other people matter."},"sides":{"type":"object","additionalProperties":{"type":"string","example":"The conscious side, printed in black and calculated at the moment of birth. These activations are the mind and the sense of self: what the person recognizes as their own and can describe to someone else.","description":"What this chart side is and what it governs, localized by the lang query parameter. Render it as the legend beside the personality or design column of a bodygraph."},"example":{"personality":"The conscious side, printed in black and calculated at the moment of birth.","design":"The unconscious side, printed in red and calculated 88 degrees of solar arc before birth."},"description":"What the two chart sides are: personality is the conscious mind side, design is the unconscious body side computed 88 degrees of solar arc before birth. Returned once at the top level rather than repeated across all 26 activations."},"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. Always English, whatever the lang parameter says. Use angleLocalized for anything a reader sees."},"angleLocalized":{"type":"string","example":"Ángulo Izquierdo","description":"Cross angle name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"angleCode":{"type":"string","example":"LAX","description":"Short code for the angle. One of RAX, JXT, LAX."},"name":{"type":"string","example":"Left Angle Cross of the Clarion","description":"Canonical published name of the incarnation cross, determined by the Personality Sun gate and the angle. Falls back to a name composed from the angle and the four gates if no canonical name exists."},"description":{"type":"string","example":"Shock delivered to whoever is ready for it. The reaction is often outrage, and underneath it is a change that was waiting for something to force it, which is why the shock needs a receiver.","description":"The life theme of the cross, synthesized from its four gates and the orientation the angle gives them. The same Sun gate under a different angle is a genuinely different theme: Right Angle is personal destiny, Left Angle is worked out through other people, Juxtaposition is a fixed fate."}},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Sacro","description":"Center name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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","example":"Sustainable life force and work energy. A reliable gut response that guides what to engage with.","description":"Theme text describing the center in its current defined or undefined state."},"notSelfQuestion":{"type":"string","example":"Is all this talking and doing an attempt to attract attention?","description":"The conditioning trap of this center when it is open. Returned on every center so a consumer can surface it the moment `defined` is false, which is where the not-self operates."},"biology":{"type":"string","example":"The adrenal glands.","description":"The gland, organ, or system this center corresponds to in the body."},"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","notSelfQuestion","biology","gates"]},"description":"All nine centers with their defined state and active gates."},"channels":{"type":"array","items":{"type":"object","properties":{"gateA":{"type":"number","example":20,"description":"First gate of the channel."},"gateB":{"type":"number","example":34,"description":"Second gate of the channel."},"name":{"type":"string","example":"Charisma","description":"Name of the defined channel. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Carisma","description":"Channel name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal. Always English, whatever the lang parameter says. Use circuitLocalized for anything a reader sees."},"circuitLocalized":{"type":"string","example":"Individual","description":"Circuit family name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"centers":{"type":"array","items":{"type":"string"},"example":["throat","sacral"],"description":"The two centers this channel connects and defines."},"description":{"type":"string","example":"Sacral power is pushed straight to the Throat, so awareness in the present moment becomes action with almost no pause between them. The energy stays healthy only while it is busy with work it loves.","description":"What this channel wires between its two centers and the nature of the energy it carries."},"circuitDescription":{"type":"string","example":"Empowerment through mutation, carried by 15 channels. The knowing here cannot be explained or handed over, only lived, and it changes other people by exposure rather than instruction. It arrives as a pulse, never on demand.","description":"What the circuit family of this channel governs."}},"required":["gateA","gateB","name","circuit","centers","description","circuitDescription"]},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code and to key a glyph table on. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Sol","description":"Activating body name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use gateNameLocalized for anything a reader sees."},"gateNameLocalized":{"type":"string","example":"Choque","description":"Gate keynote name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"gateDescription":{"type":"string","example":"Willpower that shocks and competes. Sitting in the heart center, it moves first and startles, and that shock is what initiates others into a deeper connection with spirit.","description":"Bodygraph function of the gate: what it does in the center it sits in and the channel it forms. This is NOT the meaning of the I-Ching hexagram that shares its number. They share a number, not a definition."},"lineMeaning":{"type":"string","example":"The group turns to this line when everything breaks. It reads the shape of the shock and rides it, and savoring the victory is what leaves it exposed to the next one.","description":"Meaning of this gate at this specific line, one of 384. The finest interpretive layer in the chart and the one that makes a reading specific rather than generic. This is not the six abstract line archetypes: gate 41 line 3 carries its own meaning that neither the gate keynote nor the line-3 archetype holds alone."},"planetDescription":{"type":"string","example":"The dominant activation. With the Earth it carries roughly 70 percent of the imprint on the chart. The Personality Sun gate is the conscious life theme, the Design Sun is the radiance the body broadcasts before a word is spoken.","description":"What this planetary activation contributes in Human Design specifically, which is not its meaning in western astrology."},"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","gateDescription","lineMeaning","planetDescription","ichingHexagram"]},"description":"All 26 activations, 13 Personality and 13 Design."}},"required":["type","typeDescription","aura","strategy","strategyDescription","authority","authorityDescription","signature","notSelf","profile","profileKeynotes","profileDescription","definition","definitionDescription","sides","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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Carisma","description":"Channel name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal. Always English, whatever the lang parameter says. Use circuitLocalized for anything a reader sees."},"circuitLocalized":{"type":"string","example":"Individual","description":"Circuit family name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use dynamicLocalized for anything a reader sees."},"dynamicLocalized":{"type":"string","example":"Electromagnético","description":"Connection dynamic name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Sacro","description":"Center name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use combinedDefinitionLocalized for anything a reader sees."},"combinedDefinitionLocalized":{"type":"string","example":"Simple","description":"Combined definition name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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"]}}}}}}},"/penta":{"post":{"operationId":"calculatePenta","tags":["Human Design"],"summary":"Calculate Human Design Penta - Small-group BG5 operating system for three to five people","description":"Calculate the Human Design Penta (BG5, Base Group 5) for a small group of three to five people. The Penta is a trans-auric form built from a fixed set of six channels running only between the Sacral, the G Center, and the Throat. It reports which of the twelve Penta gates are filled and by whom, which of the six channels are defined Strengths, the upper leadership channels versus the lower generative channels, the 2/14 material core, and the functional gaps where no member supplies a role. Built for team, family, and group analysis tools. Below three people no Penta forms and above five a second Penta emerges, so the group size must be three to five.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"members":{"type":"array","items":{"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"required":["date","time","timezone"]},"minItems":3,"maxItems":5,"description":"Birth moments of the three to five people in the group. Below three no Penta forms; above five a second Penta emerges."}},"required":["members"]}}}},"responses":{"200":{"description":"Penta chart with per-channel Strengths, per-gate fill state, and a group summary","content":{"application/json":{"schema":{"type":"object","properties":{"memberCount":{"type":"number","example":4,"description":"Number of people in the group, always between 3 and 5."},"channels":{"type":"array","items":{"type":"object","properties":{"gateA":{"type":"number","example":2,"description":"First gate of the Penta channel."},"gateB":{"type":"number","example":14,"description":"Second gate of the Penta channel."},"name":{"type":"string","example":"The Beat","description":"Name of the Penta channel. One of The Alpha, Inspiration, The Prodigal, Rhythm, The Beat, Discovery. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"El Ritmo","description":"Penta channel name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal. Always English, whatever the lang parameter says. Use circuitLocalized for anything a reader sees."},"circuitLocalized":{"type":"string","example":"Individual","description":"Circuit family name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"position":{"type":"string","example":"lower","description":"Position of the channel in the Penta. upper channels run from the G Center to the Throat and carry the leadership and how-the-group-presents roles. lower channels run from the G Center to the Sacral and carry the managed, generative, resource roles."},"isCore":{"type":"boolean","example":true,"description":"Whether this is the 2/14 Channel of the Beat, the material core of the Penta vortex: gate 2 the direction for resources, gate 14 the resources themselves."},"defined":{"type":"boolean","example":true,"description":"Whether the channel is a defined Strength: both of its gates are present somewhere in the group, so the function it governs has no gap."},"gateAHeldBy":{"type":"array","items":{"type":"number"},"example":[0,2],"description":"Zero-based indices of the members whose chart holds gate A, in member order."},"gateBHeldBy":{"type":"array","items":{"type":"number"},"example":[1],"description":"Zero-based indices of the members whose chart holds gate B, in member order."}},"required":["gateA","gateB","name","circuit","position","isCore","defined","gateAHeldBy","gateBHeldBy"]},"description":"The six channels of the Penta with their defined Strength state and which members supply each gate. Three upper channels run G to Throat (The Alpha, Inspiration, The Prodigal); three lower channels run G to Sacral (Rhythm, The Beat, Discovery)."},"gates":{"type":"array","items":{"type":"object","properties":{"gate":{"type":"number","example":15,"description":"Penta gate number. One of 1, 2, 5, 7, 8, 13, 14, 15, 29, 31, 33, 46."},"gateName":{"type":"string","example":"Extremes","description":"Human Design keynote name of the gate, describing the role it brings to the group. Always English, whatever the lang parameter says. Use gateNameLocalized for anything a reader sees."},"gateNameLocalized":{"type":"string","example":"Extremos","description":"Gate keynote name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"filled":{"type":"boolean","example":true,"description":"Whether at least one member holds this gate. A gate held by nobody is a gap that conditions the group to compensate for the missing role."},"heldBy":{"type":"array","items":{"type":"number"},"example":[0],"description":"Zero-based indices of the members whose chart holds this gate. Empty when the gate is a gap."}},"required":["gate","gateName","filled","heldBy"]},"description":"The twelve Penta gates with their filled state and which members hold each."},"summary":{"type":"object","properties":{"definedChannels":{"type":"number","example":4,"description":"Count of the six Penta channels that are defined Strengths in the group."},"filledGates":{"type":"number","example":9,"description":"Count of the twelve Penta gates filled by at least one member."},"gapGates":{"type":"array","items":{"type":"number"},"example":[7,31,33],"description":"Penta gates held by no member. A non-empty list flags the functional gaps in the group."},"coreDefined":{"type":"boolean","example":true,"description":"Whether the 2/14 Channel of the Beat, the material core of the Penta, is defined across the group."}},"required":["definedChannels","filledGates","gapGates","coreDefined"],"description":"Group-level rollup of the Penta channels and gates."}},"required":["memberCount","channels","gates","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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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","format":"time","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. Always English, whatever the lang parameter says, so it stays safe to compare against in code and to key a glyph table on. Use bodyLocalized for anything a reader sees."},"bodyLocalized":{"type":"string","example":"Sol","description":"Transiting body name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use gateNameLocalized for anything a reader sees."},"gateNameLocalized":{"type":"string","example":"Choque","description":"Gate keynote name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Carisma","description":"Channel name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal. Always English, whatever the lang parameter says. Use circuitLocalized for anything a reader sees."},"circuitLocalized":{"type":"string","example":"Individual","description":"Circuit family name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use kindLocalized for anything a reader sees."},"kindLocalized":{"type":"string","example":"personal","description":"Completion kind name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Sacro","description":"Center name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use typeLocalized for anything a reader sees."},"typeLocalized":{"type":"string","example":"Manifestador","description":"Energy type name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"typeDescription":{"type":"string","example":"An initiating, impactful aura built to start things and set them in motion. Informing others before acting clears resistance and brings peace.","description":"What the aura of this type does and how it is designed to engage life. The grounding text for the type label, so a consuming agent does not have to supply the meaning itself."},"aura":{"type":"string","example":"Closed and repelling. The field pushes outward and deflects influence, so a Manifestor is felt before anything is said, and others tend to brace against energy they cannot read.","description":"The aura mechanic of the type: how the energy field itself operates, for example open and enveloping, or closed and repelling."},"strategy":{"type":"string","example":"Inform","description":"The aura strategy for engaging life correctly for this type. Always English, whatever the lang parameter says. Use strategyLocalized for anything a reader sees."},"strategyLocalized":{"type":"string","example":"Informar","description":"Strategy name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"strategyDescription":{"type":"string","example":"Inform everyone an action will affect, before taking it. This is not asking permission and not seeking approval: it removes the surprise that provokes resistance, which is what turns anger into peace.","description":"How to actually apply the strategy. The strategy field alone is a bare label such as Respond or Inform; this is the operating instruction behind it."},"authority":{"type":"string","example":"Emotional","description":"Inner authority for decision making. One of Emotional, Sacral, Splenic, Ego, Self-Projected, Mental, Lunar. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use authorityLocalized for anything a reader sees."},"authorityLocalized":{"type":"string","example":"Emocional","description":"Inner authority name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"authorityDescription":{"type":"string","example":"Decisions are made across an emotional wave rather than inside a moment. The defined Solar Plexus moves on its own rhythm between hope and pain, so no single moment carries the truth: clarity is what remains once the wave has run its course and settled toward neutral. The trap is committing at the peak, where enthusiasm reads as certainty, or at the trough, where gloom reads as insight, and treating any pressure to answer now as a reason to skip the wait.","description":"How the decision is made, the timing it requires, and the characteristic trap. Inner authority is the most actionable output of a Human Design chart."},"signature":{"type":"string","example":"Peace","description":"The signature feeling of living in alignment. Always English, whatever the lang parameter says. Use signatureLocalized for anything a reader sees."},"signatureLocalized":{"type":"string","example":"Paz","description":"Signature theme name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"notSelf":{"type":"string","example":"Anger","description":"The not-self theme that signals being out of alignment. Always English, whatever the lang parameter says. Use notSelfLocalized for anything a reader sees."},"notSelfLocalized":{"type":"string","example":"Ira","description":"Not-self theme name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"profile":{"type":"string","example":"5/1","description":"Profile from the Personality Sun line over the Design Sun line."}},"required":["type","typeDescription","aura","strategy","strategyDescription","authority","authorityDescription","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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code and to key a glyph table on. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Sol","description":"Activating body name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use gateNameLocalized for anything a reader sees."},"gateNameLocalized":{"type":"string","example":"Choque","description":"Gate keynote name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"gateDescription":{"type":"string","example":"Willpower that shocks and competes. Sitting in the heart center, it moves first and startles, and that shock is what initiates others into a deeper connection with spirit.","description":"Bodygraph function of the gate: what it does in the center it sits in and the channel it forms. This is NOT the meaning of the I-Ching hexagram that shares its number. They share a number, not a definition."},"lineMeaning":{"type":"string","example":"The group turns to this line when everything breaks. It reads the shape of the shock and rides it, and savoring the victory is what leaves it exposed to the next one.","description":"Meaning of this gate at this specific line, one of 384. The finest interpretive layer in the chart and the one that makes a reading specific rather than generic. This is not the six abstract line archetypes: gate 41 line 3 carries its own meaning that neither the gate keynote nor the line-3 archetype holds alone."},"planetDescription":{"type":"string","example":"The dominant activation. With the Earth it carries roughly 70 percent of the imprint on the chart. The Personality Sun gate is the conscious life theme, the Design Sun is the radiance the body broadcasts before a word is spoken.","description":"What this planetary activation contributes in Human Design specifically, which is not its meaning in western astrology."},"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","gateDescription","lineMeaning","planetDescription","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. Always English, whatever the lang parameter says, so it stays safe to compare against in code and to key a glyph table on. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Sol","description":"Activating body name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use gateNameLocalized for anything a reader sees."},"gateNameLocalized":{"type":"string","example":"Choque","description":"Gate keynote name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"gateDescription":{"type":"string","example":"Willpower that shocks and competes. Sitting in the heart center, it moves first and startles, and that shock is what initiates others into a deeper connection with spirit.","description":"Bodygraph function of the gate: what it does in the center it sits in and the channel it forms. This is NOT the meaning of the I-Ching hexagram that shares its number. They share a number, not a definition."},"lineMeaning":{"type":"string","example":"The group turns to this line when everything breaks. It reads the shape of the shock and rides it, and savoring the victory is what leaves it exposed to the next one.","description":"Meaning of this gate at this specific line, one of 384. The finest interpretive layer in the chart and the one that makes a reading specific rather than generic. This is not the six abstract line archetypes: gate 41 line 3 carries its own meaning that neither the gate keynote nor the line-3 archetype holds alone."},"planetDescription":{"type":"string","example":"The dominant activation. With the Earth it carries roughly 70 percent of the imprint on the chart. The Personality Sun gate is the conscious life theme, the Design Sun is the radiance the body broadcasts before a word is spoken.","description":"What this planetary activation contributes in Human Design specifically, which is not its meaning in western astrology."},"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","gateDescription","lineMeaning","planetDescription","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","null"],"example":34,"description":"Gate number from 1 to 64."},"required":true,"description":"Gate number from 1 to 64.","name":"number","in":"path"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Poder","description":"Gate keynote name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"center":{"type":"string","example":"sacral","description":"Center the gate sits in."},"centerName":{"type":"string","example":"Sacral","description":"Display name of the center. Always English, whatever the lang parameter says. Use centerNameLocalized for anything a reader sees."},"centerNameLocalized":{"type":"string","example":"Sacro","description":"Center name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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. Always English, whatever the lang parameter says. Use channelLocalized for anything a reader sees."},"channelLocalized":{"type":"string","example":"Carisma","description":"Channel name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."}},"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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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":20,"description":"First gate of the channel."},"gateB":{"type":"number","example":34,"description":"Second gate of the channel."},"name":{"type":"string","example":"Charisma","description":"Name of the defined channel. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Carisma","description":"Channel name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"circuit":{"type":"string","example":"Individual","description":"Circuit family of the channel. One of Individual, Collective, Tribal. Always English, whatever the lang parameter says. Use circuitLocalized for anything a reader sees."},"circuitLocalized":{"type":"string","example":"Individual","description":"Circuit family name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"centers":{"type":"array","items":{"type":"string"},"example":["throat","sacral"],"description":"The two centers this channel connects and defines."},"description":{"type":"string","example":"Sacral power is pushed straight to the Throat, so awareness in the present moment becomes action with almost no pause between them. The energy stays healthy only while it is busy with work it loves.","description":"What this channel wires between its two centers and the nature of the energy it carries."},"circuitDescription":{"type":"string","example":"Empowerment through mutation, carried by 15 channels. The knowing here cannot be explained or handed over, only lived, and it changes other people by exposure rather than instruction. It arrives as a pulse, never on demand.","description":"What the circuit family of this channel governs."}},"required":["gateA","gateB","name","circuit","centers","description","circuitDescription"]},"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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Sacro","description":"Center name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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","example":"Sustainable life force and work energy. A reliable gut response that guides what to engage with.","description":"Theme text describing the center in its current defined or undefined state."},"notSelfQuestion":{"type":"string","example":"Is all this talking and doing an attempt to attract attention?","description":"The conditioning trap of this center when it is open. Returned on every center so a consumer can surface it the moment `defined` is false, which is where the not-self operates."},"biology":{"type":"string","example":"The adrenal glands.","description":"The gland, organ, or system this center corresponds to in the body."},"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","notSelfQuestion","biology","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"},{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Sacro","description":"Center name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"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","example":"Sustainable life force and work energy. A reliable gut response that guides what to engage with.","description":"What this center means when defined: a consistent, reliable energy or awareness."},"undefinedMeaning":{"type":"string","example":"No consistent access to work energy. Learns when enough is enough rather than driving to exhaustion.","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":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"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","example":"Heretic: a universalizing, practical force others project expectations onto.","description":"Keynote of the Personality line, the conscious half of the profile."},"designKeynote":{"type":"string","example":"Investigator: builds a secure foundation through study before acting.","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"]}}}}}}},"/variables":{"post":{"operationId":"calculateVariables","tags":["Human Design"],"summary":"Calculate Human Design Variables - The four arrows and Color, Tone, Base substructure","description":"Calculate the four Human Design Variable arrows for a birth moment: Determination and Environment on the design side, Perspective and Motivation on the personality side. Each arrow returns its Color, Tone, and Base numbers from the hexagram-line substructure, the left or right direction set by the Tone, and the sourced Color and direction labels. This is the advanced Rave Variables and Primary Health System layer beneath Type, Strategy, Authority, and Profile. Color, Tone, and Base shift with tiny differences in birth time, so each arrow carries a confidence flag that turns false near a Color or Tone boundary, and a precise birth time is essential. Built for Human Design apps offering PHS, diet, environment, and Rave Psychology readings.","security":[{"apiKey":[]}],"parameters":[{"schema":{"type":"string","enum":["en","tr","de","es","hi","pt","fr","ru"],"default":"en","example":"en","description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English."},"required":false,"description":"Response language (ISO 639-1). Supported: en, tr, de, es, hi, pt, fr, ru. Defaults to en. Languages without translations yet return English.","name":"lang","in":"query"}],"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","format":"time","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"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"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."},"nodeType":{"type":"string","enum":["mean","true"],"default":"true","example":"true","description":"Lunar node convention. \"mean\" is the smoothed average node, which always moves retrograde; \"true\" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node activations. True is what professional Human Design software uses (HumanDesign.ai, Total Human Design) and is the value RoxyAPI verifies against, so leave it unset for a standard chart. It matters only when a node sits on a gate boundary, where the choice can move a node gate and, rarely, change the completed channels and therefore the type, authority or definition. If another calculator shows a different type, it is almost certainly using the mean node: pass \"mean\" to match it. Defaults to \"true\"."}},"required":["date","time","timezone"]}}}},"responses":{"200":{"description":"The four Variable arrows with substructure numbers, labels, and confidence flags","content":{"application/json":{"schema":{"type":"object","properties":{"arrows":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","example":"determination","description":"Stable arrow identifier. One of determination, environment, perspective, motivation."},"name":{"type":"string","example":"Determination","description":"Arrow name. Determination is the top-left arrow governing the Primary Health System and digestion, Environment the bottom-left arrow, Perspective the bottom-right arrow also called View, and Motivation the top-right arrow. Always English, whatever the lang parameter says. Use nameLocalized for anything a reader sees."},"nameLocalized":{"type":"string","example":"Determinación","description":"Arrow name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"layer":{"type":"string","example":"Primary Health System","description":"Which half of the advanced layer the arrow belongs to. Primary Health System covers the body-side Determination and Environment arrows, Rave Psychology covers the mind-side Perspective and Motivation arrows. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use layerLocalized for anything a reader sees."},"layerLocalized":{"type":"string","example":"Sistema de Salud Primario","description":"Layer name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"position":{"type":"string","example":"Top left","description":"Position of the arrow at the head of the bodygraph. One of Top left, Bottom left, Top right, Bottom right. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use positionLocalized for anything a reader sees."},"positionLocalized":{"type":"string","example":"Superior izquierda","description":"Arrow position name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"activation":{"type":"object","properties":{"planet":{"type":"string","example":"Sun","description":"Activating body whose substructure feeds this arrow. Determination and Motivation come from the Sun, Environment and Perspective from the North Node. Always English, whatever the lang parameter says, so it stays safe to compare against in code and to key a glyph table on. Use planetLocalized for anything a reader sees."},"planetLocalized":{"type":"string","example":"Sol","description":"Activating body name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"side":{"type":"string","example":"design","description":"Chart side of the activation. Determination and Environment come from the design side, Perspective and Motivation from the personality side. Always English, whatever the lang parameter says, so it stays safe to compare against in code."}},"required":["planet","side"],"description":"The single activation, body and chart side, that this arrow is derived from."},"color":{"type":"number","example":4,"description":"Color number from 1 to 6, the substructure level one octave finer than the line. Color selects the arrow theme, for example the determination family or the motivation."},"tone":{"type":"number","example":1,"description":"Tone number from 1 to 6, the substructure level beneath Color. Tone sets the arrow direction: tones 1 to 3 face left, tones 4 to 6 face right."},"base":{"type":"number","example":4,"description":"Base number from 1 to 5, the finest published subdivision of the wheel. Returned for completeness but treated as informational, since it is finer than most birth times can resolve."},"direction":{"type":"string","example":"left","description":"Arrow direction derived from the Tone. left for tones 1 to 3, right for tones 4 to 6."},"colorLabel":{"type":"string","example":"Touch","description":"Name of the Color theme for this arrow, for example a determination family such as Touch, an environment such as Mountains, a perspective such as Personal, or a motivation such as Hope. Always English, whatever the lang parameter says. Use colorLabelLocalized for anything a reader sees."},"colorLabelLocalized":{"type":"string","example":"Tacto","description":"Color theme name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"directionLabel":{"type":"string","example":"Active","description":"Keynote of the arrow direction for this arrow, for example Active or Passive for Determination, Focused or Peripheral for Perspective. Always English, whatever the lang parameter says. Use directionLabelLocalized for anything a reader sees."},"directionLabelLocalized":{"type":"string","example":"Activo","description":"Arrow direction keynote in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"description":{"type":"string","example":"The top left arrow, fed by the design Sun and Earth. It describes how the body is built to take in and break down nourishment, sensation, and information, and it sets the cognitive potential that rests on that intake.","description":"What this arrow is and what it governs."},"layerDescription":{"type":"string","example":"The body-side half of Variable, covering the Determination and Environment arrows. It addresses the form: the conditions under which the vehicle digests nourishment, and the place in which it meets least resistance.","description":"What the layer this arrow belongs to governs, the body side or the mind side."},"colorMeaning":{"type":"string","example":"Touch. Intake governed by contact and physical circumstance. What the body handles, and the state of the space it eats in, decide whether nourishment is absorbed or refused.","description":"Meaning of the Color for THIS arrow. The same Color number means something different under Determination than under Motivation, so this is the reading of colorLabel in context, not a generic gloss."},"toneMeaning":{"type":"string","example":"Security. The tonal architecture rests on a baseline of safety. What is sound, familiar, and survivable registers first, and everything built above it stands on that footing.","description":"Meaning of the Tone. The six Tones are shared across all four arrows: the arrow does not change the Tone, it changes what the Tone qualifies."},"directionMeaning":{"type":"string","example":"Active. Intake is filtered on the way in. The body engages nourishment and information with focus and structure, and works best under specific, deliberate conditions rather than open-ended variety.","description":"Meaning of the left or right direction for THIS arrow, the reading of directionLabel."},"baseName":{"type":"string","example":"Progressive","description":"Name of the Base. Informational only: the Base is finer than any civil birth time can resolve. Always English, whatever the lang parameter says. Use baseNameLocalized for anything a reader sees."},"baseNameLocalized":{"type":"string","example":"Progresivo","description":"Base name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"cognition":{"type":"object","properties":{"label":{"type":"string","example":"Smell","description":"Name of the Cognition, the strongest sense. One of six read off the Determination Tone: Smell, Taste, Outer Vision, Inner Vision, Feeling, Touch. Always English, whatever the lang parameter says, so it stays safe to compare against in code. Use labelLocalized for anything a reader sees."},"labelLocalized":{"type":"string","example":"Olfato","description":"Cognition name in the requested language, for display only. Present only when lang is set to a language other than English, since in English it would repeat its canonical partner field exactly. Never compare against this value, compare against the canonical field beside it."},"description":{"type":"string","example":"Smell. Immediate, pre-verbal recognition through the nose. The body reads safety and suitability in an instant, and does best taking in one source at a time rather than a crowded field.","description":"How this Cognition discriminates what is correct for the body, and the conditions that sharpen it. Renderable as the Cognition paragraph of a Variables or Primary Health System report."}},"required":["label","description"],"description":"Cognition, the strongest sense, read off the Determination Tone. Present on the determination arrow ONLY: no authority supports reading Cognition from the other three arrows, so it is omitted rather than invented."},"confident":{"type":"boolean","example":true,"description":"Whether this arrow is far enough from a Color or Tone boundary to be reliable. When false the activation sits on a knife edge where the Color label or the arrow direction could flip with a more precise birth time, and the arrow should not be presented as fact."}},"required":["key","name","layer","position","activation","color","tone","base","direction","colorLabel","directionLabel","description","layerDescription","colorMeaning","toneMeaning","directionMeaning","baseName","confident"]},"description":"The four Variable arrows: Determination and Environment from the design side, Perspective and Motivation from the personality side. Together they form the Rave Variables / Primary Health System layer that sits beneath Type, Strategy, Authority, and Profile."},"confident":{"type":"boolean","example":true,"description":"True only when all four arrows are confident. A single knife-edge arrow makes the whole configuration uncertain."},"confidenceMarginDeg":{"type":"number","example":0.00274,"description":"Boundary margin in degrees of ecliptic longitude used for the per-arrow confidence flag, the solar arc over a few minutes of clock time. An activation within this distance of a Color or Tone boundary is flagged low-confidence."},"baseDescription":{"type":"string","example":"The finest substructure layer: one of five facets of the Personality Crystal, and the entry point for the imprint Tone and Color build on. Fixed across incarnation, and finer than any civil birth time resolves, so it is informational only.","description":"What the Base layer is. Returned once at the top level rather than repeated on every arrow, since the Base layer is the same concept for all four. No per-Base meaning is returned: every one in circulation traces back to a single origin, so it fails the two-source bar this package holds."}},"required":["arrows","confident","confidenceMarginDeg","baseDescription"]}}}},"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"]}}}}}}}},"webhooks":{}}