whisper-1 is removed on 26 February 2027. Keep SRT, VTT and word timestamps.
Last updated:
⏳ 144 days left — the old API shuts down February 26, 2027.
Yes: OpenAI announced on August 26, 2026 that whisper-1 will be removed from the API on February 26, 2027, and it recommends gpt-transcribe or gpt-live-transcribe instead (OpenAI deprecations). If your app depends on whisper-1's subtitle formats, word timestamps or /v1/audio/translations, a whisper-1-compatible endpoint such as our whisper-1 drop-in on Apify keeps that code working: you change base_url and api_key in the official OpenAI SDK, at $0.006 per minute.
The same OpenAI notice also removes gpt-4o-transcribe, gpt-4o-mini-transcribe and gpt-4o-transcribe-diarize on the same date. See OpenAI's 2027 transcription model removals for what to do with those.
What changes on February 26, 2027
- Requests with
model="whisper-1"tohttps://api.openai.com/v1/audio/transcriptionsand/v1/audio/translationsstop working. - OpenAI's documentation ties these features to whisper-1:
- timestamp_granularities[] (word and segment timestamps): "only supported for whisper-1" (speech-to-text guide); - the srt, vtt and verbose_json response formats: the API reference says json is the only format for gpt-4o-transcribe and gpt-4o-mini-transcribe, and lists none of these for gpt-transcribe (details); - the /v1/audio/translations endpoint (any language → English), which the guide uses with whisper-1.
- Subtitle generators, caption pipelines and tools that align words to video need a replacement for those features, not just a new model name.
The minimal migration: base_url and api_key only
The new endpoint is the Actor's Standby URL plus /v1: https://dropin-apis--whisper-compat.apify.actor/v1. Use your Apify API token as the API key; the OpenAI SDKs send it as Authorization: Bearer …, which is how Apify authenticates. Keep model="whisper-1" and everything else.
Python (official openai SDK)
from openai import OpenAI
- client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
+ client = OpenAI(base_url="https://dropin-apis--whisper-compat.apify.actor/v1", api_key=os.environ["APIFY_TOKEN"])
srt = client.audio.transcriptions.create(model="whisper-1", file=open("talk.mp3", "rb"), response_format="srt")Node.js (official openai SDK)
import OpenAI from 'openai';
- const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
+ const client = new OpenAI({ baseURL: 'https://dropin-apis--whisper-compat.apify.actor/v1', apiKey: process.env.APIFY_TOKEN });
const vtt = await client.audio.transcriptions.create({ model: 'whisper-1', file: fs.createReadStream('talk.mp3'), response_format: 'vtt' });curl
- curl -s https://api.openai.com/v1/audio/transcriptions -H "Authorization: Bearer $OPENAI_API_KEY" \
+ curl -s https://dropin-apis--whisper-compat.apify.actor/v1/audio/transcriptions -H "Authorization: Bearer $APIFY_TOKEN" \
-F model=whisper-1 -F response_format=verbose_json -F 'timestamp_granularities[]=word' -F file=@talk.mp3Pass the token only as
api_key. If you append?token=…tobase_url, the SDK adds the route after the query string and the request goes to the wrong URL.
Real output
SRT and word timestamps from NASA's public-domain Apollo 11 clip ("one small step"), using the Python SDK as above:
1
00:00:00,000 --> 00:00:05,000
I'm going to step off the limb now.
2
00:00:15,000 --> 00:00:18,000
That's one small step for man.
3
00:00:20,000 --> 00:00:24,000
One giant leap for mankind.
3.22- 3.96 I'm
3.96- 4.06 going
4.06- 4.18 to
4.18- 4.34 step
4.34- 4.58 off
3 segments, 24.11 seconds(Armstrong said "the LEM". The small model heard "limb", which is the kind of error to expect; see Limits below.)
The verbose_json response has OpenAI's shape: task, language ("english"), duration, text, words[] (word, start, end), segments[] and usage ({"type":"duration","seconds":25}).
Your options compared
| Option | whisper-1 request and formats (SRT, VTT, word timestamps, translations)? | Price | Notes |
|---|---|---|---|
| whisper-1 drop-in on Apify (this page) | Yes: official SDK, change base_url and api_key | $0.006/min, billed per started 15 s | Whisper small model (about 4% word error on clean English); up to 10 min / 25 MB per file |
OpenAI gpt-transcribe | OpenAI's guide documents those features only for whisper-1 | $0.0045/min | OpenAI's recommended successor; more accurate model. Check its formats before relying on subtitles |
OpenAI gpt-live-transcribe | Realtime model; different usage | $0.017/min | For live audio |
gpt-4o-transcribe / gpt-4o-mini-transcribe | No | ~$0.006 / ~$0.003 per min (token-based) | Also removed on February 26, 2027 |
| Self-host faster-whisper or whisper.cpp | Formats yes (your code); OpenAI-compatible API only if you add a server layer | Free (MIT) + your hardware | Any Whisper size, including large models; you run and scale it |
OpenAI prices are from OpenAI's pricing page as of October 2026.
Compatibility
| Feature | Status |
|---|---|
/v1/audio/transcriptions, /v1/audio/translations, GET /v1/models | ✅ |
Fields file, model (whisper-1), language, prompt, response_format, temperature, timestamp_granularities[] | ✅ Same names, defaults and validation |
json (+ usage), text, srt, vtt, verbose_json with segments and words | ✅ |
OpenAI error envelope ({"error":{"message","type","param","code"}}) | ✅ |
stream, include, chunking_strategy, diarized_json, gpt-4o / gpt-transcribe models | ❌ (whisper-1 didn't support them either) |
Limits: read before switching
- Model: Whisper small (multilingual), run with faster-whisper/CTranslate2 int8 on CPU, beam size 5. OpenAI's whisper-1 is the much larger Whisper V2.
- On clean English (LibriSpeech) we measured about 4% word error rate. - Expect more errors on noisy audio, heavy accents and less common languages.
- Length: up to 10 minutes and 25 MB per request. Longer files get
400 audio_too_long, so split them first, for exampleffmpeg -i in.mp3 -f segment -segment_time 540 out%03d.mp3. - Speed: about 4 seconds of audio per second of compute. A 1-minute file takes about 12 s and a 10-minute file about 2.5 min.
- Concurrency: each instance handles one file at a time. A busy instance answers
429 rate_limit_exceeded, which the OpenAI SDKs retry automatically. - Cold start: after about 5 minutes without traffic the instance sleeps, and the next request waits a few seconds extra.
Pricing
$0.006 per minute, billed per started 15 seconds ($0.0015 per 15 s).
- OpenAI billed whisper-1 at $0.006 per minute rounded to the second, so the two prices match on whole 15-second blocks. A clip under 15 seconds costs $0.0015 here instead of about $0.001.
- Failed requests are not charged.
- If you set a spending cap, a file the remaining budget can't cover is refused before it is transcribed (
429 insufficient_quota).
FAQ
Is whisper-1 being deprecated?
Yes. OpenAI notified developers on August 26, 2026 that whisper-1 will be removed from the API on February 26, 2027.
What should I use instead of whisper-1?
OpenAI recommends gpt-transcribe (or gpt-live-transcribe for realtime). If you need whisper-1's exact API, including SRT, VTT, word timestamps and /v1/audio/translations, use a whisper-1-compatible endpoint such as this page's drop-in, and change only base_url and api_key.
Is gpt-4o-transcribe a safe replacement for whisper-1?
No. OpenAI's same notice removes gpt-4o-transcribe and gpt-4o-mini-transcribe on February 26, 2027, together with whisper-1.
How do I keep SRT and VTT subtitles after whisper-1 is removed?
Point the OpenAI SDK at a whisper-1-compatible endpoint and keep response_format="srt" or "vtt". This page's drop-in returns the same SRT and VTT output as whisper-1 did.
Will transcripts be as accurate as whisper-1?
Not quite. The drop-in runs the open Whisper small model, which measured about 4% word error rate on clean English, and is weaker than OpenAI's larger model on noisy audio and rare languages.
Is this OpenAI?
No. It is an independent service that runs OpenAI's open-source Whisper model (MIT license) behind the same API shape.
Do you keep my audio?
No. Audio is decoded in memory, transcribed and discarded.
Which languages are supported?
All 99 Whisper languages, with auto-detection. Passing language (ISO-639-1) improves speed and accuracy.
Get started
whisper-1 drop-in on Apify: copy the Standby URL into base_url and use your Apify token as api_key.