Get started with the DermIQ skin analysis API in minutes. Upload a face image, get 15+ clinical skin metrics and 26 mask visualizations.
https://api.dermiq.devAll API requests require a Bearer token. Generate an API key in your dashboard. Include it in every request header.
Authorization: Bearer diq_sk_your_key_hereUpload a face image for full skin analysis. Returns an analysis ID for polling. Full analysis includes all 15+ metrics and 26 mask visualizations. Consumes 1 credit per analysis.
| Field | Type | Description |
|---|---|---|
| file | multipart | Face image (JPEG/PNG, max 10MB) |
| age_override | integer | Optional. Override detected age |
| gender_override | string | Optional. "male" or "female" |
curl -X POST https://api.dermiq.dev/v1/analyze \
-H "Authorization: Bearer diq_sk_..." \
-F "file=@face.jpg"
# Response (202 Accepted):
{
"analysis_id": "uuid",
"status": "pending",
"message": "Analysis queued for processing"
}Quick analysis — scores only, no mask visualizations. Faster processing, ideal for real-time applications. Consumes 1 credit.
Poll for analysis results. Status progresses: pending → processing → completed. Most analyses complete in 1.5-2.5 seconds.
| Field | Type | Description |
|---|---|---|
| status | string | pending, processing, completed, failed |
| result_json | object | All skin metrics and analysis data |
| mask_filenames | string[] | List of 26 mask PNG filenames |
| overall_score | number | Overall skin health score (0-100) |
| skin_age | integer | Estimated skin age |
| processing_time_ms | integer | Processing time in milliseconds |
# Response when completed:
{
"id": "uuid",
"status": "completed",
"analysis_type": "full",
"result_json": {
"all": { "score": 78.5 },
"skin_age": 32,
"skin_tone": {
"fitzpatrick": "III",
"monk": "05",
"ita_angle": 34.2
},
"hd_acne": { "raw_score": 91.2, "ui_score": 91.2 },
"hd_wrinkle": {
"whole": { "ui_score": 72.1 },
"forehead": { "ui_score": 65.3 },
"crow_feet": { "ui_score": 80.4 }
},
"hd_pore": { "ui_score": 68.9 },
"hd_redness": { "ui_score": 82.5 },
"hd_oiliness": { "ui_score": 55.0 },
"hd_texture": { "ui_score": 74.3 },
"hd_dark_circles": { "ui_score": 60.1 },
"hd_firmness": { "ui_score": 71.8 },
"faceshape": "Oval",
"eye_color": { "hex": "#6B8E23", "name": "Hazel" },
"lip_color": { "hex": "#C75B76" },
"hair_color": { "hex": "#3B2F2F", "name": "Dark Brown" }
},
"mask_filenames": [
"hd_acne_output.png",
"hd_wrinkle_output_all.png",
"hd_pore_output.png",
"hd_redness_output.png"
],
"overall_score": 78.5,
"skin_age": 32,
"processing_time_ms": 2150
}Download a specific mask PNG visualization. Returns the image file directly.
curl https://api.dermiq.dev/v1/results/{id}/masks/hd_acne_output.png \
-H "Authorization: Bearer diq_sk_..." \
--output acne_mask.pngAll metrics returned in result_json. Scores are 0-100 (higher = healthier).
| Metric | Key | Description |
|---|---|---|
| Acne | hd_acne | Acne severity detection |
| Wrinkles | hd_wrinkle | Wrinkle depth (whole, forehead, crow feet, nasolabial) |
| Pores | hd_pore | Pore size and visibility |
| Redness | hd_redness | Redness and rosacea detection |
| Oiliness | hd_oiliness | Skin oiliness level |
| Texture | hd_texture | Skin texture smoothness |
| Dark Circles | hd_dark_circles | Under-eye dark circle severity |
| Firmness | hd_firmness | Skin firmness and elasticity |
| Skin Age | skin_age | Estimated skin age in years |
| Skin Tone | skin_tone | Fitzpatrick, Monk scale, ITA angle |
| Face Shape | faceshape | Oval, Round, Square, Heart, etc. |
| Eye Color | eye_color | Hex value and named color |
| Lip Color | lip_color | Hex value |
| Hair Color | hair_color | Hex value and named color |
| Overall Score | all.score | Composite skin health score |
| Plan | Rate Limit | Credits | Price |
|---|---|---|---|
| Free | 30/min | 10 | $0 |
| Credit Pack | 30/min | 100 | $5 ($0.05/analysis) |
| Enterprise | 120/min | Custom | Contact sales |
| Code | Description |
|---|---|
| 401 | Invalid or missing API key |
| 403 | No credits remaining |
| 404 | Analysis not found |
| 413 | Image too large (max 10MB) |
| 429 | Rate limit exceeded |