All templates
AutomationBeginner2 min
×

Batch Campaign Generator

For agencies and e-commerce teams managing large product catalogs. Import products via CSV upload, Shopify store URL, or manual entry. Bloom generates on-brand images for every product and every platform concurrently, then packages them as a download-ready ZIP.

The code
3 snippets
// Run N tasks with max concurrency
async function runWithConcurrency<T>(
  tasks: (() => Promise<T>)[],
  maxConcurrent: number
): Promise<T[]> {
  const results: T[] = [];
  const executing: Promise<void>[] = [];

  for (const task of tasks) {
    const p = task().then(result => {
      results.push(result);
      executing.splice(executing.indexOf(p as any), 1);
    });
    executing.push(p as any);
    if (executing.length >= maxConcurrent) {
      await Promise.race(executing);
    }
  }

  await Promise.all(executing);
  return results;
}

// Generate for all products × platforms
const tasks = products.flatMap(product =>
  platforms.map(platform => () =>
    generateBloomImage(
      apiKey, brandSessionId,
      `${product.name}. ${product.description}`,
      platform.aspectRatio
    )
  )
);

const results = await runWithConcurrency(tasks, 5);
Replace bloom_sk_... with your API keyGet free API key →