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

# Poll an async report job



## OpenAPI

````yaml /openapi.public.json get /api/v3/jobs/{id}
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/jobs/{id}:
    get:
      tags:
        - Reports
      summary: Poll an async report job
      operationId: getReportJob
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: Job id returned by the enqueue response.
      responses:
        '200':
          description: >-
            Job status. `result` is present when status=succeeded; `error` and
            `credits_refunded` when status=failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    type: string
                  report_type:
                    type: string
                    examples:
                      - natal_pdf
                  status:
                    type: string
                    enum:
                      - queued
                      - running
                      - succeeded
                      - failed
                  created_at:
                    type: string
                    format: date-time
                  result:
                    type: object
                    properties:
                      url:
                        type: string
                      expires_at:
                        type: string
                  error:
                    type: string
                    description: >-
                      Safe, user-facing failure message (status=failed).
                      Internal error details are never exposed here.
                  credits_refunded:
                    type: integer
                  error_code:
                    type: string
                    enum:
                      - generation_interrupted
                      - invalid_job_payload
                      - unknown_report_type
                      - llm_unavailable
                      - pdf_failed
                      - job_failed
                    description: Stable machine-readable failure class (status=failed).
                required:
                  - job_id
                  - report_type
                  - status
        '404':
          description: Unknown job id, or the job belongs to a different API key.
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: Use the raw API key as the Bearer token, or send X-API-Key instead.

````