Making one good image takes a few tries. Making three hundred, one per product, one per headline, one per blog post, takes an afternoon of copy and paste that nobody enjoys. A CSV turns that afternoon into data: one prompt per row, options in the next columns, and a short script that sends each row to the Picasso IA API and saves the file that comes back. You write the sheet once, you review the results, and the repetitive part stops being your job.
Most bulk image work is not creative in the way a single hero image is. It is the same idea repeated across a list: a product name and a color, a headline and a mood, a city and a landmark. A spreadsheet is already where that list lives. Putting the prompt in a column means the list you maintain anyway becomes the input, and nothing has to be retyped into a prompt box three hundred times.
The second gain is that the sheet is a record. Every image has its row: the exact words that produced it, the model that ran, the size you asked for. When a client says the sixth variant of the batch was the right one, you open row six, change two words and run only that line again.
The third gain is that you can change one column for the whole sheet. Swap the model for every row, or append the same style sentence to every prompt, and run it again to compare two batches side by side.
Picasso IA runs 502 models, 212 of them text-to-image, and the API is meant to cover them with the same models and the same credits as the toolkit. That means any prompt you want to put in a row can be tried by hand in the toolkit first, today, before you build anything around it.
A row is one generation. Decide the columns before you write a single prompt, because the columns are the contract between your sheet and your script. Keep them boring and explicit.
| Column | What it holds | Why it earns its place |
|---|
| id | A short unique name, such as a SKU or a post slug | The file is saved under this name, so you can match each image to its row |
| prompt | The full description of the image | The one field the model actually reads for content |
| model | The catalog model for this row, such as flux-2-pro or seedream-4.5 | Lets you mix cheap drafts and careful finals in one sheet |
| aspect ratio | Square, wide or tall | Catalog tiles, ad slots and blog covers need different shapes |
| notes | Anything for humans: client, campaign, status | The script ignores it, you do not have to |
Two habits keep a sheet healthy. First, build prompts from parts: a subject column and a style column that you join in the script, so changing the look of the whole batch means editing one cell instead of three hundred. Second, write every prompt so it stands alone: "same as above" fails in a script that reads one row at a time.
The model column is not decoration: the catalog lists every engine, and a few minutes comparing two or three on one sample prompt tells you which to use.
This is the path from a blank sheet to a folder of images. It assumes you can run a small script yourself or ask a developer to, since the sheet is the input and the script is the loop. The steps stay at the level of what happens, not of code.
- Test the prompts by hand first. Open the toolkit, pick a model such as flux-2-pro, seedream-4.5 or nano-banana, and run three or four of your real prompts. Fix the wording here, where a failed try costs one image and not a whole batch.
- Build the sheet. One row per image with the columns above, saved as a CSV. Read it once top to bottom, because a typo in a prompt becomes a wrong image on that row and a spent credit.
- Create an API key in your account. The key identifies you to the API, so treat it like a password: keep it out of the sheet, out of shared folders and out of anything you send to a client.
- Run five rows, then the rest. The script reads a row, sends one request naming the model and the prompt, and saves the returned file under the row id. Run five rows, open the files, and only then let it continue with the remaining rows.
- Review, then rerun the misses. Go through the folder with the sheet open beside it. Mark rows that need a better prompt, fix the words, and run only those rows again instead of the whole sheet.
Each request is one generation and each generation costs credits, with the amount depending on the model and the settings. The pricing page is where plans live, and new accounts start with free credits.
Bulk generation pays off when the images share a structure and differ in one or two details. Three jobs match that pattern naturally.
Catalogs and listings. A shop with a few hundred items needs a consistent set of lifestyle or concept images, one per item, in one shape. The sheet holds the item name, the setting and the color, and the script returns one file per row. Keep one rule in mind: the picture must stay truthful about the item. A generated background around a real product photo is fine, an invented feature the product does not have is not. For realistic product shots the AI product photography page covers the approach in detail.
Ad variants. A campaign test needs five visual angles of one idea, across several audiences. Rows become the matrix: audience in one column, mood in another, the shared product line in a third. You get a pile of options to shortlist from, which is the opposite of guessing one concept and hoping. The page on static ad creatives shows what a strong brief looks like.
Blog covers. An editorial team with a backlog of posts needs one cover per article in a shared look. The sheet holds the post slug and a one-sentence description of its subject, and a single style column keeps the whole set consistent.
Tip: put the style sentence in its own column or its own cell and join it to each subject in the script. When a client asks for the whole batch to feel warmer or flatter, you edit one cell and rerun, instead of rewriting three hundred prompts by hand.
Batches multiply mistakes just as efficiently as they multiply images. Most of the credits lost in bulk runs come from a short list of avoidable errors.
Running the whole sheet on the first try is the most expensive one. A prompt template that gives a good image for the first row can give a strange one for the fortieth, because the subject changes and the template does not. Five rows with deliberately different subjects will show you the failures before a hundred more rows repeat them.
Vague prompts are the second. A sheet row saying "nice photo of a mug" gives different styles on different rows, so the batch looks like it came from five different people. Write the same structure into every prompt: subject, setting, lighting, style, in that order.
Mixing models without noting why is the third. If the model changes every ten rows and nobody wrote down the reason, you cannot explain the difference in look later. Name the reason in the notes column.
A spreadsheet is a good way to repeat a structure. It is a poor way to make decisions, and the honest limits are specific.
- Cost grows with the rows: every row is a generation that uses credits, so three hundred rows cost three hundred generations, plus every rerun of the weak ones. Check the pricing page and the model you chose before you start a large run.
- Time grows with the rows too: a generation takes time, and a long sheet takes a long time. Plan the run around a wait, not around a button that returns instantly.
- Every image still needs a human look: a model can draw a wrong hand, a garbled sign or an object that does not match the row. Open the files, and do not publish a batch you have not seen.
- Models are not interchangeable: the same prompt gives different looks, different compositions and different lettering behavior on different engines, so a sheet that works on one model is not guaranteed to work on another.
- Consistency across rows is not guaranteed: the same wording in two rows gives two different images, so a character or product that must look identical in every row needs reference images and the approach in consistent AI characters, not just a repeated sentence.
None of this makes bulk generation a bad idea. It makes it a job that needs a small test, a budget and a review step, like any other batch process.
Can I really generate hundreds of images from one CSV?
Yes, with a short script. The CSV holds one prompt per row plus the options you want, and the script sends one request per row to the Picasso IA API and saves each returned file. The limit is not the sheet but your credits and your patience for the wait, so start with five rows, check the files, then run the rest in a sensible number of chunks.
Do I need to know how to code?
A little, or a developer friend. The sheet is the part you own, and anyone can edit it. The loop that reads rows and calls the API is a few lines in most languages, and the steps do not need more than that: read a row, send one request with the model and the prompt, save the file. If you would rather not write it, ask the person who maintains your site or shop to do it.
How do I get access to the API?
You create a key in your account and send it with each request. The key is like a password: anyone who has it can spend your credits, so keep it out of the CSV, out of shared documents and out of anything public. If you think a key has leaked, replace it in your account and ask support if something looks wrong.
How much does a batch cost?
Each generation costs credits, and the amount depends on the model and the settings you pick, so any single number would be wrong for most rows. Multiply the rows by the cost of your chosen model for a rough sense of the total, add a margin for reruns, and look at the pricing page for the plans. New accounts get free credits, which is enough for a first test.
Which model should I use for a bulk run?
It depends on the job. Fast models such as flux-schnell are sensible for rough drafts when you only want to check composition, while heavier ones such as flux-2-pro, seedream-4.5 or nano-banana are worth testing for finals. The catalog has 212 text-to-image models, so run one sample prompt through two or three of them in the toolkit, pick the one you like, and put its name in the model column.
Why test five rows before the full run?
Because a mistake in the template repeats on every row. If the prompt structure produces a cropped subject, a wrong color or an odd style, you spend five generations finding out instead of three hundred. Choose five rows that are as different from each other as your sheet gets, look at every file, and only then start the rest.
Can I keep the same style across every image?
Mostly, yes. Put one shared style sentence into every prompt, keep the same model and aspect ratio for the batch, and the set will look related. It will not be identical, because each generation is a fresh draw. For a character or a product that must look the same in every row, use reference images rather than relying on words alone.
What can I use these images for?
That depends on the kind of image, where you publish it and the rules that apply to you, so check the terms of the platform you post to and the rules of your own country before you rely on a batch commercially. For images of real products, keep them truthful about the item. Do not generate images of real identifiable people, only fictional characters or people who have agreed.
What if some rows fail or look wrong?
Expect some. Mark those rows in your notes column, fix the prompt and run only that subset again, which costs credits only for the rows you rerun. If a row fails over and over with a sensible prompt, try a different model for that row, or send the details to support.
Can I try this without the API?
Yes, and it is the right first step. The toolkit runs the same catalog today, so you can paste a row's prompt, pick the model and see the result before you automate anything. A small hand test of five prompts tells you more about the batch than any plan on paper, and it costs only the credits for those five images.
Your sheet is only as good as its first five rows. Open the Picasso IA toolkit, run them by hand, and you will know what the other three hundred will look like.