openephemeris-com Agricultural API

Work with the earth's rhythms. Biodynamic planting profiles and multi-day agricultural calendars. **1 unit per request.**

Operations 3

GET /ephemeris/agro/calendar Biodynamic monthly calendar #
GET /ephemeris/agro/daily Biodynamic daily profile #
GET /ephemeris/agro/void-of-course Void of Course Moon #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/openephemeris-com:openephemeris-com-agricultural-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

openephemeris-com-agricultural-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '**Open Ephemeris Engine** - Professional Astrological Calculations


    A high-performance REST API for precise astrological chart calculations using the SuperNOVAS / Calceph engine. ## Features


    - 🎯 **Precise Calculations**: SuperNOVAS / Calceph backend (NASA DE440) for astronomical accuracy

    - 🏗️ **Flexible Input Formats**: Support for multiple coordinate, datetime, and timezone formats

    - 🏠 **Seven House Systems**: Placidus (default), Koch, Porphyry, Regiomontanus, Campanus, Equal, and Whole Sign — the complete set, enumerated by `GET /ephemeris/house-systems`

    - ⚡ **High Performance**: Parallel processing and intelligent caching

    - 📊 **Comprehensive Data**: Complete natal charts with planets, houses, angles, and aspects

    - 🔒 **Input Validation**: Robust validation with clear error messages

    - 📖 **OpenAPI Documentation**: Interactive API documentation and schema validation

    - 🪐 **Transit Calculations**: Precise planetary transit timing with retrograde support

    - 📅 **Predictive Features**: Solar/lunar returns, sign ingresses, and future transits

    - 🤖 **Agent-First Design**: Optimized for LLM consumption and autonomous tool use


    ## Agent-First Design


    Open Ephemeris is built from the ground up to be "Agent-First". This means:


    1. **High Information Density**: We provide comprehensive metadata to minimize the need for external lookup. 2. **Optimized Projections**: The `format=llm` parameter converts raw astronomical data into a structure that LLMs can reason about more effectively, reducing token usage while preserving interpretive nuance. 3. **Deterministic Contract**: API responses are versioned and strictly typed to ensure reliable tool-calling for AI agents. ### Output Modes (`format` parameter)


    Endpoints supporting enhanced formatting accept a `format` query parameter:


    - `format=json` (default): The full, raw response schema — every field the endpoint produces, in its complete nested form. Choose it when you need the whole object graph. It does not carry more numeric resolution than `format=llm`: most angular values are serialized as 32-bit floats in both, which quantizes them to at worst about 0.055 arcsec (the step grows with the angle — finest near 0°, coarsest approaching 360°). `format=json` returns more fields, not more decimal places. - `format=llm`: A token-optimized projection. It replaces complex nested objects with flattened, "punchy" descriptions that provide immediate context for an LLM (e.g., automatically including the sign name alongside the degree). ## Authentication


    Open Ephemeris supports several authentication modes:


    1. **JWT tokens (end users)** via Supabase:


    ```http

    Authorization: Bearer

    ```


    2. **User API keys (integrations)** via `X-OpenEphemeris-API-Key`, `X-API-Key`, or `Authorization: Bearer`:


    ```http

    X-OpenEphemeris-API-Key: opene-... ```

    or

    ```http

    Authorization: Bearer opene-... ```


    *Note: Use `X-OpenEphemeris-API-Key` if your infrastructure (e.g. AWS/Azure) intercepts the standard `X-API-Key` header.*


    3. **Service API keys (internal services)** via `X-Service-Key` header:


    ```http

    X-Service-Key:

    ```


    Valid service keys are intended for trusted internal services and

    bypass rate limits. User requests remain subject to tier-based

    rate limiting and usage metering. ## Supported Formats


    ### Coordinates

    - **Decimal degrees**: `40.7128, -74.0060`

    - **DMS strings**: `"40°42''46"N", "74°00''22"W"`

    - **Component objects**: `{"degrees": 40, "minutes": 42, "seconds": 46, "direction": "N"}`


    ### DateTime


    **A datetime that states a clock time must also state its zone.** A

    zone-less clock time is rejected with `400 ambiguous_datetime`; it is not

    assumed to be UTC. An unstated zone moves the Ascendant by roughly 15° per

    hour while every planet keeps its sign, so a guess would be a confident

    wrong answer.'
  title: Open Ephemeris Agricultural API
  version: 1.0.0
