Skin progress

POST /v1/skin/compare · $0.02 a call

Send two selfies, before and after. Each is graded the same way as the skin analysis API, then compared with fixed rules: a concern counts as improved or worse only when its grade changes, so small differences between photos do not show up as progress. The response also says when the two photos differ in lighting, angle, makeup or filters, which makes the comparison less fair.

For acne trackers, skincare routines, treatment progress journals.

Request

Send two photos, before and after, as multipart files, or as before_url / after_url or before_base64 / after_base64. These fields go alongside them:

FieldTypeDescription
contextstring, up to 500 charactersWhat changed between the photos, e.g. "8 weeks of adapalene". Used as context only.
agenumber, 13 to 100The user’s age in years. Context only.

Photo tips. Take both selfies in the same spot, same light, same distance, no makeup or filters. Daylight from a window works best.

curl https://truelens.keronlabs.com/v1/skin/compare \
  -H "Authorization: Bearer $TRUELENS_KEY" \
  -F before=@before-selfie.jpg \
  -F after=@after-selfie.jpg \
  -F context="example"

Response

FieldDescription
summaryOne line, e.g. "Skin score 75 to 82, acne improved, redness improved".
skin_scorebefore, after and change (after minus before).
overallimproved, worsened or unchanged, with a 3 point dead zone on the overall score.
concerns.<name>before and after score, score_change, and change (improved, worsened, unchanged) from the grade.
improved, worsened, unchangedConcern names in each group.
comparablefalse when the photos differ in ways that make the comparison less fair.
comparability_warningsWhat differs between the photos, in plain words.
before, afterThe full skin analysis of each photo.

Example

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

