Natal charts, planets, houses, aspects, dignities, rendering and the calendar.
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."
}
}
}Calculate antiscia (mirror points along the Cancer/Capricorn axis) and contra-antiscia, plus their aspects to natal planets. [Group: Aspects & Points] [Endpoint: POST /v1/antiscia] [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. |
Calculate Arabic parts (Lots) from a natal chart. Returns positions for standard lots (Fortune, Spirit, etc.) and any custom formula. [Group: Aspects & Points] [Endpoint: POST /v1/arabic-parts] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus optional custom lot definitions; the built-in set is used when omitted. |
| 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": {
"parts": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"name",
"formula"
],
"properties": {
"code": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"flag": {
"type": "string"
},
"name": {
"type": "string"
},
"formula": {
"type": "string"
}
}
},
"maxItems": 64,
"minItems": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus optional custom lot definitions; the built-in set is used when omitted."
},
"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."
}
}
}Transform aspect timelines into Gantt-style bars grouped by transit planet. Each bar shows the duration an aspect is in orb, with exact dates marked. Useful for visual transit calendars. [Group: Aspects & Points] [Endpoint: POST /v1/aspect-bar] [Required: startDate, endDate] [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. |
| maxOrb | number | |
| endDate* | string | |
| stepDays | 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. |
| startDate* | string | |
| planet1Ids | array | |
| planet2Ids | array | |
Calculate a timeline of when two specific planets form an exact aspect within a date range, including enter/exact/leave dates. [Group: Aspects & Points] [Endpoint: POST /v1/aspect-timeline] [Required: startDate, endDate] [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. |
| maxOrb | number | |
| endDate* | string | |
| stepDays | 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. |
| startDate* | string | |
| planet1Ids | array | |
| planet2Ids | array | |
| aspectAngles |
Positions of fixed stars at the birth moment (36 classic stars, or the names in `stars`), and the conjunctions of natal planets with them within `orb` degrees (default 1, at most 5), closest first. [Group: Aspects & Points] [Endpoint: POST /v1/fixed-stars] [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. |
The star names this API accepts, from Swiss Ephemeris `fixstars.cat`: traditional name, Bayer nomenclature, constellation and magnitude, with the 36-star astrological default set flagged. Optional `?maxMagnitude=` trims to the bright end. Static lookup, no chart needed. [Group: Aspects & Points] [Endpoint: GET /v1/fixed-stars/catalog] [Cost: 5 credits (Tier ½)]
| 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."
}
}
}Calculate Gauquelin sector positions (1–36) for all planets, indicating whether each planet is in a power zone. [Group: Aspects & Points] [Endpoint: POST /v1/gauquelin-sectors] [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. |
Calculate Uranian midpoint trees and planetary pictures (symmetries) for each focal planet within a given orb. [Group: Aspects & Points] [Endpoint: POST /v1/midpoint-trees] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus the orb in degrees used for midpoint trees and symmetries. |
| 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": {
"orb": {
"type": "number",
"maximum": 30,
"exclusiveMinimum": 0
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus the orb in degrees used for midpoint trees and symmetries."
},
"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."
}
}
}Calculate all planetary midpoints and their zodiac positions. Optionally include midpoint aspects to natal points. [Group: Aspects & Points] [Endpoint: POST /v1/midpoints] [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. |
Calculate parallel (same declination) and contra-parallel (opposite declination) aspects between all planets within orb. [Group: Aspects & Points] [Endpoint: POST /v1/parallel-aspects] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus the declination orb in degrees. |
| 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": {
"orb": {
"type": "number",
"maximum": 30,
"exclusiveMinimum": 0
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus the declination orb in degrees."
},
"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 Sabian symbol (Dane Rudhyar) for each given ecliptic longitude. [Group: Aspects & Points] [Endpoint: POST /v1/sabian-symbols] [Required: longitudes] [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. |
| longitudes* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"longitudes"
],
"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."
},
"longitudes": {
"type": "array",
"items": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"maxItems": 360,
"minItems": 1
}
}
}Find the nearest minimum brightness moment of Algol (Beta Persei), the eclipsing variable star, within a date range. [Group: Calendar & Cycles] [Endpoint: POST /v1/algol-minimum] [Required: startDate, endDate] [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. |
| endDate* | string | |
| longitude | 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. |
| startDate* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"startDate",
"endDate"
],
"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."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"longitude": {
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Find the single nearest Algol brightness minimum before or after a given date. [Group: Calendar & Cycles] [Endpoint: POST /v1/algol-minimum/nearest] [Required: date] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| date* | 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. |
| longitude | 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\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."
},
"longitude": {
"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."
}
}
}Standalone aspect calculation: full inter-planetary aspect list with type / exactAngle / orb / isApplying. Uses per-pair astro.com orb matrix. Same calcAspects() as /chart but without planet positions / houses / midpoints overhead. [Group: Calendar & Cycles] [Endpoint: POST /v1/aspects] [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 André Barbault Cyclic Index, sum of all outer planet separations, for a date range to indicate global crisis periods. [Group: Calendar & Cycles] [Endpoint: POST /v1/cyclic-index] [Required: startYear, endYear] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| pairs | any | |
| 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": {
"pairs": {
"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."
},
"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"
}
]
}
}
}Find solar and lunar eclipses within a given year or multi-year range. Returns type, date, and geographic visibility data. [Group: Calendar & Cycles] [Endpoint: POST /v1/eclipses] [Required: year] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| year* | any | |
| 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. |
| yearsRange | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"year"
],
"properties": {
"year": {
"anyOf": [
{
"type": "number"
},
{
"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."
},
"yearsRange": {
"type": "number",
"maximum": 20,
"minimum": 1e-9
}
}
}Standalone house calculation: 12 cusps + ascendant + MC + ARMC + vertex + co-asc + polar-asc. Supports Placidus, Koch, Regiomontanus, Campanus, Topocentric, Whole Sign, Equal, Porphyry, Morinus etc. Auto-fallback warning on |lat|>66.5° quadrant systems. [Group: Calendar & Cycles] [Endpoint: POST /v1/houses] [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. |
Find all sign ingresses for a planet within a date range (including retrograde re-entries). [Group: Calendar & Cycles] [Endpoint: POST /v1/ingresses] [Required: planetId, startDate, endDate] [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. |
| endDate* | string | |
| planetId* | 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. |
| startDate* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"planetId",
"startDate",
"endDate"
],
"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."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"planetId": {
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Calculate a lunar calendar for a given month: Moon sign per day, lunar phases, void-of-course windows, and perigee/apogee. [Group: Calendar & Cycles] [Endpoint: POST /v1/lunar-calendar] [Required: year, month] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| year* | any | |
| month* | any | |
| 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. |
| timezone | string | IANA zone, e.g. Europe/Kyiv. Wins over timezoneOffset and follows a DST change inside the month, day by day. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| timezoneOffset | number | Hours east of UTC. The calendar days become local days: date, isVoC (at local noon), phase and ingress per local day, and the month range itself. Omitted with no timezone: days run in UT. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"year",
"month"
],
"properties": {
"year": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"month": {
"anyOf": [
{
"type": "number"
},
{
"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."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "IANA zone, e.g. Europe/Kyiv. Wins over timezoneOffset and follows a DST change inside the month, day by day."
},
"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."
},
"timezoneOffset": {
"type": "number",
"maximum": 14,
"minimum": -14,
"description": "Hours east of UTC. The calendar days become local days: date, isVoC (at local noon), phase and ingress per local day, and the month range itself. Omitted with no timezone: days run in UT."
}
}
}Calculate all aspects the Moon makes within a date range (applying and separating), useful for electional and horary work. [Group: Calendar & Cycles] [Endpoint: POST /v1/moon-aspects] [Required: year, month] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| year* | integer | |
| month* | integer | |
| 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": [
"year",
"month"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9999,
"minimum": 1
},
"month": {
"type": "integer",
"maximum": 12,
"minimum": 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."
},
"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."
}
}
}Current moon phase at a given moment: illumination %, age in days, elongation, waxing/waning, sun + moon zodiac signs. Geocentric Sun-Moon elongation per Meeus Ch.48. [Group: Calendar & Cycles] [Endpoint: POST /v1/moon-phase] [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. |
Find Moon void-of-course periods within a date range. The Moon is VOC from its last aspect until it enters the next sign. [Group: Calendar & Cycles] [Endpoint: POST /v1/moon-voc] [Required: date, time] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| date* | 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. |
| 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. |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| rangeDays | number |
Find all conjunctions between two planets within a date range, defining the start of a new synodic cycle. [Group: Calendar & Cycles] [Endpoint: POST /v1/planetary-cycles] [Required: planet1Id, planet2Id, startDate, endDate] [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. |
| endDate* | string | |
| planet1Id* | any | |
| planet2Id* | 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. |
| startDate* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"planet1Id",
"planet2Id",
"startDate",
"endDate"
],
"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."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"planet1Id": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"planet2Id": {
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Chaldean planetary hours for a date and place: 12 from sunrise to sunset and 12 from sunset to sunrise, so an hour is rarely 60 minutes. `startHour` and `endHour` are decimal local hours. Send `atLocalHour` (decimal local time, e.g. 15.2 for 15:12) to have the hour containing it marked `isCurrent`; without it no hour carries the field, because the answer is cacheable and a flag from the server clock would be stale by the time it renders. [Group: Calendar & Cycles] [Endpoint: POST /v1/planetary-hours] [Required: date, latitude, longitude] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| date* | 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. |
| latitude* | any | |
| 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. |
| longitude* |
Calculate the synodic phase of each planet relative to the Sun (new, crescent, first quarter, gibbous, full, disseminating, last quarter, balsamic). [Group: Calendar & Cycles] [Endpoint: POST /v1/planetary-phases] [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. |
Retrograde periods of the planets in `planetIds` (default Mercury) within a date range: the two stations and their longitudes, plus `shadowStart` (the planet first reaches the longitude of its direct station) and `shadowEnd` (it regains the longitude of its retrograde station). [Group: Calendar & Cycles] [Endpoint: POST /v1/retrograde-periods] [Required: startDate, endDate] [Cost: 50 credits (Tier 3)]
| 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. |
| endDate* | string | |
| planetIds | 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. |
| startDate* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"startDate",
"endDate"
],
"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."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"planetIds": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
},
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Translate one text into any of 21 languages with astrology-domain glossary pinning. Source defaults to English; pass source_lang to override. Credits: 15 + ceil(chars/40). Max 3000 chars. [Group: Content Localization] [Endpoint: POST /v1/translate/astro] [Required: text, target_lang] [Cost: 16 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| domain | 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. |
| source_lang | string | |
| target_lang* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text",
"target_lang"
],
"properties": {
"text": {
"type": "string",
"maxLength": 3000,
"minLength": 1
},
"domain": {
"enum": [
"vedic",
"western",
"tarot",
"numerology",
"hd",
"marketing",
"generic"
],
"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."
},
"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."
},
"source_lang": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"cs",
"ro",
"vi",
"ar",
"el",
"hu"
],
"type": "string"
},
"target_lang": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"cs",
"ro",
"vi",
"ar",
"el",
"hu"
],
"type": "string"
}
}
}Translate up to 25 strings (≤2000 chars each, ≤20000 total) sharing one target language + domain. Credits: 15 + ceil(total_chars/40). [Group: Content Localization] [Endpoint: POST /v1/translate/batch] [Required: items, target_lang] [Cost: 16 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| domain | 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. |
| source_lang | string | |
| target_lang* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items",
"target_lang"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"maxItems": 25,
"minItems": 1
},
"domain": {
"enum": [
"vedic",
"western",
"tarot",
"numerology",
"hd",
"marketing",
"generic"
],
"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."
},
"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."
},
"source_lang": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"cs",
"ro",
"vi",
"ar",
"el",
"hu"
],
"type": "string"
},
"target_lang": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"hi",
"fr",
"ko",
"it",
"ja",
"id",
"tr",
"nl",
"cs",
"ro",
"vi",
"ar",
"el",
"hu"
],
"type": "string"
}
}
}Download the astrology glossary for a target language. Query: ?source=<lang> (default en), ?domain=<domain> (default generic). Free (0 credits). [Group: Content Localization] [Endpoint: GET /v1/translate/glossary/{lang}] [Required: lang] [Cost: see your plan — endpoint not in the public credit manifest]
| Argument | Type | Description |
|---|---|---|
| lang* | string | Target language code, one of the active locales. |
| 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": [
"lang"
],
"properties": {
"lang": {
"type": "string",
"description": "Target language code, one of the active locales."
},
"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."
}
}
}List the 21 supported language codes + names. Free (0 credits). [Group: Content Localization] [Endpoint: GET /v1/translate/languages] [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."
}
}
}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."
}
}
}Calculate the Almuten Figuris: the planet with the highest essential dignity score across the key chart positions. [Group: Dignities & Receptions] [Endpoint: POST /v1/almuten] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus optional custom terms and decans tables. |
| 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": {
"termsData": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"sign",
"terms"
],
"properties": {
"sign": {
"type": "string"
},
"terms": {
"type": "array",
"items": {
"type": "object",
"required": [
"endDegree",
"planet"
],
"properties": {
"planet": {
"type": "string"
},
"endDegree": {
"type": "number"
}
}
},
"maxItems": 12
}
}
},
{
"type": "null"
}
]
},
"maxItems": 12
},
"decansData": {
"type": "array",
"items": {
"type": "object",
"required": [
"sign",
"decans"
],
"properties": {
"sign": {
"type": "string"
},
"decans": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"maxItems": 12
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus optional custom terms and decans tables."
},
"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."
}
}
}Calculate planetary disposition chains: the recursive sequence of sign rulers leading to the final dispositor. [Group: Dignities & Receptions] [Endpoint: POST /v1/disposition-chains] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus the dispositor mode (rulership or detriment) and the ruler set (classical or modern). |
| 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": {
"mode": {
"enum": [
"rulership",
"detriment"
],
"type": "string"
},
"rulerMode": {
"enum": [
"classical",
"modern"
],
"type": "string"
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus the dispositor mode (rulership or detriment) and the ruler set (classical or modern)."
},
"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 disposition chains with computed x/y layout coordinates for graph visualization. [Group: Dignities & Receptions] [Endpoint: POST /v1/disposition-chains/layout] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus the dispositor mode (rulership or detriment) and the ruler set (classical or modern). |
| 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": {
"mode": {
"enum": [
"rulership",
"detriment"
],
"type": "string"
},
"rulerMode": {
"enum": [
"classical",
"modern"
],
"type": "string"
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus the dispositor mode (rulership or detriment) and the ruler set (classical or modern)."
},
"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."
}
}
}Calculate the five Ptolemaic essential dignities (rulership, exaltation, triplicity, term, face) and debilities for each planet. [Group: Dignities & Receptions] [Endpoint: POST /v1/essential-dignities] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus optional custom terms and decans tables. |
| 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": {
"termsData": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"sign",
"terms"
],
"properties": {
"sign": {
"type": "string"
},
"terms": {
"type": "array",
"items": {
"type": "object",
"required": [
"endDegree",
"planet"
],
"properties": {
"planet": {
"type": "string"
},
"endDegree": {
"type": "number"
}
}
},
"maxItems": 12
}
}
},
{
"type": "null"
}
]
},
"maxItems": 12
},
"decansData": {
"type": "array",
"items": {
"type": "object",
"required": [
"sign",
"decans"
],
"properties": {
"sign": {
"type": "string"
},
"decans": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"maxItems": 12
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus optional custom terms and decans tables."
},
"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."
}
}
}Calculate the Hyleg (apheta, giver of life) and Alcocoden (indicator of lifespan) using traditional Hellenistic method. [Group: Dignities & Receptions] [Endpoint: POST /v1/hyleg] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus the hyleg method and optional custom dignity tables. |
| 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": {
"termsData": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"sign",
"terms"
],
"properties": {
"sign": {
"type": "string"
},
"terms": {
"type": "array",
"items": {
"type": "object",
"required": [
"endDegree",
"planet"
],
"properties": {
"planet": {
"type": "string"
},
"endDegree": {
"type": "number"
}
}
},
"maxItems": 12
}
}
},
{
"type": "null"
}
]
},
"maxItems": 12
},
"decansData": {
"type": "array",
"items": {
"type": "object",
"required": [
"sign",
"decans"
],
"properties": {
"sign": {
"type": "string"
},
"decans": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"maxItems": 12
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus the hyleg method and optional custom dignity tables."
},
"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."
}
}
}Find mutual receptions between planets: pairs where each planet is in a sign ruled, exalted, or in the dignity of the other. [Group: Dignities & Receptions] [Endpoint: POST /v1/receptions] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Natal chart plus optional custom terms and decans tables. |
| 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": {
"termsData": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"sign",
"terms"
],
"properties": {
"sign": {
"type": "string"
},
"terms": {
"type": "array",
"items": {
"type": "object",
"required": [
"endDegree",
"planet"
],
"properties": {
"planet": {
"type": "string"
},
"endDegree": {
"type": "number"
}
}
},
"maxItems": 12
}
}
},
{
"type": "null"
}
]
},
"maxItems": 12
},
"decansData": {
"type": "array",
"items": {
"type": "object",
"required": [
"sign",
"decans"
],
"properties": {
"sign": {
"type": "string"
},
"decans": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"maxItems": 12
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Natal chart plus optional custom terms and decans tables."
},
"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."
}
}
}Calculate A*C*G lines for all planets: the geodetic map lines where each planet was on an angle at birth. [Group: Astro-Geography] [Endpoint: POST /v1/acg] [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. |
Rank cities against the astrocartography lines of a chart for one of the 19 life categories. Distance to a line is computed from the body hour angle and altitude rather than against a discretised polyline, so it is exact: the distance to a horizon line IS the altitude in degrees of arc, and a meridian line offset is the hour angle times cos(latitude). Supportive and challenging totals are returned separately with every contributing line and its distance, so a strong-but-turbulent city is distinguishable from an average one. Bundled GeoNames set of 34,028 places above 15,000 people. [Group: Astro-Geography] [Endpoint: POST /v1/acg/best-places] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Birth data plus a life category. Birth coordinates are optional and unused for the ranking: astrocartography lines are a property of the birth moment, not of the birth place. |
| 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",
"required": [
"category"
],
"properties": {
"sort": {
"enum": [
"net",
"supportive"
],
"type": "string",
"description": "`net` (default) ranks on supportive minus challenging. `supportive` ignores the challenging side when ordering, though it is still reported."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many cities to return. Default 25."
},
"orbKm": {
"type": "number",
"maximum": 3000,
"minimum": 100,
"description": "How far a line reaches, kilometres. Default 1126, which is the 700 miles Jim Lewis used."
},
"category": {
"type": "string",
"description": "One of the 19 ACG life categories. The list is at GET /v1/acg/categories."
},
"countries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 2,
"minLength": 2
},
"maxItems": 50,
"description": "ISO 3166-1 alpha-2 codes to restrict the search to. Omit to search the whole bundled list."
},
"minPopulation": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 15000,
"description": "Floor on city population. The bundled set starts at 15000, so a lower value changes nothing."
},
"minSeparationKm": {
"anyOf": [
{
"type": "number",
"maximum": 5000,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Keep returned cities at least this far apart, kilometres. Default 300. An ACG line is a curve, so without thinning the top of the ranking is the densest stretch of one line rather than a set of places. Set 0 to disable and see every city in score order."
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Birth data plus a life category. Birth coordinates are optional and unused for the ranking: astrocartography lines are a property of the birth moment, not of the birth place."
},
"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."
}
}
}A*C*G lines that govern one area of life, ranked by astrological weight and, when a point is supplied, by proximity to it. Returns curated interpretation text per line in 11 languages. [Group: Astro-Geography] [Endpoint: POST /v1/acg/by-category] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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",
"required": [
"category"
],
"properties": {
"point": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"category": {
"enum": [
"adventure",
"career",
"communication",
"creativity",
"health",
"home",
"learning",
"love",
"money",
"power",
"relationship",
"retreat",
"spirituality",
"stability",
"success",
"transformation",
"travel",
"vitality",
"wealth"
],
"type": "string"
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"type": "string"
},
"polarity": {
"enum": [
"supportive",
"challenging",
"all"
],
"type": "string",
"default": "all"
},
"radiusDeg": {
"type": "number",
"default": 4,
"maximum": 20,
"minimum": 0.5
},
"includeText": {
"type": "boolean",
"default": true
},
"includeCoordinates": {
"type": "boolean",
"default": true
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Reference taxonomy: 19 areas of life, each naming the planet-and-angle lines that govern it with a weight and a polarity. Free, cacheable, drives the two endpoints below. [Group: Astro-Geography] [Endpoint: GET /v1/acg/categories] [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."
}
}
}Which countries the bundled city list can rank, and how many qualifying cities each has. Asking for a country with two cities and getting two results should not look like a bug. [Group: Astro-Geography] [Endpoint: GET /v1/acg/countries] [Cost: 5 credits (Tier ½)]
| 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."
}
}
}One line in full: its geometry, every life area it touches with weight and polarity, and the interpretation text for that planet-and-angle pair. Rising and setting curves arrive as several disjoint segments; all of them are returned. [Group: Astro-Geography] [Endpoint: POST /v1/acg/line-report] [Cost: 20 credits (Tier 2)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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",
"required": [
"planet",
"angle"
],
"properties": {
"angle": {
"enum": [
"MC",
"IC",
"ASC",
"DSC"
],
"type": "string"
},
"planet": {
"type": "string",
"minLength": 2
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"type": "string"
},
"includeCoordinates": {
"type": "boolean",
"default": true
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}A*C*G lines passing within radiusDeg of one location, with the angular distance to each. The "what runs over this city" lookup. [Group: Astro-Geography] [Endpoint: POST /v1/acg-zones] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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",
"required": [
"point"
],
"properties": {
"point": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"radiusDeg": {
"type": "number",
"default": 4,
"maximum": 20,
"minimum": 0.5
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Analyse Cyclo-Carto-Graphy (CCG) lines: progressed A*C*G lines at a target date with mundane/local aspects and latitude crossings. [Group: Astro-Geography] [Endpoint: POST /v1/ccg-analysis] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields. |
| 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": [
"natal"
],
"properties": {
"natal": {
"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"
}
]
}
}
},
"description": "Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields."
},
{
"type": "object",
"required": [
"targetDate"
],
"properties": {
"orb": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"point": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"latitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"targetDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"targetTime": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}(:\\d{2})?$"
},
"targetTzOffset": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"fastPlanetsOnly": {
"type": "boolean"
}
}
}
],
"description": "Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields."
},
"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."
}
}
}Analyse the impact of upcoming eclipses on a natal chart: aspects to natal planets, house activations, and Saros series context. [Group: Astro-Geography] [Endpoint: POST /v1/eclipse-analysis] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields. |
| 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": [
"natal"
],
"properties": {
"natal": {
"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"
}
]
}
}
},
"description": "Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields."
},
{
"type": "object",
"required": [
"year",
"point"
],
"properties": {
"year": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"point": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"yearsRange": {
"type": "number",
"maximum": 20,
"minimum": 1e-9
}
}
}
],
"description": "Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields."
},
"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."
}
}
}Convert geographic coordinates to geodetic chart degrees (Sepharial method): each longitude maps to a zodiac degree on the Earth's surface. [Group: Astro-Geography] [Endpoint: POST /v1/geodetic] [Required: latitude, longitude] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| year | integer | |
| 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. |
| method | string | |
| latitude* | number | |
| longitude* | number | |
| obliquity | 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"latitude",
"longitude"
],
"properties": {
"year": {
"type": "integer",
"maximum": 3000,
"minimum": -3000
},
"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."
},
"method": {
"enum": [
"sepharial",
"johndro"
],
"type": "string",
"default": "sepharial"
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
},
"obliquity": {
"type": "number",
"maximum": 90,
"minimum": 0
},
"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 local space chart: azimuth and altitude of each planet from a given geographic location at the birth moment. [Group: Astro-Geography] [Endpoint: POST /v1/local-space] [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 the local space influence zone lines for a chart relocated to a specific city: lines on the map showing planet directions from that location. [Group: Astro-Geography] [Endpoint: POST /v1/local-space/influence-zone] [Required: latitude, longitude, azimuth] [Cost: 50 credits (Tier 3)]
| 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. |
| azimuth* | any | |
| latitude* | any | |
| halfAngle | any | |
| longitude* | 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. |
| maxDistDeg | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"latitude",
"longitude",
"azimuth"
],
"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."
},
"azimuth": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"latitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"halfAngle": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"longitude": {
"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."
},
"maxDistDeg": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
}
}Crossing points of two A*C*G lines: the places where two planets were simultaneously angular. Returns every planet-to-planet crossing with its coordinates. [Group: Astro-Geography] [Endpoint: POST /v1/parans] [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. |
Latitudes where a fixed star and a planet are angular at the same moment, which is how Brady tabulates a paran: not a place, a latitude. Twelve event pairs per star and planet (rise, set, culminate, anticulminate, minus meridian against meridian, which is a shared right ascension rather than a paran). Each row carries the houses of the technique in plain form: which body does what, the latitude, and the meridian where it happens at this chart moment. Solved on hour angles rather than by intersecting map polylines, so the latitude is exact rather than quantised to the polyline step. [Group: Astro-Geography] [Endpoint: POST /v1/parans/star] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Birth data for star-planet parans. Coordinates are not used: a paran is a latitude, and which latitudes exist depends on the moment, not on where the native was born. |
| 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": {
"stars": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 80,
"minItems": 1,
"description": "Star names from the Swiss Ephemeris catalogue. Default: the 36-star astrological set."
},
"horizon": {
"enum": [
"geometric",
"apparent"
],
"type": "string",
"description": "Which horizon counts as rising. `geometric` (default) is altitude 0, the semi-diurnal arc as written in Meeus. `apparent` puts it at -34 arcmin, where refraction lifts a body into view first. Worth about two degrees of paran latitude at mid-latitudes, and refraction also breaks the equator mirror that the geometric horizon has, so it is a choice rather than a detail."
},
"planets": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"maxItems": 20,
"minItems": 1,
"description": "Swiss Ephemeris planet ids. Default: 0-9, Sun through Pluto."
},
"latitudeLimit": {
"type": "number",
"maximum": 85,
"minimum": 5,
"description": "Search range either side of the equator, degrees. Default 60, which is the range Brady tabulates."
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"description": "Birth data for star-planet parans. Coordinates are not used: a paran is a latitude, and which latitudes exist depends on the moment, not on where the native was born."
},
"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."
}
}
}Find dates when a planet returns to its same synodic phase relative to the Sun (e.g. next Venus heliacal rising, next Mars retrograde station). [Group: Astro-Geography] [Endpoint: POST /v1/phase-return] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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",
"required": [
"startYear",
"endYear"
],
"properties": {
"endYear": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"startYear": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Recalculate a natal chart for a new geographic location (same birth moment, different lat/lng). Returns new houses and planet house positions. [Group: Astro-Geography] [Endpoint: POST /v1/relocation] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields. |
| 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": [
"natal"
],
"properties": {
"natal": {
"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"
}
]
}
}
},
"description": "Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields."
},
{
"type": "object",
"required": [
"target"
],
"properties": {
"target": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"city": {
"type": "string"
},
"latitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"longitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
}
}
}
}
],
"description": "Wrapper { natal: ChartInput } used by endpoints that take a base natal plus extra parameters in flat fields."
},
"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."
}
}
}Astrocartography for the solar return of a given year: the A*C*G map of the moment the Sun comes back to its natal longitude. Planet names carry an SR suffix. [Group: Astro-Geography] [Endpoint: POST /v1/solar-acg] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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",
"required": [
"year"
],
"properties": {
"year": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Find all geographic locations where a given planet is exactly at the zenith (MC) at the birth moment. [Group: Astro-Geography] [Endpoint: POST /v1/zenith] [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. |
Generate a relationship horoscope based on synastry between two charts: strengths, friction points, and themes for the next 30 days. [Group: Horoscope] [Endpoint: POST /v1/horoscope/compatibility] [Required: sign1, sign2] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| sign1* | string | |
| sign2* | 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. |
| disclaimer_inline | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sign1",
"sign2"
],
"properties": {
"sign1": {
"enum": [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
],
"type": "string"
},
"sign2": {
"enum": [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
],
"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."
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"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."
},
"disclaimer_inline": {
"type": "boolean",
"default": false
}
}
}Daily horoscope for a zodiac sign in 21 languages, written by a model from that sign's solar houses and the day's transits. `style: "plain"` gives everyday words with no astrological terms, written once in English and translated so every language says the same; `length` (short, medium) and `topics` choose its size and sections. Returns `sections` (overview, love, career, health, finance, advice) and the same text as `horoscope`, plus computed `transits` with solar houses, `aspects`, `events`, `energy` (1-10 with its factors), `lucky` and `compatibleSigns`. [Group: Horoscope] [Endpoint: POST /v1/horoscope/daily] [Required: sign] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| date | string | |
| sign* | string | |
| style | string | `astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly. |
| 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. |
| length | string | With `style: "plain"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230). |
| topics |
Monthly horoscope for a zodiac sign: the same shape as the daily one, over 30 days from `date`, with the month's ingresses, stations and lunar phases. [Group: Horoscope] [Endpoint: POST /v1/horoscope/monthly] [Required: sign] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| date | string | |
| sign* | string | |
| style | string | `astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly. |
| 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. |
| length | string | With `style: "plain"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230). |
| topics | array | Only these sections, in this order, in `sections` and in `horoscope`. Default all six. |
| language | string | |
Weekly horoscope for a zodiac sign: the same shape as the daily one, with the week's ingresses, stations and lunar phases in `events` and in the text. [Group: Horoscope] [Endpoint: POST /v1/horoscope/weekly] [Required: sign] [Cost: 50 credits (Tier 3)]
| Argument | Type | Description |
|---|---|---|
| date | string | |
| sign* | string | |
| style | string | `astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly. |
| 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. |
| length | string | With `style: "plain"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230). |
| topics | array | Only these sections, in this order, in `sections` and in `horoscope`. Default all six. |
| language | string | |
Generate a year-ahead horoscope (12-month window) with major transit cycles, solar return chart context, and time-lord (profection) for the year. [Group: Horoscope] [Endpoint: POST /v1/horoscope/yearly] [Required: sign] [Cost: 100 credits (Tier 4)]
| Argument | Type | Description |
|---|---|---|
| date | string | |
| sign* | string | |
| style | string | `astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly. |
| 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. |
| length | string | With `style: "plain"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230). |
| topics | array | Only these sections, in this order, in `sections` and in `horoscope`. Default all six. |
| language | string | |
| precision |
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."
}
}
}Edited interpretation texts for a chart, no AI at request time. `keys` is a comma list of up to 64: `sun.aries` (planet in sign, also `chiron`, `ascendant`), `moon.h4` (planet in house), `sun_moon.trine` (major aspect between two of Sun..Pluto). `lang` is required; a text that does not exist in that language is listed in `missing`, never replaced by another language. Planet in sign covers 20 languages; houses and aspects are being written. Plain text, paragraphs separated by a blank line. [Group: Reference] [Endpoint: GET /v1/natal-texts] [Required: keys, lang] [Cost: 10 credits (Tier 1)] Keys with no text in the requested `lang` come back listed in `missing`, not in `texts`. Do not invent, translate or guess a replacement body for a key that comes back in `missing`; report it as unavailable.
| Argument | Type | Description |
|---|---|---|
| keys* | string | Comma list of up to 64 distinct keys: `<body>.<sign>` (planet in sign, also `chiron`, `ascendant`, `north_node`, `south_node`, `lilith`), `<body>.h<1-12>` (planet in house, also `chiron`, `lilith`), `<body>_<body>.<aspect>` (conjunction, sextile, square, trine, opposition between two of Sun..Pluto), `pattern.<name>` (t_square, grand_trine, grand_cross, stellium, yod, kite; kind `pattern`, a general text for the figure, the planets are yours to list). Nodes, Lilith in sign and patterns are written in every language listed for `lang`. |
| lang* | string | Language of the texts. No fallback: a text missing in this language is listed in `missing`. |
| 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. |
Triangular aspect matrix: rows × columns = planets, each cell shows aspect glyph + orb. Standard textbook layout. [Group: Visualization] [Endpoint: POST /v1/render/aspect-grid] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | |
| 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": {
"anyOf": [
{
"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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
{
"type": "object",
"required": [
"chart"
],
"properties": {
"chart": {
"type": "object",
"required": [
"planets",
"houses"
],
"properties": {
"houses": {
"type": "object",
"required": [
"cusps",
"ascendant",
"mc"
],
"properties": {
"mc": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"cusps": {
"type": "array",
"items": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"ascendant": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"aspects": {
"type": "array",
"items": {
"type": "object",
"required": [
"planet1",
"planet2",
"type"
],
"properties": {
"orb": {
"type": "number",
"maximum": 30,
"minimum": 0
},
"type": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
]
},
"planet1": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"planet2": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 300
},
"planets": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"longitude"
],
"properties": {
"id": {
"type": "integer",
"maximum": 100000,
"minimum": -1
},
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"longitude": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"speedLong": {
"type": "number",
"maximum": 30,
"minimum": -30
},
"isRetrograde": {
"type": "boolean"
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 30,
"minItems": 1
}
},
"description": "The data object of a POST /v1/chart response, sent back to be drawn without computing the chart again (1 credit instead of 10). Extra fields are ignored; planets (1 to 30, longitude 0 to 360), houses (exactly 12 cusps, ascendant, mc) and aspects are read.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"description": "A chart you already hold, drawn as is: no birth data, 1 credit.",
"additionalProperties": false
}
]
},
"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."
}
}
}Two concentric wheels: inner natal + outer ring with transit (or progression) planets. Standard bi-wheel layout. [Group: Visualization] [Endpoint: POST /v1/render/bi-wheel] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | |
| 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": {
"anyOf": [
{
"type": "object",
"required": [
"natal",
"outer"
],
"properties": {
"natal": {
"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"
}
]
}
},
"outer": {
"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"
}
]
}
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"outerLabel": {
"type": "string",
"default": "TR",
"maxLength": 40
},
"showAspects": {
"type": "boolean"
},
"crossAspects": {
"type": "boolean",
"description": "Draws the aspects between the two charts as dashed chords (the same set POST /synastry returns as crossAspects), skipping pairs with a body that is not drawn. In theme css each chord has class aw-cross-aspect, data-a (inner planet) and data-b (outer planet, b- prefix)."
},
"showRetrograde": {
"type": "boolean"
}
}
}
}
},
{
"type": "object",
"required": [
"natal",
"outer"
],
"properties": {
"natal": {
"type": "object",
"required": [
"chart"
],
"properties": {
"chart": {
"type": "object",
"required": [
"planets",
"houses"
],
"properties": {
"houses": {
"type": "object",
"required": [
"cusps",
"ascendant",
"mc"
],
"properties": {
"mc": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"cusps": {
"type": "array",
"items": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"ascendant": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"aspects": {
"type": "array",
"items": {
"type": "object",
"required": [
"planet1",
"planet2",
"type"
],
"properties": {
"orb": {
"type": "number",
"maximum": 30,
"minimum": 0
},
"type": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
]
},
"planet1": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"planet2": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 300
},
"planets": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"longitude"
],
"properties": {
"id": {
"type": "integer",
"maximum": 100000,
"minimum": -1
},
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"longitude": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"speedLong": {
"type": "number",
"maximum": 30,
"minimum": -30
},
"isRetrograde": {
"type": "boolean"
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 30,
"minItems": 1
}
},
"description": "The data object of a POST /v1/chart response, sent back to be drawn without computing the chart again (1 credit instead of 10). Extra fields are ignored; planets (1 to 30, longitude 0 to 360), houses (exactly 12 cusps, ascendant, mc) and aspects are read.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
},
"additionalProperties": false
},
"outer": {
"type": "object",
"required": [
"chart"
],
"properties": {
"chart": {
"type": "object",
"required": [
"planets",
"houses"
],
"properties": {
"houses": {
"type": "object",
"required": [
"cusps",
"ascendant",
"mc"
],
"properties": {
"mc": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"cusps": {
"type": "array",
"items": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"ascendant": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"aspects": {
"type": "array",
"items": {
"type": "object",
"required": [
"planet1",
"planet2",
"type"
],
"properties": {
"orb": {
"type": "number",
"maximum": 30,
"minimum": 0
},
"type": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
]
},
"planet1": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"planet2": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 300
},
"planets": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"longitude"
],
"properties": {
"id": {
"type": "integer",
"maximum": 100000,
"minimum": -1
},
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"longitude": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"speedLong": {
"type": "number",
"maximum": 30,
"minimum": -30
},
"isRetrograde": {
"type": "boolean"
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 30,
"minItems": 1
}
},
"description": "The data object of a POST /v1/chart response, sent back to be drawn without computing the chart again (1 credit instead of 10). Extra fields are ignored; planets (1 to 30, longitude 0 to 360), houses (exactly 12 cusps, ascendant, mc) and aspects are read.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
},
"additionalProperties": false
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"outerLabel": {
"type": "string",
"default": "TR",
"maxLength": 40
},
"showAspects": {
"type": "boolean"
},
"crossAspects": {
"type": "boolean",
"description": "Draws the aspects between the two charts as dashed chords (the same set POST /synastry returns as crossAspects), skipping pairs with a body that is not drawn. In theme css each chord has class aw-cross-aspect, data-a (inner planet) and data-b (outer planet, b- prefix)."
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"description": "Two charts you already hold, drawn as is: no birth data, 1 credit. Both must be charts.",
"additionalProperties": false
}
]
},
"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."
}
}
}Three-curve sine plot of physical (23d), emotional (28d), and intellectual (33d) cycles since birth. [Group: Visualization] [Endpoint: POST /v1/render/biorhythm] [Required: birthDate, rangeStart, rangeEnd] [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. |
| options | object | |
| rangeEnd* | string | |
| birthDate* | 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. |
| rangeStart* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"birthDate",
"rangeStart",
"rangeEnd"
],
"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."
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"width": {
"type": "integer",
"maximum": 3000,
"minimum": 400
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"height": {
"type": "integer",
"maximum": 1200,
"minimum": 200
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
},
"rangeEnd": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"birthDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{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."
},
"rangeStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Composite-chart wheel from two natal inputs. Computes midpoint composite then renders as Western wheel. [Group: Visualization] [Endpoint: POST /v1/render/composite] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | Pair of natal charts for relationship calculations: synastry, composite, davison. |
| 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": [
"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"
}
]
}
}
},
"description": "Pair of natal charts for relationship calculations: synastry, composite, davison."
},
{
"type": "object",
"properties": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
}
}
],
"description": "Pair of natal charts for relationship calculations: synastry, composite, davison."
},
"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."
}
}
}Cosmobiology 90° dial. Plots planets at (longitude mod 90)° across 4 quadrants, Cardinal/Fixed/Mutable repeated. [Group: Visualization] [Endpoint: POST /v1/render/cosmogram] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Equirectangular world graticule with caller-supplied eclipse track. Renders centerline + shaded band of given degree-width. [Group: Visualization] [Endpoint: POST /v1/render/eclipse-path] [Required: path] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| path* | array | |
| title | 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. |
| options | object | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| bandWidthDeg | number | |
| centerlinePoints | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path"
],
"properties": {
"path": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"time": {
"type": "string",
"maxLength": 40
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"maxItems": 500,
"minItems": 2
},
"title": {
"type": "string",
"maxLength": 120
},
"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."
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"width": {
"type": "integer",
"maximum": 3000,
"minimum": 400
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"height": {
"type": "integer",
"maximum": 1500,
"minimum": 200
},
"pathColor": {
"type": "string",
"maxLength": 20
},
"showAspects": {
"type": "boolean"
},
"showGraticule": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
},
"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."
},
"bandWidthDeg": {
"type": "number",
"maximum": 20,
"minimum": 0.1
},
"centerlinePoints": {
"type": "array",
"items": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"time": {
"type": "string",
"maxLength": 40
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"maxItems": 500
}
}
}Render the moon disk with its illuminated fraction at the given moment. Returns SVG plus illumination metrics. [Group: Visualization] [Endpoint: POST /v1/render/moon-phase] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"showLabel": {
"type": "boolean"
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Stereographic projection of caller-supplied points (RA/Dec). Handles brightness magnitude scaling and labels. [Group: Visualization] [Endpoint: POST /v1/render/star-map] [Required: points] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| title | 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. |
| points* | array | |
| options | object | |
| precision | integer | Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| zenithDecDeg | number | |
| capAltitudeDeg | number | |
| observerLatDeg | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"points"
],
"properties": {
"title": {
"type": "string",
"maxLength": 120
},
"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."
},
"points": {
"type": "array",
"items": {
"type": "object",
"required": [
"decDeg"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40
},
"glyph": {
"type": "string",
"maxLength": 8
},
"raDeg": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"decDeg": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"raHours": {
"type": "number",
"maximum": 24,
"minimum": 0
},
"magnitude": {
"type": "number"
}
}
},
"maxItems": 2000,
"minItems": 1
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
},
"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."
},
"zenithDecDeg": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"capAltitudeDeg": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"observerLatDeg": {
"type": "number",
"maximum": 90,
"minimum": -90
}
}
}Gantt-style horizontal timeline of transit/aspect events over a date window. Caller supplies events array. [Group: Visualization] [Endpoint: POST /v1/render/timeline] [Required: rangeStart, rangeEnd, events] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| events* | 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. |
| options | object | |
| rangeEnd* | 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. |
| rangeStart* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"rangeStart",
"rangeEnd",
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"start",
"end"
],
"properties": {
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"color": {
"type": "string",
"maxLength": 20
},
"exact": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"label": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"category": {
"type": "string",
"maxLength": 40
}
}
},
"maxItems": 200,
"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."
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"width": {
"type": "integer",
"maximum": 3000,
"minimum": 400
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"rowHeight": {
"type": "integer",
"maximum": 60,
"minimum": 16
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
},
"rangeEnd": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{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."
},
"rangeStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Three concentric wheels: natal + progressed + transit. Used for advanced forecasting visuals. [Group: Visualization] [Endpoint: POST /v1/render/tri-wheel] [Required: natal, middle, outer] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| natal* | 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. |
| outer* | 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. |
East Indian (Bengali) layout: square with diagonals + inner rotated square forming 12 sectors. [Group: Visualization] [Endpoint: POST /v1/render/wheel-vedic-east] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}North Indian diamond chart layout: 12 fixed positions, signs rotate per ascendant. Standard BPHS rendering. [Group: Visualization] [Endpoint: POST /v1/render/wheel-vedic-north] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}South Indian 4×4 grid layout (Pisces top-left, signs fixed). House numbers placed where lagna sign falls. [Group: Visualization] [Endpoint: POST /v1/render/wheel-vedic-south] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | 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. |
| 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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
"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."
}
}
}Render a Western natal wheel as SVG: signs ring, houses ring, planets, aspect lines. Pure server-side, no browser needed. [Group: Visualization] [Endpoint: POST /v1/render/wheel-western] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| body* | any | |
| 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": {
"anyOf": [
{
"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": {
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
],
"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."
},
{
"type": "object",
"required": [
"chart"
],
"properties": {
"chart": {
"type": "object",
"required": [
"planets",
"houses"
],
"properties": {
"houses": {
"type": "object",
"required": [
"cusps",
"ascendant",
"mc"
],
"properties": {
"mc": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"cusps": {
"type": "array",
"items": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"ascendant": {
"type": "number",
"maximum": 360,
"minimum": 0
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"aspects": {
"type": "array",
"items": {
"type": "object",
"required": [
"planet1",
"planet2",
"type"
],
"properties": {
"orb": {
"type": "number",
"maximum": 30,
"minimum": 0
},
"type": {
"anyOf": [
{
"type": "string",
"maxLength": 40,
"minLength": 1
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
}
]
},
"planet1": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"planet2": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 300
},
"planets": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"longitude"
],
"properties": {
"id": {
"type": "integer",
"maximum": 100000,
"minimum": -1
},
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"longitude": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"speedLong": {
"type": "number",
"maximum": 30,
"minimum": -30
},
"isRetrograde": {
"type": "boolean"
}
},
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"maxItems": 30,
"minItems": 1
}
},
"description": "The data object of a POST /v1/chart response, sent back to be drawn without computing the chart again (1 credit instead of 10). Extra fields are ignored; planets (1 to 30, longitude 0 to 360), houses (exactly 12 cusps, ascendant, mc) and aspects are read.",
"additionalProperties": {
"anyOf": [
{},
{
"type": "null"
}
]
}
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
}
},
"description": "A chart you already hold, drawn as is: no birth data, 1 credit.",
"additionalProperties": false
}
]
},
"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."
}
}
}Calculate a full natal chart: planets, house cusps, aspects, sect, and angular data for a given birth moment. When the birth time is unknown, send timeUnknown: true instead of time and the response carries planets and aspects with houses, angles and sect set to null, plus a timeUnknown block giving the range the Moon covers that day. With ?lang= the response adds localized: planet, sign and aspect names in that language, keyed by the English names. [Group: Core] [Endpoint: POST /v1/chart] [Required: date, 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 |
Return planet positions for a date range with configurable step (min 0.01 days). Max range: 1 year for sub-day steps, 5 years otherwise. Optionally filter by planetIds. [Group: Core] [Endpoint: POST /v1/ephemeris] [Required: startDate, endDate] [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. |
| endDate* | string | |
| stepDays | any | |
| planetIds | 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. |
| startDate* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"startDate",
"endDate"
],
"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."
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"stepDays": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"planetIds": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
},
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Calculate raw planet longitudes for a given date/time without full chart context (no houses, no aspects). [Group: Core] [Endpoint: POST /v1/planets] [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 sunrise, sunset, twilight times, and day length for a given date and geographic location. [Group: Core] [Endpoint: POST /v1/sun-times] [Required: date, latitude, longitude] [Cost: 10 credits (Tier 1)]
| Argument | Type | Description |
|---|---|---|
| date* | 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. |
| latitude* | any | |
| 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. |
| longitude* | 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. |
Communal innovation, futurist detachment. Saturn + Uranus. I KNOW. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/aquarius] [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."
}
}
}Pioneering will, raw initiation. Ruler Mars. I AM signature. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/aries] [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."
}
}
}Protective nurture, tidal memory. Ruler Moon. I FEEL. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/cancer] [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."
}
}
}Disciplined mastery, long-view structure. Ruler Saturn. I USE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/capricorn] [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."
}
}
}Curious connection, plural perspectives. Ruler Mercury. I THINK. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/gemini] [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."
}
}
}Radiant generosity, theatrical authority. Ruler Sun. I WILL. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/leo] [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."
}
}
}Partnership, aesthetic balance, mediation. Ruler Venus. I BALANCE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/libra] [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."
}
}
}Oceanic compassion, dissolving boundaries. Jupiter + Neptune. I BELIEVE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/pisces] [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."
}
}
}Philosophical quest, frank expansion. Ruler Jupiter. I SEE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/sagittarius] [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."
}
}
}Penetrating depth, transformation. Mars + Pluto. I DESIRE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/scorpio] [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."
}
}
}Embodied stability, sensory wealth. Ruler Venus. I HAVE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/taurus] [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."
}
}
}Discerning service, refined craft. Ruler Mercury. I ANALYZE. [Group: Zodiac Signs (Per-Sign Deep)] [Endpoint: GET /v1/zodiac/virgo] [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."
}
}
}| 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."
}
}
}| aspectAngles |
| array |
| visiblePlanetIds | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"startDate",
"endDate"
],
"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."
},
"maxOrb": {
"type": "number",
"maximum": 30,
"minimum": 1e-9
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"stepDays": {
"type": "number",
"maximum": 365,
"minimum": 0.041666666666666664
},
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"planet1Ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
},
"planet2Ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
},
"aspectAngles": {
"type": "array",
"items": {
"anyOf": [
{
"type": "number",
"maximum": 360,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 64
},
"visiblePlanetIds": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
}
}
}| array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"startDate",
"endDate"
],
"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."
},
"maxOrb": {
"type": "number",
"maximum": 30,
"minimum": 1e-9
},
"endDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"stepDays": {
"type": "number",
"maximum": 365,
"minimum": 0.041666666666666664
},
"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."
},
"startDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"planet1Ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
},
"planet2Ids": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 32
},
"aspectAngles": {
"type": "array",
"items": {
"anyOf": [
{
"type": "number",
"maximum": 360,
"minimum": 0
},
{
"type": "null"
}
]
},
"maxItems": 64
}
}
}| 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."
}
}
}| 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."
}
}
}| 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"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"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."
},
"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."
},
"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."
},
"rangeDays": {
"type": "number",
"maximum": 366,
"minimum": 1e-9
},
"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."
}
}
}| 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. |
| atLocalHour | number | Local time of day in decimal hours, e.g. 15.2 for 15:12. When sent, the hour containing it carries isCurrent: true and every other hour carries false. When omitted, no hour carries the field at all: it is not false, it is unasked. |
| 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",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\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."
},
"latitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"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."
},
"longitude": {
"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."
},
"atLocalHour": {
"type": "number",
"maximum": 24,
"minimum": 0,
"description": "Local time of day in decimal hours, e.g. 15.2 for 15:12. When sent, the hour containing it carries isCurrent: true and every other hour carries false. When omitted, no hour carries the field at all: it is not false, it is unasked."
},
"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."
}
}
}| 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."
}
}
}| array |
| Only these sections, in this order, in `sections` and in `horoscope`. Default all six. |
| 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. |
| disclaimer_inline | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sign"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"sign": {
"enum": [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
],
"type": "string"
},
"style": {
"enum": [
"astro",
"plain"
],
"type": "string",
"description": "`astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly."
},
"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."
},
"length": {
"enum": [
"short",
"medium"
],
"type": "string",
"description": "With `style: \"plain\"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230)."
},
"topics": {
"type": "array",
"items": {
"enum": [
"overview",
"love",
"career",
"health",
"finance",
"advice"
],
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Only these sections, in this order, in `sections` and in `horoscope`. Default all six."
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"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."
},
"disclaimer_inline": {
"type": "boolean",
"default": false
}
}
}| precision |
| integer |
| Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| disclaimer_inline | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sign"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"sign": {
"enum": [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
],
"type": "string"
},
"style": {
"enum": [
"astro",
"plain"
],
"type": "string",
"description": "`astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly."
},
"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."
},
"length": {
"enum": [
"short",
"medium"
],
"type": "string",
"description": "With `style: \"plain\"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230)."
},
"topics": {
"type": "array",
"items": {
"enum": [
"overview",
"love",
"career",
"health",
"finance",
"advice"
],
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Only these sections, in this order, in `sections` and in `horoscope`. Default all six."
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"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."
},
"disclaimer_inline": {
"type": "boolean",
"default": false
}
}
}| precision |
| integer |
| Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| disclaimer_inline | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sign"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"sign": {
"enum": [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
],
"type": "string"
},
"style": {
"enum": [
"astro",
"plain"
],
"type": "string",
"description": "`astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly."
},
"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."
},
"length": {
"enum": [
"short",
"medium"
],
"type": "string",
"description": "With `style: \"plain\"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230)."
},
"topics": {
"type": "array",
"items": {
"enum": [
"overview",
"love",
"career",
"health",
"finance",
"advice"
],
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Only these sections, in this order, in `sections` and in `horoscope`. Default all six."
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"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."
},
"disclaimer_inline": {
"type": "boolean",
"default": false
}
}
}| integer |
| Compact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn. |
| disclaimer_inline | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sign"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"sign": {
"enum": [
"aries",
"taurus",
"gemini",
"cancer",
"leo",
"virgo",
"libra",
"scorpio",
"sagittarius",
"capricorn",
"aquarius",
"pisces"
],
"type": "string"
},
"style": {
"enum": [
"astro",
"plain"
],
"type": "string",
"description": "`astro` (default) names the planets, houses and aspects behind each point. `plain` uses everyday words with no astrological terms, and is written once in English and translated, so every language says the same thing. Daily, weekly and monthly."
},
"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."
},
"length": {
"enum": [
"short",
"medium"
],
"type": "string",
"description": "With `style: \"plain\"`: `short` (about 70-110 words a day) or `medium` (default, about 150-230)."
},
"topics": {
"type": "array",
"items": {
"enum": [
"overview",
"love",
"career",
"health",
"finance",
"advice"
],
"type": "string"
},
"maxItems": 6,
"minItems": 1,
"description": "Only these sections, in this order, in `sections` and in `horoscope`. Default all six."
},
"language": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id",
"ru"
],
"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."
},
"disclaimer_inline": {
"type": "boolean",
"default": false
}
}
}| 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."
}
}
}| 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": [
"keys",
"lang"
],
"properties": {
"keys": {
"type": "string",
"description": "Comma list of up to 64 distinct keys: `<body>.<sign>` (planet in sign, also `chiron`, `ascendant`, `north_node`, `south_node`, `lilith`), `<body>.h<1-12>` (planet in house, also `chiron`, `lilith`), `<body>_<body>.<aspect>` (conjunction, sextile, square, trine, opposition between two of Sun..Pluto), `pattern.<name>` (t_square, grand_trine, grand_cross, stellium, yod, kite; kind `pattern`, a general text for the figure, the planets are yours to list). Nodes, Lilith in sign and patterns are written in every language listed for `lang`."
},
"lang": {
"enum": [
"uk",
"en",
"de",
"pl",
"es",
"pt",
"fr",
"it",
"nl",
"cs",
"ro",
"hu",
"el",
"tr",
"ar",
"hi",
"ja",
"ko",
"vi",
"id"
],
"type": "string",
"description": "Language of the texts. No fallback: a text missing in this language is listed in `missing`."
},
"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."
}
}
}| middle* | 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. |
| options | object |
| 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": [
"natal",
"middle",
"outer"
],
"properties": {
"natal": {
"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"
}
]
}
},
"outer": {
"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."
},
"middle": {
"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"
}
]
}
},
"options": {
"type": "object",
"properties": {
"size": {
"type": "integer",
"maximum": 2000,
"minimum": 200
},
"theme": {
"enum": [
"light",
"dark",
"console",
"css"
],
"type": "string",
"description": "css paints every colour as var(--aw-<role>, <light colour>), so the page that inlines the SVG can recolour it with CSS custom properties (--aw-chart-bg, --aw-fg, --aw-muted, --aw-ring, --aw-houses-fill, --aw-benefic, --aw-malefic, --aw-aspect-harmonious, --aw-aspect-tense, --aw-aspect-neutral, --aw-aspect-minor, --aw-aspect-quintile, --aw-moon-shadow, --aw-moon-light, --aw-cycle-physical, --aw-cycle-emotional, --aw-cycle-intellectual). With none set it looks exactly like light. Inside an <img> the variables cannot be set, so it stays light. The Western wheels and the aspect grid then also carry stable aw-* classes, and each planet is a <g> with data-planet and data-label, each aspect line has data-a and data-b; see the @astroway/render changelog for the list."
},
"title": {
"type": "string",
"maxLength": 120
},
"bodies": {
"type": "array",
"items": {
"enum": [
"Sun",
"Moon",
"Mercury",
"Venus",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
"North Node",
"South Node",
"Chiron",
"Lilith"
],
"type": "string"
},
"maxItems": 14,
"minItems": 1
},
"format": {
"enum": [
"svg",
"json"
],
"type": "string",
"default": "json"
},
"labels": {
"type": "object",
"properties": {
"ic": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"mc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"asc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"dsc": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"desc": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"signs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"bodies": {
"type": "object",
"properties": {
"Sun": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mars": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Moon": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Pluto": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Venus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Chiron": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Lilith": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Saturn": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Uranus": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Jupiter": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Mercury": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"Neptune": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"North Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"South Node": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
}
},
"retrograde": {
"type": "string",
"maxLength": 40,
"minLength": 1
}
},
"description": "Your own words in place of the English the image would otherwise carry: the ASC/DSC/MC/IC axis labels, the SVG <title> and <desc> read by screen readers, and the planet and sign names plus the word for retrograde in each planet's data-label (theme css). bodies is keyed by the English name, signs lists twelve names from Aries. Nothing is translated for you; absent keys keep the English.",
"additionalProperties": false
},
"outerLabel": {
"type": "string",
"default": "TR",
"maxLength": 40
},
"middleLabel": {
"type": "string",
"default": "PR",
"maxLength": 40
},
"showAspects": {
"type": "boolean"
},
"showRetrograde": {
"type": "boolean"
}
}
},
"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."
}
}
}| 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 |
| timeUnknown | boolean |
| 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",
"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"
},
"timeUnknown": {
"type": "boolean"
},
"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."
}
}
}| 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",
"latitude",
"longitude"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\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."
},
"latitude": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"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."
},
"longitude": {
"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."
},
"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."
}
}
}