Monoize
Transforms

Image: compress request images

Re-encode and optionally resize base64 user images before upstream encoding.

What it does

This transform re-encodes base64 images in user messages and optionally resizes them to max_edge_px. Smaller payloads upload faster and can reduce image token cost.

With skip_if_smaller on (the default), an image keeps its original bytes when compression does not shrink it.

Reference

PropertyValue
Type IDimage_compress_input
Phaserequest
ScopesProvider, API key

When to use

  • Clients send large photos or screenshots and upstream requests hit size limits.
  • You want to cap image resolution for cost control.

Configuration

OptionTypeRequiredDefaultDescription
output_formatstringNo"original"original, jpg, jpegxl_lossless, jpegxl, webp_lossless, webp, or png.
max_edge_pxintegerNoMaximum width or height in pixels. Omit to keep the original dimensions.
jpeg_qualityintegerNo80Quality 1-100 for JPEG output.
jpegxl_qualityintegerNo90Quality 1-99 for lossy JPEG XL output.
jpegxl_effortintegerNo7JPEG XL encoding effort 1-10. Higher values compress more slowly.
webp_qualityintegerNo80Quality 1-100 for lossy WebP output.
skip_if_smallerbooleanNotrueKeep the original image when compression does not reduce the payload size.

Example rule

{
  "transform": "image_compress_input",
  "enabled": true,
  "phase": "request",
  "models": [
    "*"
  ],
  "config": {
    "output_format": "webp",
    "max_edge_px": 1568,
    "webp_quality": 80
  }
}

Set the environment variables MONOIZE_IMAGE_TRANSFORM_MAX_* to bound decode work. See Configuration.

On this page