Depth Anything V3 Image API Documentation

Depth Anything V3 Image API Documentation

Playground

Try it on WaveSpeedAI!

Depth Anything V3 Image estimates a sharp, detailed depth map from a single image, ready for depth-conditioned generation, relighting, 3D and compositing workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Depth Anything V3 Image estimates a detailed depth map from a single image using Depth Anything V3. It captures fine scene structure and object boundaries, handles sky regions more cleanly, and returns the depth map at the input image resolution.

Use grayscale output for depth-conditioned generation and compositing workflows, or choose inferno or turbo when you want a colorized depth visualization.


Why Choose This?

  • Detailed depth estimation
    Capture fine structures such as hair, foliage, thin objects, edges, and architectural details.

  • Sky-aware depth handling
    Place sky regions at the far end of the depth range instead of producing noisy depth values.

  • Control-workflow ready
    Use the default grayscale output directly in depth-conditioned generation and ControlNet-style pipelines.

  • Multiple colormaps
    Choose grayscale for depth workflows or inferno and turbo for visualized depth maps.

  • Input-resolution output
    The generated depth map matches the resolution of the source image.

  • Broad image support
    Works with photos, renders, illustrations, indoor scenes, and outdoor scenes.


Parameters

ParameterRequiredDescription
imageYesInput image provided as a URL or upload.
colormapNoDepth-map visualization: grayscale, inferno, or turbo. Default: grayscale. In grayscale mode, near surfaces are white and far surfaces are black.
output_formatNoOutput image format: jpeg, png, or webp. Default: jpeg.

How to Use

  1. Provide an input image — Upload an image or provide its URL.
  2. Choose a colormap optional — Use grayscale for generation and compositing workflows, or inferno / turbo for color visualization.
  3. Choose output format optional — Select jpeg, png, or webp.
  4. Submit — Generate and retrieve the depth map.

Pricing

Pricing is fixed at $0.005 per image.

OutputCost
One generated depth map$0.005

colormap and output_format do not add separate charges.


Best Use Cases

  • Depth-conditioned generation — Preserve the composition of a reference image while changing its content or visual style.
  • ControlNet-style workflows — Use grayscale depth as structural guidance for downstream generation.
  • Relighting — Use scene depth to support depth-aware lighting workflows.
  • Depth of field — Create foreground and background separation for portrait blur and focus effects.
  • Fog and atmospheric effects — Apply depth-based haze or environmental effects.
  • 2.5D parallax — Use the depth map as a displacement source for parallax animation.
  • 3D-aware editing — Use estimated scene depth for spatial edits and prototyping.
  • Compositing — Create depth-based masks and layered scene effects.

Pro Tips

  • Use grayscale when the depth map will be passed into another model or compositing workflow.
  • Use png when you want to avoid lossy compression in downstream depth processing.
  • Use inferno or turbo when the depth map is primarily for visualization.
  • In grayscale mode, white represents surfaces closer to the camera and black represents surfaces farther away.
  • Treat the result as relative depth, not real-world metric distance.
  • Use images with clear scene structure when you want easier foreground and background separation.

Notes

  • image is required.
  • colormap defaults to grayscale.
  • Supported colormaps are grayscale, inferno, and turbo.
  • output_format defaults to jpeg.
  • Supported output formats are jpeg, png, and webp.
  • Output resolution matches the input image resolution.
  • Depth is relative rather than metric.
  • In grayscale mode, near surfaces are white and far surfaces are black.

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",
  "colormap": "grayscale",
  "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/depth-anything-v3/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 URL of the input image to estimate depth for.
colormapstringNograyscalegrayscale, inferno, turboHow depth is rendered. grayscale is the standard depth map (near = white, far = black) used by depth-conditioned generation and ControlNet-style workflows; inferno and turbo are color visualizations.
output_formatstringNojpegjpeg, png, webpThe format of the output depth map.
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.