Changelog
Two versions move independently. The API version (currently 0.1.0) tracks the HTTP contract — paths, schemas, status codes. The calc_version (currently 0.1.1) tracks numerical output: identical input plus identical calc_version returns identical digits. A calc_version bump means some digit somewhere may differ; an API version bump means the shape of requests or responses changed. Both are visible at runtime — calc_version in every response’s meta and in GET /health.
calc_version 0.1.1 (July 2026)
Section titled “calc_version 0.1.1 (July 2026)”- Speed values re-quantized for cross-architecture determinism. Internal quantization of body speeds moved from six decimal places to five (round6 → round5), eliminating a last-digit divergence between CPU architectures. As a result, served speed values (four decimals) may differ from calc_version 0.1.0 in the final decimal place. No other field is affected.
- If you snapshot responses for regression testing, re-baseline
speedvalues against 0.1.1. Longitudes, declinations, and all other outputs are unchanged.
v0.1.x additions (July 2026)
Section titled “v0.1.x additions (July 2026)”Additive changes to the 0.1.0 contract — existing fields and behavior are unchanged.
- Position objects gained three fields:
element(fire/earth/air/water),modality(cardinal/fixed/mutable), andout_of_bounds(truewhen the body’s declination exceeds the true obliquity of date). - The requestable body set extended to 18 bodies, adding
lilith_mean,ceres,pallas,juno, andvestato the planets, nodes, andchiron. - Subjects are datetime-only in v1.
subject.datetime(ISO 8601 with an explicit UTC offset) is the single authoritative time input.local_datetimeand place-name geocoding are reserved for the timezone/geocoding release; a request carrying aplacefield is rejected as an unknown field (400) rather than silently ignored, so nothing sent today can change meaning later.
API v0.1.0 (July 2026)
Section titled “API v0.1.0 (July 2026)”Initial public surface, in early access.
POST /v1/western/positions— planetary positions for a subject moment (1 credit per call). Requests take the sharedsubjectandsettingsschemas used by every future computation endpoint.GET /healthandGET /ready— unauthenticated liveness and engine-readiness probes./healthreports the Swiss Ephemeris version and currentcalc_version.- Authentication — bearer API keys in a single header (
Authorization: Bearer …), with environment-identifiable prefixes:ak_test_andak_live_. - Errors — RFC 9457
application/problem+jsonon every failure, with a stable namespacedcodeand a per-requestrequest_id. - Response envelope — every success is
dataplusmeta, wheremetaalways carries provenance:calc_version,settings_resolved(full settings actually used, defaults included),subject_resolved(resolved UTC moment, offset, coordinates,time_known), andcredits_charged.
API spec v0.1.0 · docs 0e4f5ec