Face Enhancer Image API Documentation

Face Enhancer Image API Documentation

Playground

Try it on WaveSpeedAI!

WaveSpeedAI Image Face Enhancer restores and sharpens faces in photos, recovering natural facial detail from blurry, compressed, or low-quality portraits for photo restoration, portrait enhancement, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Image Face Enhancer restores and sharpens faces in photos while preserving the surrounding image. It automatically detects the most prominent faces, recovers details in areas such as eyes, skin, hair, and teeth, and blends the enhanced regions back into the original image.

The model is designed for portraits, group photos, compressed images, old photographs, and AI-generated images where facial detail needs improvement without applying a full-image restoration pass.


Why Choose This?

  • Automatic face detection
    Detect and enhance up to 3 of the largest faces in the image without masks or manual face selection.

  • Natural face restoration
    Recover facial detail lost to blur, compression, or low resolution while preserving the person’s overall appearance and expression.

  • Occlusion-aware enhancement
    Preserve foreground elements such as hands, hair strands, and glasses when they overlap the face.

  • Localized processing
    Focus restoration on detected faces while keeping the surrounding background, clothing, and composition unchanged.

  • Original-resolution output
    Return the enhanced image at the same resolution as the source.

  • Multiple output formats
    Export the result as jpeg, png, or webp.


Parameters

ParameterRequiredDescription
imageYesInput image containing the faces to enhance. Supports upload or public URL.
output_formatNoOutput image format: jpeg, png, or webp. Default: jpeg.

How to Use

  1. Upload an image — Provide a portrait, group photo, or other image containing visible faces.
  2. Choose output format optional — Select jpeg, png, or webp.
  3. Submit — Run the face-enhancement process.
  4. Retrieve the result — Download the enhanced image at the original resolution.

Pricing

Pricing is fixed at $0.01 per image.

OutputCost
One enhanced image$0.01

output_format does not add a separate charge.


Best Use Cases

  • Old and low-quality photos — Restore facial detail in scanned, compressed, soft, or blurry portraits.
  • AI-generated images — Improve soft or distorted faces in generated artwork and photography.
  • Portrait enhancement — Sharpen facial details while preserving the surrounding image.
  • Social media and profile images — Improve face clarity for avatars, posts, and promotional imagery.
  • Group photos — Enhance up to three prominent faces in a single image.
  • E-commerce and marketing images — Improve facial detail in people-focused campaign and product imagery.

Pro Tips

  • Use images where the important faces are reasonably visible and large enough for restoration.
  • The model prioritizes the largest detected faces when more than three faces are present.
  • Very small, heavily blurred, or strongly occluded faces may show less improvement.
  • Choose png when you want to avoid additional lossy compression.
  • For group photos, make sure the faces you care about are among the most prominent in the frame.
  • Image Face Enhancer works best when facial structure is still recognizable in the source image.

Notes

  • image is required.
  • output_format defaults to jpeg.
  • Supported output formats are jpeg, png, and webp.
  • Up to 3 faces are enhanced per image, prioritizing the largest detected faces.
  • Output resolution matches the input image resolution.
  • The model primarily targets real human faces; illustrated or anime-style faces may show limited improvement.
  • Make sure you have permission to use uploaded images and likenesses.

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",
  "output_format": "jpeg"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/face-enhancer/image" \
  -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="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 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|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
imagestringYes-The image containing the faces to enhance.
output_formatstringNojpegjpeg, png, webpThe format of the output image.
enable_base64_outputbooleanNofalse-If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN.
enable_sync_modebooleanNofalse-If set to `true`, the request attempts to wait for the generated result and return outputs in the same response. If the result is not ready within the sync wait window, the API can return a timeout body while the task continues processing. This option is only available via the API and is supported only by some models.

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.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
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.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
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.