didit-age-estimation

star 7

Integrate Didit Age Estimation standalone API to estimate a person's age from a facial image. Use when the user wants to estimate age, verify age, implement age gating, check if someone is over 18/21, perform age verification for compliance, or use facial analysis for age detection using Didit. Includes passive liveness check. Supports configurable thresholds, adaptive age estimation with ID verification fallback, and per-country age restrictions.

modbender By modbender schedule Updated 3/6/2026

name: didit-age-estimation description: > Integrate Didit Age Estimation standalone API to estimate a person's age from a facial image. Use when the user wants to estimate age, verify age, implement age gating, check if someone is over 18/21, perform age verification for compliance, or use facial analysis for age detection using Didit. Includes passive liveness check. Supports configurable thresholds, adaptive age estimation with ID verification fallback, and per-country age restrictions. version: 1.0.0 metadata: openclaw: requires: env: - DIDIT_API_KEY primaryEnv: DIDIT_API_KEY emoji: "๐ŸŽ‚" homepage: https://docs.didit.me


Didit Age Estimation API

Overview

Estimates a person's age from a facial image using deep learning. Also performs a passive liveness check to prevent spoofing.

Key constraints:

  • Supported formats: JPEG, PNG, WebP, TIFF
  • Maximum file size: 5MB
  • Image must contain one clearly visible face
  • Accuracy: MAE ยฑ3.5 years overall; ยฑ1.5 years for under-18

Capabilities: Age estimation with confidence scoring, gender estimation, passive liveness detection, configurable age thresholds, per-country age restrictions, adaptive mode with ID verification fallback for borderline cases.

Liveness methods (workflow mode):

Method Security Best For
ACTIVE_3D (Action + Flash) Highest Banking, government, healthcare
FLASHING (3D Flash) High Financial services, identity verification
PASSIVE (single-frame CNN) Standard Low-friction consumer apps

API Reference: https://docs.didit.me/reference/age-estimation-standalone-api


Authentication

All requests require x-api-key header. Get your key from Didit Business Console โ†’ API & Webhooks.


Endpoint

POST https://verification.didit.me/v3/age-estimation/

Headers

Header Value Required
x-api-key Your API key Yes
Content-Type multipart/form-data Yes

Request Parameters (multipart/form-data)

Parameter Type Required Default Description
user_image file Yes โ€” Facial image (JPEG/PNG/WebP/TIFF, max 5MB)
rotate_image boolean No false Try 0/90/180/270 rotations for non-upright faces
save_api_request boolean No true Save in Business Console Manual Checks
vendor_data string No โ€” Your identifier for session tracking

Example

import requests

response = requests.post(
    "https://verification.didit.me/v3/age-estimation/",
    headers={"x-api-key": "YOUR_API_KEY"},
    files={"user_image": ("selfie.jpg", open("selfie.jpg", "rb"), "image/jpeg")},
    data={"vendor_data": "user-123"},
)
print(response.json())
const formData = new FormData();
formData.append("user_image", selfieFile);

const response = await fetch("https://verification.didit.me/v3/age-estimation/", {
  method: "POST",
  headers: { "x-api-key": "YOUR_API_KEY" },
  body: formData,
});

Response (200 OK)

{
  "request_id": "a1b2c3d4-...",
  "liveness": {
    "status": "Approved",
    "method": "PASSIVE",
    "score": 89.92,
    "age_estimation": 24.3,
    "reference_image": "https://example.com/reference.jpg",
    "video_url": null,
    "warnings": []
  },
  "created_at": "2025-05-01T13:11:07.977806Z"
}

Status Values & Handling

Status Meaning Action
"Approved" Age verified above threshold, liveness passed Proceed with your flow
"Declined" Age below minimum or liveness failed Check warnings for specifics
"In Review" Borderline case, needs review Trigger ID verification fallback or manual review

Error Responses

Code Meaning Action
400 Invalid request Check file format, size, parameters
401 Invalid API key Verify x-api-key header
403 Insufficient credits Top up at business.didit.me

Response Field Reference

Field Type Description
status string "Approved", "Declined", "In Review", "Not Finished"
method string "ACTIVE_3D", "FLASHING", or "PASSIVE"
score float 0-100 liveness confidence score
age_estimation float Estimated age in years (e.g. 24.3). null if no face
reference_image string Temporary URL (expires 60 min)
video_url string Temporary URL for active liveness video. null for passive
warnings array {risk, log_type, short_description, long_description}

Accuracy by Age Range

Age Range MAE (years) Confidence
Under 18 1.5 High
18-25 2.8 High
26-40 3.2 High
41-60 3.9 Medium-High
60+ 4.5 Medium

Warning Tags

Auto-Decline

Tag Description
NO_FACE_DETECTED No face found in image
LIVENESS_FACE_ATTACK Spoofing attempt detected
FACE_IN_BLOCKLIST Face matches a blocklist entry

Configurable (Decline / Review / Approve)

Tag Description
AGE_BELOW_MINIMUM Estimated age below configured minimum
AGE_NOT_DETECTED Unable to estimate age (image quality, lighting)
LOW_LIVENESS_SCORE Liveness score below threshold
POSSIBLE_DUPLICATED_FACE Significant similarity with previously verified face

Warning severity: error (โ†’ Declined), warning (โ†’ In Review), information (no effect).


Common Workflows

Basic Age Gate

1. Capture user selfie
2. POST /v3/age-estimation/ โ†’ {"user_image": selfie}
3. Check liveness.age_estimation >= your_minimum_age
4. If "Approved" โ†’ user meets age requirement
   If "Declined" โ†’ check warnings for AGE_BELOW_MINIMUM or liveness failure

Adaptive Age Estimation (Workflow Mode)

1. Configure workflow with age thresholds in Console
2. POST /v3/session/ โ†’ create session with age-estimation workflow
3. User takes selfie โ†’ system estimates age
4. Clear pass (well above threshold) โ†’ Approved instantly
   Clear fail (well below threshold) โ†’ Declined
   Borderline case โ†’ automatic ID verification fallback
5. If ID fallback triggered: per-country age restrictions apply

Per-Country Age Restrictions

Configure in Console per issuing country:

Country Min Age Overrides
USA 18 Mississippi: 21, Alabama: 19
KOR 19 โ€”
GBR 18 โ€”
ARE 21 โ€”

Use "Apply age of majority" button in Console to auto-populate defaults.

Install via CLI
npx skills add https://github.com/modbender/skill-library-mcp --skill didit-age-estimation
Repository Details
star Stars 7
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator