Skincare ingredients
POST /v1/skin/products · $0.001 a call
Send a product's ingredient list as printed on the pack. The response lists the actives it contains (retinoids, acids, vitamin C, niacinamide, benzoyl peroxide, azelaic acid, peptides, ceramides and more), ingredients that may irritate or clog pores, fragrance and fragrance allergens, and when in the day to use it. Add a second list in "with" to check whether the two products clash. Fixed tables, no model.
For skincare apps, beauty retailers, routine builders.
Request
Send these fields as a JSON body (or form fields) on POST /v1/skin/products. No photo is needed.
| Field | Type | Description |
|---|---|---|
ingredients | string, up to 5000 characters, required | The INCI list from the pack, comma separated, as printed. |
with | string, up to 5000 characters | A second product's INCI list, to check whether the two clash in one routine. |
skin_type | one of oily, dry, combination, normal, sensitive | Tunes the pore clogging and irritation notes. |
Photo tips. No photo needed. To read the list from a photo of the pack, use the label API first and pass its INCI list here.
curl https://truelens.keronlabs.com/v1/skin/products \
-H "Authorization: Bearer $TRUELENS_KEY" \
-H "Content-Type: application/json" \
-d '{"ingredients":"Aqua, Glycerin, Niacinamide, Retinol, Cetearyl Alcohol, Isopropyl Myristate, Ceramide NP, Sodium Hyaluronate, Parfum, Linalool, Phenoxyethanol"}'
Response
| Field | Description |
|---|---|
summary | One line, e.g. "2 actives (retinoid, niacinamide), has fragrance". |
actives | class, name, the ingredient as written, and its position on the list (earlier means more of it). |
irritants, comedogenic | ingredient and reason. |
fragrance, fragrance_free | Fragrance and fragrance allergen ingredients. |
other_flags | Preservatives, UV filters and other ingredients with use limits or common allergy. |
with, conflicts | The second product's actives, and each clash with advice on timing. Empty without "with". |
when_to_use | am, pm or am_or_pm. |
verdict | A few plain sentences on the product. |
Example
Output of this API’s own code on the sample request above.
{
"metadata": {
"id": "req_9cf4da08fe7f40dab71a",
"engine": "skin/products",
"status": "success",
"cached": false,
"credits_used": 0.1,
"created_at": "2026-10-19T09:30:00.000Z",
"processing_ms": 40
},
"summary": "4 actives (niacinamide, retinoid), has fragrance",
"ingredient_count": 11,
"actives": [
{
"class": "niacinamide",
"name": "niacinamide",
"ingredient": "Niacinamide",
"position": 3
},
{
"class": "retinoid",
"name": "retinoid",
"ingredient": "Retinol",
"position": 4
},
{
"class": "ceramides",
"name": "ceramides",
"ingredient": "Ceramide NP",
"position": 7
},
{
"class": "hyaluronic_acid",
"name": "hyaluronic acid",
"ingredient": "Sodium Hyaluronate",
"position": 8
}
],
"irritants": [],
"comedogenic": [
{
"ingredient": "Isopropyl Myristate",
"reason": "May clog pores in some people, mostly on oily or acne prone skin."
}
],
"fragrance": [
{
"ingredient": "Parfum",
"category": "Fragrance",
"level": "info",
"reason": "An undisclosed blend of scent ingredients and a common cause of contact allergy. Often avoided on sensitive skin."
},
{
"ingredient": "Linalool",
"category": "Fragrance allergen",
"level": "info",
"reason": "One of the 26 fragrance allergens the EU requires on the label above 0.001% in leave-on and 0.01% in rinse-off products (Regulation 1223/2009, Annex III)."
}
],
"other_flags": [],
"fragrance_free": false,
"with": null,
"conflicts": [],
"when_to_use": "pm",
"verdict": "Has niacinamide, retinoid, ceramides. Contains fragrance (2 fragrance ingredients), which can bother sensitive skin. Best used at night.",
"disclaimer": "Based on the ingredient list only. Strength depends on concentration, which labels rarely show. Not medical advice."
}