Skip to content

For n8n workflows, MCP agents and plain REST

The image step
for your automations.

Remove a background, put it on white, compress it to size, render a template — one node in your workflow, one tool for your agent. No server to run, no sharp to compile, no five provider keys to hold.

Free plan: 200 assets · 200 deterministic ops a month, then $0.002 each · $3 welcome credit for AI ops. No card.

Your trigger
A dark green enamel mug on a wooden table, forest behind it
product.jpg
uploaded · 1024 × 1024
ImageStep · Run presetmarketplace-cutout · v1 executed
  1. The same mug, background removed, on a transparent canvas
    remove_bg
    $0.0227 / image
  2. The cut-out mug, trimmed to its own edges
    trim
    free
  3. The mug on a plain white background
    flatten
    free
  4. The finished product picture: the mug on white, as a small WebP
    compress
    7.3 KB out
1 item · priced before it rantotal $0.0227
Your next step
publishedUrl
cdn.imagestep.dev/ast_a5166629…
One node in your flow. The four steps inside it ran on api.imagestep.dev on 2026-09-16, and the pictures are what they produced. Every op and its price, no sign-in: /docs/ops

Four things your workflow can't do on its own

runtime

Run it

A hosted workflow or an agent runtime has no libvips, no Chromium, no GPU and no memory for a RAW. ImageStep runs the step; your flow keeps the result.

state

Keep it

A call is one-shot; a pipeline is not. Assets keep a stable id and a URL that outlives the run, a job carries state and a signed webhook, and a retry with the same idempotency key is safe.

billing

Pay for it once

One key, one bill. Every AI op is priced per image in USD, and a dry run returns the exact number before anything is spent.

consistency

Keep it consistent

A preset is your chain, versioned, with reference subjects locked in — so batch four hundred looks like batch one.

One catalogue, two kinds of op

An op does one thing, takes a closed set of parameters and an asset id, and is priced per image. AI ops and deterministic ops chain in one preset, run in one job and settle on one bill.

AI ops

USD per image · model you can override
  • generate
  • edit
  • remove_bg
  • upscale
  • restore_face
  • colorize
  • analyze

Deterministic ops

free on paid plans
  • resize
  • convert
  • compress
  • crop
  • pad
  • trim
  • flatten
  • adjust
  • caption
  • overlay
  • blur_region
render_template

HTML and a row of data in, one PNG per row out — an OG image per post, a card per product.

read_metadata

EXIF, GPS, dimensions, hash and type, read on every asset at ingest. Free, on every plan.

In
JPEG, PNG, WebP, AVIF, HEIC, RAW from most cameras, PSD, JPEG XL
Out
WebP, JPEG, PNG, AVIF, GIF, TIFF

Every parameter and today's price, no credential needed: GET /api/v1/ops

How a call goes

  1. 1
    Get the image in

    Upload it, or hand over a URL and the service fetches it. You get an asset id.

  2. 2
    Price it

    The same request with ?dryRun=true validates everything and returns the exact cost, creating nothing.

  3. 3
    Run it

    One op, or a saved preset, over one asset or five hundred. You get a job with per-item progress.

  4. 4
    Take the result

    Wait, poll, or let a signed webhook tell you. Each output is an asset — publish it for a permanent URL, or download the bytes.

Holding the bytes and only want the result back? A resize, a convert or a crop is one call that stores nothing — image in, image out.

// 1. get the image in — or client.assets.fromUrl(url)
const { id } = await client.assets.upload("./product.jpg");

// 2. price it — same call, nothing created
const price = await client.presets.run("marketplace-cutout", id, { dryRun: true });
// → costPerItem: 227, steps: [
//     { op: "remove_bg", costPerItem: 227 },
//     { op: "process",   costPerItem: 0 }]

// 3. run it — drop dryRun; wait holds on for the result
const job = await client.presets.run("marketplace-cutout", id, { wait: true });
const [output] = await client.jobs.outputs(job);

marketplace-cutout is a preset you save yourself — its four steps are a recipe to copy. The dry run is produced by the same resolution the real submit runs, so it cannot drift from what you are charged. The five-minute version, from the SDKs, the CLI, curl or an MCP client: the quickstart.

Questions

Do I need a card to start?
No. The Free plan comes with 200 assets, 200 deterministic ops a month — past them each op is $0.002, paid from your balance — and a $3 welcome credit, and every feature is open on every plan: paid plans buy quota, retention and support.
What happens when step three of a chain fails?
You pay for the AI steps that finished, the item says which step failed, and POST /jobs/{id}/resume restarts each failed item from that step without paying twice for what already succeeded.
Can I choose the model?
Yes. Every AI op has a default model and takes a model parameter; the catalogue lists each model with its price per image.
Does it work with Make or Zapier?
Not as a native app today. Anything with an HTTP step can call the REST API, and n8n has a native node with a trigger.
Is this a photo library or an editor?
No. There is no album, no canvas and no chat, and it does not do video or PDF. It is the step a program calls and a person audits.
Not on the list?
Write to support@imagestep.dev. The long answers — every op, every error code — are in the docs.

Add the step.

Free plan: 200 assets · 200 deterministic ops a month, then $0.002 each · $3 welcome credit for AI ops. No card.