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

# List or search assets

> Returns ready assets newest first as compact rows (`description`, `category`, dimensions, `url`, `srcSet`); fetch one asset for `originalUrl` and `variants`. Filter by `kind`, `category`, `type` (the broad MIME family: image, video, audio, font, or document), or `search`, which prefix-matches each term against the filename, description, and category; every term must match, else any term. Page size defaults to 50 (max 100).



## OpenAPI

````yaml /api-reference/openapi.json get /websiteAssets
openapi: 3.1.0
info:
  title: Cactal API
  version: 1.0.0
  description: >-
    The Cactal public API. Create, edit, publish, and operate websites
    programmatically. Authenticate every request with an API key sent as
    `Authorization: Bearer <key>`.
servers:
  - url: https://api.cactal.ai/v1
security:
  - apiKey: []
tags:
  - name: Documentation
    description: >-
      Search and read the Cactal product documentation for concepts, guides,
      agent workflows, platform behavior, and API operations.
  - name: Feedback
    description: >-
      Submit free-form product feedback from users and agents to the Cactal
      feedback inbox.
  - name: Websites
    description: >-
      Create and manage websites — the top-level resource that owns source code,
      content, assets, domains, and analytics.
  - name: Website editors
    description: >-
      Grant, list, and revoke website-scoped editor access, and invite
      collaborators to a single website by email.
  - name: API keys
    description: >-
      Create, scope, rotate, and revoke the API keys that authenticate
      programmatic and agent access.
  - name: Source code
    description: >-
      Read and edit the framework source files of a website draft. Mutations
      require an edit lease.
  - name: Publishing
    description: Validate, build, publish, and roll back website versions.
  - name: CMS collections
    description: >-
      Define the content model: collections of structured content owned by a
      website.
  - name: CMS fields
    description: Manage the typed fields that make up a collection schema.
  - name: CMS items
    description: >-
      Create, query, publish, and organize the content entries inside a
      collection.
  - name: Domains
    description: >-
      Manage platform subdomains and custom domains, including DNS verification
      and the primary domain.
  - name: Assets
    description: Upload and manage website files and images served from the Cactal CDN.
  - name: Media generation
    description: >-
      Generate reference-guided website images that are stored as ordinary
      Cactal CDN assets.
  - name: Project Context
    description: >-
      Upload private durable reference material that the website agent can
      search, read, and inspect.
  - name: Analytics
    description: >-
      Read first-party traffic analytics for a website and export datasets as
      CSV.
  - name: Organizations
    description: Manage organizations, members, and organization-wide invitations.
  - name: Audit log
    description: >-
      Read the immutable record of actions performed in an organization by users
      and API keys.
  - name: Billing
    description: >-
      Read billing state and manage plans, site capacity, and prepaid usage
      balance. Every billing operation requires the organization owner role,
      which API keys cannot hold — today these operations are performed from the
      dashboard, return 403 for API-key callers, and are hidden from MCP tool
      lists.
