Brandcenter image URLs
Every image asset in Brandcenter can be transformed on the fly by describing the result in the URL. There is nothing to install and no API call to make — the URL is the API.
https://img.brandcenter.io/i/{brand}/{fileId}/{rev}/{ops}.{ext}| Segment | Meaning |
|---|---|
brand | Your brand slug (e.g. nova) |
fileId | The asset’s file version id (the picker and API hand this to you) |
rev | The preview revision — a cache key; a new upload version mints a new one |
ops | Comma-separated transformations in canonical order (below) |
ext | Output format, always explicit: webp, jpg, png, or avif |
p:sq128.webp — a brand preset — the primary surface for embeds https://img.brandcenter.io/i/bc/aHVFd2tZTjRGZW5lTlh5T09RVHJmRXNFZUVobjEzdkQ/1/p:sq128.webp Ops, in canonical order
Section titled “Ops, in canonical order”Operations are key:value pairs, comma-separated, in one fixed order —
one derivative has exactly one URL (and one cache entry, and one signature
payload):
p | c , w , h , fit , q , dpr , fx… , s| Op | What it does |
|---|---|
p:{preset} | A named, brand-managed rendition — the primary surface for embeds |
c:{x}:{y}:{w}:{h} | Normalized editorial crop rectangle (6 decimals) |
w:{1..7200} | Width / bounding size (ladder sizes are the pre-generated fast path) |
h:{1..7200} | Height; with w it defines an explicit box |
fit:{cover|contain|fill} | How a box is filled (default: fit inside) |
q:{eco|std|hi} | Quality tier (default std) |
dpr:{1|2} | Device pixel ratio |
fx:{name}[:{arg}] | Effects, repeatable, applied in order |
s:{kid}:{hmac} | Optional signature — unlocks the durable tier |
Brand presets carry the styling decisions (sizes, padding, backgrounds,
smart cropping) as managed data — retune a preset and every embedded
URL updates without changing. The URL grammar itself stays deliberately
small: what’s editorial (c:), what’s delivery (q:, dpr:), and raw
access to renditions that already exist (w:).
Two rules you’ll never have to think about again:
- Height never appears. It’s derived from the source aspect ratio, the crop rectangle, or the preset. One dimension, no stretching, ever.
- Grammar is lowercase-only and order is fixed. An equivalent URL written differently would be a second cache entry and a second signature payload — so it simply isn’t valid.
Where these URLs are safe to use
Section titled “Where these URLs are safe to use”Anywhere. /i/ URLs are plain, stateless GETs served from Cloudflare’s
edge — embed them in <img> tags, emails, CMS documents (our Sanity and
Payload plugins mint them for you), or fetch them from your backend.
Plain resizes and presets resolve onto pre-generated renditions; crops and
effects render on demand and cache at the edge. If you plan to store a
crop/effect URL long-term, sign it to move it to the
durable tier.