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

# Remove an image background

> Creates a new PNG asset with the main subject isolated on a transparent background, derived from a ready PNG, JPEG, WebP, GIF, or AVIF image of the same website. The source is unchanged; the result carries `sourceAssetId`, its own `colors` and `transparentShare`, the source category, and a description naming the source. Soft shadows and reflections are removed; `trim` crops to the subject bounds. Not billed to credits; limited to 10,000 per organization per calendar month. MCP clients that render images also receive the result.



## OpenAPI

````yaml /api-reference/openapi.json post /websiteAssets/{assetId}/removeBackground
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/{assetId}/removeBackground:
    post:
      tags:
        - Assets
      summary: Remove an image background
      description: >-
        Creates a new PNG asset with the main subject isolated on a transparent
        background, derived from a ready PNG, JPEG, WebP, GIF, or AVIF image of
        the same website. The source is unchanged; the result carries
        `sourceAssetId`, its own `colors` and `transparentShare`, the source
        category, and a description naming the source. Soft shadows and
        reflections are removed; `trim` crops to the subject bounds. Not billed
        to credits; limited to 10,000 per organization per calendar month. MCP
        clients that render images also receive the result.
      operationId: websiteAssets.removeBackground
      parameters:
        - name: assetId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                trim:
                  default: false
                  description: >-
                    Crop the result to the subject bounds instead of keeping the
                    source dimensions.
                  type: boolean
      responses:
        '200':
          description: The new transparent asset with its public CDN delivery URLs.
          content:
            application/json:
              schema:
                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`.
                  originalUrl:
                    type: string
                    description: >-
                      Stable public CDN URL for the original bytes. It never
                      expires.
                  previewUrl:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      For SVG images, the stable public CDN URL of a rasterized
                      PNG preview (longest edge 1024px) that image models, MCP
                      previews, and favicon fallbacks use. `null` for other
                      assets and for SVGs that could not be rendered.
                  srcSet:
                    anyOf:
                      - type: string
                      - type: 'null'
                    description: >-
                      Ready-to-use responsive image srcset. `null` when image
                      transformation is unavailable.
                  variants:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties:
                      type: string
                    description: >-
                      Optimized image URLs keyed by pixel width. Empty when
                      image transformation is unavailable.
                  createdAt:
                    description: When the upload was started.
                    type: string
                    format: date-time
                  status:
                    type: string
                    enum:
                      - pending
                      - ready
                    description: >-
                      `pending` until websiteAssets.finalize confirms the
                      upload; `ready` once the asset is servable.
                required:
                  - id
                  - kind
                  - filename
                  - mimeType
                  - description
                  - category
                  - byteSize
                  - width
                  - height
                  - colors
                  - transparentShare
                  - translucentShare
                  - sourceAssetId
                  - url
                  - originalUrl
                  - previewUrl
                  - srcSet
                  - variants
                  - createdAt
                  - status
                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.

````