Skip to content

Grammar reference

Everything on this page is generated at build time from the compiled contract module (BcImageUrl) that the edge itself runs — the reference cannot drift from production behavior.

https://img.brandcenter.io/i/{brand}/{fileId}/{rev}/{ops}.{ext}

Ops are comma-separated key:value pairs in fixed canonical order:

p | c , w , h , fit , q , dpr , fx… , s
  • Grammar is lowercase-only. An uppercased copy of a URL would cache and sign differently, so it is invalid rather than equivalent.
  • Exactly one sizing intent: a p preset or a w/h/c combination.
  • w and h accept any integer 1–7200; ladder sizes resolve onto pre-generated renditions (the fast path), others render on demand.
  • fx is the only repeatable op; s (when present) is always last.
  • Aspect ratio is never broken implicitly — a single dimension derives the other, and only an explicit fit:fill stretches.
  • Unknown ops, out-of-range sizes, and out-of-order ops are rejected.

Size ladder

The pre-generated rendition sizes — w requests at these values are straight cache hits with no render (other sizes render on demand; everything clamps to the source's largest generated size):

1282564008001600240048007200

Output formats

The extension is always explicit: .webp .jpg .png .avif

Quality tiers

q @1x @2x (dpr:2)
eco 60 45
std (default) 85 60
hi 92 75

Quality descends as DPR ascends: high-density screens hide compression, so a 2x render at lower quality looks identical and ships fewer bytes. std@1x matches the pre-generated ladder's own encode quality — a default render and a ladder artifact are byte-consistent.

Effects

fx name Arguments Example
blur 1 fx:blur:20
brightness 1 fx:brightness:20
contrast 1 fx:contrast:20
flip 0 fx:flip
flop 0 fx:flop
gamma 1 fx:gamma:20
grayscale 0 fx:grayscale
rotate 1 fx:rotate:20
saturation 1 fx:saturation:20
sharpen 1 fx:sharpen:20