curl --request GET \
--url https://www.trybloom.ai/api/v1/images \
--header 'x-api-key: <api-key>'import requests
url = "https://www.trybloom.ai/api/v1/images"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://www.trybloom.ai/api/v1/images', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.trybloom.ai/api/v1/images",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.trybloom.ai/api/v1/images"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.trybloom.ai/api/v1/images")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.trybloom.ai/api/v1/images")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"images": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "generated",
"prompt": "<string>",
"description": "<string>",
"aspectRatio": "1:1",
"width": 123,
"height": 123,
"actionType": "generation",
"variantGroupId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"failureReason": "content_safety",
"workspaceId": "<string>",
"workspaceName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"brandSessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"imageUrl": "<string>"
}
],
"nextCursor": "<string>",
"hasMore": true
}
}{
"error": {
"code": "UNAUTHORIZED",
"status": 401,
"message": "Invalid or missing API credentials",
"data": "<unknown>"
}
}{
"error": {
"code": "ACCOUNT_BANNED",
"status": 403,
"message": "This account has been suspended.",
"data": "<unknown>"
}
}{
"error": {
"code": "BRAND_NOT_FOUND",
"status": 422,
"message": "Brand session not found",
"data": "<unknown>"
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"status": 429,
"message": "Rate limit exceeded",
"data": "<unknown>"
}
}List images
List images for one brand or across all brands, with cursor-based pagination and filters for status and action type. Returns short redirect URLs such as /img/{id} for completed images by default. When you provide ids, pass wait=true to hold the connection until every referenced image reaches a terminal status. Use this to collect results from a batch of asynchronous generations.
curl --request GET \
--url https://www.trybloom.ai/api/v1/images \
--header 'x-api-key: <api-key>'import requests
url = "https://www.trybloom.ai/api/v1/images"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://www.trybloom.ai/api/v1/images', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.trybloom.ai/api/v1/images",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.trybloom.ai/api/v1/images"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.trybloom.ai/api/v1/images")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.trybloom.ai/api/v1/images")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"images": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "generated",
"prompt": "<string>",
"description": "<string>",
"aspectRatio": "1:1",
"width": 123,
"height": 123,
"actionType": "generation",
"variantGroupId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"failureReason": "content_safety",
"workspaceId": "<string>",
"workspaceName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"brandSessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"imageUrl": "<string>"
}
],
"nextCursor": "<string>",
"hasMore": true
}
}{
"error": {
"code": "UNAUTHORIZED",
"status": 401,
"message": "Invalid or missing API credentials",
"data": "<unknown>"
}
}{
"error": {
"code": "ACCOUNT_BANNED",
"status": 403,
"message": "This account has been suspended.",
"data": "<unknown>"
}
}{
"error": {
"code": "BRAND_NOT_FOUND",
"status": 422,
"message": "Brand session not found",
"data": "<unknown>"
}
}{
"error": {
"code": "TOO_MANY_REQUESTS",
"status": 429,
"message": "Rate limit exceeded",
"data": "<unknown>"
}
}Authorizations
Bloom API key, for example x-api-key: bloom_sk_....
Query Parameters
Comma-separated image IDs to filter by (max 50). Returns only the specified images.
Team workspace ID. Scopes results to that workspace. Omit to list across every workspace the caller can see.
1Brand ID (from GET /brands). Omit to list images across all brands.
Results per page (1–100, default 50)
1 <= x <= 100Pagination cursor from a previous response's nextCursor
Filter by image source. "generated" = AI-created, "uploaded" = user uploads, "scraped" = website images from brand onboarding
generated, uploaded, scraped Filter by generation status (only applies to generated images — uploaded/scraped images are excluded when this filter is active)
pending, generating, completed, failed Filter by action type (only applies to generated images — uploaded/scraped images are excluded when this filter is active)
generation, edit, resize, variant, recreate, remove-background, vectorize Include signed download URLs for completed images
Hold the connection until every image referenced by ids reaches a terminal status. No-op when ids is omitted.
Max seconds to wait (default 120, max 295)
1 <= x <= 295Response
OK
Show child attributes
Show child attributes
Was this page helpful?