Skills compress-image-to-target-size

Compress an image to fit within a specific file size in bytes using quality-first compression.

install
source · Clone the upstream repo
git clone https://github.com/iterationlayer/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/iterationlayer/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/compress-image-to-target-size" ~/.claude/skills/iterationlayer-skills-compress-image-to-target-size && rm -rf "$T"
manifest: skills/compress-image-to-target-size/SKILL.md
source content

Compress Image to Target File Size

Marketing teams and content platforms use this recipe to compress images for email attachments, CMS upload limits, or mobile app asset budgets. Specify a target file size in bytes and the API handles the quality-dimension tradeoff automatically.

APIs Used

Image Transformation (1 credits/request)

Prerequisites

You need an Iteration Layer API key. Get one at platform.iterationlayer.com — free trial credits included, no credit card required.

For full integration guidance (SDKs, auth, MCP, error handling), see the Iteration Layer Integration Guide.

Implementation

curl -X POST \
  https://api.iterationlayer.com/image-transformation/v1/transform \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file": {
      "type": "url",
      "name": "photo.jpg",
      "url": "https://cdn.example.com/uploads/photo.jpg"
    },
    "operations": [
      {
        "type": "compress_to_size",
        "max_file_size_in_bytes": 500000
      }
    ]
  }'
import { IterationLayer } from "iterationlayer";
const client = new IterationLayer({ apiKey: "YOUR_API_KEY" });

const result = await client.transform({
  file: {
    type: "url",
    name: "photo.jpg",
    url: "https://cdn.example.com/uploads/photo.jpg",
  },
  operations: [
    {
      type: "compress_to_size",
      max_file_size_in_bytes: 500_000,
    },
  ],
});
from iterationlayer import IterationLayer
client = IterationLayer(api_key="YOUR_API_KEY")

result = client.transform(
    file={
        "type": "url",
        "name": "photo.jpg",
        "url": "https://cdn.example.com/uploads/photo.jpg",
    },
    operations=[
        {
            "type": "compress_to_size",
            "max_file_size_in_bytes": 500_000,
        },
    ],
)
package main

import il "github.com/iterationlayer/sdk-go"

func main() {
	client := il.NewClient("YOUR_API_KEY")

	result, err := client.Transform(il.TransformRequest{
		File: il.NewFileFromURL(
			"photo.jpg",
			"https://cdn.example.com/uploads/photo.jpg",
		),
		Operations: []il.TransformOperation{
			il.NewCompressToSizeOperation(500_000),
		},
	})
	if err != nil {
		panic(err)
	}
}
{
  "name": "Compress Image to Target File Size",
  "nodes": [
    {
      "parameters": {
        "content": "## Compress Image to Target File Size

Marketing teams and content platforms use this recipe to compress images for email attachments, CMS upload limits, or mobile app asset budgets. Specify a target file size in bytes and the API handles the quality-dimension tradeoff automatically.

**Note:** This workflow uses the Iteration Layer community node (`n8n-nodes-iterationlayer`). Install it via Settings > Community Nodes before importing. Self-hosted n8n only.",
        "height": 280,
        "width": 500,
        "color": 2
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        200,
        40
      ],
      "id": "620f3f66-b3fe-48b4-a3a5-130a7ed310b4",
      "name": "Overview"
    },
    {
      "parameters": {
        "content": "### Step 1: Transform Image
Resource: **Image Transformation**

Configure the Image Transformation parameters below, then connect your credentials.",
        "height": 160,
        "width": 300,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        475,
        100
      ],
      "id": "a87d9afb-d1c2-4e2b-9fac-05039ee12b2a",
      "name": "Step 1 Note"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        250,
        300
      ],
      "id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",
      "name": "Manual Trigger"
    },
    {
      "parameters": {
        "resource": "imageTransformation",
        "fileInputMode": "url",
        "fileName": "photo.jpg",
        "fileUrl": "https://cdn.example.com/uploads/photo.jpg",
        "operations": {
          "operationValues": [
            {
              "operationType": "compress_to_size",
              "maxFileSizeInBytes": 500000
            }
          ]
        }
      },
      "type": "n8n-nodes-iterationlayer.iterationLayer",
      "typeVersion": 1,
      "position": [
        500,
        300
      ],
      "id": "e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8a9b",
      "name": "Transform Image",
      "credentials": {
        "iterationLayerApi": {
          "id": "1",
          "name": "Iteration Layer API"
        }
      }
    }
  ],
  "connections": {
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Transform Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}
Compress the image at [file URL] to fit within [max file size in bytes] bytes. Use the transform_image tool with a compress_to_size operation.

Response

{
  "success": true,
  "data": {
    "buffer": "/9j/4AAQSkZJRgABAQAAAQ...",
    "mime_type": "image/jpeg"
  }
}

Links