Bodygraph, centres, channels, incarnation cross, penta and group overlay.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer followed by your AstroWay API key (aw_live_* or aw_test_*), from api.astroway.info/dashboard
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check current API key status: tier, credit balance, rate limits, monthly cycle reset. Run this BEFORE invoking expensive endpoints (Tier 4+ at 100+ credits, Tier 6/7 at 500-5000 credits) to confirm the user has budget. Returns plain-text human-readable summary.
This tool takes no arguments.
Check current API key status: tier, credit balance, rate limits, monthly cycle reset. Run this BEFORE invoking expensive endpoints (Tier 4+ at 100+ credits, Tier 6/7 at 500-5000 credits) to confirm the user has budget. Returns plain-text human-readable summary.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Tool definitions for an agent framework, generated from the live OpenAPI document, so the schema a model fills is the schema the endpoint validates. `format=openai` (default) returns `{ type, function }` objects you can spread straight into a chat completion; `format=anthropic` returns `{ name, description, input_schema }`. The objects carry nothing of ours: how to call each tool lives in a separate `executors` map keyed by tool name, because an unexpected key inside a vendor tool object is a 400 at their end. [Group: Agent Platform] [Endpoint: GET /v1/agent/tools] [Cost: see your plan — endpoint not in the public credit manifest]
| Argument | Type | Description |
|---|---|---|
| q | string | Free-text filter applied within the selection, matched against path, summary, description and group. |
| limit | integer | How many tools to return. The ceiling is the OpenAI limit of 128 functions per request; models degrade well before it. Anything left out is counted in `totalMatched`. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| format | string | Which vendor contract the tool objects follow. `openai` returns `{ type, function }`, `anthropic` returns `{ name, description, input_schema }`. |
| select | string | What to hand over: `starter` (the curated set, the default), `all`, `group:<tag>` such as `group:Vedic`, or `paths:/chart,/synastry` for an explicit list. An unknown path is named in `notes` rather than dropped. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"q": {
"type": "string",
"maxLength": 120,
"description": "Free-text filter applied within the selection, matched against path, summary, description and group."
},
"limit": {
"type": "integer",
"default": 32,
"maximum": 128,
"minimum": 1,
"description": "How many tools to return. The ceiling is the OpenAI limit of 128 functions per request; models degrade well before it. Anything left out is counted in `totalMatched`."
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"format": {
"enum": [
"openai",
"anthropic"
],
"type": "string",
"default": "openai",
"description": "Which vendor contract the tool objects follow. `openai` returns `{ type, function }`, `anthropic` returns `{ name, description, input_schema }`."
},
"select": {
"type": "string",
"default": "starter",
"description": "What to hand over: `starter` (the curated set, the default), `all`, `group:<tag>` such as `group:Vedic`, or `paths:/chart,/synastry` for an explicit list. An unknown path is named in `notes` rather than dropped."
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Estimate the credit cost of one or more endpoints WITHOUT invoking them. Returns total + per-endpoint breakdown with tier annotations. Useful when planning multi-step workflows: estimate first, ask user confirmation, then invoke. Cache TTL 5 min.
| Argument | Type | Description |
|---|---|---|
| endpoints* | array | Endpoint paths to estimate, e.g. ["/chart", "/synastry", "/reports/natal"]. Leading slash optional. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"endpoints"
],
"properties": {
"endpoints": {
"type": "array",
"items": {
"type": "string"
},
"examples": [
[
"/chart"
],
[
"/chart",
"/synastry"
],
[
"/chart",
"/transits",
"/reports/natal"
]
],
"minItems": 1,
"description": "Endpoint paths to estimate, e.g. [\"/chart\", \"/synastry\", \"/reports/natal\"]. Leading slash optional."
}
}
}Analyze which of the 3 Circuits (Tribal, Individual, Collective) and 6 Sub-circuits are activated in a Human Design chart based on defined channels. [Group: Human Design] [Endpoint: POST /v1/hd/circuitry] [Required: date, time, latitude, longitude] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number | |
| timezone | string | IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
Find the Design date (the moment 88° of solar arc before birth) for a given birth moment, the unconscious imprinting point. [Group: Human Design] [Endpoint: POST /v1/hd/design-date] [Required: date, time, latitude, longitude] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number | |
| timezone | string | IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
Calculate the Dream Rave chart: sleep type, active gates in lower centers (Sacral, Solar Plexus, Root), and dream themes. [Group: Human Design] [Endpoint: POST /v1/hd/dream-rave] [Required: date, time, latitude, longitude] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number | |
| timezone | string | IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
Calculate a combined HD group overlay chart for 2 or more people, showing collectively defined centers and channels. [Group: Human Design] [Endpoint: POST /v1/hd/group-overlay] [Required: inputs] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| inputs* | array | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"inputs"
],
"properties": {
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"inputs": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 10,
"minItems": 2
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Calculate the Gene Keys hologenetic profile (Activation Sequence, Venus Sequence, Pearl Sequence) from HD gate activations. [Group: Human Design] [Endpoint: POST /v1/hd/hologenetic] [Required: date, time, latitude, longitude] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number | |
| timezone | string | IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
Calculate a full Human Design BodyGraph chart: type, strategy, authority, profile, definition, incarnation cross, centers, channels, and gate activations. Centre identifiers are PascalCase with no separator and are stable: Head, Ajna, Throat, G, Heart, SolarPlexus, Spleen, Sacral, Root. `channels[].centerA` and `centerB` use the same nine. These identifiers are English and have no localised twin yet, unlike the sign and planet names on /public/moon-phase. [Group: Human Design] [Endpoint: POST /v1/human-design] [Required: date, time, latitude, longitude] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number |
Calculate Human Design connection chart (compatibility) between two people: electromagnetic connections, compromise, dominance, and companionship channels. [Group: Human Design] [Endpoint: POST /v1/human-design/compatibility] [Required: chart1, chart2] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart1* | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| chart2* | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| fields |
Calculate current Human Design transit activations. Optionally overlay on natal chart to show combined defined centers and channels. [Group: Human Design] [Endpoint: POST /v1/human-design/transits] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Transit moment plus an optional natal date, time and offset to overlay the activations on. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"body"
],
"properties": {
"body": {
"allOf": [
{
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
{
"type": "object",
"properties": {
"natalDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"natalTime": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"natalTimezoneOffset": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Transit moment plus an optional natal date, time and offset to overlay the activations on."
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Return the Incarnation Cross from birth data (or directly from gate numbers). Includes cross name, type, and theme description. With gate numbers, personalitySunLine and designSunLine decide the angle: lines 1-3 and profile 4/6 are right angle, 4/1 juxtaposition, 5 and 6 left angle. [Group: Human Design] [Endpoint: POST /v1/hd/incarnation-cross] [Required: date, time, latitude, longitude] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number | |
| timezone | string |
Calculate the Penta (group) chart for 3–5 people: combined BodyGraph showing group dynamics and collective conditioning. [Group: Human Design] [Endpoint: POST /v1/hd/penta] [Required: inputs] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| inputs* | array | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"inputs"
],
"properties": {
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"inputs": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 5,
"minItems": 3
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Calculate Rave New Year dates (exact moment Sun enters Gate 41) for a range of years. Max range: 50 years. [Group: Human Design] [Endpoint: POST /v1/hd/rave-new-years] [Required: startYear, endYear] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| endYear* | any | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| startYear* | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"startYear",
"endYear"
],
"properties": {
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"endYear": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"startYear": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
}
}Analyze how sensitive the HD chart type/authority is to birth time changes. Returns windows where the chart is stable vs. in transition. [Group: Human Design] [Endpoint: POST /v1/hd/sensitivity] [Required: date, time, latitude, longitude] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| city | string | |
| date* | string | |
| name | string | |
| time* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| ayanamsa | string | Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either. |
| latitude* | number | |
| timezone | string | IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
2 personas debate a topic, multi-round transcript. [Group: MCP Advanced] [Endpoint: POST /v1/mcp/agent-debate] [Required: topic, agentA, agentB] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| topic* | string | |
| agentA* | string | |
| agentB* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| rounds | integer |
8 personas with specialties. [Group: MCP Advanced] [Endpoint: GET /v1/mcp/agent-pool-status] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Chat answered from the positions we computed for this birth moment, not from the model's memory of a sun sign. Carries up to 10 turns of history, replies in 21 languages, and takes four voices through `persona`. Send your own provider key and the turn costs 5 credits instead of the endpoint price. [Group: AI & MCP] [Endpoint: POST /v1/ai/chat] [Required: message] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| history | array | |
| message* | string | |
| persona | string | |
Coach two charts on relationship dynamics. [Group: AI & MCP] [Endpoint: POST /v1/ai/comparison-coach] [Required: chart1, chart2, question] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart1* | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| chart2* | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
Detailed explanation of an aspect between two planets. [Group: AI & MCP] [Endpoint: POST /v1/ai/explain-aspect] [Required: planet1, planet2, aspectType] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| planet1* | string | |
| planet2* | string | |
| language | string | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
Explain a current transit hitting your natal chart. [Group: AI & MCP] [Endpoint: POST /v1/ai/explain-transit] [Required: chart, transitDate, transitPlanet, natalPlanet, aspectType] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart* | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| language | string | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| aspectType* | string |
Run N personas in parallel + LLM synthesis. [Group: MCP Advanced] [Endpoint: POST /v1/mcp/multi-agent-coordinate] [Required: question, agents] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| agents* | array | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| language | string | |
| question* | string | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
Compact context for MCP agents working across multiple charts. [Group: AI & MCP] [Endpoint: POST /v1/mcp/multi-chart-context] [Required: charts] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| charts* | array | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| intent | string | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"charts"
],
"properties": {
"charts": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 6,
"minItems": 1
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"intent": {
"enum": [
"compatibility",
"family",
"group",
"forecast"
],
"type": "string"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Keyword-tag scoring over chart chunks. [Group: MCP Advanced] [Endpoint: POST /v1/mcp/rag-search] [Required: query, chart] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| topK | integer | |
| chart* | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| query* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
Server-Sent Events streaming chat completion with optional chart context. [Group: AI & MCP] [Endpoint: POST /v1/mcp/streaming] [Required: message] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| chart | object | Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems. |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| message* | string | |
| language | string | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
SSE-stream of a tool call envelope. [Group: MCP Advanced] [Endpoint: POST /v1/mcp/tool-call-stream] [Required: tool] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| args | object | |
| tool* | string | |
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| language | string | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"tool"
],
"properties": {
"args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"tool": {
"type": "string",
"maxLength": 80,
"minLength": 2
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"language": {
"enum": [
"uk",
"en",
"ru",
"es",
"pl",
"de",
"fr",
"it",
"pt"
],
"type": "string",
"default": "en"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}Auto-generated tool manifest for MCP clients (modelcontextprotocol/2025-03 spec). [Group: AI & MCP] [Endpoint: GET /v1/mcp/tools-list] [Cost: see your plan — endpoint not in the public credit manifest]
| Argument | Type | Description |
|---|---|---|
| fields | string | Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| timezone | string | IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| string |
| Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chart1",
"chart2"
],
"properties": {
"chart1": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"chart2": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}| IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known. |
| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| cosmogram | boolean |
| longitude* | number |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| ayanamsaId | any |
| zodiacType | string |
| houseSystem | string |
| timezoneOffset | any | Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
}
}| language | string |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topic",
"agentA",
"agentB"
],
"properties": {
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"topic": {
"type": "string",
"maxLength": 800,
"minLength": 4
},
"agentA": {
"type": "string"
},
"agentB": {
"type": "string"
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"rounds": {
"type": "integer",
"default": 2,
"maximum": 4,
"minimum": 1
},
"language": {
"enum": [
"uk",
"en",
"ru",
"es",
"pl",
"de",
"fr",
"it",
"pt"
],
"type": "string",
"default": "en"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}| language |
| string |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"message"
],
"properties": {
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"history": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"user",
"assistant"
],
"type": "string"
},
"content": {
"type": "string",
"maxLength": 2000
}
}
},
"maxItems": 10
},
"message": {
"type": "string",
"maxLength": 2000,
"minLength": 2
},
"persona": {
"enum": [
"astrologer",
"plain",
"coach",
"teacher"
],
"type": "string",
"default": "astrologer"
},
"language": {
"enum": [
"uk",
"en",
"de",
"ru",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"ro",
"cs",
"vi",
"ar",
"el",
"hu"
],
"type": "string",
"default": "uk"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}| language | string |
| question* | string |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chart1",
"chart2",
"question"
],
"properties": {
"chart1": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"chart2": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"language": {
"enum": [
"uk",
"en",
"de",
"ru",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"ro",
"cs",
"vi",
"ar",
"el",
"hu"
],
"type": "string",
"default": "uk"
},
"question": {
"type": "string",
"maxLength": 2000,
"minLength": 5
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}| aspectType* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"planet1",
"planet2",
"aspectType"
],
"properties": {
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"planet1": {
"type": "string",
"maxLength": 40,
"minLength": 2
},
"planet2": {
"type": "string",
"maxLength": 40,
"minLength": 2
},
"language": {
"enum": [
"uk",
"en",
"de",
"ru",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"ro",
"cs",
"vi",
"ar",
"el",
"hu"
],
"type": "string",
"default": "uk"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"aspectType": {
"enum": [
"Conjunction",
"Sextile",
"Square",
"Trine",
"Opposition",
"Quincunx",
"Semi-square",
"Sesquiquadrate"
],
"type": "string"
}
}
}| natalPlanet* | string |
| transitDate* | string |
| transitPlanet* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chart",
"transitDate",
"transitPlanet",
"natalPlanet",
"aspectType"
],
"properties": {
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"language": {
"enum": [
"uk",
"en",
"de",
"ru",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"ro",
"cs",
"vi",
"ar",
"el",
"hu"
],
"type": "string",
"default": "uk"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
},
"aspectType": {
"enum": [
"Conjunction",
"Sextile",
"Square",
"Trine",
"Opposition"
],
"type": "string"
},
"natalPlanet": {
"type": "string",
"maxLength": 40,
"minLength": 2
},
"transitDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"transitPlanet": {
"type": "string",
"maxLength": 40,
"minLength": 2
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"question",
"agents"
],
"properties": {
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"agents": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 2
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"language": {
"enum": [
"uk",
"en",
"ru",
"es",
"pl",
"de",
"fr",
"it",
"pt"
],
"type": "string",
"default": "en"
},
"question": {
"type": "string",
"maxLength": 2000,
"minLength": 4
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query",
"chart"
],
"properties": {
"topK": {
"type": "integer",
"default": 5,
"maximum": 20,
"minimum": 1
},
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"query": {
"type": "string",
"maxLength": 400,
"minLength": 2
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"message"
],
"properties": {
"chart": {
"type": "object",
"required": [
"date",
"time",
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string",
"default": ""
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"name": {
"type": "string",
"default": ""
},
"time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"ayanamsa": {
"enum": [
"fagan-bradley",
"lahiri",
"de-luce",
"raman",
"krishnamurti",
"kp",
"yukteshwar",
"jn-bhasin",
"true-citra",
"djwhal-khul"
],
"type": "string",
"description": "Sidereal school by name. Lahiri when omitted. Equivalent to ayanamsaId; send either."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"timezone": {
"type": "string",
"description": "IANA zone name such as Europe/Kyiv, or auto to look the zone up from latitude and longitude. The server takes the offset that zone kept at this local date and time, summer time included, and uses it in place of timezoneOffset. A clock time that happened twice takes the first occurrence; one skipped when clocks went forward takes the offset from before the change. Abbreviations such as EST are refused. Before 1970 the tz database is not reliable for every place, so send timezoneOffset when the local clock is known."
},
"cosmogram": {
"type": "boolean"
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"ayanamsaId": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"zodiacType": {
"enum": [
"tropical",
"sidereal"
],
"type": "string"
},
"houseSystem": {
"enum": [
"P",
"K",
"R",
"C",
"E",
"W",
"B",
"M",
"O",
"A",
"T",
"V",
"D",
"F",
"G",
"H",
"I",
"i",
"L",
"N",
"Q",
"S",
"U",
"X",
"Y"
],
"type": "string",
"default": "P"
},
"timezoneOffset": {
"anyOf": [
{
"type": "number",
"maximum": 14,
"minimum": -14
},
{
"type": "null"
}
],
"default": 0,
"description": "Hours from UTC at the given moment, not minutes. Fractional zones are hours too: 5.5 for India, 5.75 for Nepal, -3.5 for Newfoundland. Defaults to 0, meaning UTC. Ignored when timezone is sent."
}
},
"description": "Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"fields": {
"type": "string",
"description": "Compact mode: comma-separated dotted paths to keep, relative to `data`, e.g. \"planets.name,planets.longitude,houses.cusp\". Omit for the whole response."
},
"message": {
"type": "string",
"maxLength": 2000,
"minLength": 2
},
"language": {
"enum": [
"uk",
"en",
"de",
"ru",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"ro",
"cs",
"vi",
"ar",
"el",
"hu"
],
"type": "string",
"default": "uk"
},
"precision": {
"type": "integer",
"maximum": 15,
"minimum": 0,
"description": "Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn."
}
}
}