{
  "metadata": {
    "id": "req_9cf4da08fe7f40dab71a",
    "engine": "skin/compare",
    "status": "success",
    "cached": false,
    "credits_used": 2,
    "created_at": "2026-10-19T09:30:00.000Z",
    "processing_ms": 3400
  },
  "summary": "Skin score 75 to 81, acne improved, redness improved",
  "skin_score": {
    "before": 75,
    "after": 81,
    "change": 6
  },
  "overall": "improved",
  "concerns": {
    "acne": {
      "before": 62,
      "after": 82,
      "score_change": 20,
      "change": "improved"
    },
    "wrinkles": {
      "before": 82,
      "after": 82,
      "score_change": 0,
      "change": "unchanged"
    },
    "pigmentation": {
      "before": 82,
      "after": 82,
      "score_change": 0,
      "change": "unchanged"
    },
    "redness": {
      "before": 62,
      "after": 82,
      "score_change": 20,
      "change": "improved"
    },
    "texture": {
      "before": 82,
      "after": 82,
      "score_change": 0,
      "change": "unchanged"
    },
    "pores": {
      "before": 62,
      "after": 62,
      "score_change": 0,
      "change": "unchanged"
    },
    "dark_circles": {
      "before": 82,
      "after": 82,
      "score_change": 0,
      "change": "unchanged"
    },
    "eye_bags": {
      "before": 100,
      "after": 100,
      "score_change": 0,
      "change": "unchanged"
    },
    "oiliness": {
      "before": 62,
      "after": 62,
      "score_change": 0,
      "change": "unchanged"
    },
    "dryness": {
      "before": 100,
      "after": 100,
      "score_change": 0,
      "change": "unchanged"
    }
  },
  "improved": [
    "acne",
    "redness"
  ],
  "worsened": [],
  "unchanged": [
    "wrinkles",
    "pigmentation",
    "texture",
    "pores",
    "dark_circles",
    "eye_bags",
    "oiliness",
    "dryness"
  ],
  "comparable": true,
  "comparability_warnings": [],
  "before": {
    "summary": "Skin score 75, mild acne, mild redness, mild pores",
    "skin_score": 75,
    "skin_type": {
      "type": "combination",
      "self_reported": null,
      "sensitive_signs": true
    },
    "concerns": {
      "acne": {
        "grade": 2,
        "severity": "mild",
        "score": 62,
        "evidence": "a few red papules on the chin and several blackheads on the nose",
        "regions": [
          "chin",
          "nose"
        ]
      },
      "wrinkles": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "fine forehead lines and faint lines at the outer eyes",
        "regions": []
      },
      "pigmentation": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "one faint brown spot on the right cheek",
        "regions": [
          "right_cheek"
        ]
      },
      "redness": {
        "grade": 2,
        "severity": "mild",
        "score": 62,
        "evidence": "pink redness across both cheeks and around the nose",
        "regions": [
          "left_cheek",
          "right_cheek",
          "nose"
        ]
      },
      "texture": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "slight bumps on the chin",
        "regions": [
          "chin"
        ]
      },
      "pores": {
        "grade": 2,
        "severity": "mild",
        "score": 62,
        "evidence": "visible pores on the nose and inner cheeks",
        "regions": [
          "nose",
          "left_cheek",
          "right_cheek"
        ]
      },
      "dark_circles": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "faint shadow under both eyes",
        "regions": [
          "under_eyes"
        ]
      },
      "eye_bags": {
        "grade": 0,
        "severity": "none",
        "score": 100,
        "evidence": "",
        "regions": []
      },
      "oiliness": {
        "grade": 2,
        "severity": "mild",
        "score": 62,
        "evidence": "clear shine on the forehead and nose, cheeks mostly matte",
        "regions": []
      },
      "dryness": {
        "grade": 0,
        "severity": "none",
        "score": 100,
        "evidence": "",
        "regions": []
      }
    },
    "wrinkle_areas": {
      "forehead": {
        "grade": 1,
        "severity": "minimal"
      },
      "crows_feet": {
        "grade": 1,
        "severity": "minimal"
      },
      "nasolabial": {
        "grade": 0,
        "severity": "none"
      },
      "under_eye": {
        "grade": 1,
        "severity": "minimal"
      }
    },
    "acne_counts": {
      "comedones": 9,
      "inflammatory": 4,
      "nodules": 0
    },
    "acne_severity": {
      "hayashi_grade": 1,
      "label": "moderate",
      "lesions": 13
    },
    "top_concerns": [
      {
        "concern": "acne",
        "severity": "mild",
        "score": 62
      },
      {
        "concern": "redness",
        "severity": "mild",
        "score": 62
      },
      {
        "concern": "pores",
        "severity": "mild",
        "score": 62
      }
    ],
    "recommendations": [
      {
        "concern": "acne",
        "ingredients": [
          "benzoyl peroxide",
          "adapalene",
          "salicylic acid",
          "azelaic acid"
        ],
        "tip": "Start one active at a time and give it 8 to 12 weeks."
      },
      {
        "concern": "redness",
        "ingredients": [
          "azelaic acid",
          "niacinamide",
          "centella asiatica"
        ],
        "tip": "Use a gentle, fragrance-free routine and avoid harsh scrubs."
      },
      {
        "concern": "pores",
        "ingredients": [
          "niacinamide",
          "salicylic acid",
          "retinoids"
        ],
        "tip": "Pores cannot shrink permanently, but clearing oil makes them less visible."
      }
    ],
    "fitzpatrick": {
      "type": "III",
      "note": "Estimated from the photo. Lighting and white balance can shift it by a type."
    },
    "see_dermatologist": {
      "recommended": false,
      "reason": null
    },
    "quality": {
      "reliability": "high",
      "warnings": []
    },
    "disclaimer": "Cosmetic estimate from a photo, not a medical diagnosis. See a dermatologist for any spot that changes, bleeds or worries you."
  },
  "after": {
    "summary": "Skin score 81, mild pores, mild oiliness, minimal acne",
    "skin_score": 81,
    "skin_type": {
      "type": "combination",
      "self_reported": null,
      "sensitive_signs": false
    },
    "concerns": {
      "acne": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "a few closed comedones on the chin, no inflamed spots",
        "regions": [
          "chin",
          "nose"
        ]
      },
      "wrinkles": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "fine forehead lines and faint lines at the outer eyes",
        "regions": []
      },
      "pigmentation": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "one faint brown spot on the right cheek",
        "regions": [
          "right_cheek"
        ]
      },
      "redness": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "faint redness around the nose",
        "regions": [
          "left_cheek",
          "right_cheek",
          "nose"
        ]
      },
      "texture": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "slight bumps on the chin",
        "regions": [
          "chin"
        ]
      },
      "pores": {
        "grade": 2,
        "severity": "mild",
        "score": 62,
        "evidence": "visible pores on the nose and inner cheeks",
        "regions": [
          "nose",
          "left_cheek",
          "right_cheek"
        ]
      },
      "dark_circles": {
        "grade": 1,
        "severity": "minimal",
        "score": 82,
        "evidence": "faint shadow under both eyes",
        "regions": [
          "under_eyes"
        ]
      },
      "eye_bags": {
        "grade": 0,
        "severity": "none",
        "score": 100,
        "evidence": "",
        "regions": []
      },
      "oiliness": {
        "grade": 2,
        "severity": "mild",
        "score": 62,
        "evidence": "clear shine on the forehead and nose, cheeks mostly matte",
        "regions": []
      },
      "dryness": {
        "grade": 0,
        "severity": "none",
        "score": 100,
        "evidence": "",
        "regions": []
      }
    },
    "wrinkle_areas": {
      "forehead": {
        "grade": 1,
        "severity": "minimal"
      },
      "crows_feet": {
        "grade": 1,
        "severity": "minimal"
      },
      "nasolabial": {
        "grade": 0,
        "severity": "none"
      },
      "under_eye": {
        "grade": 1,
        "severity": "minimal"
      }
    },
    "acne_counts": {
      "comedones": 4,
      "inflammatory": 1,
      "nodules": 0
    },
    "acne_severity": {
      "hayashi_grade": 0,
      "label": "mild",
      "lesions": 5
    },
    "top_concerns": [
      {
        "concern": "pores",
        "severity": "mild",
        "score": 62
      },
      {
        "concern": "oiliness",
        "severity": "mild",
        "score": 62
      },
      {
        "concern": "acne",
        "severity": "minimal",
        "score": 82
      }
    ],
    "recommendations": [
      {
        "concern": "pores",
        "ingredients": [
          "niacinamide",
          "salicylic acid",
          "retinoids"
        ],
        "tip": "Pores cannot shrink permanently, but clearing oil makes them less visible."
      },
      {
        "concern": "oiliness",
        "ingredients": [
          "niacinamide",
          "salicylic acid",
          "oil-free moisturizer"
        ],
        "tip": "Keep moisturizing: stripping oil can make the skin produce more."
      },
      {
        "concern": "acne",
        "ingredients": [
          "benzoyl peroxide",
          "adapalene",
          "salicylic acid",
          "azelaic acid"
        ],
        "tip": "Start one active at a time and give it 8 to 12 weeks."
      }
    ],
    "fitzpatrick": {
      "type": "III",
      "note": "Estimated from the photo. Lighting and white balance can shift it by a type."
    },
    "see_dermatologist": {
      "recommended": false,
      "reason": null
    },
    "quality": {
      "reliability": "high",
      "warnings": []
    },
    "disclaimer": "Cosmetic estimate from a photo, not a medical diagnosis. See a dermatologist for any spot that changes, bleeds or worries you."
  },
  "disclaimer": "Cosmetic estimates from photos, not a medical assessment. Photos taken in the same light give the most reliable comparison."
}