---
title: "Zodiacal Releasing Time Lords"
method: POST
path: "/predictive/time-lords/zodiacal-releasing"
tags: ["predictive"]
---

# Zodiacal Releasing Time Lords

`POST /predictive/time-lords/zodiacal-releasing`

## Request

- Base URL: `https://api.openephemeris.com`
- URL: `https://api.openephemeris.com/predictive/time-lords/zodiacal-releasing`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-OpenEphemeris-API-Key`
  - API key in header `X-API-Key`
  - API key in header `X-Service-Key`

Calculate zodiacal releasing — the Hellenistic timing technique of Vettius Valens (*Anthology* IV), which divides a life into a handful of chapters released from a sensitive Lot (Fortune for body and health, Spirit for career and action).

Each sign releases for its own minor years: Aries 15, Taurus 8, Gemini 20, Cancer 25, Leo 19, Virgo 20, Libra 8, Scorpio 15, Sagittarius 12, Capricorn 27, Aquarius 30, Pisces 12 — a full circuit of 211. Levels run on the traditional clock: a level-1 "year" is 360 days and a level-2 "month" is 30, each sub-level exactly one twelfth of the level above.

Angular periods (1st, 4th, 7th, 10th from the Lot) mark peak chapters. The loosing of the bond is an event in the sub-period sequence, not a property of a sign: when the level-2 walk would return to the sign its general period began on, it jumps to the sign opposite that period and carries on forward. Only general periods longer than one circuit (211 months ≈ 17.58 years) can contain one — Gemini, Cancer, Leo, Virgo, Capricorn and Aquarius.

When the Lots of Fortune and Spirit fall in the same sign, releasing from Spirit begins one sign forward (Valens IV, 4:7); `spirit_advanced` reports when that rule fired.

Returns L1 general periods with their L2 sub-periods as absolute dates, peak-period identification, angular/loosing flags, and the active period at the target datetime.

🤖 Agent-first endpoint — pure deterministic math, no ephemeris required.

## Query parameters

- `format` string
- `output_mode` string, nullable

## Request body

- ZodiacalReleasingRequest: Input for zodiacal releasing calculation. Requires the zodiac sign of the releasing Lot (0 = Aries … 11 = Pisces), the Lot name (fortune or spirit), and the birth datetime.
  - `birth_datetime` string, date-time, required: Natal birth datetime in ISO 8601 UTC format.
  - `house_system` string: Optional.
  - `latitude` number: Optional. If provided, calculates natal chart to determine ascendant/sect/lots.
  - `longitude` number: Optional.
  - `lot_name` 'fortune' | 'spirit', required: Which Lot to release from. 'fortune' for body/health chapters, 'spirit' for career/action chapters.
  - `lot_sign` integer, required: Zodiac sign of the releasing Lot (0 = Aries, 1 = Taurus, … 11 = Pisces).
  - `max_years` integer: How far to run the timeline, in calendar years. Default: 100.
  - `other_lot_sign` integer: Optional. Sign of the OTHER Lot (0 = Aries … 11 = Pisces). Supplied only so Valens' same-sign rule can fire: releasing from Spirit when it shares Fortune's sign begins one sign forward. Omit it and the rule does not apply. Ignored when latitude/longitude are given, since both Lots are then computed.
  - `target_datetime` string, date-time: Date to highlight the active period for. Defaults to the current date if omitted.

## Response `200`

Successful Response

- ZodiacalReleasingResponse: Zodiacal releasing timeline — L1 general periods dated in 360-day years, each with its L2 sub-periods dated in 30-day months, plus peak and current-period identification.
  - `calculation_metadata` object, nullable: Metadata about the calculation.
    - `algorithm_version` string: Version of the releasing engine. 2.0.0 is the first that implements the canonical technique; 1.x ran level 1 in months and reported a static per-sign is_loosing.
    - `birth_datetime` string: Birth datetime, ISO 8601 UTC.
    - `max_years` integer: Calendar years the timeline was run for.
    - `processing_time_ms` number: Server processing time in milliseconds.
    - `target_datetime` string, nullable: Datetime the current period was resolved for, ISO 8601 UTC.
  - `current_period` object, nullable: The L1 general period active at the target datetime, with its active sub-period. Absent when the target falls outside the timeline.
    - `end_date` string: End of this general period, ISO 8601 UTC.
    - `is_angular` boolean: Whether this is a peak (angular) chapter.
    - `l1_index` integer: Index into l1_periods.
    - `ruler` string: Ruling planet name.
    - `sign` integer: Sign index (0–11).
    - `sign_name` string: Sign name.
    - `start_date` string: Start of this general period, ISO 8601 UTC.
    - `sub_period` object, nullable: The L2 sub-period active at the target datetime.
      - `end_date` string: End of this sub-period, ISO 8601 UTC.
      - `is_angular` boolean: Whether this sign is angular from the Lot.
      - `is_loosing` boolean: Whether this sub-period is the one entered at a loosing of the bond.
      - `months` integer: Duration in 30-day months.
      - `ruler` string: Ruling planet name.
      - `sign` integer: Sign index (0–11).
      - `sign_name` string: Sign name.
      - `start_date` string: Start of this sub-period, ISO 8601 UTC.
    - `years` integer: Duration in 360-day years.
    - `years_into_period` number: How far into this general period the target date falls, in 360-day years.
  - `l1_periods` object[], required: Level-1 general periods in the zodiacal releasing timeline.
    - `end_date` string: End of this general period, ISO 8601 UTC.
    - `is_angular` boolean: Whether this sign is angular (1st, 4th, 7th, 10th) from the Lot. Angular periods are peak chapters.
    - `l2_periods` object[], nullable: Level-2 sub-periods within this general period, in sequence, including the jump at any loosing of the bond.
      - `end_date` string: End of this sub-period, ISO 8601 UTC.
      - `is_angular` boolean: Whether this sign is angular (1st, 4th, 7th, 10th) from the Lot.
      - `is_loosing` boolean: True of the FIRST sub-period after a loosing of the bond — the sequence reached the sign its general period began on and jumped to the opposite sign instead.
      - `months` integer: Duration in 30-day months — this sign's own minor years. A final sub-period truncated by the end of its general period keeps its natural value here; only end_date is clipped.
      - `ruler` string: Ruling planet name.
      - `sign` integer: Sign index (0–11).
      - `sign_name` string: Sign name.
      - `start_date` string: Start of this sub-period, ISO 8601 UTC.
    - `ruler` string: Ruling planet name.
    - `sign` integer: Sign index (0–11).
    - `sign_name` string: Sign name.
    - `start_date` string: Start of this general period, ISO 8601 UTC.
    - `years` integer: Duration in 360-day years — this sign's minor years.
  - `lot_sign` integer, required: Sign index of the Lot actually released from (0–11). When spirit_advanced is true this is one sign past the submitted lot_sign.
  - `lot_sign_name` string, required: Name of the sign actually released from (e.g., 'Leo').
  - `output_mode` string, nullable: Output projection mode (json | llm).
  - `peak_period_index` integer, required: Index of the longest angular L1 period (the peak chapter).
  - `spirit_advanced` boolean, required: True when Valens' same-sign rule (IV, 4:7) moved Spirit forward one sign because it shared Fortune's. It changes every date in the timeline, so surface it.
  - `starting_lot` string, required: Name of the releasing Lot ('fortune' or 'spirit').
  - `success` boolean, required: Whether the calculation succeeded.
  - `total_years` integer, required: Total 360-day years covered by the L1 timeline.

## Other responses

- `422`: Unprocessable Entity - Invalid input
- `500`: Internal Server Error

---

[API](https://skmtc.dev/openephemeris/apis/open-ephemeris-api.md) · [All operations](https://skmtc.dev/openephemeris/apis/open-ephemeris-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openephemeris/apis/open-ephemeris-api/revisions/d195a769cb89?raw)
