Build with AI

I generated 387 images with Replicate for one book. Here is the bill and the failure rate

The Vibe Gate·September 13, 2026·9 min read

Last month I needed a few hundred pictures for one book. Not illustrations with a story to tell — cut-out material: a jar of coins, a passport on a linen bedspread, a rolled yoga mat, a bowl of figs. The kind of image someone snips out with scissors and glues onto a vision board. A clip-art book lives or dies on how many usable pieces are inside it, and I had decided on a hundred-plus pages of them.

So I wrote a script, pointed it at Replicate, and let it run. Then I sat down with the receipts, because the interesting part of this kind of project is never the pictures. It's the gap between what you budgeted and what you actually spent, and the gap between what you generated and what you could use.

Here is both gaps, with the real numbers out of the project's own manifest file.

Disclosure: the book link below is an Amazon affiliate link — as an Amazon Associate I earn from qualifying purchases, at no extra cost to you. The book is mine, so treat me as an interested party and judge the numbers, not the recommendation. Every figure here comes from the build's own files; the two prices I quote from vendors were re-checked the day this went out.

The bill, itemized

402 image generations. $1.84.

RunModelImagesCost
Test batch (quality check)flux-dev12$0.30
Cheap-model comparisonflux-schnell3$0.01
Two coloring-page probesflux-dev2$0.05
The actual runflux-schnell370$1.11
Re-generating rejectsflux-dev15$0.38
Total402$1.84

The finished library is 387 files across twelve themed sections — 360 from schnell, 27 from dev. Add the 246 text elements the book renders from HTML instead of images (120 single words, 80 affirmations, 40 short lines, 6 year headers) and you get the 633 pieces behind the cover's "600+" claim. Those cost nothing; they're type.

The estimate I got wrong by 6x

My own plan document said: roughly 440 images on Flux Dev, $10–13. I want that on the record because it is the most useful mistake in the project.

What happened is that I ran the twelve-image test batch on dev at $0.025 per image, liked it, and then — before committing 370 more — spent one cent generating three of the same prompts on schnell to see what a cheap model would give me. The schnell versions were fine. Not identical, not as clean on complex scenes, but fine for this job: a single object on a clean background, printed at two or three inches, then cut out with scissors. Nobody is pixel-peeping a paper cut-out of a coffee cup.

So the volume went to schnell at $3.00 per thousand images, and the bill came in at about a sixth of the budget. The lesson isn't "schnell is better" — it isn't. The lesson is that the model decision is downstream of the output medium, and I nearly skipped the one-cent experiment that answered it. If your images will be printed small, cropped, cut, or composited, test the cheap model before you price the expensive one in.

The cheapest money I spent on this book was one cent, comparing three images.

The failure rate, and what actually failed

Two numbers, because "failure rate" hides two different things.

API failures: zero. All 387 entries in the manifest came back with a done status; not one exhausted its three retries. I had written careful retry-and-backoff handling and it sat there unused.

Rejects at human review: 13 of 370, or 3.5%. Two of those needed a second pass, so 15 re-generations. That's the number that matters, and it is only knowable because someone looked at every image.

Now the part I didn't expect. Of those 13 rejects, 12 asked for a person or a pair of hands. Only 42 of the 370 prompts did. So:

The one non-human reject was a graduation cap that came out as a shapeless heap. Everything else was anatomy: hands with the wrong number of fingers stacked over a meeting table, a yoga pose with a limb too many, hands shaping clay that were not hands.

My fix was not better prompting in the usual sense. It was removing the human. "Team hands stacked over a meeting table" became "round meeting table from above with notebooks, coffee cups and sticky notes, no people, no hands." "Woman's hands typing on a laptop" became "open laptop and latte cup on a cafe table, no people, no hands." In every case the replacement is a better cut-out anyway, because a disembodied hand on a vision board looks strange even when it's anatomically correct.

