Yoink’s transcription feature runs OpenAI Whisper against any media file you upload and produces one of three outputs: a subtitle file you can load in a player, captions burned permanently into the video, or a plain text transcript. Local models (tiny through medium) run entirely on your server with no external API calls. TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/coah80/yoink/llms.txt
Use this file to discover all available pages before exploring further.
large model offloads work to the OpenAI Whisper API for maximum accuracy.
Transcription is fully asynchronous — the endpoint returns a jobId immediately and processing happens in the background.
API endpoint
| Field | Type | Default | Description |
|---|---|---|---|
file | file | — | The video or audio file to transcribe |
outputMode | string | text | subtitles, captions, or text |
model | string | base | Whisper model to use (see table below) |
subtitleFormat | string | srt | srt or ass — only for subtitles mode |
language | string | auto | 2–5 letter language code (e.g. en, ja) |
captionSize | int | 72 | Font size for captions (40–120) |
maxWordsPerCaption | int | 0 | Max words per caption segment (1–20, 0 = unlimited) |
maxCharsPerLine | int | 0 | Max characters per caption line (10–80, 0 = unlimited) |
minDuration | float | 0 | Minimum caption duration in seconds (0.1–5) |
captionGap | float | 0 | Gap between captions in seconds (0–1) |
clientId | string | — | Optional client ID for job tracking |
Polling the job
Poll for status
status field (processing, complete, or error) and a progress percentage (0–100).Output modes
text
Plain-text transcript saved as
<filename>_transcript.txt. Useful for indexing, searching, or feeding into other tools.subtitles
A standalone subtitle file (
.srt or .ass) delivered separately from the video. Load it in any media player that supports external subtitles.captions
Captions are rendered directly onto the video frames by FFmpeg and exported as
<filename>_captioned.mp4. No separate subtitle file is needed.Whisper models
| Model | Runs | Accuracy | Speed | Requirement |
|---|---|---|---|---|
tiny | Local | ★☆☆☆☆ | Fastest | Whisper installed |
base | Local | ★★☆☆☆ | Fast | Whisper installed |
small | Local | ★★★☆☆ | Moderate | Whisper installed |
medium | Local | ★★★★☆ | Slow | Whisper installed |
large | OpenAI API | ★★★★★ | Fastest (remote) | OPENAI_API_KEY |
The
large model sends audio to the OpenAI Whisper API. You must set the OPENAI_API_KEY environment variable on your Yoink server. If the key is not configured, the job will fail immediately with the message: “Large model requires API configuration. Use a local model (tiny/base/small/medium).”Whisper script resolution
Yoink calls awhisper.py helper script to drive Whisper. It is located in the following order:
- The
WHISPER_SCRIPTenvironment variable (explicit path) whisper.pyin the same directory as the Yoink binarywhisper.pyon the systemPATH
Caption styling options
When usingsubtitles or captions mode, you can control how text is segmented and displayed:
captionSize
captionSize
Font size in pixels for rendered captions. Must be between
40 and 120. Default is 72.maxWordsPerCaption
maxWordsPerCaption
Limits how many words appear in each caption segment. Useful for keeping captions readable. Range: 1–20. Set to
0 to disable.maxCharsPerLine
maxCharsPerLine
Wraps caption text after this many characters. Range: 10–80. Set to
0 to disable.minDuration
minDuration
Minimum time in seconds that each caption segment must be displayed. Prevents very short flashes of text. Range: 0.1–5 seconds.
captionGap
captionGap
Adds a pause in seconds between consecutive caption segments. Range: 0–1 second.
Language detection
Leavelanguage empty to let Whisper detect the spoken language automatically. Pass an explicit code to skip detection and improve accuracy:
^[a-zA-Z]{2,5}$ — 2 to 5 ASCII letters.