paths:
  /websiteAssets:
    get:
      tags:
        - Assets
      summary: List or search assets
      description: >-
        Returns ready assets newest first as compact rows (`description`,
        `category`, dimensions, `url`, `srcSet`); fetch one asset for
        `originalUrl` and `variants`. Filter by `kind`, `category`, `type` (the
        broad MIME family: image, video, audio, font, or document), or `search`,
        which prefix-matches each term against the filename, description, and
        category; every term must match, else any term. Page size defaults to 50
        (max 100).
      operationId: websiteAssets.list
      parameters:
        - name: websiteId
          in: query
          required: true
          schema:
            type: string
            minLength: 1
        - name: kind
          in: query
          required: false
          schema:
            type: string
            enum:
              - image
              - file
        - name: category
          in: query
          required: false
          schema:
            description: Only images with this category.
            type: string
            enum:
              - logo
              - icon
              - photo
              - illustration
              - screenshot
              - graphic
              - background
              - other
        - name: type
          in: query
          required: false
          schema:
            description: >-
              Broad file type derived from the MIME type: image, video, audio,
              font, or document (everything else). Combines with kind, category,
              and search.
            type: string
            enum:
              - image
              - video
              - audio
              - font
              - document
        - name: search
          in: query
          required: false
          schema:
            description: >-
              Matches filename, description, and category; each term matches as
              a prefix.
            type: string
            minLength: 1
            maxLength: 200
        - name: cursor
          in: query
          required: false
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            default: 50
            type: integer
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: One page of ready assets, newest first.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: >-
                            Unique asset id. Pass it to websiteAssets.get and
                            websiteAssets.delete.
                        kind:
                          type: string
                          enum:
                            - image
                            - file
                          description: >-
                            Asset kind. Each kind has its own MIME allowlist and
                            size limit.
                        filename:
                          type: string
                          description: >-
                            Original filename supplied at upload (1–255
                            characters).
                        mimeType:
                          type: string
                          description: >-
                            MIME type stored for the asset after upload
                            normalization.
                        description:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            One-line description supplied at upload, edited
                            later, or generated for dashboard uploads. `null`
                            when absent.
                        category:
                          anyOf:
                            - type: string
                              enum:
                                - logo
                                - icon
                                - photo
                                - illustration
                                - screenshot
                                - graphic
                                - background
                                - other
                            - type: 'null'
                          description: >-
                            Image category: logo, icon, photo, illustration,
                            screenshot, graphic, background, or other. `null`
                            for files and unclassified images.
                        byteSize:
                          type: integer
                          description: Exact file size in bytes.
                        width:
                          anyOf:
                            - type: integer
                            - type: 'null'
                          description: >-
                            Intrinsic pixel width, recorded at finalize for
                            images. `null` for non-images and formats whose
                            dimensions cannot be read.
                        height:
                          anyOf:
                            - type: integer
                            - type: 'null'
                          description: Intrinsic pixel height; see `width`.
                        colors:
                          anyOf:
                            - maxItems: 8
                              type: array
                              items:
                                type: object
                                properties:
                                  hex:
                                    type: string
                                    description: Uppercase sRGB hex, exact for flat colors.
                                  share:
                                    anyOf:
                                      - type: number
                                        minimum: 0
                                        maximum: 1
                                      - type: 'null'
                                    description: >-
                                      Fraction of opaque pixels this color and
                                      its anti-aliasing cover. `null` for SVG,
                                      whose colors are read from the source
                                      instead of rendered.
                                  accent:
                                    type: boolean
                                    description: >-
                                      Saturated enough to matter as an accent
                                      even at a small share.
                                required:
                                  - hex
                                  - share
                                  - accent
                                additionalProperties: false
                              description: >-
                                Up to 8 representative colors sorted by share.
                                `null` for files and for images that could not
                                be analyzed.
                            - type: 'null'
                        transparentShare:
                          anyOf:
                            - type: number
                              minimum: 0
                              maximum: 1
                            - type: 'null'
                          description: >-
                            Fraction of the backdrop that shows through,
                            weighting each pixel by its transparency: 0 for an
                            opaque image, roughly the background area for a
                            cutout, 0.5 for a uniform 50% overlay. `null` when
                            unknown.
                        translucentShare:
                          anyOf:
                            - type: number
                              minimum: 0
                              maximum: 1
                            - type: 'null'
                          description: >-
                            Fraction of pixels with partial alpha (soft shadows,
                            glows, fades, glass), excluding fully transparent
                            and fully opaque pixels. `null` when unknown.
                        sourceAssetId:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            For a background-removed image, the id of the asset
                            it was derived from.
                        url:
                          type: string
                          description: >-
                            Optimized public CDN URL for display. Transformable
                            images use the 1920px default variant; other assets
                            use `originalUrl`.
                        srcSet:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Ready-to-use responsive image srcset. `null` when
                            image transformation is unavailable.
                        createdAt:
                          description: When the upload was started.
                          type: string
                          format: date-time
                      required:
                        - id
                        - kind
                        - filename
                        - mimeType
                        - description
                        - category
                        - byteSize
                        - width
                        - height
                        - colors
                        - transparentShare
                        - translucentShare
                        - sourceAssetId
                        - url
                        - srcSet
                        - createdAt
                      additionalProperties: false
                  nextCursor:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      Opaque cursor for the next page. Pass it as the `cursor`
                      parameter on the next request. `null` when this is the
                      last page.
                required:
                  - items
                  - nextCursor
                additionalProperties: false
        '400':
          description: >-
            Validation failed. The response `message` names the first invalid
            field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '401':
          description: Missing, invalid, expired, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '403':
          description: The authenticated principal lacks the required capability.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '404':
          description: >-
            The resource does not exist or is outside the principal’s access
            scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '429':
          description: >-
            Rate limit exceeded. Retry after the number of seconds in the
            `Retry-After` header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
components:
  schemas:
    ServiceError:
      type: object
      required:
        - kind
        - message
      description: >-
        Canonical error body returned by every non-2xx response. Extra fields
        carry error-specific details.
      properties:
        kind:
          type: string
          enum:
            - validation
            - unauthorized
            - forbidden
            - not_found
            - conflict
            - rate_limited
            - internal
          description: Stable, machine-readable error category.
        message:
          type: string
          description: Human-readable explanation of the failure.
        suggestion:
          type: string
          description: >-
            What to do next when the failure has a known fix; may name the exact
            operation to call.
        validValues:
          type: array
          items:
            type: string
          description: The acceptable values for the failing field, when the set is closed.
      additionalProperties: true
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        Cactal API key. Create one in the dashboard or via `POST /apiKeys`. The
        plaintext key is shown once at creation.

````