Integrate Bloom into your automation stack so your workflows can generate brand-on images on demand and drop them into the rest of your tools. Whether you’re building in Zapier, n8n, Make, Gumloop, or anything else with an HTTP request step, the integration follows the same pattern below.Documentation Index
Fetch the complete documentation index at: https://www.trybloom.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
What you need before you start
- A Bloom API key. Create one and keep it nearby — you’ll paste it into your tool’s credential vault.
- A brand session ID. Every image you generate is scoped to a brand:
- If you already have brands, hit
GET /brandsand copy anyid. - If you don’t, create one in the Bloom app by onboarding from a URL, or via
POST /brandsfrom your workflow.
- If you already have brands, hit
- An HTTP tool in your workflow — every automation platform has one (sometimes called “HTTP request”, “API call”, or similar). That’s the only primitive you need.
The three-call pattern
- Start a generation. Returns
202 Acceptedimmediately with an image ID — the actual generation runs in the background. - Get the image. Either pass
?wait=trueand let Bloom hold the connection open until it’s ready, or poll on a short interval if your tool can’t keep a connection alive. - Use the URL. The completed image’s CDN URL is in the response — pipe it into Slack, a Google Sheet, Drive, Webflow, whatever.
Authentication
Every call sends your key as thex-api-key header:
Step 1 — Start a generation
POST https://www.trybloom.ai/api/v1/images/generations
brandSessionId, prompt. Everything else is optional.
Common optional fields:
| Field | Values | Notes |
|---|---|---|
aspectRatio | 1:1, 16:9, 9:16, 4:5, 3:2, 2:3, 3:4, 4:3, 5:4, 21:9 | Defaults to a Bloom-chosen ratio if omitted. |
imageSize | 2K, 4K | 2K = 1 credit (default). 4K = 2 credits (Plus/Pro plans). |
model | fast, standard, pro | pro is the default. fast is cheaper and quicker. |
variantCount | 1–5 | One image by default. Each variant costs the same as one generation. |
referenceImageIds | array of image IDs | Use uploaded or previously generated images as style/content references. |
202 Accepted):
data.imageIds[0] — that’s what the next step needs.
Step 2 — Get the image
You have two ways to retrieve the finished image. Pick based on your tool’s request timeout.Option A — wait=true (recommended)
GET https://www.trybloom.ai/api/v1/images/{id}?wait=true
Holds the connection open until the generation reaches a terminal state. One call, no polling loop, no scheduling. Returns the same shape whether the image was already done or just finished.
Option B — Polling
GET https://www.trybloom.ai/api/v1/images/{id}
If your tool has a hard per-step timeout (Zapier in particular), fire the GET on a loop with a short delay until status is terminal.
Step 3 — Use the URL
A completed image response includes the CDN URL inside thedata envelope:
data.imageUrl and pipe it into whatever downstream step the workflow needs — upload to Drive, post to Slack, write into a Sheet cell, attach to an email.
Batching
If you fire many generations at once (e.g. one per row in a spreadsheet), you don’t have to poll each ID individually. The list endpoint acceptsids=id1,id2,...&wait=true and holds open until every referenced image reaches a terminal state. One call collects the whole batch.
Errors
Failed responses use a consistent envelope:code, not on message. Common codes you’ll see while integrating:
| Code | Meaning |
|---|---|
UNAUTHORIZED (401) | Missing or invalid API key. |
BRAND_NOT_FOUND (422) | The brandSessionId doesn’t exist or belongs to a different account. |
INSUFFICIENT_CREDITS | Your workspace ran out of credits — top up at trybloom.ai/#pricing. |
TOO_MANY_REQUESTS (429) | Too many requests too fast — back off and retry. |