Two prompts genuinely needed a person and survived a second pass only with explicit anatomy constraints — a distant silhouette, "exactly two arms and two legs," modest loose clothing. That is a lot of scaffolding for two images. If you are generating hundreds of stock-style images for print, write the brief so that people are a deliberate exception rather than the default, and budget a 30% redo rate on the ones that remain.

The five lines of script that saved the run

The generator is about 120 lines of Python against Replicate's HTTP API. Five decisions did all the work:

A manifest, written after every single image. Each finished item is recorded with its file path, model and aspect ratio, and the script skips anything already marked done. That one file is the difference between a job you can interrupt and a job you have to babysit. I stopped and resumed the run repeatedly across two days without paying twice for anything.

Three attempts with rising backoff. Unused here, and I'd write it again. The cost of the code is fifteen minutes; the cost of its absence is a run that dies at image 300 overnight.

A file-size sanity check. Anything under 10KB is treated as a failure, not a success. Downloads truncate, and a corrupt PNG that got recorded as done is worse than an error, because you find it during layout.

A 1.5 second pause between items. My account starts returning 429s faster than you'd think. Nine minutes of sleeping across the whole run bought a clean 370.

One style string appended to every prompt. The same clause — warm editorial magazine photography, soft natural light, no text, no logos, no watermark — goes on all of them. That's the entire consistency mechanism for 387 images across twelve sections, and it's the reason the sections sit together on a page without looking like a scrapbook of different stock libraries. The "no text, no logos" half is also a legal habit: nothing in the book should carry a brand mark I don't own.

What $1.84 looks like next to the book's actual economics

The book is 104 pages, 8.5 by 11, priced at $19.99. On Amazon's standard colour, large trim, the printing cost is $1.00 fixed plus $0.0402 per page — $5.18 a copy. At the 60% royalty rate that leaves $6.81 per sale in the US.

So the entire image budget is a quarter of the royalty on one copy. It is not a line item. It is a rounding error against print cost, and print cost is driven by page count, which is driven by how many pieces you promise on the cover.

This is the reframe I'd hand anyone doing generated-image publishing: you are not optimizing generation spend. You are optimizing page count against printing cost against the count you advertise. I could have spent ten times more on images and the book's margin would have moved by about seventy cents. Had I added twenty pages, it would have moved by eighty cents a copy, forever.

The licence line that decides whether you can publish at all

Worth knowing before you generate anything you intend to sell: FLUX's terms distinguish where you ran the model. Images generated on Replicate can be used commercially. Download the weights and generate the same images on your own machine and you can't — that route is non-commercial for these models. Two paths, identical pixels, opposite answers.

The cheap local path is tempting precisely when you're generating hundreds of images. Read the licence for the specific model and the specific host before you build a product on top of it, and keep the receipt.

What I'd do differently

Run the test batch on the cheap model too. I paid dev prices to evaluate a quality tier I then didn't use at volume — thirty cents, so who cares, except the same reflex at a thousand images is a real bill.

Write the human exception into the prompt list from the start, instead of discovering it at review.

And build the review contact sheet before the run, not after. Mine ended up as a single 1.8MB HTML page with all 387 thumbnails on it, and the only reason the 3.5% reject rate exists as a number is that such a page makes looking at everything take twenty minutes. Reviewing images by opening folders does not happen. You will tell yourself it does.

Who should copy this, and who shouldn't

Copy it if your images are components — printed small, cut, cropped, tiled, composited — and you need volume with a consistent look. The economics are absurd in your favour and the tooling is a weekend.

Don't copy it if the image is the product: a cover, a hero shot, a single illustration someone will stare at. There, the cheap model is false economy and the reject rate is whatever your taste says it is, which is much higher than 3.5%. And don't copy it if your subject is people. A third of my human prompts came back unusable, and that was with generous, forgiving requirements — small, distant, printed at postcard size. At any size where a hand reads clearly, plan for a different tool or a stock licence.

Sources

Facts and prices checked September 13, 2026:

Get the next guide, first.

One email when a new build log or review ships. No noise, ever.