servers:
- description: Production
  url: https://api.openephemeris.com
tags:
- description: Work with the earth's rhythms. Biodynamic planting profiles and multi-day agricultural calendars. **1 unit per request.**
  name: agricultural
paths:
  /ephemeris/agro/calendar:
    get:
      description: 'Returns compact biodynamic summaries for a date range (max 31 days).


        Each day includes: day type, quality score, ascending status, void-of-course

        active flag, phase name, and illumination percentage. Designed for building

        monthly planning calendars.


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


        ```bash

        GET /ephemeris/agro/calendar?lat=-33.87&lon=151.21&start=2026-03-01&end=2026-03-31&tz=Australia/Sydney

        ```'
      operationId: get_agro_calendar_endpoint_ephemeris_agro_calendar_get
      parameters:
      - description: Observer latitude (WGS84, degrees)
        in: query
        name: lat
        required: true
        schema:
          description: Observer latitude (WGS84, degrees)
          maximum: 90
          minimum: -90
          title: Lat
          type: number
      - description: Observer longitude (WGS84, degrees)
        in: query
        name: lon
        required: true
        schema:
          description: Observer longitude (WGS84, degrees)
          maximum: 180
          minimum: -180
          title: Lon
          type: number
      - description: Start date as YYYY-MM-DD
        example: '2026-03-01'
        in: query
        name: start
        required: true
        schema:
          description: Start date as YYYY-MM-DD
          title: Start
          type: string
      - description: End date as YYYY-MM-DD (inclusive, max 31 days from start)
        example: '2026-03-31'
        in: query
        name: end
        required: true
        schema:
          description: End date as YYYY-MM-DD (inclusive, max 31 days from start)
          title: End
          type: string
      - description: 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.
        in: query
        name: elev
        required: false
        schema:
          default: 0
          description: 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.
          maximum: 8849
          minimum: 0
          title: Elev
          type: number
      - description: Output format
        in: query
        name: format
        required: false
        schema:
          default: json
          description: Output format
          pattern: ^(?i)(json|llm|llm)$
          title: Format
          type: string
      - in: header
        name: authorization
        required: false
        schema:
          title: Authorization
          type:
          - string
          - 'null'
      - in: header
        name: X-API-Key
        required: false
        schema:
          title: X-Api-Key
          type:
          - string
          - 'null'
      - in: header
        name: X-OpenEphemeris-API-Key
        required: false
        schema:
          title: X-OpenEphemeris-API-Key
          type:
          - string
          - 'null'
      - in: header
        name: apikey
        required: false
        schema:
          title: Apikey
          type:
          - string
          - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgroCalendarResponse'
          description: Successful Response
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app__api__models__schemas__system__ErrorResponse'
          description: Bad Request
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app__api__models__schemas__system__ErrorResponse'
          description: Internal Server Error
      security:
      - bearerAuth: []
      - meridianApiKeyAuth: []
      - apiKeyAuth: []
      - serviceKeyAuth: []
      summary: Biodynamic monthly calendar
      tags:
      - agricultural
      x-meridian-tier: Explorer
      x-meridian-units: 1
  /ephemeris/agro/daily:
    get:
      description: '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; agree with JPL Horizons to within about a minute)


        **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&timezone=Australia/Sydney

        ```'
      operationId: get_agro_daily_endpoint_ephemeris_agro_daily_get
      parameters:
      - description: Observer latitude (WGS84, degrees)
        in: query
        name: lat
        required: true
        schema:
          description: Observer latitude (WGS84, degrees)
          maximum: 90
          minimum: -90
          title: Lat
          type: number
      - description: Observer longitude (WGS84, degrees)
        in: query
        name: lon
        required: true
        schema:
          description: Observer longitude (WGS84, degrees)
          maximum: 180
          minimum: -180
          title: Lon
          type: number
      - description: Date as YYYY-MM-DD
        example: '2026-03-15'
        in: query
        name: date
        required: true
        schema:
          description: Date as YYYY-MM-DD
          title: Date
          type: string
      - description: 'IANA zone name, for example `Asia/Tokyo`. When given, the day is that zone''s civil day (midnight to midnight on its clock), so the times are the ones a local almanac lists for the date. When omitted, the day is the local mean solar day at the longitude: 24 hours starting at local mean midnight. The UTC day is never used; `day_basis` in the response says which applied. Without a zone, an event within about an hour of local midnight (mostly the Moon''s) can fall on the neighbouring civil date; send `timezone` for the exact civil day. It applies to the sunrise, sunset, moonrise and moonset in `horizon` only. Zone rules come from current tzdata, so dates before 1970 may differ from the clocks of the time.'
        example: Asia/Tokyo
        in: query
        name: timezone
        required: false
        schema:
          description: IANA zone name, for example `Asia/Tokyo`. Selects the civil day; omitted means the local mean solar day at the longitude.
          example: Asia/Tokyo
          title: Timezone
          type: string
      - description: 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.
        in: query
        name: elev
        required: false
        schema:
          default: 0
          description: 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.
          maximum: 8849
          minimum: 0
          title: Elev
          type: number
      - description: Output format
        in: query
        name: format
        required: false
        schema:
          default: json
          description: Output format
          pattern: ^(?i)(json|llm|llm)$
          title: Format
          type: string
      - in: header
        name: authorization
        required: false
        schema:
          title: Authorization
          type:
          - string
          - 'null'
      - in: header
        name: X-API-Key
        required: false
        schema:
          title: X-Api-Key
          type:
          - string
          - 'null'
      - in: header
        name: X-OpenEphemeris-API-Key
        required: false
        schema:
          title: X-OpenEphemeris-API-Key
          type:
          - string
          - 'null'
      - in: header
        name: apikey
        required: false
        schema:
          title: Apikey
          type:
          - string
          - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgroDailyResponse'
          description: Successful Response
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app__api__models__schemas__system__ErrorResponse'
          description: Bad Request
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app__api__models__schemas__system__ErrorResponse'
          description: Internal Server Error
      security:
      - bearerAuth: []
      - meridianApiKeyAuth: []
      - apiKeyAuth: []
      - serviceKeyAuth: []
      summary: Biodynamic daily profile
      tags:
      - agricultural
      x-meridian-tier: Explorer
      x-meridian-units: 1
  /ephemeris/agro/void-of-course:
    get:
      description: 'Returns the current Void of Course (VoC) Moon window for a given Julian Day.


        Method 3: scans backward from the Moon''s next sign ingress to find the last

        major Ptolemaic aspect (conjunction, sextile, square, trine, opposition) to

        a traditional planet. The VoC period runs from that aspect until the ingress.


        ```bash

        GET /ephemeris/agro/void-of-course?jd=2451545.0

        ```'
      operationId: get_void_of_course_endpoint_ephemeris_agro_void_of_course_get
      parameters:
      - description: Julian Day (UT1)
        example: 2451545
        in: query
        name: jd
        required: true
        schema:
          description: Julian Day (UT1)
          format: double
          title: Jd
          type: number
      - in: header
        name: authorization
        required: false
        schema:
          title: Authorization
          type:
          - string
          - 'null'
      - in: header
        name: X-API-Key
        required: false
        schema:
          title: X-Api-Key
          type:
          - string
          - 'null'
      - in: header
        name: X-OpenEphemeris-API-Key
        required: false
        schema:
          title: X-OpenEphemeris-API-Key
          type:
          - string
          - 'null'
      - in: header
        name: apikey
        required: false
        schema:
          title: Apikey
          type:
          - string
          - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoCData'
          description: Successful Response
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app__api__models__schemas__system__ErrorResponse'
          description: Bad Request
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app__api__models__schemas__system__ErrorResponse'
          description: Internal Server Error
      security:
      - bearerAuth: []
      - meridianApiKeyAuth: []
      - apiKeyAuth: []
      - serviceKeyAuth: []
      summary: Void of Course Moon
      tags:
      - agricultural
      x-meridian-tier: Explorer
      x-meridian-units: 1
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    AgroCalendarResponse:
      description: Multi-day calendar summary.
      properties:
        _meta:
          description: Calculation metadata
          title: ' Meta'
          type: object
        days:
          description: Daily biodynamic summaries
          items:
            $ref: '#/components/schemas/AgroCalendarDay'
          title: Days
          type: array
        observer:
          description: Observer location details
          title: Observer
          type: object
        range:
          additionalProperties:
            type: string
          description: Start and end dates of the calendar
          title: Range
          type: object
      required:
      - range
      - observer
      - days
      - _meta
      title: AgroCalendarResponse
      type: object
    AgroTidalData:
      properties:
        diurnal_inequality:
          description: Diurnal inequality value
          title: Diurnal Inequality
          type: number
        king_tide_risk:
          description: King tide risk score (0 to 1)
          title: King Tide Risk
          type: number
        perigee_proximity:
          description: Perigee proximity score (0 to 1)
          title: Perigee Proximity
          type: number
        spring_neap_index:
          description: Spring-neap index (-1 to +1)
          title: Spring Neap Index
          type: number
        syzygy_status:
          description: Syzygy status (e.g., 'spring', 'neap')
          title: Syzygy Status
          type: string
        total_forcing:
          description: Total tidal forcing score
          title: Total Forcing
          type: number
      required:
      - spring_neap_index
      - syzygy_status
      - diurnal_inequality
      - total_forcing
      - perigee_proximity
      - king_tide_risk
      title: AgroTidalData
      type: object
    ThunAnalysis:
      properties:
        ascending:
          description: True if Moon latitude is increasing
          title: Ascending
          type: boolean
        base_element:
          description: earth | water | air | fire
          title: Base Element
          type: string
        day_type:
          description: root | leaf | flower | fruit
          title: Day Type
          type: string
        favorable:
          items:
            type: string
          title: Favorable
          type: array
        lat_velocity:
          description: Latitude velocity in degrees per day
          title: Lat Velocity
          type: number
        modifiers:
          items:
            $ref: '#/components/schemas/ThunModifier'
          title: Modifiers
          type: array
        optimal:
          items:
            type: string
          title: Optimal
          type: array
        quality_score:
          description: Quality score from 0 to 100
          title: Quality Score
          type: integer
        unfavorable:
          items:
            type: string
          title: Unfavorable
          type: array
      required:
      - day_type
      - base_element
      - quality_score
      - ascending
      - lat_velocity
      title: ThunAnalysis
      type: object
    AgroCalendarDay:
      description: One day's compact entry in the calendar.
      properties:
        ascending:
          description: True if Moon latitude is increasing
          title: Ascending
          type: boolean
        date:
          description: Date in YYYY-MM-DD format
          title: Date
          type: string
        day_type:
          anyOf:
          - type: string
          description: root | leaf | flower | fruit
          title: Day Type
        error:
          anyOf:
          - type: string
          description: Error message if calculation failed
          title: Error
        illumination_pct:
          anyOf:
          - type: number
          description: Illumination percentage
          title: Illumination Pct
        phase_name:
          anyOf:
          - type: string
          description: Current moon phase name
          title: Phase Name
        quality_score:
          anyOf:
          - type: integer
          description: Quality score from 0 to 100
          title: Quality Score
        spring_neap_index:
          anyOf:
          - type: number
          description: Spring-neap index
          title: Spring Neap Index
        total_forcing:
          anyOf:
          - type: number
          description: Total tidal forcing score
          title: Total Forcing
        void_active:
          description: True if Void of Course is active during the day
          title: Void Active
          type: boolean
      required:
      - date
      - ascending
      - void_active
      title: AgroCalendarDay
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
      - loc
      - msg
      - type
      title: ValidationError
      type: object
    AgroLunarData:
      properties:
        ascending:
          description: True if ascending
          title: Ascending
          type: boolean
        distance_km:
          description: Distance from Earth in km
          title: Distance Km
          type: number
        illumination_pct:
          description: Illumination percentage 0-100
          title: Illumination Pct
          type: number
        lat_velocity:
          description: Latitude velocity
          title: Lat Velocity
          type: number
        latitude:
          description: Ecliptic latitude
          title: Latitude
          type: number
        node_lon:
          description: True node longitude
          title: Node Lon
          type: number
        phase_name:
          description: Current moon phase name
          title: Phase Name
          type: string
        sign_longitude:
          description: Longitude within the current sign (0-30)
          title: Sign Longitude
          type: number
        waxing:
          description: True if waxing
          title: Waxing
          type: boolean
      required:
      - sign_longitude
      - latitude
      - distance_km
      - ascending
      - lat_velocity
      - node_lon
      - phase_name
      - illumination_pct
      - waxing
      title: AgroLunarData
      type: object
    AgroDailyResponse:
      description: Full biodynamic daily profile.
      properties:
        _meta:
          description: Calculation metadata
          title: ' Meta'
          type: object
        date:
          description: Date in YYYY-MM-DD format
          title: Date
          type: string
        horizon:
          allOf:
          - $ref: '#/components/schemas/HorizonEvents'
          description: Sunrise/sunset and moonrise/moonset events
        lunar:
          allOf:
          - $ref: '#/components/schemas/AgroLunarData'
          description: Lunar data summary
        observer:
          description: Observer location details
          title: Observer
          type: object
        thun:
          allOf:
          - $ref: '#/components/schemas/ThunAnalysis'
          description: Thun biodynamic analysis
        tidal_forcing:
          $ref: '#/components/schemas/AgroTidalData'
          description: Tidal forcing metrics
        void_of_course:
          allOf:
          - $ref: '#/components/schemas/VoCData'
          description: Void of course Moon data
      required:
      - date
      - observer
      - lunar
      - thun
      - void_of_course
      - horizon
      - _meta
      title: AgroDailyResponse
      type: object
    HorizonEvents:
      properties:
        day_basis:
          description: 'Which day the four events belong to: `civil_tz` (the calendar date in `timezone`) or `local_solar` (the local mean solar day at the longitude). Never the UTC day.'
          title: Day Basis
          type: string
        moonrise:
          anyOf:
          - type: string
          description: ISO 8601 UTC moonrise time
          title: Moonrise
        moonset:
          anyOf:
          - type: string
          description: ISO 8601 UTC moonset time
          title: Moonset
        polar:
          description: True if location experiences polar day/night
          title: Polar
          type: boolean
        sunrise:
          anyOf:
          - type: string
          description: ISO 8601 UTC sunrise time
          title: Sunrise
        sunset:
          anyOf:
          - type: string
          description: ISO 8601 UTC sunset time
          title: Sunset
        timezone:
          description: The IANA zone whose civil day was used. Present only when the request named one.
          title: Timezone
          type: string
      required:
      - polar
      title: HorizonEvents
      type: object
    VoCData:
      properties:
        active:
          description: True if currently void of course
          title: Active
          type: boolean
        last_aspect:
          anyOf:
          - type: string
          description: Last major aspect before ingress
          title: Last Aspect
        last_aspect_jd:
          anyOf:
          - format: double
            type: number
          description: Julian Day of the last major aspect
          title: Last Aspect Jd
        moon_sign:
          description: Current moon sign
          title: Moon Sign
          type: string
        next_sign:
          description: Next moon sign
          title: Next Sign
          type: string
        void_end_jd:
          description: Void end Julian Day
          format: double
          title: Void End Jd
          type: number
        void_start_jd:
          description: Void start Julian Day
          format: double
          title: Void Start Jd
          type: number
      required:
      - active
      - void_start_jd
      - void_end_jd
      - moon_sign
      - next_sign
      title: VoCData
      type: object
    ThunModifier:
      properties:
        aspect:
          anyOf:
          - type: string
          description: Aspect name
          title: Aspect
        impact:
          description: Signed score delta
          title: Impact
          type: integer
        orb:
          anyOf:
          - type: number
          description: Orb in degrees
          title: Orb
        planet:
          anyOf:
          - type: string
          description: Planet name
          title: Planet
        source:
          description: Source of the modifier, e.g., 'saturn_opposition'
          title: Source
          type: string
      required:
      - source
      - impact
      title: ThunModifier
      type: object
    app__api__models__schemas__system__ErrorResponse:
      additionalProperties: false
      description: Standardized error response.
      properties:
        debug_info:
          anyOf:
          - type: object
          description: Debug information
          title: Debug Info
        details:
          anyOf:
          - type: object
          description: Additional error details
          title: Details
        error:
          description: Error type/category
          title: Error
          type: string
        message:
          description: Human-readable error message
          title: Message
          type: string
        request_id:
          anyOf:
          - type: string
          description: Request identifier
          title: Request Id
        success:
          default: false
          description: Always false for errors
          title: Success
          type: boolean
        timestamp:
          description: Error timestamp
          format: date-time
          title: Timestamp
          type: string
      required:
      - error
      - message
      - timestamp
      title: ErrorResponse
      type: object
  securitySchemes:
    apiKeyAuth:
      in: header
      name: X-API-Key
      type: apiKey
    bearerAuth:
      bearerFormat: JWT/API-Key
      scheme: bearer
      type: http
    meridianApiKeyAuth:
      in: header
      name: X-OpenEphemeris-API-Key
      type: apiKey
    serviceKeyAuth:
      in: header
      name: X-Service-Key
      type: apiKey