Elevenlabs Sound Effects V3 API Documentation

Elevenlabs Sound Effects V3 API Documentation

Playground

Try it on WaveSpeedAI!

ElevenLabs Sound Effects V3 Text-to-SFX generates sound effects, ambience, and multi-part audio scenes from text descriptions for video, games, ads, and sound design workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

ElevenLabs Sound Effects V3 generates sound effects and ambient audio from text descriptions. Describe a single sound, an environment, or a sequence of events to create audio for videos, games, advertising, and other creative projects.


Why Choose This?

  • Multi-part sound effects — Describe several sounds in the order they should happen.
  • Ambient sound design — Generate environmental sounds, atmospheres, and background audio.
  • Vocal and musical elements — Include vocal effects or short musical sounds in your prompt.
  • Flexible duration — Generate audio from 0.5 to 30 seconds.
  • Loop support — Create sound effects designed to repeat smoothly.

Parameters

ParameterRequiredDescription
promptYesDescribe the desired sound, environment, and sequence of events.
durationNoRequested duration from 0.5 to 30 seconds. Default: 5.
loopNoGenerate a sound effect designed to loop smoothly. Default: false.
prompt_influenceNoControls how closely the result follows the prompt, from 0 to 1. Default: 0.3.

How to Use

  1. Write a prompt — Describe the sound effect, atmosphere, or sequence of sounds you want.
  2. Choose duration — Select a length from 0.5 to 30 seconds.
  3. Configure optional settings — Enable looping or adjust prompt_influence when needed.
  4. Submit — Generate, preview, and download the audio.

Pricing

$0.002 per billed second.

DurationPrice
5s$0.01
10s$0.02
30s$0.06

The requested duration is rounded up to the next whole second for billing. Decimal durations are supported; for example, a 1.5-second request is billed as 2 seconds ($0.004).

loop and prompt_influence do not add separate charges.


Best Use Cases

  • Video sound design — Create impacts, movement sounds, transitions, and environmental effects.
  • Game audio — Generate interface sounds, actions, ambience, and world effects.
  • Advertising — Add custom sound effects to product and campaign content.
  • Ambient audio — Create rain, crowds, nature, machinery, interiors, and other environments.
  • Creative audio projects — Generate unusual or stylized sounds from text descriptions.

Pro Tips

  • Describe concrete sound sources, environment, intensity, and timing.
  • For multi-part effects, describe events in the order they should happen.
  • Use loop=true when generating repeating ambience or background effects.
  • Adjust prompt_influence when you need stronger or looser adherence to the description.
  • Keep prompts focused when precise sound timing matters.

Notes

  • Output is an MP3 audio file.
  • Each request generates one sound effect.
  • duration supports 0.5–30 seconds and defaults to 5.
  • loop defaults to false.
  • prompt_influence defaults to 0.3.
  • For multi-part sound effects, describe the events in their intended order.
  • Exact timing and repetition may vary between generations.

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'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "duration": 5,
  "loop": false,
  "prompt_influence": 0.3
}
JSON
)

# 1. Submit the prediction once. Never retry this request automatically:
# a retry after an unclear failure can create a second, billed task.
CHECK='The task may already exist. Check History or the predictions list before submitting again.'
if ! SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  --connect-timeout 10 --max-time 60 \
  -X POST "https://api.wavespeed.ai/api/v3/elevenlabs/sound-effects-v3" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}"); then
  printf 'Submit failed. %s\n' "${CHECK}" >&2
  exit 1
fi

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. %s\n' "${CHECK}" >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction reaches a final status.
BODY_FILE=$(mktemp)
trap 'rm -f "${BODY_FILE}"' EXIT
while true; do
  # Transient errors (429, 5xx) are retried, honoring Retry-After.
  HTTP_CODE=$(curl --silent --show-error --fail-with-body \
    --connect-timeout 10 --max-time 60 --retry 5 --retry-delay 2 \
    --output "${BODY_FILE}" --write-out '%{http_code}' \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}" || true)
  case "${HTTP_CODE}" in
    2??) ;;
    000|429|5??)  # dropped connection or temporary error: keep polling
      printf 'Task %s: HTTP %s, polling again in 10s\n' "${PREDICTION_ID}" "${HTTP_CODE}" >&2
      sleep 10; continue ;;
    *) printf 'Task %s: HTTP %s\n' "${PREDICTION_ID}" "${HTTP_CODE}" >&2
      cat "${BODY_FILE}" >&2; exit 1 ;;
  esac
  RESULT=$(jq 'if type == "object" and has("data") then .data else . end' "${BODY_FILE}")
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted)
      printf 'Task %s ended with status %s\n' "${PREDICTION_ID}" "${STATUS}" >&2
      printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Retry temporary errors only while polling, never the submit request. Errors, retries and timeouts

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes1 ~ unlimited charactersDescribe the sound, its environment, and the order of events.
durationnumberNo50.5 ~ 30Requested sound duration in seconds, from 0.5 to 30.
loopbooleanNofalse-Create a sound effect designed to loop smoothly.
prompt_influencenumberNo0.30 ~ 1Higher values follow the prompt more closely and reduce variation.

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.