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

# Harvest a page's images

> Harvest all images from a page with their metadata.



## OpenAPI

````yaml https://api.hydrafetch.com/openapi.json post /v1/web/images
openapi: 3.0.0
info:
  title: Hydrafetch API
  description: >-
    Hydrafetch is a web data API for LLMs and agents. Send a URL and get back
    clean Markdown, the page's own structured data, schema-shaped JSON, links,
    or a summary, with the navigation, banners and boilerplate stripped out.
    Scrape one page, crawl a whole site, run a search, or extract to a schema,
    all through one API with one response shape. Every call costs one credit a
    page whatever it took to fetch, and failures are never billed.


    Point us at a whole site and get every page. Ask a question and get answers
    with per-field

    confidence and the passage each value came from. You describe the outcome
    you want — the

    pipeline decides how to get it.


    ## Authentication


    Every request is authenticated with your API key in the `X-API-Key` header.
    Keys are scoped to a

    workspace and carry its credit balance.


    ## Credits


    Calls are billed in credits and charged only on success. A standard scrape
    is one credit; richer

    formats and the extraction tier cost more. Each response reports what it
    consumed.


    ## Conventions


    All timestamps are UTC ISO 8601. Long-running jobs (crawl, batch) return a
    job id you poll, or a

    webhook you register. Errors return a structured body with a stable `code`
    and an HTTP status.
  version: '1.0'
  contact:
    name: Hydrafetch
    url: https://hydrafetch.com
    email: support@hydrafetch.com
servers:
  - url: https://api.hydrafetch.com
    description: Production
security:
  - apiKey: []
tags:
  - name: Scrape
    description: >-
      Turn one URL into clean, LLM-ready content. Ask for Markdown, HTML, links,
      or the page’s own structured data, and poll a job id when a fetch runs
      long.
  - name: Crawl & batch
    description: >-
      Whole sites rather than single pages. Map every URL, crawl with depth and
      path rules, batch a list you already have, and read the webhook deliveries
      for either.
  - name: Search
    description: >-
      Search the web and get the ranked results back already scraped, so an
      agent has content to cite rather than links to fetch.
  - name: Extract
    description: >-
      Pull schema-shaped JSON out of one or many pages, with optional per-field
      confidence and the source passage behind each value.
  - name: Brand
    description: >-
      Resolve a domain into the company ready to render: logos for light and
      dark, the palette ranked by how the site uses it, fonts, socials, and the
      design system behind them.
  - name: Media
    description: >-
      Images and screenshots from a page, with source and alt text, or a
      rendered capture of the page as it appears.
paths:
  /v1/web/images:
    post:
      tags:
        - Media
      summary: Harvest a page's images
      description: Harvest all images from a page with their metadata.
      operationId: images
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImagesRequestDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImagesResponseDto'
components:
  schemas:
    ImagesRequestDto:
      type: object
      properties:
        url:
          type: string
          example: https://example.com
          description: The URL to harvest images from. Must be http(s).
        maxAge:
          type: number
          minimum: 0
          maximum: 604800000
          description: >-
            Serve from cache if a capture of this URL is younger than this many
            milliseconds. Omit for the default window; 0 always fetches fresh.
            Capped at 7 days.
      required:
        - url
    ImagesResponseDto:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/WebImagesDataDto'
      required:
        - data
    WebImagesDataDto:
      type: object
      properties:
        url:
          type: string
          example: https://example.com
          description: The URL you requested.
        finalUrl:
          type: string
          example: https://example.com/
          description: The final URL after any redirects.
        images:
          description: Every image found on the page, with its metadata.
          type: array
          items:
            $ref: '#/components/schemas/WebImageDto'
      required:
        - url
        - finalUrl
        - images
    WebImageDto:
      type: object
      properties:
        src:
          type: string
          example: https://example.com/logo.png
          description: The image URL, resolved to absolute.
        alt:
          type: object
          nullable: true
          example: Company logo
          description: The image alt text, if any.
        width:
          type: object
          nullable: true
          example: 320
          description: The image width in pixels, if declared.
        height:
          type: object
          nullable: true
          example: 240
          description: The image height in pixels, if declared.
      required:
        - src
        - alt
        - width
        - height
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key

````