What it is. A full-dimension skin report written in natural language, generated by a large language model fed your precision AI skin analysis together with a professional skincare reference database. The model does not guess at your skin — it interprets measured, quantified skin metrics and real detection masks, compares them against professional skincare data, and returns a complete report in llm_results.json.
Which dst_actions feed each dimension of the report. The report is only as rich as the features you request. dst_actions is required, and HD and SD features cannot be mixed in one request — pick one family.
| Report dimension | V2.1 feature | Regions returned |
|---|---|---|
| Face outline and feature localization | pf_camera_kit: true | — |
| Skin type | hd_skin_type | whole, t_zone, u_zone |
| T-zone vs. U-zone comparison | hd_skin_type | t_zone, u_zone |
| Forehead lines and frown lines | hd_wrinkle | forehead, glabellar |
| Crow's feet and smile lines | hd_wrinkle | crowfeet, nasolabial |
| Pore distribution | hd_pore | forehead, nose, cheek, whole |
| Skin smoothness | hd_texture | whole |
Parameters
| Field | Type | Default | Notes |
|---|---|---|---|
language | string enum | enu | enu cht jpn kor fra deu esn ita ptb ind ara |
tone | string enum | warm | warm | direct — both tones stay professional |
country | string | — | Adds climate and seasonal context to the report |
city | string | — | Adds climate and seasonal context to the report |
Send "advanced_report": {} to accept every default. Omit the object entirely for no report.
- Create an AI Task
# Skin Analysis with Advanced Skin Report
curl -sS -X POST "$BASE_URL/s2s/v2.1/task/skin-analysis-report" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"src_file_url": "https://your-cdn.example.com/customer-001.jpg",
"dst_actions": ["hd_skin_type", "hd_wrinkle", "hd_pore", "hd_texture"],
"format": "zip",
"pf_camera_kit": true,
"advanced_report": {
"language": "cht",
"tone": "direct",
"country": "Taiwan",
"city": "Taipei"
}
}'# Same call, every report default (enu / warm, no climate context)
curl -sS -X POST "$BASE_URL/s2s/v2.1/task/skin-analysis-report" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"src_file_id": "your-uploaded-file-id",
"dst_actions": ["hd_skin_type", "hd_wrinkle", "hd_pore", "hd_texture"],
"pf_camera_kit": true,
"advanced_report": {}
}'- Polling for the Report and Recommendations
Every run answers a BasicRunTaskResponseV2 immediately. Poll the task with the returned id; the report and the recommendations are delivered in llm_results.json.
# 1. Run the task and capture the task id
TASK_ID=$(curl -sS -X POST "$BASE_URL/s2s/v2.1/task/skin-analysis" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{ ... }' | jq -r '.data.task_id')
# 2. Poll until task_status is "success"
curl -sS -H "Authorization: Bearer $API_KEY" \
"$BASE_URL/s2s/v2.1/task/skin-analysis/$TASK_ID"task_status moves running → success | error. With format: zip, results.url is a download link valid for 2 hours, and the ZIP contains a skinanalysisResult folder with score_info.json and every detection image. With format: json, results.output returns the scores directly in the body.
- Request-Field Quick Reference
| Field | Required | Notes |
|---|---|---|
src_file_id / src_file_url | Yes (one of) | Input image, per BasicRunTaskV2 |
dst_actions | Yes | HD features or SD features — never mixed |
format | No | zip (default) | json — response schema differs |
pf_camera_kit | No | V2.1 addition; face outline and feature localization |
miniserver_args | No | Mask overlay and HD pore/wrinkle background controls |
advanced_report | No | Present → report; {} → all defaults; omitted → none |
product_recommendation | No | Present → recommendations; needs catalog_id |
Resolution. All output images are capped at a 2560 px long side, with automatic input resizing. If enable_mask_overlay is false, you receive the raw mask as .png and must composite it yourself — verify the input resolution and use 2560 px to size your display when the long side exceeds it.