Measured endpoints

Single-image generators, measured

The endpoints that produce one standalone image. This is the decision that matters most for icon and prop work.

EndpointCostSync?PaletteStyle refVerdict
create-image-pixflux1sync (~10s)yesnoDefault for a fixed palette
create-image-pixen1sync (~40s)nonoBest raw detail at 1 generation
create-image-bitforge1sync (~20s)yesyesBest on paper, poor in practice
map-objects1job (~30s)rejectednoFine when the prompt carries the style
create-1-direction-object20–40jobnoyesOnly when you need rotations
generate-with-style-v2 (Pro)20job (~150s)noyesReal style transfer
generate-image-v2 (Pro)40job (~150s)noyesReal style transfer

1dir prices by canvas area: ≤1024 px = 20, ≤2048 px = 25, larger = 40. A 64×64 icon therefore costs 40. Every other generator above is a flat 1–40 regardless of size.

What the measurements actually showed

pixflux is the workhorse. 1 generation, returns the PNG inline, and its color_image parameter is a genuine constraint. A two-colour palette produced 130 badges containing only #000000 and #ffffff, verified 65/65 in each of two sets. Prose asking for the same thing gave a yellow star and a brown chocolate bar.

bitforge disappoints. It is the only single-image endpoint with palette and style reference and synchronous delivery, all for 1 generation, which should make it ideal. In practice it returned unrecognisable blobs for a simple "blacksmith anvil" prompt at style_strength 0, 10, 25 and 50. The first failure looked like the style reference overwhelming the prompt; sweeping the strength proved otherwise. Possibly tuned for a different kind of subject (docs call it "Create S-M image", max area 200×200). Do not reach for it on this evidence alone.

pixen gave the best unconstrained detail of anything at 1 generation, a properly rendered anvil with sparks where others produced flat shapes. It has no palette parameter, so it suits styles carried entirely by the prompt.

The Pro v2 endpoints do real style transfer, taking labelled reference images and matching them convincingly. At 20–40 generations and ~150s they are for cases where that matters more than throughput.

color_image is not universal. map-objects accepts the parameter in its schema but returns 500 cannot identify image file for every payload shape tried. The palette lock works on pixflux and bitforge only.

Payload shapes differ between generations of endpoint

Three incompatible conventions, which is a common source of 422s:

// pixflux / bitforge / map-objects
{ "color_image": { "type": "base64", "base64": "...", "format": "png" } }

// generate-image-v2 (Pro)
{ "style_image": { "image": {...}, "size": {"width":64,"height":64},
                   "usage_description": "art style to match" } }

// generate-with-style-v2 (Pro)
{ "style_images": [ { "image": {...}, "width": 64, "height": 64 } ] }

A palette swatch must also be chunky: a 4×1 image was rejected outright with "cannot identify image file", a 64×64 block swatch was accepted.