AI Age Filter

AI Age Filter

Playground

Try it on WaveSpeedAI!

AI Age Filter transforms a portrait to show how you would look at different ages. Upload a face photo and select a target age. Ready-to-use REST inference API, no coldstarts, affordable pricing.

Features

Curious what you’d look like as a baby, a teenager, or decades from now? AI Age Filter transforms any portrait into a realistic version of that face at any life stage — from baby to very old. The results are surprisingly convincing and endlessly fun to share.

Upload a photo, pick an age, and see time do its thing.


Why You’ll Love It

  • Seven age stages to explore From baby all the way to very old — travel the full timeline of a face in a single click.

  • Strikingly realistic transformations Advanced facial modeling preserves your unique features and identity while applying age-appropriate changes to skin, structure, and expression.

  • Instant results No waiting, no complicated settings — just upload, select, and see.

  • Perfect for sharing Show friends and family what you looked like (or will look like). Reactions guaranteed.


How to Use

  1. Upload your portrait — a clear, front-facing photo gives the best results.
  2. Choose an age — select from baby, child, teen, young_adult, middle_aged, old, or very_old.
  3. Hit Run — your age-transformed portrait is ready in seconds.
  4. Download and share.

Pricing

Just $0.05 per image.


Best Use Cases

  • Personal fun — See yourself at every stage of life without waiting for time to catch up.
  • Social media content — Age filter posts consistently go viral — now you can make your own.
  • Family & gifts — Transform a photo of a child to show what they might look like grown up, or age back a grandparent’s photo.
  • Creative storytelling — Visualize characters at different life stages for writing, film, or game projects.

Pro Tips

  • Front-facing photos with clear lighting produce the most accurate and realistic transformations.
  • Avoid heavy filters, sunglasses, or extreme head angles for best results.
  • Try the same photo across multiple age settings for a fun before-and-after series.
  • Baby and very_old tend to produce the most dramatic — and shareable — results.

Notes

  • Both image and age are required fields.
  • Ensure image URLs are publicly accessible if using a link rather than a direct upload.
  • Please ensure your content complies with WaveSpeed AI’s usage policies.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
  "age": "old"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/ai-age-filter" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-The URL of the input image.
agestringYesoldbaby, child, teen, young_adult, middle_aged, old, very_oldTarget age: baby (2), child (8), teen (15), young adult (22), middle aged (45), old (75), very old (90).

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.