Concepts
Brands
Brand identity — name, logos, color palettes, and fonts. Every product and image ad belongs to a brand.
A brand is the top-level container for your visual identity in Static Ads Lab. Every product and every image ad belongs to exactly one brand.
Mental model
A brand is the source of truth for the look and feel that the API applies to every ad it generates for you. When you generate an image ad, the brand provides the colors, fonts, and logo treatment; the design template provides the layout; the product and audience provide the content and tone.
ID prefix: brand_.
Fields
| Field | Type | Description |
|---|---|---|
id | string | brand_… |
name | string | Brand name |
description | string | null | Short brand description |
color_palettes | object | null | Brand color palettes (hex values) |
fonts | array | Font families the brand uses, e.g. [{ "name": "Inter" }] |
logo_image_ids | string[] | null | Image IDs (img_…) for brand logos |
details | object | null | Free-form brand metadata (mission, voice, tagline) |
created_at / updated_at | string | ISO timestamps |
Endpoints
| Method | Path | Purpose |
|---|---|---|
POST | /v1/brands | Create a brand |
GET | /v1/brands | List brands |
GET | /v1/brands/:id | Get a brand |
PATCH | /v1/brands/:id | Update a brand |
DELETE | /v1/brands/:id | Delete a brand |
Common patterns
Create a brand
const response = await fetch("https://api.staticadslab.com/v1/brands", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Acme Corp",
description: "Premium outdoor gear",
fonts: [{ name: "Inter" }],
}),
});
const { data } = await response.json();
console.log(data.id); // brand_...curl -s -X POST https://api.staticadslab.com/v1/brands \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corp",
"description": "Premium outdoor gear",
"fonts": [{ "name": "Inter" }]
}'import requests
response = requests.post(
"https://api.staticadslab.com/v1/brands",
headers={"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
"name": "Acme Corp",
"description": "Premium outdoor gear",
"fonts": [{"name": "Inter"}],
},
)
print(response.json()["data"]["id"]) # brand_...Attach logos
Upload images first via POST /v1/images, then PATCH /v1/brands/:id with the resulting IDs:
await fetch(`https://api.staticadslab.com/v1/brands/${brandId}`, {
method: "PATCH",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
logo_image_ids: ["img_logo_dark", "img_logo_light"],
}),
});Pitfalls
- A brand created via API has empty
color_palettes,fonts, andlogo_image_idsunless you provide them. Image ads generated against a brand with no visual data may look generic. - The dashboard onboarding flow can auto-extract brand identity from a Shopify URL. The API exposes per-field create/update only — there is no public auto-extract endpoint today.
Related
Prompt for your agent
Read https://www.staticadslab.com/docs/resources/brands.mdx and help me create a brand via the API with a name, description, and a logo image I'll provide later.