An engineering comparison of batch limits, retries, credit settlement and usable output.
Disclosure: I work on ImgBulk, one of the tools discussed here. This article was prepared with AI assistance. Vendor claims are linked to their sources; the calculations are illustrative, not a cross-vendor performance benchmark. Snapshot date: October 5, 2026.
“Best” needs an acceptance criterion. For a batch image workflow, that criterion might be spreadsheet capacity, programmable rendering, predictable billing, or the time required to review finished assets. Those are different tests.
This article compares documented limits and uses ImgBulk as a concrete billing example. It does not rank image quality or claim that one product is fastest. The aim is to explain how to evaluate a workflow before sending hundreds of tasks through it.
First, normalize the unit
A batch limit answers how much work you can submit. Concurrency answers how much can run together. Neither number tells you how many outputs will pass review.
| Tool | Documented bulk unit | Input or workflow | Relevant constraint |
|---|---|---|---|
| ImgBulk | Up to 200 tasks; one image per successful generation task | Prompt list or CSV/XLSX in a browser workspace | Task capacity is not concurrent execution |
| OpenArt | 500 images at once announced for Bulk Create | CSV/TXT prompt lists | Announcement dated June 2024; verify current account availability |
| Ideogram | 500 prompt rows plus header; 1–4 images per row | CSV/XLS/XLSX/ODS | Pro, Team or Enterprise; batch model support differs from the main app |
| Pexo | Numeric batch ceiling not specified on cited page | Conversational requests, model selection, image-to-video continuation | Evaluate the agent workflow rather than inventing a capacity number |
| Bannerbear | 100 template renders per API call | Data populates designed layers | Template rendering differs from generating original scenes |
OpenArt separately lists up to 32 parallel generations on Pro and Wonder in its pricing table. Ideogram's current batch documentation allows its 1.0–4.0 models and custom models, but excludes 4.5 and partner models from Batch. A provider's full model catalog should not be substituted for the models available in a particular bulk workflow.
Pexo's comparison article distinguishes several kinds of bulk production and emphasizes conversational routing and continuing into video. Its 500-image figure refers to OpenArt. This distinction matters when turning marketing numbers into requirements.
Separate task state from creative acceptance
Two records are useful for every output:
- Execution state: queued, running, succeeded or failed.
- Review state: pending, accepted or rejected.
A technically successful output can still have the wrong crop, a distorted label or inconsistent product details. Calling that a technical failure mixes operational reliability with creative quality.
For a catalog job, store an identifier such as sku042_lifestyle_v1 alongside the prompt, model, output settings and reference filename. This makes it possible to match a downloaded asset to its brief without reopening every image.
ImgBulk's generation workflow exposes task review and individual retries. Its image-to-prompt workflow pairs exported descriptions with filenames. Those descriptions summarize visible content; they are not recovered original prompts.
Treat retry policy as a billing requirement
“Failed tasks are free” needs a precise definition. In ImgBulk, technical failures are not billed after settlement, and their reserved credits are released. A successful result remains billable even if the user rejects it during review. A successful retry also costs credits.
Here is a simplified fixed-rate ledger for a hypothetical 200-task run at eight credits per task. It assumes no extra discount:
| Event | Successful tasks | Failed tasks | Billing |
|---|---|---|---|
| Initial quote | — | — | Reserve 1,600 credits |
| First run settles | 180 | 20 | Charge 1,440; release 160 |
| All failed tasks succeed on retry | 20 | 0 | Charge another 160 |
The final successful set costs 1,600 credits. The policy protects against paying for tasks that technically failed; it does not guarantee acceptance or refund a prepaid purchase in cash. See the failure FAQ.
For developers designing a similar system, useful invariants are:
- Lock the approved quote and unit rate to the submitted batch.
- Settle successful work once, even if completion notifications are delivered twice.
- Release the unused reservation when the batch reaches a terminal state.
- Keep retry attempts associated with the original task while tracking their own charges.
These are design considerations, not a claim that every tool in the table implements the same settlement model.
Model count and price are workflow-specific
Seven image-model choices were visible in ImgBulk's workspace when checked. The live English pricing interface displayed these rates:
| Model | 1K credits/image | 2K | 4K |
|---|---|---|---|
| GPT Image 2 | 8 | 12 | 16 |
| GPT Image 2.5 | 12 | 18 | 28 |
| Nano Banana 2 | 12 | 18 | 28 |
| Nano Banana Lite | 8 | — | — |
| Nano Banana Pro | 24 | 40 | 56 |
| Doubao Seedream 5.0 | 12 | 18 | — |
| FLUX.2 Pro | 8 | — | — |
A dash indicates a tier absent from that table. Availability depends on mode; the final workspace quote is authoritative. Pricing source.
There is no image-quality result hidden in this table. A cheaper task can still be more expensive per accepted asset if it needs more attempts or more review. Compare models in separate, controlled batches with the same brief and acceptance criteria.
Calculate cost per accepted image
Two useful metrics are:
accepted yield = accepted outputs / completed outputs
cost per accepted output = total charged cost / accepted outputs
Suppose the hypothetical run completes 200 images for 1,600 credits and 160 pass review. Accepted yield is 80%, and the cost is 10 credits per accepted output—not eight.
At the observed $29 pack containing 3,600 credits, consuming 1,600 credits represents $12.89 of the pack. Divided across 160 accepted images, that is about $0.081 per accepted image. These are allocated costs, not checkout prices: the purchase still costs $29 and leaves 2,000 unused credits. Rates and pack totals are listed on the pricing page.
Keep every charged attempt in the numerator. Excluding rejected images or successful rerolls makes the production cost look artificially low. Record review time separately; an inexpensive output that needs extensive checking can be costly to deliver.
Build a small evaluation set before scaling
A 10–20-task sample should cover difficult cases, not just attractive examples. Include a product with fine labeling, an awkward crop, a reflective surface and several lighting conditions relevant to the real workload.
| Measure | What to record | What it answers |
|---|---|---|
| Technical completion | Success/failure by attempt | Did the system return an output? |
| Acceptance | Predefined checks per image | Does it satisfy the brief? |
| End-to-end time | Submit to final accepted export | How long does usable delivery take? |
| Review effort | Minutes spent checking and correcting | Where is the human bottleneck? |
| Consumption | All charges, releases and retries | What did usable output cost? |
For comparisons, keep the same references, requested size and acceptance rules. Record provider settings and the date. Published limits alone cannot establish a speed or quality winner; this article reports no measured cross-provider scores.
Three workload shapes to test
Catalog refresh: 50 SKUs × three views = 150 tasks. Separate main, lifestyle and detail briefs. Verify product identity and labels against the references before publication.
Static creative exploration: 10 products × four concepts × three placement briefs = 120 tasks. Hold references steady while varying a major creative variable. Use supported ratios and check target-placement crops. Visual appeal is not a conversion benchmark.
Reference library: 200 reference images become a searchable set of filename/description pairs. Edit descriptions before reuse, removing irrelevant details and adding the requirements of the next brief. This is analysis and organization, not proof that another model will reproduce the source image.
Which workflow fits the job?
Choose based on the requirement you can test:
- A browser task list with individual review calls for examining task controls and settlement behavior.
- A large prompt spreadsheet calls for checking row limits, outputs per row and supported batch models.
- Programmatically populating a fixed layout calls for a rendering API and predictable export formats.
- Taking image concepts directly into video calls for examining that downstream handoff.
The defensible answer to “best” comes from an evaluation set, accepted-output cost and the workflow's constraints. A 500-image ceiling, 200-task workspace and 100-render API call are useful facts. They become a decision only when their units match the work you need to deliver.
Top comments (0)