edit-image

activev2026.08.25.1

Edit a platform-stored image with a natural-language instruction (OpenAI images/edits), with optional background re-removal for transparent assets.

This page renders the template’s published registry entry — the contract itself, not a description of it. Immutable versions; sealed properties exist but are not public.

What you provide — intake contract

FieldTypeRequiredDefaultDescription
sourceUrlstringrequiredPlatform artifact URL of the image to edit
instructionstringrequiredNatural-language edit instruction
backgroundRemovalEnabledbooleanoptionalfalseRe-remove the background after editing
qualityenum
lowmediumhigh
optional"low"Render tier for the edit itself
alphaAuditModeenum
enforcereportoff
optional"report"Cutout QA after background removal: 'enforce' (default) fails bad cutouts (holes/halos/spill) so they retry through the removal ladder, 'report' records metrics only, 'off' skips the audit
removalEscalationEnabledbooleanoptionaltrueOn an enforced cutout-audit failure, retry the same render through stronger background-removal models (Heavy/Matting at 2K, then BRIA) before re-rendering; off fails straight to re-render

How it runs — step topology

1
Edit imagetool
2
Remove backgroundtoolbackgroundRemover
3
Refine edgestool
4
Audit cutouttool

Model roles: imageEditor backgroundRemover bindings budgetPolicy

What you get — artifact

edited-imagevisual

Version lineage

2026.08.25.1rev 71current2026-08-25
sha256:0c3ee25bf
2026.08.25rev 702026-08-25
sha256:5fb327e01
2026.07.18.1rev 522026-08-06
sha256:293738f58
2026.07.18.1rev 512026-08-02
sha256:d99a6fbf2
2026.07.18rev 482026-08-02
sha256:63b749d03
2026.07.18rev 142026-07-18
sha256:1dd288178
2026.07.04rev 12026-07-04
sha256:ac3ff62f3

Full contract (as served)

