# Pixelcut Product Photo image to image

Needs image url. Served by fal.ai.

Pixelcut Product Photo, served by fal.ai. $0.024 per images One submitted item is offered per call; the exact receipt determines the final charge. Asynchronous: returns a request_id; poll fal/status and fetch fal/result with model "pixelcut/product-photo" and that request_id. The exact endpoint/request billing receipt is required before settlement.

- Tool ID: `fal/pixelcut-product-photo`
- Name in the catalog: Pixelcut Product Photo, image to image
- Provider: [fal.ai](/providers/fal.md)
- Capability: [AI image generation](/tools/image-generation.md)
- Price: $0.024 per call
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

The provider’s price, with no markup. Billed for measured usage.


```json
{
  "model": "per_call",
  "amountUsd": 0.024
}
```

Pricing source: [https://fal.ai/models/pixelcut/product-photo/llms.txt](https://fal.ai/models/pixelcut/product-photo/llms.txt). $0.024 per images One submitted item is offered per call; the exact receipt determines the final charge..

Price verification date: 2026-11-03.

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "image_url": {
      "title": "Image Url",
      "type": "string",
      "description": "URL of the product image to be processed."
    },
    "shadow": {
      "x-fal-order-properties": [
        "type",
        "generative",
        "drop"
      ],
      "title": "Shadow",
      "type": "object",
      "description": "Shadow control: leave `type` unset for no shadow, or select 'generative' (AI) or\n'drop' (deterministic); set its params in the matching nested object.",
      "properties": {
        "generative": {
          "x-fal-order-properties": [
            "opacity",
            "light_source"
          ],
          "title": "GenerativeShadow",
          "type": "object",
          "description": "Params for the generative AI shadow (used when shadow.type = 'generative').",
          "properties": {
            "light_source": {
              "anyOf": [
                {
                  "x-fal-order-properties": [
                    "size",
                    "position"
                  ],
                  "title": "ShadowLightSource",
                  "type": "object",
                  "properties": {
                    "size": {
                      "title": "Size",
                      "anyOf": [
                        {
                          "maximum": 1,
                          "minimum": 0,
                          "type": "number"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Apparent emitter size/softness. Higher = softer penumbra. Leave unset to auto-estimate the light from the image."
                    },
                    "position": {
                      "x-fal-order-properties": [
                        "x",
                        "y",
                        "z"
                      ],
                      "title": "ShadowLightSourcePosition",
                      "type": "object",
                      "properties": {
                        "x": {
                          "title": "X",
                          "anyOf": [
                            {
                              "maximum": 1,
                              "minimum": -1,
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Horizontal light position, normalized to image center (-1 to 1). Leave unset to auto-estimate the light from the image."
                        },
                        "y": {
                          "title": "Y",
                          "anyOf": [
                            {
                              "maximum": 1,
                              "minimum": -1,
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Vertical light position, normalized to image center (-1 to 1). Leave unset to auto-estimate the light from the image."
                        },
                        "z": {
                          "title": "Z",
                          "anyOf": [
                            {
                              "maximum": 2,
                              "minimum": 0,
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Height above subject (0 to 2). Leave unset to auto-estimate the light from the image."
                        }
                      }
                    }
                  }
                },
                {
                  "type": "null"
                }
              ],
              "description": "Virtual light used to synthesize the shadow. When omitted, the light direction is estimated from the image."
            },
            "opacity": {
              "maximum": 1,
              "minimum": 0,
              "type": "number",
              "default": 0.2,
              "description": "Final composited shadow opacity (0–1).",
              "title": "Opacity"
            }
          }
        },
        "drop": {
          "x-fal-order-properties": [
            "color",
            "horizontal",
            "vertical",
            "blur",
            "opacity"
          ],
          "title": "DropShadow",
          "type": "object",
          "description": "Params for the deterministic drop shadow (used when shadow.type = 'drop'),\nmirroring the web editor's drop shadow (offset + blur + color + opacity).",
          "properties": {
            "horizontal": {
              "maximum": 100,
              "minimum": -100,
              "type": "number",
              "default": 50,
              "description": "Horizontal shadow offset strength (-100 to 100). Positive moves the shadow right, negative moves it left. 100 is the maximum offset, 10% of the canvas width.",
              "title": "Horizontal"
            },
            "opacity": {
              "maximum": 1,
              "minimum": 0,
              "type": "number",
              "default": 0.25,
              "description": "Shadow opacity (0–1).",
              "title": "Opacity"
            },
            "blur": {
              "maximum": 100,
              "minimum": 0,
              "type": "number",
              "default": 24,
              "description": "Shadow blur strength (0 to 100). 0 is a hard-edged shadow; 100 is the softest, a radius of 5% of the smaller canvas dimension.",
              "title": "Blur"
            },
            "vertical": {
              "maximum": 100,
              "minimum": -100,
              "type": "number",
              "default": 8,
              "description": "Vertical shadow offset strength (-100 to 100). Positive moves the shadow down, negative moves it up. 100 is the maximum offset, 10% of the canvas height.",
              "title": "Vertical"
            },
            "color": {
              "x-fal-order-properties": [
                "r",
                "g",
                "b"
              ],
              "required": [
                "r",
                "g",
                "b"
              ],
              "title": "RGBColor",
              "type": "object",
              "properties": {
                "g": {
                  "maximum": 255,
                  "minimum": 0,
                  "type": "integer",
                  "title": "G"
                },
                "r": {
                  "maximum": 255,
                  "minimum": 0,
                  "type": "integer",
                  "title": "R"
                },
                "b": {
                  "maximum": 255,
                  "minimum": 0,
                  "type": "integer",
                  "title": "B"
                }
              },
              "description": "RGB color. `RGBColor` is the FAL naming convention that renders the color-picker\nswatch. The per-field default (e.g. white for the background) is carried on each field\nbelow; note the playground swatch initializes to black regardless (a FAL UI quirk — it\nignores the field-level default), but the server honors the field default."
            }
          }
        },
        "type": {
          "title": "Type",
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "Generative",
                "Drop"
              ]
            },
            {
              "type": "null"
            }
          ],
          "description": "Shadow style: 'Generative' (generative AI shadow) or 'Drop' (deterministic drop shadow). Leave unset for no shadow."
        }
      }
    },
    "watermark": {
      "anyOf": [
        {
          "x-fal-order-properties": [
            "image_url",
            "remove_background",
            "position",
            "scale",
            "opacity",
            "margin"
          ],
          "title": "Watermark",
          "type": "object",
          "description": "A logo/watermark image overlaid on top of the output.",
          "properties": {
            "position": {
              "title": "Position",
              "type": "string",
              "default": "bottom_right",
              "description": "Where to place the watermark.",
              "enum": [
                "top_left",
                "top_right",
                "bottom_left",
                "bottom_right",
                "center"
              ]
            },
            "opacity": {
              "maximum": 1,
              "minimum": 0,
              "type": "number",
              "default": 1,
              "description": "Watermark opacity (0–1).",
              "title": "Opacity"
            },
            "image_url": {
              "title": "Image Url",
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Logo/watermark image URL. If empty, no watermark is added."
            },
            "scale": {
              "maximum": 1,
              "minimum": 0.01,
              "type": "number",
              "default": 0.1,
              "description": "Watermark width as a fraction of the canvas width.",
              "title": "Scale"
            },
            "margin": {
              "title": "Margin",
              "type": "string",
              "default": "3%",
              "description": "Inset from the edge. '%' (0–49%) of the canvas, or 'px'."
            },
            "remove_background": {
              "title": "Remove Background",
              "type": "boolean",
              "default": false,
              "description": "Remove the watermark image's own background (via background removal) before overlaying it."
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional logo/watermark image overlaid on top of the output. Off by default; omit for no watermark."
    },
    "image_size": {
      "title": "Image Size",
      "anyOf": [
        {
          "x-fal-order-properties": [
            "width",
            "height"
          ],
          "title": "ImageSize",
          "type": "object",
          "properties": {
            "height": {
              "exclusiveMinimum": 0,
              "maximum": 14142,
              "title": "Height",
              "type": "integer",
              "default": 512,
              "description": "The height of the generated image."
            },
            "width": {
              "exclusiveMinimum": 0,
              "maximum": 14142,
              "title": "Width",
              "type": "integer",
              "default": 512,
              "description": "The width of the generated image."
            }
          }
        },
        {
          "type": "string",
          "enum": [
            "square_hd",
            "square",
            "portrait_4_3",
            "portrait_16_9",
            "landscape_4_3",
            "landscape_16_9"
          ]
        },
        {
          "type": "null"
        }
      ],
      "default": "square_hd",
      "description": "Output canvas size. A preset (square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9) or a custom {width, height}. Defaults to square_hd (1024x1024)."
    },
    "background": {
      "x-fal-order-properties": [
        "mode",
        "color",
        "image_url",
        "image_fit"
      ],
      "title": "Background",
      "type": "object",
      "description": "Output background: a solid color, transparent, or a background image.",
      "properties": {
        "mode": {
          "title": "Mode",
          "type": "string",
          "default": "Color",
          "description": "'Color' fills with `color` (white by default); 'Transparent' leaves it transparent (always PNG); 'Image' composites onto `image_url`.",
          "enum": [
            "Transparent",
            "Color",
            "Image"
          ]
        },
        "image_fit": {
          "title": "Image Fit",
          "type": "string",
          "default": "Cover",
          "description": "How the background image fills the canvas: 'Cover' fills and crops, 'Contain' fits and letterboxes onto `color`, 'Stretch' distorts to fit.",
          "enum": [
            "Cover",
            "Contain",
            "Stretch"
          ]
        },
        "image_url": {
          "title": "Image Url",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Background image URL. Required when mode is 'Image'."
        },
        "color": {
          "x-fal-order-properties": [
            "r",
            "g",
            "b"
          ],
          "required": [
            "r",
            "g",
            "b"
          ],
          "title": "RGBColor",
          "type": "object",
          "properties": {
            "g": {
              "maximum": 255,
              "minimum": 0,
              "type": "integer",
              "title": "G"
            },
            "r": {
              "maximum": 255,
              "minimum": 0,
              "type": "integer",
              "title": "R"
            },
            "b": {
              "maximum": 255,
              "minimum": 0,
              "type": "integer",
              "title": "B"
            }
          },
          "description": "RGB color. `RGBColor` is the FAL naming convention that renders the color-picker\nswatch. The per-field default (e.g. white for the background) is carried on each field\nbelow; note the playground swatch initializes to black regardless (a FAL UI quirk — it\nignores the field-level default), but the server honors the field default."
        }
      }
    },
    "output_format": {
      "title": "Output Format",
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "png",
            "jpeg"
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "The format of the resultant image (PNG or JPEG). When not set, matches the input format. JPEG cannot be combined with a transparent background."
    },
    "margin": {
      "x-fal-order-properties": [
        "all",
        "left",
        "right",
        "top",
        "bottom"
      ],
      "title": "Margin",
      "type": "object",
      "description": "Canvas margin around the product. `all` applies to every side; a per-side value\noverrides `all` for that side. Each value is '%' (0–49%) of the canvas, or 'px' (>=0px).",
      "properties": {
        "top": {
          "title": "Top",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Top-side override of `all`. '%' (0–49%) or 'px' (>=0px)."
        },
        "right": {
          "title": "Right",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Right-side override of `all`. '%' (0–49%) or 'px' (>=0px)."
        },
        "bottom": {
          "title": "Bottom",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Bottom-side override of `all`. '%' (0–49%) or 'px' (>=0px)."
        },
        "all": {
          "title": "All",
          "type": "string",
          "default": "20%",
          "description": "Margin applied to all sides. '%' (0–49%) of the canvas dimension, or 'px' (>=0px)."
        },
        "left": {
          "title": "Left",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Left-side override of `all`. '%' (0–49%) or 'px' (>=0px)."
        }
      }
    }
  },
  "required": [
    "image_url"
  ],
  "additionalProperties": false
}
```

## Published example

This is the provider tool’s published example. Replace example values with the user’s requested inputs, respecting the schema; do not execute an example merely to test a connection.


```json
{
  "tool_id": "fal/pixelcut-product-photo",
  "input": {
    "image_url": "https://cdn3.pixelcut.app/fal/product-photos/input.png",
    "image_size": "square_hd"
  }
}
```

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

This tool uses deferred settlement. Follow its returned task/run instructions; preserve the existing reservation until the result is reconciled.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[Provider documentation](https://fal.ai/models/pixelcut/product-photo)

[REST inspection](https://api.agentik.cc/v1/tools/fal/pixelcut-product-photo) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/fal/pixelcut-product-photo) · [Agent index](/llms.txt)
