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

# HR talent assessment report



## OpenAPI

````yaml /openapi.public.json post /api/v3/reports/hr-screening
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/reports/hr-screening:
    post:
      tags:
        - Reports
      summary: HR talent assessment report
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - candidate
                - position
              properties:
                candidate:
                  type: object
                  required:
                    - birth_date
                    - timezoneOffsetMinutes
                  properties:
                    name:
                      type: string
                      minLength: 1
                      maxLength: 120
                    birth_date:
                      type: string
                      format: date
                      example: '1992-04-15'
                    birth_time:
                      type: string
                      pattern: ^\d{2}:\d{2}$
                      description: HH:MM. Default '12:00' if missing.
                    birth_day_of_week:
                      type: string
                      enum:
                        - sun
                        - mon
                        - tue
                        - wed
                        - thu
                        - fri
                        - sat
                        - rahu
                      description: >-
                        Optional. If missing, derived from birth_date civil
                        weekday.
                    timezoneOffsetMinutes:
                      type: integer
                      minimum: -840
                      maximum: 840
                      example: 420
                    latitude:
                      type: number
                      minimum: -90
                      maximum: 90
                      default: 13.7563
                    longitude:
                      type: number
                      minimum: -180
                      maximum: 180
                      default: 100.5018
                position:
                  type: string
                  minLength: 1
                  maxLength: 200
                  example: Senior Sales Manager
                company:
                  type: object
                  required:
                    - founding_date
                  properties:
                    founding_date:
                      type: string
                      format: date
                    industry:
                      type: string
                      maxLength: 120
                outlook_years:
                  type: integer
                  minimum: 1
                  maximum: 3
                  default: 1
                include_pdf:
                  type: boolean
                  default: false
                locale:
                  type: string
                  enum:
                    - th
                    - en
                  default: th
      responses:
        '200':
          description: >-
            Structured HR talent assessment, with both Thai + English narratives
            and an optional 24h signed pdf_url when include_pdf=true.
          content:
            application/json:
              schema:
                type: object
                required:
                  - request_id
                  - generated_at
                  - position
                  - candidate_summary
                  - bazi_profile
                  - thaksa_outlook
                  - company_fit
                  - position_match
                  - hr_narrative_th
                  - hr_narrative_en
                  - recommendation
                  - recommendation_score
                  - recommendation_factors_th
                  - recommendation_factors_en
                properties:
                  request_id:
                    type: string
                  generated_at:
                    type: string
                    format: date-time
                  position:
                    type: string
                  candidate_summary:
                    type: object
                  bazi_profile:
                    type: object
                  thaksa_outlook:
                    type: object
                  company_fit:
                    type:
                      - object
                      - 'null'
                  position_match:
                    type: object
                  hr_narrative_th:
                    type: string
                  hr_narrative_en:
                    type: string
                  recommendation:
                    type: string
                    enum:
                      - strong_hire
                      - consider
                      - caution
                      - not_recommended
                  recommendation_score:
                    type: integer
                    minimum: 0
                    maximum: 100
                  recommendation_factors_th:
                    type: string
                  recommendation_factors_en:
                    type: string
                  pdf_url:
                    type: string
                    format: uri
                  expires_at:
                    type: string
                    format: date-time
        '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'
        '503':
          description: >-
            Report pipeline temporarily unavailable (LLM provider, R2, or
            Chromium when include_pdf=true).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonError'
      security:
        - ApiKeyAuth: []
components:
  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...
  schemas:
    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.
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: Use the raw API key as the Bearer token, or send X-API-Key instead.

````