GET /v1/catalog/workflows/edit-image
{
  "_comment": "SYNCED SNAPSHOT — do not hand-edit. Regenerate with: node scripts/sync-workflow-catalog.mjs (pulls api.esy.com GET /v1/catalog/workflows/{id}).",
  "generatedAt": "2026-09-07T04:32:14.515090Z",
  "id": "edit-image",
  "name": "Edit Image (Instruction)",
  "description": "Edit a platform-stored image with a natural-language instruction (OpenAI images/edits), with optional background re-removal for transparent assets.",
  "shortDescription": "Instruction-based image edit (img2img).",
  "artifactClass": "visual",
  "outputType": "visual",
  "status": "active",
  "supersededById": null,
  "version": "2026.08.25.1",
  "stages": [
    {
      "name": "Edit",
      "description": "Apply the instruction to the source image, at the source's own dimensions and the requested tier.",
      "stepCount": 1
    },
    {
      "name": "Post-process",
      "description": "Re-remove the background when transparency is requested.",
      "stepCount": 1
    },
    {
      "name": "Cutout QA",
      "description": "Refine the cutout edges and audit the alpha, escalating the remover on failure.",
      "stepCount": 2
    }
  ],
  "intakeSchema": {
    "fields": [
      {
        "name": "sourceUrl",
        "type": "string",
        "required": true,
        "description": "Platform artifact URL of the image to edit"
      },
      {
        "name": "instruction",
        "type": "string",
        "required": true,
        "description": "Natural-language edit instruction"
      },
      {
        "name": "backgroundRemovalEnabled",
        "type": "boolean",
        "required": false,
        "description": "Re-remove the background after editing",
        "default": false
      },
      {
        "name": "quality",
        "type": "enum",
        "required": false,
        "default": "low",
        "description": "Render tier for the edit itself",
        "options": [
          "low",
          "medium",
          "high"
        ]
      },
      {
        "name": "alphaAuditMode",
        "type": "enum",
        "required": false,
        "default": "report",
        "description": "Cutout QA after background removal: 'enforce' (default) fails bad cutouts (holes/halos/spill) so they retry through the removal ladder, 'report' records metrics only, 'off' skips the audit",
        "options": [
          "enforce",
          "report",
          "off"
        ]
      },
      {
        "name": "removalEscalationEnabled",
        "type": "boolean",
        "required": false,
        "default": true,
        "description": "On an enforced cutout-audit failure, retry the same render through stronger background-removal models (Heavy/Matting at 2K, then BRIA) before re-rendering; off fails straight to re-render"
      }
    ]
  },
  "runtimeSteps": [
    {
      "id": "step-1",
      "name": "Edit image",
      "kind": "tool",
      "inputPath": "intake.sourceUrl"
    },
    {
      "id": "step-2",
      "name": "Remove background",
      "kind": "tool",
      "role": "backgroundRemover",
      "inputPath": "step-1.url"
    },
    {
      "id": "step-2a",
      "name": "Refine edges",
      "kind": "tool",
      "inputPath": "step-2.url"
    },
    {
      "id": "step-2b",
      "name": "Audit cutout",
      "kind": "tool",
      "inputPath": "step-2a.url"
    }
  ],
  "gates": [
    {
      "id": "gate-edit",
      "name": "Provider execution",
      "type": "quality",
      "inputs": [
        "intake"
      ],
      "outputs": [
        "edited-image"
      ],
      "unlocks": [
        "step-2"
      ]
    },
    {
      "id": "gate-alpha",
      "name": "Cutout alpha audit",
      "type": "quality",
      "inputs": [
        "edited-image"
      ],
      "outputs": [
        "audited-image"
      ]
    }
  ],
  "artifactSchema": {
    "artifactClass": "visual",
    "artifactType": "edited-image",
    "files": [
      "image/webp"
    ],
    "metadata": {
      "sourceUrl": "string",
      "backgroundRemoved": "boolean"
    }
  },
  "providers": {
    "imageEditor": "redacted",
    "backgroundRemover": "redacted"
  },
  "budgetPolicy": "redacted",
  "versions": [
    {
      "version": "2026.07.04",
      "revision": 1,
      "contentHash": "sha256:ac3ff62f337d8128ccc560530a71f27419f24d9296d0c58fd436945864aa31a9",
      "createdAt": "2026-07-04T21:49:03.494747Z"
    },
    {
      "version": "2026.07.18",
      "revision": 14,
      "contentHash": "sha256:1dd2881787195c2b138aae96709830efafdc6acd0af984cb1473d496109aeef7",
      "createdAt": "2026-07-18T19:19:08.575944Z"
    },
    {
      "version": "2026.07.18",
      "revision": 48,
      "contentHash": "sha256:63b749d03aaa4fe44f96ad29b1c38fb3d368fa64f1848632b2782566d14cebdb",
      "createdAt": "2026-08-02T01:34:06.679672Z"
    },
    {
      "version": "2026.07.18.1",
      "revision": 51,
      "contentHash": "sha256:d99a6fbf265d871db65be2bfd336fa4b51d4734f456aa9854c40a00587fed40d",
      "createdAt": "2026-08-02T17:38:41.196478Z"
    },
    {
      "version": "2026.07.18.1",
      "revision": 52,
      "contentHash": "sha256:293738f584503f2db34333fe200a1b0f83a271f033b936e6e78f3e1381556165",
      "createdAt": "2026-08-06T22:08:47.950505Z"
    },
    {
      "version": "2026.08.25",
      "revision": 70,
      "contentHash": "sha256:5fb327e015516fc1fc4a420aa23b67db2e81d83161997d5847ef28de97dffe9a",
      "createdAt": "2026-08-25T10:45:22.232909Z"
    },
    {
      "version": "2026.08.25.1",
      "revision": 71,
      "contentHash": "sha256:0c3ee25bfdbc3557dec9c9d6a1e3704d8da23a97e3530ba2218a01d43b83f26b",
      "createdAt": "2026-08-25T16:37:42.276826Z"
    }
  ],
  "updatedAt": "2026-09-06T00:04:43.404983Z"
}

Snapshot generated 2026-09-07 from the live registry.