---
title: "Biodynamic daily profile"
method: GET
path: "/ephemeris/agro/daily"
tags: ["agricultural"]
---

# Biodynamic daily profile

`GET /ephemeris/agro/daily`

## Request

- Base URL: `https://api.openephemeris.com`
- URL: `https://api.openephemeris.com/ephemeris/agro/daily`
- 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`

Returns a complete Maria Thun biodynamic day profile for a given date and location.

**Includes:**
- Moon sign, element, latitude velocity (ascending/descending)
- Thun day type (root / leaf / flower / fruit) with quality score (0–100)
- Aspect modifiers with explained score impacts (Saturn, Jupiter, Mars, Node)
- Activity recommendations (favorable / unfavorable / optimal tasks)
- Void-of-course window (active status + next window)
- Lunar phase + illumination
- Sunrise, sunset, moonrise, moonset (topocentric, ±1s precision)

**Zodiac:** Always tropical for Thun classification (per Thun methodology).  
**Ephemeris:** DE440.

🤖 AI-optimized output available — add `format=llm` to reduce payload ~70%.

```bash
GET /ephemeris/agro/daily?lat=-33.87&lon=151.21&date=2026-03-15&tz=Australia/Sydney
```

## Query parameters

- `lat` number, required: Observer latitude (WGS84, degrees)
- `lon` number, required: Observer longitude (WGS84, degrees)
- `date` string, required: Date as YYYY-MM-DD
- `elev` number: Observer elevation in metres above sea level. Lowers the visible horizon (dip ~ 1.76 arcmin * sqrt(metres)), which moves sunrise/sunset and moonrise/moonset earlier and later respectively - about 6 minutes per event at 1600 m. Default 0 reproduces the sea-level result exactly.
- `format` string: Output format

## Headers

- `authorization` string, nullable
- `X-API-Key` string, nullable
- `X-OpenEphemeris-API-Key` string, nullable
- `apikey` string, nullable

## Response `200`

Successful Response

- AgroDailyResponse: Full biodynamic daily profile.
  - `_meta` object, required: Calculation metadata
  - `date` string, required: Date in YYYY-MM-DD format
  - `horizon` HorizonEvents, required
    - `moonrise` string: ISO 8601 UTC moonrise time
    - `moonset` string: ISO 8601 UTC moonset time
    - `polar` boolean, required: True if location experiences polar day/night
    - `sunrise` string: ISO 8601 UTC sunrise time
    - `sunset` string: ISO 8601 UTC sunset time
  - `lunar` AgroLunarData, required
    - `ascending` boolean, required: True if ascending
    - `distance_km` number, required: Distance from Earth in km
    - `illumination_pct` number, required: Illumination percentage 0-100
    - `lat_velocity` number, required: Latitude velocity
    - `latitude` number, required: Ecliptic latitude
    - `node_lon` number, required: True node longitude
    - `phase_name` string, required: Current moon phase name
    - `sign_longitude` number, required: Longitude within the current sign (0-30)
    - `waxing` boolean, required: True if waxing
  - `observer` object, required: Observer location details
  - `thun` ThunAnalysis, required
    - `ascending` boolean, required: True if Moon latitude is increasing
    - `base_element` string, required: earth | water | air | fire
    - `day_type` string, required: root | leaf | flower | fruit
    - `favorable` string[]
    - `lat_velocity` number, required: Latitude velocity in degrees per day
    - `modifiers` ThunModifier[]
      - `aspect` string: Aspect name
      - `impact` integer, required: Signed score delta
      - `orb` number: Orb in degrees
      - `planet` string: Planet name
      - `source` string, required: Source of the modifier, e.g., 'saturn_opposition'
    - `optimal` string[]
    - `quality_score` integer, required: Quality score from 0 to 100
    - `unfavorable` string[]
  - `tidal_forcing` AgroTidalData
    - `diurnal_inequality` number, required: Diurnal inequality value
    - `king_tide_risk` number, required: King tide risk score (0 to 1)
    - `perigee_proximity` number, required: Perigee proximity score (0 to 1)
    - `spring_neap_index` number, required: Spring-neap index (-1 to +1)
    - `syzygy_status` string, required: Syzygy status (e.g., 'spring', 'neap')
    - `total_forcing` number, required: Total tidal forcing score
  - `void_of_course` VoCData, required
    - `active` boolean, required: True if currently void of course
    - `last_aspect` string: Last major aspect before ingress
    - `last_aspect_jd` number, double: Julian Day of the last major aspect
    - `moon_sign` string, required: Current moon sign
    - `next_sign` string, required: Next moon sign
    - `void_end_jd` number, double, required: Void end Julian Day
    - `void_start_jd` number, double, required: Void start Julian Day

## Other responses

- `400`: Bad Request
- `422`: Validation Error
- `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)
