LifeAstroAPILifeAstroAPI

API Reference / Vedic Astrology / Transit & Gochara

GET
10 credits

/v1/transit/positions

Current sidereal positions of all planets.

What this tells you

Sidereal positions of the 9 grahas at one moment. Used for transit overlays on natal charts, horoscope generation and daily muhurta work. It is not birth-specific: it is a snapshot of the sky at the given date, time and tz. If you also pass lat and lon, the Moon is computed topocentrically (corrected for parallax, up to about 1°). The other planets are always geocentric. Rahu and Ketu use the mean node; Ketu is Rahu + 180°.

`date` and `tz` are required. `time` defaults to 12:00 when omitted.

Request

All requests require an Authorization header with your dv_live_* API key.

example request
curl "https://api.lifeastroapi.com/v1/transit/positions?date=2027-01-15&tz=Asia%2FKolkata&time=06%3A00&lat=28.6139&lon=77.209" \
  -H "Authorization: Bearer YOUR_API_KEY"

Query parameters

Checked against the API: a parameter is marked required when the request fails without it.

NameRequiredExampleDescription
dateyes2027-01-15Date (YYYY-MM-DD).
tzyesAsia/KolkataTimezone: IANA name (Asia/Kolkata) or UTC offset (+05:30).
timeno06:00Local time (HH:MM, 24-hour). Defaults to 12:00.
latno28.6139Latitude in decimal degrees.
lonno77.209Longitude in decimal degrees.
ayanamsano—Ayanamsa (sidereal offset) to use. Defaults to lahiri.

Response (200 OK)

The real response to the example request above, generated from the API itself. Long arrays are trimmed to their first two items. Field names are stable across versions.

200 response
{
  "at_jd": 2461420.520833,
  "planets": [
    {
      "name": "Sun",
      "longitude": 270.377723,
      "sign_index": 9,
      "degree_in_sign": 0.377723,
      "nakshatra_index": 20,
      "pada": 2,
      "retrograde": false
    },
    {
      "name": "Moon",
      "longitude": 350.133208,
      "sign_index": 11,
      "degree_in_sign": 20.133208,
      "nakshatra_index": 26,
      "pada": 2,
      "retrograde": false
    }
  ]
}

Field reference

Every field in the response, with its type, a real example, and what it means.

FieldTypeMeaning
at_jdnumber
Julian Day (UT) of the requested moment (date, time, tz).
example: 2461420.520833
planets[]array (9 items)
Sidereal positions in a fixed order: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu.
example: […]
planets[].namestring
Planet name. Localised when `locale` is set (e.g. `locale=hi`).
example: "Sun"
planets[].longitudenumber (0–360)
Sidereal longitude in degrees, using the requested `ayanamsa` (default lahiri).
example: 270.377723
planets[].sign_indexinteger (0–11)
Sign index (0 = Aries … 11 = Pisces). No sign name is returned.
example: 9
planets[].degree_in_signnumber (0–30)
Degrees within the sign.
example: 0.377723
planets[].nakshatra_indexinteger (0–26)
Nakshatra index (0 = Ashwini … 26 = Revati). No nakshatra name is returned.
example: 20
planets[].padainteger (1–4)
Pada (quarter) within the nakshatra.
example: 2
planets[].retrogradeboolean
True when the planet's longitude speed is negative. Always true for Rahu and Ketu (mean node).
example: false

Usage tips

How to use it

  • Overlay on natal chart
    For a "your current transits" view, draw these positions as an outer ring around the natal D1 chart from /v1/chart/planets.
  • Cache briefly
    Outer planets move slowly, but the Moon moves about 13° a day. Cache for at most 15 minutes.
  • Map indexes to names
    Only indexes are returned for sign and nakshatra. Keep a 12-sign and a 27-nakshatra lookup table in your app.

Errors

Every error follows the same envelope. Use the error.code field (not the message) for conditional logic in your integration.

401 Unauthorized

{
  "error": {
    "code": "unauthorized",
    "message": "missing or invalid API key",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

402 Payment Required

{
  "error": {
    "code": "trial_exhausted",
    "message": "your free trial credits are exhausted — pick a plan to continue",
    "top_up_url": "https://lifeastroapi.com/pricing",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

429 Too Many Requests

{
  "error": {
    "code": "rate_limited",
    "message": "rate limit exceeded; retry after 12 seconds",
    "request_id": "req_01hqy7k8c3e7m1n"
  }
}

Try it

Get a dv_live_* key from your dashboard and paste into the cURL snippet above. New accounts get 1,500 free credits. Sign up.