> ## Documentation Index
> Fetch the complete documentation index at: https://docs.astrom8.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Korean Saju chart



## OpenAPI

````yaml /openapi.public.json post /api/v3/korean/saju
openapi: 3.1.0
info:
  title: AstroM8 Public API
  version: 1.1.0
  description: >-
    Astrology calculations, reports, customer delivery, and enterprise
    workflows. Each operation declares whether it uses an API key or a customer
    session bearer token.
servers:
  - url: https://api.astrom8.com
    description: Production
security: []
tags:
  - name: Western
    description: Natal, relationship, return, progression, and transit calculations.
  - name: Vedic
    description: Lahiri sidereal Vedic calculations, matching, timing, and remedies.
  - name: Thai Astrology
    description: Thai calendar, auspicious timing, lunar, festival, and wheel tools.
  - name: Chinese & Korean
    description: BaZi, Qi Men Dun Jia, and Saju calculations.
  - name: Horoscopes
    description: Published daily and range horoscope content.
  - name: Reports
    description: Branded report generation and asynchronous job polling.
  - name: Tarot & Numerology
    description: Tarot spreads and Pythagorean numerology.
  - name: Uranian
    description: Uranian charts, midpoints, and planetary pictures.
  - name: Developer workflow
    description: Preflight capability eligibility and credit estimates.
  - name: Customer reports
    description: Session-authenticated report jobs and reusable brand profiles.
  - name: Customer delivery
    description: Session-authenticated webhooks and scheduled horoscope delivery.
  - name: Cultural Intelligence
    description: >-
      Enterprise API-key workflows for encrypted profiles, teams, and campaign
      content.
