Skin shade and undertone

POST /v1/color/shade · $0.01 a call

Send a front-facing selfie. A vision model marks bare skin on the cheeks and forehead, and Truelens measures those colors from the pixels in CIELAB. Depth is the nearest of 10 fixed reference tones by lightness; undertone comes from the measured hue (warm, cool or neutral), with olive for skin that is golden but muted. The result gives the depth band and undertone family to look for in a foundation, and how to test it.

For makeup shade finders, beauty retail apps, skincare apps.

Request

Send the photo as image (multipart), image_base64 or image_url, as described in the overview. These fields go alongside it:

This API takes no extra fields.

Photo tips. Bare skin, facing a window in daylight, no flash and no filter. JPEG gives measured colors; other formats fall back to estimates.

curl https://truelens.keronlabs.com/v1/color/shade \
  -H "Authorization: Bearer $TRUELENS_KEY" \
  -F image=@portrait.jpg

Response

FieldDescription
summaryOne line, e.g. "Depth 5 of 10 (medium), warm undertone".
depthstep from 1 (lightest) to 10 (deepest), its band (fair, light, medium, tan, deep) and the reference tone as hex.
undertonewarm, cool, neutral or olive, the measured skin hue angle (higher is more golden) and the cues used.
foundationThe depth band and undertone family to shop for, and how to test a shade.
measuredThe measured skin color as hex and CIELAB, and whether white balance was corrected.
qualityok is false when light, makeup or a filter make the result less reliable; warnings says why.

Example

Output of this API’s own code on a sample photo. Values will differ for your photos.

{
  "metadata": {
    "id": "req_9cf4da08fe7f40dab71a",
    "engine": "color/shade",
    "status": "success",
    "cached": false,
    "credits_used": 1,
    "created_at": "2026-10-19T09:30:00.000Z",
    "processing_ms": 3400
  },
  "summary": "Depth 5 of 10 (medium), warm undertone",
  "depth": {
    "step": 5,
    "of": 10,
    "label": "medium",
    "reference_hex": "#c99370"
  },
  "undertone": {
    "label": "warm",
    "skin_hue_angle": 59.8,
    "cues": [
      "skin hue angle 59.8 degrees"
    ]
  },
  "foundation": {
    "depth_band": "medium",
    "undertone_family": "golden or yellow",
    "how_to_test": "Pick three medium shades with golden or yellow undertones and swipe each in a short stripe along your jawline. Let them dry for a few minutes, then look in daylight by a window: the one that disappears into both your face and neck is your match."
  },
  "measured": {
    "skin": {
      "hex": "#c99a7b",
      "lab": {
        "L": 67.2,
        "a": 13.4,
        "b": 23
      }
    },
    "white_balance": "none"
  },
  "quality": {
    "ok": false,
    "warnings": [
      "Makeup on the skin changes the measured shade. Bare skin gives the truest result.",
      "Skin color is an estimate, not a measurement. Send a JPEG for measured colors."
    ]
  }
}