{"openapi":"3.1.0","info":{"title":"Skyline Astro API","version":"1.2.0","description":"Natal chart positions (tropical zodiac, geocentric, true ecliptic of date), server to server.\n\nAngles are decimal degrees with 6 decimals; longitudes in [0, 360). The moment is UTC, treated as UT (UTC–UT1 stays under 0.9 s).\n\nAccuracy against Swiss Ephemeris: at most 30″ for bodies, Ascendant, MC and cusps; at most 5′ for the Ascendant above the polar circle. Benchmark: https://skylineastro.com/#accuracy\n\nAfter 2026 ΔT (TT − UT) is a forecast: the Moon may differ from other engines by up to ~1′ toward 2100.\n\nAbove the polar circle Placidus switches to Porphyry (`fallback: \"porphyry\"`). `lilith_true` is not available in this version.\n\nError messages are in Romanian; match on `error.code`, which is stable."},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key: sk_live_… or sk_test_…"}},"schemas":{"Health":{"type":"object","properties":{"status":{"type":"string","enum":["ok","degraded"]},"version":{"type":"string"},"data":{"type":"string"},"operator":{"type":"string"},"instance":{"type":"string"}},"required":["status","version","data","operator","instance"]},"PositionsResponse":{"type":"object","properties":{"engine":{"$ref":"#/components/schemas/EngineInfo"},"results":{"type":"array","items":{"type":"object","properties":{"bodies":{"type":"object","properties":{"sun":{"$ref":"#/components/schemas/BodyResult"},"moon":{"$ref":"#/components/schemas/BodyResult"},"mercury":{"$ref":"#/components/schemas/BodyResult"},"venus":{"$ref":"#/components/schemas/BodyResult"},"mars":{"$ref":"#/components/schemas/BodyResult"},"jupiter":{"$ref":"#/components/schemas/BodyResult"},"saturn":{"$ref":"#/components/schemas/BodyResult"},"uranus":{"$ref":"#/components/schemas/BodyResult"},"neptune":{"$ref":"#/components/schemas/BodyResult"},"pluto":{"$ref":"#/components/schemas/BodyResult"},"chiron":{"$ref":"#/components/schemas/BodyResult"},"node_true":{"$ref":"#/components/schemas/BodyResult"},"node_mean":{"$ref":"#/components/schemas/BodyResult"},"south_node_true":{"$ref":"#/components/schemas/BodyResult"},"south_node_mean":{"$ref":"#/components/schemas/BodyResult"},"lilith_mean":{"$ref":"#/components/schemas/BodyResult"},"lilith_true":{"$ref":"#/components/schemas/BodyResult"}}},"houses":{"$ref":"#/components/schemas/HousesResult"}},"required":["bodies","houses"]}}},"required":["engine","results"]},"EngineInfo":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"data":{"type":"string","description":"Data version (Chiron table)"},"operator":{"type":"string","description":"Who operates this instance"}},"required":["name","version","data","operator"]},"BodyResult":{"type":"object","properties":{"longitude":{"type":"number"},"latitude":{"type":"number"},"speed":{"type":"number","description":"Degrees per day"},"retrograde":{"type":"boolean"}},"required":["longitude","latitude","speed","retrograde"]},"HousesResult":{"type":["object","null"],"properties":{"system":{"type":"string","enum":["placidus","porphyry","whole_sign","equal"]},"fallback":{"type":["string","null"],"enum":["porphyry"],"description":"The system actually used, when it differs (Placidus above the polar circle)"},"ascendant":{"type":"number"},"mc":{"type":"number"},"armc":{"type":"number"},"cusps":{"type":"array","items":{"type":"number"}}},"required":["system","fallback","ascendant","mc","armc","cusps"]},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["VALIDATION","OUT_OF_RANGE","INVALID_KEY","PLAN_INACTIVE","NOT_FOUND","PAYLOAD_TOO_LARGE","RATE_LIMITED","INTERNAL","INVALID_TOKEN","CONFLICT","UNAVAILABLE","REAUTH_REQUIRED"]},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["code","message","requestId"]}},"required":["error"]},"PositionsRequest":{"type":"object","properties":{"requests":{"type":"array","items":{"$ref":"#/components/schemas/ChartRequest"},"minItems":1,"maxItems":10}},"required":["requests"],"additionalProperties":false},"ChartRequest":{"type":"object","properties":{"datetimeUtc":{"type":"string","pattern":"^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.\\d{1,3})?)?Z$","example":"2024-03-14T12:30:00Z","description":"The moment in UTC, from 1900-01-01T00:00:00Z to 2100-12-31T23:59:59Z"},"latitude":{"type":"number","minimum":-90,"maximum":90,"example":47.158,"description":"Degrees, north positive"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":27.601,"description":"Degrees, east positive"},"bodies":{"type":"array","items":{"$ref":"#/components/schemas/BodyId"},"description":"Default: every body except lilith_true"},"houses":{"type":["object","null"],"properties":{"system":{"type":"string","enum":["placidus","porphyry","whole_sign","equal"]}},"required":["system"],"additionalProperties":false,"description":"Default: null (no houses)"},"zodiac":{"type":"string","enum":["tropical"]},"role":{"type":"string","enum":["chart","aux"],"description":"Affects usage counting only; default chart"}},"required":["datetimeUtc","latitude","longitude"],"additionalProperties":false},"BodyId":{"type":"string","enum":["sun","moon","mercury","venus","mars","jupiter","saturn","uranus","neptune","pluto","chiron","node_true","node_mean","south_node_true","south_node_mean","lilith_mean","lilith_true"]}},"parameters":{}},"paths":{"/v1/health":{"get":{"summary":"Instance health","responses":{"200":{"description":"The instance is serving","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"503":{"description":"The Chiron table did not load","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}},"/v1/positions":{"post":{"summary":"Positions for 1–10 charts","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionsRequest"},"example":{"requests":[{"datetimeUtc":"2024-03-14T12:30:00Z","latitude":47.158,"longitude":27.601,"houses":{"system":"placidus"},"role":"chart"}]}}}},"responses":{"200":{"description":"Results, in the order of the requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PositionsResponse"},"example":{"engine":{"name":"skyline-astro","version":"1.2.0","data":"chiron-jpl-20261027","operator":"pixel-analytica"},"results":[{"bodies":{"sun":{"longitude":354.417968,"latitude":0.000065,"speed":0.99699,"retrograde":false},"moon":{"longitude":51.485607,"latitude":3.079147,"speed":13.982662,"retrograde":false},"mercury":{"longitude":8.173726,"latitude":0.297756,"speed":1.810059,"retrograde":false},"venus":{"longitude":333.231686,"latitude":-1.154269,"speed":1.237679,"retrograde":false},"mars":{"longitude":323.411836,"latitude":-1.144812,"speed":0.777423,"retrograde":false},"jupiter":{"longitude":43.77896,"latitude":-0.870254,"speed":0.193198,"retrograde":false},"saturn":{"longitude":341.554646,"latitude":-1.638478,"speed":0.120217,"retrograde":false},"uranus":{"longitude":50.03025,"latitude":-0.277312,"speed":0.038044,"retrograde":false},"neptune":{"longitude":357.250549,"latitude":-1.213718,"speed":0.037922,"retrograde":false},"pluto":{"longitude":301.543379,"latitude":-2.896464,"speed":0.021892,"retrograde":false},"chiron":{"longitude":17.946133,"latitude":0,"speed":0.055196,"retrograde":false},"node_true":{"longitude":15.741972,"latitude":0,"speed":0.023774,"retrograde":false},"node_mean":{"longitude":16.983891,"latitude":0,"speed":-0.052962,"retrograde":true},"south_node_true":{"longitude":195.741972,"latitude":0,"speed":0.023774,"retrograde":false},"south_node_mean":{"longitude":196.983891,"latitude":0,"speed":-0.052962,"retrograde":true},"lilith_mean":{"longitude":168.147367,"latitude":2.486818,"speed":0.111042,"retrograde":false}},"houses":{"system":"placidus","fallback":null,"ascendant":134.02637,"mc":29.79832,"armc":27.718043,"cusps":[134.02637,153.315931,177.848257,209.79832,247.92772,284.333363,314.02637,333.315931,357.848257,29.79832,67.92772,104.333363]}}]}}}},"400":{"description":"VALIDATION or OUT_OF_RANGE","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"INVALID_KEY","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"PLAN_INACTIVE","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"PAYLOAD_TOO_LARGE","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"RATE_LIMITED, with Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"INTERNAL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{}}