Skip to content

Sagging and firmness

Sagging measures visible loss of skin elasticity — most prominent at the jawline, jowls, lower cheek, and brow. Firmness is its inverse. Both are computed from the same analysis. Visualization markers identify the regions contributing most to the score.

components:
- skin_sagging
- skin_firmness
request:
query: "components=skin_sagging,skin_firmness,skin_sagging_visualization"
response_path:
- "results[].description == \"skin_sagging\""
- "results[].description == \"skin_firmness\""
value_range: [0, 1]
also_request:
- skin_sagging_visualization
warnings: [3001, 3002, 4000] # 3001/3002 -> skin_sagging, 4000 -> skin_firmness
  • skin_sagging — diagnostic UI for anti-aging routines.
  • skin_firmness — improvement-over-time UI (“your firmness improved”).

Reference imagery for this metric is not yet published.

const sag = response.results.find((r) => r.description === "skin_sagging");
const firm = response.results.find((r) => r.description === "skin_firmness");

skin_sagging returns a single measurement_locations[] entry, described as Global. It is not a region score — its value is null, and it exists to carry the whole-face visualization_data. The score you display is the finding’s top-level value. The entry is present on every successful run, with an empty visualization_data when skin_sagging_visualization wasn’t requested.

This is a slow-changing metric — month-over-month tracking is appropriate; week-over-week noise will dominate signal.

  • value can be null for males in the lower-face / beard region. Beard analysis isn’t reliable, so the API returns null rather than guessing — this behavior is fixed, not configurable. Render skin sagging with an “n/a” treatment when value is null. (In rare cases, some analysis areas may not be visible and will return null exceptionally.)
  • 3001 (error, on skin_sagging) — Cannot analyze skin sagging since eyebag analysis had failed.
  • 3002 (error, on skin_sagging) — Cannot analyze skin sagging since wrinkle analysis from required locations had failed.
  • 4000 (error, on skin_firmness) — Skin firmness not analyzed due to error in skin sagging analysis.
  • How metrics connect — skin_firmness is the inverse of skin_sagging; sagging combines wrinkles + eyes.
  • Visualization data — Cat D− (advanced visualization structure but with simpler outputs — relevant finding-area data only). Polygon-area type, intensity range [0..1].
  • Rendering recipes → Polygon areas — paste-ready renderer; a neutral white overlay reads better here than the warm-color ramp used elsewhere — the metric is more “regions contributing to the score” than a severity heatmap.