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

# List images

> List the site's Media Library images, newest first. Covers AI-generated, uploaded, OEM, reference, and social-variant assets. Each row is a full Image (alt text, AI metadata, prompts, dimensions, article link) but without variants — call GET /images/{imageId} for those. In-flight and failed AI generations are hidden unless status=generating or status=error is passed. Requires images:read.



## OpenAPI

````yaml /openapi.yaml get /images
openapi: 3.1.0
info:
  title: Hrizn Public API
  version: 1.2.0
  description: >
    The Hrizn Public API allows partners to programmatically create content,
    manage inventory descriptions, and integrate with the Hrizn platform.


    All endpoints are prefixed with `/public` and require an API key passed via
    the `X-API-Key` header (except the health check).
  contact:
    email: support@hrizn.io
servers:
  - url: https://api.app.hrizn.io/v1/public
    description: Production
security:
  - apiKeyAuth: []
tags:
  - name: Analytics
    description: >-
      Warehoused Google Search Console and GA4 reads (Teams+ API access,
      analytics:read). URL Inspection is live only on pages/performance.
  - name: IdeaClouds
    description: Create and manage AI-powered keyword research
  - name: Content Intelligence
    description: AI-powered content gap analysis and recommendations
  - name: Content
    description: Generate content from IdeaClouds
  - name: Compliance
    description: Run OEM compliance checks on content
  - name: Content Tools
    description: Generate SEO metadata, schemas, and social snippets
  - name: Inventory
    description: Access vehicle data and AI descriptions
  - name: Images
    description: >-
      Media Library images. Read the library (images:read): list and fetch
      images with alt text, AI-written title/caption/description, the generating
      prompt, dimensions, article links, and social variant cuts. Generate
      (images:write): async AI image generation returning an image_id;
      completion is delivered via image.generation.completed /
      image.generation.failed webhooks.
  - name: Market
    description: >-
      Live local market listings, days supply, competitive set, and pricing
      insights (Unlimited plan + market_data:read)
  - name: Site
    description: View dealership details and configuration
  - name: Webhooks
    description: Manage webhook subscriptions for real-time events
  - name: Reference
    description: Look up available types, scopes, and events
  - name: Social
    description: >-
      Social Hub posting and reviews across all connected platforms (X,
      Facebook, Instagram, LinkedIn, Google Business Profile)
  - name: Health
    description: Health check (no authentication)
paths:
  /images:
    get:
      tags:
        - Images
      summary: List images
      description: >-
        List the site's Media Library images, newest first. Covers AI-generated,
        uploaded, OEM, reference, and social-variant assets. Each row is a full
        Image (alt text, AI metadata, prompts, dimensions, article link) but
        without variants — call GET /images/{imageId} for those. In-flight and
        failed AI generations are hidden unless status=generating or
        status=error is passed. Requires images:read.
      operationId: listImages
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - name: source
          in: query
          schema:
            type: string
            enum:
              - ai
              - upload
              - oem
              - reference
              - social_variant
          description: Restrict to one asset source.
        - name: status
          in: query
          schema:
            type: string
            enum:
              - generating
              - complete
              - error
          description: >-
            Generation status. Omit for finished images; generating or error
            surfaces placeholder rows for in-flight or failed AI generations.
        - name: article_id
          in: query
          schema:
            type: string
            format: uuid
          description: Only images attached to this content item.
        - name: tag
          in: query
          schema:
            type: string
          description: Only images carrying this tag.
        - name: query
          in: query
          schema:
            type: string
          description: Substring match on alt text, title, and description.
      responses:
        '200':
          description: Paginated list of images
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    Limit:
      name: limit
      in: query
      schema:
        type: integer
        default: 25
        minimum: 1
        maximum: 100
      description: Number of results per page
    Cursor:
      name: cursor
      in: query
      schema:
        type: string
      description: Base64-encoded pagination cursor
  schemas:
    ImageListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    Image:
      type: object
      description: >-
        A Media Library image. The first five fields form the async-generation
        poll contract and are always present; the rest describe the finished
        asset.
      properties:
        image_id:
          type: string
          format: uuid
        generation_id:
          type: string
          format: uuid
          nullable: true
        status:
          type: string
          enum:
            - generating
            - complete
            - error
        image_url:
          type: string
          nullable: true
          description: Public asset URL once status is complete.
        error:
          type: string
          nullable: true
        source:
          type: string
          nullable: true
          enum:
            - ai
            - upload
            - oem
            - reference
            - social_variant
        alt_text:
          type: string
          nullable: true
          description: >-
            Accessibility text. AI images receive an AI-written value after
            generation.
        title:
          type: string
          nullable: true
        caption:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
        width:
          type: integer
          nullable: true
        height:
          type: integer
          nullable: true
        aspect_ratio:
          type: string
          nullable: true
          example: '16:9'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
          nullable: true
        generated_at:
          type: string
          format: date-time
          nullable: true
          description: When the AI render finished (AI images only).
        generation:
          type: object
          nullable: true
          description: Present for AI-generated images.
          properties:
            prompt:
              type: string
              nullable: true
              description: The creative prompt supplied by the caller.
            generation_prompt:
              type: string
              nullable: true
              description: The expanded prompt Hrizn sent to the model.
            disclaimer:
              type: string
              nullable: true
              description: E-E-A-T disclaimer to display alongside the image.
        article_id:
          type: string
          format: uuid
          nullable: true
          description: Content item this image is attached to, if any.
        parent_image_id:
          type: string
          format: uuid
          nullable: true
          description: Set when this image is itself a social variant of another image.
        variants:
          type: array
          description: Social variant cuts of this image. Empty on list rows.
          items:
            $ref: '#/components/schemas/ImageVariant'
    PaginationInfo:
      type: object
      properties:
        has_more:
          type: boolean
        next_cursor:
          type: string
          nullable: true
        total_count:
          type: integer
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: validation_error
            message:
              type: string
              example: 'keyword: Required'
            details:
              type: object
            request_id:
              type: string
    ImageVariant:
      type: object
      description: A social-platform cut generated from a parent image.
      properties:
        image_id:
          type: string
          format: uuid
          description: The variant's own Media Library asset id.
        preset_key:
          type: string
          description: >-
            Social preset key (igFeedSquare, igFeedPortrait, story, xLandscape,
            linkedinWide).
        preset_label:
          type: string
          nullable: true
        width:
          type: integer
          nullable: true
        height:
          type: integer
          nullable: true
        aspect_ratio:
          type: string
          nullable: true
          example: '1:1'
        image_url:
          type: string
          nullable: true
        status:
          type: string
          enum:
            - generating
            - complete
            - error
  responses:
    BadRequest:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: API key lacks required scope
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your Hrizn API key (prefix hzk_)

````