> ## 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.

# Uranian chart



## OpenAPI

````yaml /openapi.public.json post /api/v3/uranian/chart
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/uranian/chart:
    post:
      tags:
        - Uranian
      summary: Uranian chart
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UranianBaseRequest'
      responses:
        '200':
          description: Uranian chart with positions, midpoints, and planetary pictures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UranianChartResponse'
        '400':
          description: Validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          description: Tier locked — endpoint requires pro tier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonError'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    UranianBaseRequest:
      type: object
      required:
        - birth_date
        - birth_time
        - birth_lat
        - birth_lon
      properties:
        birth_date:
          type: string
          format: date
          example: '1990-05-15'
        birth_time:
          type: string
          pattern: ^\d{2}:\d{2}$
          example: '14:30'
        birth_lat:
          type: number
          minimum: -90
          maximum: 90
        birth_lon:
          type: number
          minimum: -180
          maximum: 180
        birth_place:
          type: string
          minLength: 1
          maxLength: 200
        dial_mode:
          type: number
          enum:
            - 90
            - 45
            - 22.5
          default: 90
        orb_max:
          type: number
          minimum: 0.25
          maximum: 3
          default: 1
    UranianChartResponse:
      type: object
      required:
        - birth_place
        - meta
        - positions
        - midpoints
        - planetary_pictures
      properties:
        birth_place:
          type:
            - string
            - 'null'
        meta:
          $ref: '#/components/schemas/UranianMeta'
        positions:
          type: array
          items:
            $ref: '#/components/schemas/UranianPosition'
          minItems: 22
          maxItems: 22
        midpoints:
          type: array
          items:
            $ref: '#/components/schemas/UranianMidpoint'
          minItems: 153
        planetary_pictures:
          type: array
          items:
            $ref: '#/components/schemas/UranianPlanetaryPicture'
    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.
    UranianMeta:
      type: object
      required:
        - dial_mode
        - orb_max
        - computed_at
      properties:
        dial_mode:
          type: number
          enum:
            - 90
            - 45
            - 22.5
        orb_max:
          type: number
        computed_at:
          type: string
          format: date-time
    UranianPosition:
      type: object
      required:
        - name
        - category
        - longitude
        - dial_position
        - is_hamburg
      properties:
        name:
          type: string
        category:
          type: string
          enum:
            - traditional
            - hamburg
            - personal_point
        longitude:
          type: number
          minimum: 0
          maximum: 360
        dial_position:
          type: number
        is_hamburg:
          type: boolean
    UranianMidpoint:
      type: object
      required:
        - pair
        - longitude
        - dial_position
      properties:
        pair:
          type: array
          prefixItems:
            - type: string
            - type: string
          minItems: 2
          maxItems: 2
        longitude:
          type: number
        dial_position:
          type: number
        interpretation_en:
          type: string
        interpretation_th:
          type: string
    UranianPlanetaryPicture:
      type: object
      required:
        - factors
        - dial_position
        - orb_total
        - interpretation_key
        - interpretation_en
        - interpretation_th
      properties:
        factors:
          type: array
          items:
            type: string
        dial_position:
          type: number
        orb_total:
          type: number
        interpretation_key:
          type: string
        interpretation_en:
          type: string
        interpretation_th:
          type: string
  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.

````