Endpoint
Transkripsi (STT)
POST /audio/transcriptions mengubah audio menjadi teks dengan Whisper, GPT-4o Transcribe, dan model lain, dengan format yang sama seperti OpenAI.
Coba di playgroundUbah ucapan menjadi teks (speech-to-text, STT) dengan Whisper, GPT-4o Transcribe, Deepgram, Voxtral, dan model transkripsi lainnya. Endpoint ini mengikuti POST /audio/transcriptions milik OpenAI, sehingga client.audio.transcriptions.create(...) bekerja tanpa perubahan.
POST https://api14.com/api/v1/audio/transcriptions
Request
Kirim multipart/form-data dengan file audio (seperti yang dilakukan OpenAI SDK), atau body JSON.
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
file | file | ya | File audio: mp3, mp4, m4a, wav, webm, ogg, flac. |
model | string | ya | ID model transkripsi, mis. openai/whisper-1. |
language | string | tidak | Kode ISO-639-1 (en, de), meningkatkan akurasi dan kecepatan. |
prompt | string | tidak | Petunjuk kosakata atau teks segmen sebelumnya. |
response_format | string | tidak | json (default), text, srt, vtt, verbose_json jika didukung. |
temperature | number | tidak | Temperature sampling, 0–1. |
Batas body request default adalah 25 MB. File yang lebih besar mengembalikan 413 payload_too_large, pecah rekaman panjang menjadi potongan.
Multipart dengan cURL
curl https://api14.com/api/v1/audio/transcriptions \
-H "Authorization: Bearer sk-api14-..." \
-F model=openai/whisper-1 \
-F file=@meeting.mp3 \
-F language=en
Body JSON
JSON juga diterima, dengan audio sebagai base64 untuk model yang mendukungnya:
{
"model": "openai/whisper-1",
"input_audio": { "data": "<base64>", "format": "mp3" },
"language": "en"
}
Contoh
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.audio.transcriptions.create({
model: "openai/whisper-1",
file: fs.createReadStream("audio.mp3"),
});
console.log(result.text);
Respons
{
"text": "Thanks everyone for joining. Let's start with the roadmap.",
"usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}
Dengan response_format: "text", srt, atau vtt, body berupa teks biasa, bukan JSON.
Harga
Transkripsi ditagih sesuai harga model yang tercantum, ditampilkan sebagai "$ / menit" (atau per token untuk model berharga token). Biayanya dikembalikan di usage.cost dan dipotong dari saldo USD Anda.
Error
| Status | Kode | Kapan |
|---|---|---|
| 400 | invalid_body | Body multipart tidak dapat di-parse. |
| 400 | model_required | Field model tidak ada. |
| 402 | insufficient_balance | Saldo USD Anda $0. |
| 404 | model_not_found | ID model tidak dikenal atau dinonaktifkan. |
| 413 | payload_too_large | File melebihi batas ukuran body. |
Lihat Error.