# Whisper-1 (OpenAI API) - Core.Today AI API > OpenAI's hosted whisper-1 speech recognition with the OpenAI API parameters - json or verbose_json output, segment and word timestamps (timestamp_granularities), language hint and prompt. Billed per second of audio (0.2325 credits/s, about 14 credits per minute), up to 1 hour / 25MB per request. - **Provider**: OpenAI - **Model ID**: openai/whisper-1 - **Category**: Audio & TTS - **Credits**: 14 per minute of audio (0.2325/s, settled on measured length) - **Speed**: Fast - **Quality**: High ## Features - OpenAI's hosted whisper-1 with the OpenAI API parameter names - verbose_json output with language, duration and timestamped segments - Segment and word timestamps via timestamp_granularities - ~100 languages with auto detection, or an ISO-639-1 language hint - Accepts flac, m4a, mp3, mp4, mpeg, mpga, ogg, wav and webm up to 25MB ## Use Cases - Subtitles and captions from segment start/end timestamps - Meeting, lecture and interview transcripts - Migrating an existing OpenAI whisper-1 integration onto Core.Today credits ## API Endpoint Base URL: https://api.core.today/v1 Create Prediction: POST /predictions Get Status: GET /predictions/{job_id} ## Authentication Header: X-API-Key: YOUR_API_KEY ## Input Parameters ### Required - **audio**: string - Audio file URL (flac, m4a, mp3, mp4, mpeg, mpga, ogg, wav, webm). Sent to OpenAI as the `file` part. Max 25MB and 1 hour. ### Optional - **response_format**: string (default: json) - json returns {text, usage}; verbose_json adds language, duration and timestamped segments/words. text, srt and vtt are not available through this API. Options: json, verbose_json - **timestamp_granularities**: array - Timestamp detail for verbose_json - segment, word or both. Requires response_format verbose_json. Word timestamps add latency; segment timestamps add none. Options: segment, word - **language**: string - Language of the input audio as an ISO-639-1 code (e.g. ko, en, ja). Improves accuracy and latency. Omit for automatic detection. - **prompt**: string - Optional text to guide style or continue a previous segment. Should match the audio language. - **temperature**: number (default: 0) - Sampling temperature between 0 and 1. 0 lets the model raise it automatically until certain thresholds are hit. ## Examples ### Segment timestamps (verbose_json) Returns text, language, duration and segments with start/end seconds. ```json { "model": "openai/whisper-1", "input": { "audio": "https://replicate.delivery/mgxm/e5159b1b-508a-4be4-b892-e1eb47850bdc/OSR_uk_000_0050_8k.wav", "response_format": "verbose_json", "timestamp_granularities": [ "segment" ], "language": "en" } } ``` ### Plain transcript (json) Returns {text, usage} for a Korean recording. ```json { "model": "openai/whisper-1", "input": { "audio": "https://example.com/meeting.m4a", "response_format": "json", "language": "ko" } } ``` ## Response Format ```json { "job_id": "abc123", "status": "pending | processing | completed | failed", "result": "URL or data (when completed)" } ``` ## Usage Flow 1. POST /predictions with model and input -> receive job_id 2. GET /predictions/{job_id} -> poll until status is completed or failed 3. Result contains output URL(s) ## Tips - Retiring: OpenAI shuts whisper-1 down on 2027-02-26 (the translations endpoint too). openai/gpt-transcribe is the replacement for plain transcripts and is cheaper; it has no timestamps, so keep timestamp workflows on openai/whisper (Replicate segments) - The result is OpenAI's response body as-is: json gives text and usage.seconds (the billed length); verbose_json gives text, language, duration and segments/words - timestamp_granularities works only with verbose_json; when omitted, verbose_json returns segment timestamps - Split files over 25MB or 1 hour before submitting - longer or larger files are rejected - For SRT/VTT subtitles, build them from verbose_json segments, or use openai/whisper (Replicate) which outputs srt/vtt directly - OpenAI SDK: point the client at base_url https://api.core.today/llm/openai/v1 with your cdt_ API key and call client.audio.transcriptions.create(model="whisper-1", file=..., response_format="verbose_json", timestamp_granularities=["segment"]) - the file is uploaded directly (no URL), json/verbose_json only, billed per second at the LLM rate (0.1858 credits/s, about 11.15 per minute) on the length OpenAI reports ## Documentation https://platform.openai.com/docs/guides/speech-to-text