Skip to content

Shine

Shine measures visible surface shine on the face — the glossiness from sebum, sweat, or product. It reflects both diffuse sheen and specular highlights, which are also reported separately in sum_measures. Higher values typically indicate the T-zone (forehead, nose), but partner UIs often surface per-zone values to drive routine recommendations.

component: shine
request:
query: "components=shine,shine_visualization"
response_path: "results[].description == \"Skin shine\"" # NOTE: request component is `shine`, response description is `Skin shine`
value_range: [0, 1]
also_request:
- shine_visualization # polygon-area features, 4 categories: low-diffuse, high-diffuse, low-specular, high-specular
warnings: [] # shine emits no metric-specific codes

Reference imagery for this metric is not yet published.

// Request component is `shine`, but the response finding's description is "Skin shine".
const shine = response.results.find((r) => r.description === "Skin shine");
// Per-zone entries are "t-zone" and "u-zone". The "Global" entry has value: null —
// it only carries whole-face visualization data. The whole-face score is shine.value.
const byZone = Object.fromEntries(
shine.measurement_locations
.filter((m) => m.description !== "Global")
.map((m) => [m.description, m.value]),
);

Beyond the top-level value, the finding exposes three sum_measures — Diffuse shine, Specular shine, and Specular shine intensity — so you can separate matte sheen from sharp specular hotspots when driving recommendations.

The ut_zone field on each measurement location distinguishes t-zone from u-zone — useful for routine personalization (oily T-zone vs. dry U-zone).

  • Direct flash dramatically inflates shine scores. Diffuse light is critical.
  • Sweat or recently-applied product reads as shine.

The shine metric emits no metric-specific local_warnings[] codes; it inherits the global image-quality codes.