Openai Whisper With Video API Documentation

Openai Whisper With Video API Documentation

Playground

Try it on WaveSpeedAI!

OpenAI Whisper Large v3 (Video-to-Text) delivers high-accuracy multilingual transcription directly from video files, with automatic language detection and optional timestamped, subtitle-ready segments. Built for stable production use with a ready-to-use REST API, fast response, no cold starts, and predictable pricing.

Features

OpenAI Whisper — Video-to-Text is a production-ready speech recognition endpoint powered by Whisper large-v3. It transcribes or translates speech directly from video files by extracting audio and returning clean, readable text, with optional word-level timestamps for subtitle and alignment workflows.

Built for stable production use with a ready-to-use REST API, no cold starts, and predictable pay-per-second pricing.


Key capabilities

  • Video input support (audio is extracted automatically)
  • Two tasks: transcribe and translate
  • Language selection: auto detection or manual language code
  • Optional word-level timestamps via enable_timestamps
  • Optional sync response via enable_sync_mode (API only)

Parameters

ParameterRequiredDescription
videoYesInput video (upload or public URL).
languageNoLanguage code or auto (default).
taskNotranscribe or translate.
enable_timestampsNoGenerate word-level timestamps (may increase processing time).
promptNoShort guidance text to steer transcription/translation style.
enable_sync_modeNoAPI only: wait for result and return it directly in the response.

How to use

  1. Upload video (or paste a public video URL).
  2. Set language:
  • Use auto for most cases.
  • Choose a specific language code if detection is unstable.
  1. Choose task:
  • transcribe for same-language transcription
  • translate for translated output
  1. (Optional) Enable enable_timestamps if you need subtitle timing/alignment.
  2. (Optional) Add a prompt to guide formatting or terminology (names, jargon, punctuation).
  3. Run and read the transcript output.

API note: enable_sync_mode is not shown as a normal UI option; it’s only available through the API.


Pricing

Modeenable_timestampsPrice per second
Standardfalse$0.001 / s
Timestampedtrue$0.002 / s

Examples

Video lengthStandardTimestamped
60s$0.06$0.12
600s (10 min)$0.60$1.20

Notes

  • If you use a URL, it must be publicly accessible; the UI showing a preview thumbnail is a good sanity check.
  • Timestamps are best for subtitles and editing, but may take longer to process.
  • For best accuracy, use clear speech and minimize background music/noise.

More Models to Try

  • OpenAI Whisper Turbo on WaveSpeedAI — Faster, cost-efficient speech-to-text for real-time or high-volume transcription pipelines while keeping strong multilingual recognition quality.

Duration limit

The maximum supported video duration is 10 minutes. Longer video is automatically trimmed to 10 minutes before processing.

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'
{
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "language": "auto",
  "task": "transcribe",
  "enable_timestamps": false
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/openai-whisper-with-video" \
  -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
videostringYes-Video file or URL to transcribe. Provide an HTTPS URL or upload a video file. Audio will be extracted for transcription.
languagestringNoautoauto, af, am, ar, as, az, ba, be, bg, bn, bo, br, bs, ca, cs, cy, da, de, el, en, es, et, eu, fa, fi, fo, fr, gl, gu, ha, haw, he, hi, hr, ht, hu, hy, id, is, it, ja, jw, ka, kk, km, kn, ko, la, lb, ln, lo, lt, lv, mg, mi, mk, ml, mn, mr, ms, mt, my, ne, nl, nn, no, oc, pa, pl, ps, pt, ro, ru, sa, sd, si, sk, sl, sn, so, sq, sr, su, sv, sw, ta, te, tg, th, tk, tl, tr, tt, uk, ur, uz, vi, yi, yo, zh, yueLanguage spoken in the audio. Set to 'auto' for automatic language detection (default).
taskstringNotranscribetranscribe, translateThe task to perform. 'transcribe' to the source language or 'translate' to English.
enable_timestampsbooleanNofalse-Enable to generate word-level timestamps for the transcription. Note: This may increase processing time.
promptstringNo-An optional text to provide as a prompt to guide the model's style or continue a previous audio segment. The prompt should be in the same language as the audio.
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.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.