
1. Authenticate
For server-side automations, open your account settings and generate an API key. Store it asBLOOM_API_KEY in your environment or secret manager before running the examples below. Treat it as a secret — never commit it or expose it client-side.
App integrations can use Bloom OAuth instead and call the API with Authorization: Bearer <access_token>. See API authentication for the OAuth endpoints and PKCE requirements.
2. Get a Brand ID
Image generations are scoped to a brand. You need abrandSessionId — either pick an existing brand or create one from source evidence.
- Existing brand
- Onboard your brand
List your brands and copy any Pick a brand whose
id:status is ready. Its id is the brandSessionId you’ll use next. If the brand is still analyzing, continue to step 3.3. Wait for the brand
Passwait=true to wait for the current brand analysis:
status: "analyzing", call the same endpoint again with the same Brand ID. Continue only when the brand is ready.
If the brand is failed, show failure.message, correct the input, and submit a new creation request. logo_required applies only to older brands and the explicit-logo compatibility workflow. See Create a brand for the complete lifecycle and recovery guidance.
4. Start a generation
Generations are asynchronous. Bloom queues the job and returns202 immediately with one or more image IDs.
BRAND_NOT_READY with HTTP 409. Inspect or wait on GET /brands/{id} before retrying.
5. Retrieve the image
CallGET /images/{id} to check the status. Pass wait=true to hold the connection open while the generation runs:
pending or generating, call the same endpoint again. For batch flows, the list endpoint accepts ids=...&wait=true to collect many images in one call.
Response format
Successful responses are wrapped in adata envelope:
Error format
Failed responses use a consistent envelope:code; treat message as human-readable only.
Continue with Generate images, or open the API reference for the complete public contract.