generate-illustration

activev2026.07.04

Generate a full-scene illustration (detailed background, environment, lighting) in one of 16 styles, plus classifier-produced catalog metadata.

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
promptstringrequiredScene to illustrate
styleenum
flatcartoonwatercolorvintage3ddoodlekawaiistorybookdigital-artfantasyanimecollagegouachepaper-artchalk-pastelretro
required"flat"Illustration style
aspectRatioenum
4:31:13:4
required"4:3"Aspect ratio
qualityenum
lowmediumhigh
optional"medium"Render quality tier
categoriesstringrequiredComma-separated category slugs the classifier must choose from (empty fails the run in preflight)

How it runs — step topology

1
Render illustrationimageimageGenerator
promptTemplate
2
Classify assetllmclassifier
systempromptTemplatemaxTokens

Model roles: imageGenerator classifier bindings budgetPolicy

What you get — artifact

illustrationvisual

Version lineage

2026.07.04rev 26current2026-07-26
sha256:5ed1aa5aa
2026.07.04rev 12026-07-04
sha256:2323a12ce

Full contract (as served)

GET /v1/catalog/workflows/generate-illustration
{
  "_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-07-28T04:45:44.335802Z",
  "id": "generate-illustration",
  "name": "Generate Illustration",
  "description": "Generate a full-scene illustration (detailed background, environment, lighting) in one of 16 styles, plus classifier-produced catalog metadata.",
  "shortDescription": "Full-scene styled illustration with classification.",
  "artifactClass": "visual",
  "outputType": "visual",
  "status": "active",
  "supersededById": null,
  "version": "2026.07.04",
  "stages": [
    {
      "name": "Render",
      "description": "Compose the styled scene prompt and call the image model.",
      "stepCount": 1
    },
    {
      "name": "Classify",
      "description": "Produce catalog metadata.",
      "stepCount": 1
    }
  ],
  "intakeSchema": {
    "fields": [
      {
        "name": "prompt",
        "type": "string",
        "required": true,
        "description": "Scene to illustrate"
      },
      {
        "name": "style",
        "type": "enum",
        "required": true,
        "description": "Illustration style",
        "default": "flat",
        "options": [
          "flat",
          "cartoon",
          "watercolor",
          "vintage",
          "3d",
          "doodle",
          "kawaii",
          "storybook",
          "digital-art",
          "fantasy",
          "anime",
          "collage",
          "gouache",
          "paper-art",
          "chalk-pastel",
          "retro"
        ]
      },
      {
        "name": "aspectRatio",
        "type": "enum",
        "required": true,
        "description": "Aspect ratio",
        "default": "4:3",
        "options": [
          "4:3",
          "1:1",
          "3:4"
        ]
      },
      {
        "name": "quality",
        "type": "enum",
        "required": false,
        "description": "Render quality tier",
        "default": "medium",
        "options": [
          "low",
          "medium",
          "high"
        ]
      },
      {
        "name": "categories",
        "type": "string",
        "required": true,
        "description": "Comma-separated category slugs the classifier must choose from (empty fails the run in preflight)"
      }
    ]
  },
  "runtimeSteps": [
    {
      "id": "step-1",
      "name": "Render illustration",
      "kind": "image",
      "role": "imageGenerator",
      "promptTemplate": "redacted"
    },
    {
      "id": "step-2",
      "name": "Classify asset",
      "kind": "llm",
      "capability": "text",
      "role": "classifier",
      "jsonSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Catalog-ready title, <= 60 chars"
          },
          "slug": {
            "type": "string",
            "description": "kebab-case URL slug"
          },
          "description": {
            "type": "string",
            "description": "1-2 sentence SEO-friendly description"
          },
          "category": {
            "type": "string",
            "description": "Exactly one of the provided category slugs"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "3-8 search tags"
          }
        },
        "required": [
          "title",
          "slug",
          "description",
          "category"
        ],
        "additionalProperties": false
      },
      "system": "redacted",
      "promptTemplate": "redacted",
      "maxTokens": "redacted"
    }
  ],
  "gates": [
    {
      "id": "gate-render",
      "name": "Provider execution",
      "type": "quality",
      "inputs": [
        "intake"
      ],
      "outputs": [
        "illustration"
      ],
      "unlocks": [
        "step-2"
      ]
    }
  ],
  "artifactSchema": {
    "artifactClass": "visual",
    "artifactType": "illustration",
    "files": [
      "image/webp"
    ],
    "metadata": {
      "style": "string",
      "aspectRatio": "enum [4:3, 1:1, 3:4]",
      "quality": "enum [low, medium, high]",
      "classification": "object"
    }
  },
  "providers": {
    "imageGenerator": "redacted",
    "classifier": "redacted"
  },
  "budgetPolicy": "redacted",
  "versions": [
    {
      "version": "2026.07.04",
      "revision": 1,
      "contentHash": "sha256:2323a12ce55302e72eddc3ba89db53af3ea5a8d443091fcd39cb5d1cbeae6c65",
      "createdAt": "2026-07-04T21:49:03.297839Z"
    },
    {
      "version": "2026.07.04",
      "revision": 26,
      "contentHash": "sha256:5ed1aa5aad23c2b43db13e5c40c0af58db7f49cbbfb7f34b847410b5430b495b",
      "createdAt": "2026-07-26T00:51:06.773051Z"
    }
  ],
  "updatedAt": "2026-07-26T00:51:06.773051Z"
}

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