Depth Anything Image API Documentation

Depth Anything Image API Documentation

Playground

Try it on WaveSpeedAI!

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

Features

Depth Anything Image converts a single input image into a grayscale depth map for depth-conditioned generation, relighting, compositing, 2.5D effects, and 3D workflows.

The generated depth map preserves the input image resolution and represents relative scene depth, with nearby surfaces appearing lighter and distant surfaces appearing darker.


Why Choose This?

  • Single-image depth estimation
    Generate a detailed depth map directly from one input image.

  • Clear depth structure
    Preserve object boundaries and scene layering for downstream image and 3D workflows.

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

  • Grayscale depth representation
    Nearby surfaces appear lighter, while distant surfaces appear darker.

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

  • Simple image workflow
    Provide an image URL, choose the output format, and generate the depth map.


Parameters

ParameterRequiredDescription
imageYesURL of the input image used for depth estimation.
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 output format optional — Select jpeg, png, or webp.
  3. Submit — Run the model to generate the grayscale depth map.
  4. Use the result — Apply the depth map in generation, relighting, compositing, parallax, or 3D workflows.

Pricing

Pricing is fixed at $0.005 per image.

OutputCost
One generated depth map$0.005

output_format does not add a separate charge.


Best Use Cases

  • Depth-conditioned generation — Use depth maps in image-generation or ControlNet-style workflows.
  • Relighting — Estimate scene depth to support depth-aware lighting adjustments.
  • Depth of field — Create foreground and background separation for focus effects.
  • Fog and atmospheric effects — Apply depth-dependent haze or environmental effects.
  • Compositing — Use depth information to improve layering and spatial placement.
  • 2.5D parallax — Create depth-based camera movement from a still image.
  • 3D prototyping — Use relative depth as a starting point for displacement or scene reconstruction workflows.

Pro Tips

  • Use png when you want to avoid lossy compression in downstream depth workflows.
  • Use images with clear foreground and background separation for easier depth interpretation.
  • Treat the result as relative depth, not real-world metric distance.
  • Lighter areas represent surfaces estimated to be closer to the camera.
  • Darker areas represent surfaces estimated to be farther from the camera.
  • Use Depth Anything V3 Image when you need the newer image-depth workflow.

Notes

  • image is required.
  • output_format defaults to jpeg.
  • Supported output formats are jpeg, png, and webp.
  • Output resolution matches the input image resolution.
  • The generated depth map represents relative rather than metric depth.
  • Nearby surfaces appear lighter and distant surfaces appear darker.

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/depth-anything/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.
output_formatstringNojpegjpeg, png, webpThe format of the output depth map.

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.