Migrating brand identity
AdCP 3.0 rc.1 replaces inlinebrand_manifest objects with lightweight brand references (BrandRef). Brand data is resolved at execution time from /.well-known/brand.json or the community brand registry.
What changed
BrandRef schema
A brand reference identifies a brand by domain and optionalbrand_id:
domain(required) — Domain where/.well-known/brand.jsonis hosted, or the brand’s operating domainbrand_id(optional) — Brand identifier within a house portfolio. Omit for single-brand domains.
Where brand appears
brand does not appear on update_media_buy (immutable from creation), sync_creatives (scoped to account), or sync_catalogs (scoped to account).
Before and after
beta.3 — inline brand_manifest on create_media_buy:test=false
test=false
nova-brands.com + spark to the full brand identity (logos, colors, tone, properties) via the Brand Protocol.
Resolution flow
Given aBrandRef, the resolution is:
- Fetch
https://{domain}/.well-known/brand.json - If it’s a House Redirect (has
housefield), follow to the house domain (max 3 redirects) - If it’s a House Portfolio, look up the brand by
brand_idin thebrandsarray - If it’s a Brand Agent, call the MCP agent for dynamic brand data
- If it’s an Authoritative Location, follow the
locationURL
Migration steps
1
Replace brand_manifest with brand
In all task requests (
create_media_buy, get_products, build_creative), replace the brand_manifest object with a brand BrandRef: { "domain": "...", "brand_id": "..." }.2
Host brand.json
Publish
/.well-known/brand.json on the brand’s domain. Choose a variant: House Portfolio for multi-brand companies, Brand Agent for dynamic data, or single-brand for simple cases.3
Register in brand registry
If the brand domain doesn’t host
brand.json, register it in the community brand registry so sellers can resolve it.4
Update seller resolution
Seller agents must resolve
BrandRef to full brand data at execution time. Implement caching and handle all four brand.json variants.5
Remove inline brand data
Remove any code that constructs or parses
brand_manifest objects. Brand data is no longer passed inline.6
Validate against schema
Run requests against
brand-ref.json schema. The domain field requires a valid lowercase domain pattern.Brand identity
Full reference for brand.json variants, the brand registry, and BrandRef resolution.
Related: Channels | Catalogs | Brand Protocol | AdCP 3.0 overview