paths:
  /api/v3/korean/saju:
    post:
      tags:
        - Chinese & Korean
      summary: Korean Saju chart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SajuRequest'
      responses:
        '200':
          description: Korean Saju report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SajuResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    SajuRequest:
      allOf:
        - $ref: '#/components/schemas/BirthSubjectInput'
        - type: object
          properties:
            locale:
              type: string
              minLength: 2
              maxLength: 24
              examples:
                - th
            focus:
              type: string
              enum:
                - general
                - love
                - career
                - wealth
              default: general
            question:
              type: string
              minLength: 1
              maxLength: 1000
            gender:
              type: string
              enum:
                - male
                - female
                - unknown
              default: unknown
              description: >-
                For major luck (대운) direction: male+Yang year → forward,
                male+Yin → backward; female is the opposite. When unknown,
                direction defaults to forward with direction_assumed_default on
                the response.
            annual_luck_years_before:
              type: integer
              minimum: 0
              maximum: 80
              description: >-
                How many civil calendar years before the birth UTC calendar year
                to include in annual_luck (流年). Default 5; total row count
                capped at 121 years.
            annual_luck_years_after:
              type: integer
              minimum: 0
              maximum: 80
              description: Civil years after birth UTC year in annual_luck. Default 20.
    SajuResponse:
      type: object
      required:
        - system
        - pillars
        - day_master
        - five_elements
        - hidden_stems
        - branch_interactions
        - ten_gods
        - major_luck
        - annual_luck
        - focus
        - question
        - reading_summary
      properties:
        system:
          type: string
          const: korean_saju
        pillars:
          type: object
          required:
            - year
            - month
            - day
            - hour
          properties:
            year:
              $ref: '#/components/schemas/SajuPillar'
            month:
              $ref: '#/components/schemas/SajuPillar'
            day:
              $ref: '#/components/schemas/SajuPillar'
            hour:
              $ref: '#/components/schemas/SajuPillar'
        day_master:
          type: object
          required:
            - stem
            - element
            - polarity
            - korean
            - strength
          properties:
            stem:
              type: string
            element:
              type: string
              enum:
                - Wood
                - Fire
                - Earth
                - Metal
                - Water
            polarity:
              type: string
              enum:
                - Yin
                - Yang
            korean:
              type: string
              const: 일간
            strength:
              type: string
              enum:
                - weak
                - balanced
                - strong
        five_elements:
          type: object
          required:
            - counts
            - balance
          properties:
            counts:
              type: object
              additionalProperties:
                type: integer
                minimum: 0
            balance:
              type: object
              required:
                - strongest
                - missing
                - favorable
              properties:
                strongest:
                  type: array
                  items:
                    type: string
                missing:
                  type: array
                  items:
                    type: string
                favorable:
                  type: string
        hidden_stems:
          type: object
          required:
            - year
            - month
            - day
            - hour
          properties:
            year:
              type: array
              items:
                $ref: '#/components/schemas/SajuHiddenStem'
            month:
              type: array
              items:
                $ref: '#/components/schemas/SajuHiddenStem'
            day:
              type: array
              items:
                $ref: '#/components/schemas/SajuHiddenStem'
            hour:
              type: array
              items:
                $ref: '#/components/schemas/SajuHiddenStem'
        branch_interactions:
          type: array
          items:
            $ref: '#/components/schemas/SajuBranchInteraction'
        ten_gods:
          type: object
          required:
            - year_stem
            - month_stem
            - day_stem
            - hour_stem
          properties:
            year_stem:
              $ref: '#/components/schemas/SajuTenGod'
            month_stem:
              $ref: '#/components/schemas/SajuTenGod'
            day_stem:
              $ref: '#/components/schemas/SajuTenGod'
            hour_stem:
              $ref: '#/components/schemas/SajuTenGod'
        major_luck:
          $ref: '#/components/schemas/SajuMajorLuck'
        annual_luck:
          $ref: '#/components/schemas/SajuAnnualLuck'
        focus:
          type: string
          enum:
            - general
            - love
            - career
            - wealth
        question:
          type:
            - string
            - 'null'
        reading_summary:
          type: string
          minLength: 1
    BirthSubjectInput:
      type: object
      required:
        - date
        - time
        - latitude
        - longitude
        - timezoneOffsetMinutes
      properties:
        ayanamsa:
          type: string
          enum:
            - lahiri
          default: lahiri
        date:
          type: string
          format: date
          examples:
            - '1992-04-15'
        time:
          type: string
          pattern: ^\d{2}:\d{2}(:\d{2})?$
          examples:
            - '08:30:00'
        latitude:
          type: number
          minimum: -90
          maximum: 90
        longitude:
          type: number
          minimum: -180
          maximum: 180
        timezoneOffsetMinutes:
          type: integer
          minimum: -840
          maximum: 840
    SajuPillar:
      type: object
      required:
        - stem
        - branch
        - stem_en
        - branch_en
        - animal
        - stem_element
        - branch_element
      properties:
        stem:
          type: string
        branch:
          type: string
        stem_en:
          type: string
        branch_en:
          type: string
        animal:
          type: string
        stem_element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
        branch_element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
    SajuHiddenStem:
      type: object
      required:
        - stem
        - element
      properties:
        stem:
          type: string
        element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
    SajuBranchInteraction:
      type: object
      required:
        - type
        - korean
        - branches
        - pillars
        - description
      properties:
        type:
          type: string
          enum:
            - clash
            - combination
        korean:
          type: string
          enum:
            - 충
            - 육합
        branches:
          type: array
          items:
            type: string
          minItems: 2
          maxItems: 2
        pillars:
          type: array
          items:
            type: string
            enum:
              - year
              - month
              - day
              - hour
          minItems: 2
          maxItems: 2
        description:
          type: string
    SajuTenGod:
      type: object
      required:
        - name
        - korean
        - relation
      properties:
        name:
          type: string
        korean:
          type: string
        relation:
          type: string
    SajuMajorLuck:
      type: object
      required:
        - direction
        - direction_korean
        - gender_input
        - direction_assumed_default
        - approximate_timescale_note
        - periods
      properties:
        direction:
          type: string
          enum:
            - forward
            - backward
        direction_korean:
          type: string
          enum:
            - 순행
            - 역행
        gender_input:
          type: string
          enum:
            - male
            - female
            - unknown
        direction_assumed_default:
          type: boolean
        approximate_timescale_note:
          type: string
        periods:
          type: array
          items:
            $ref: '#/components/schemas/SajuMajorLuckPeriod'
          minItems: 8
          maxItems: 8
    SajuAnnualLuck:
      type: object
      required:
        - anchor_civil_year_utc
        - years_before
        - years_after
        - approximate_calendar_note
        - years
      properties:
        anchor_civil_year_utc:
          type: integer
          description: UTC calendar year of the normalized birth instant
        years_before:
          type: integer
          minimum: 0
          maximum: 80
        years_after:
          type: integer
          minimum: 0
          maximum: 80
        approximate_calendar_note:
          type: string
        years:
          type: array
          items:
            $ref: '#/components/schemas/SajuAnnualYear'
          minItems: 1
          maxItems: 121
    JsonError:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: >-
            Stable slug (e.g. unauthorized, payment_required,
            internal_server_error).
        message:
          type: string
          description: Human-readable message safe for clients.
        code:
          type: string
          description: Optional provider-specific code.
        request_id:
          type: string
          description: Correlation id when middleware sets it.
    SajuMajorLuckPeriod:
      type: object
      required:
        - index
        - stem
        - branch
        - stem_en
        - branch_en
        - animal
        - stem_element
        - branch_element
        - hidden_stems
        - stem_ten_god
        - approximate_start_utc
        - approximate_end_utc_exclusive
      properties:
        index:
          type: integer
          minimum: 0
        stem:
          type: string
        branch:
          type: string
        stem_en:
          type: string
        branch_en:
          type: string
        animal:
          type: string
        stem_element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
        branch_element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
        hidden_stems:
          type: array
          items:
            $ref: '#/components/schemas/SajuHiddenStem'
        stem_ten_god:
          $ref: '#/components/schemas/SajuTenGod'
        approximate_start_utc:
          type: string
          format: date-time
        approximate_end_utc_exclusive:
          type: string
          format: date-time
    SajuAnnualYear:
      type: object
      required:
        - civil_year
        - stem
        - branch
        - stem_en
        - branch_en
        - animal
        - stem_element
        - branch_element
        - hidden_stems
        - stem_ten_god
      properties:
        civil_year:
          type: integer
        stem:
          type: string
        branch:
          type: string
        stem_en:
          type: string
        branch_en:
          type: string
        animal:
          type: string
        stem_element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
        branch_element:
          type: string
          enum:
            - Wood
            - Fire
            - Earth
            - Metal
            - Water
        hidden_stems:
          type: array
          items:
            $ref: '#/components/schemas/SajuHiddenStem'
        stem_ten_god:
          $ref: '#/components/schemas/SajuTenGod'
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JsonError'
          example:
            error: unauthorized
            message: Invalid API key
            code: '401'
            request_id: 01HQXYZ...
    PaymentRequired:
      description: >-
        Insufficient credits (checked before work where applicable; deduction is
        atomic)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JsonError'
          example:
            error: payment_required
            message: Insufficient credits for this request
            code: '402'
            request_id: 01HQXYZ...
    InternalError:
      description: Unexpected failure — body omits stack traces; check logs with request_id
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/JsonError'
          example:
            error: internal_server_error
            message: Could not compute Panchang.
            code: internal
            request_id: 01HQXYZ...
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: Use the raw API key as the Bearer token, or send X-API-Key instead.

````