# Speech to text API untuk rekaman audio dan video Anda

> Speech to text API: audio/video jadi teks bertimestamp, opsi label pembicara, 1 kredit/menit. Kirim hingga 95 MB per request atau 2 GB secara bertahap.

Canonical: https://transcript1.com/id/features/speech-to-text-api
Language: id
Last updated: 2026-10-19

Speech to text API mengubah file audio atau video menjadi transkrip dengan timestamp dan bahasa di setiap segmen. Aktifkan pengenalan pembicara bila perlu. Kirim file hingga 95 MB dalam satu request. Untuk file hingga 2 GB, unggah per bagian dan lanjutkan jika koneksi terputus.

- Hingga 95 MB dalam satu request
- Hingga 2 GB, bisa lanjut setelah terputus
- File dihapus 24 jam setelah proses berakhir

## Pilih cara unggah sesuai ukuran file

### Audio maupun video

API menerima mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm dan mkv. File harus memiliki trek audio.

### Mulai dengan satu request

Untuk file hingga 95 MB, gunakan multipart/form-data pada POST /v1/transcriptions. Tidak perlu membuat reservasi unggahan.

### File besar dikirim per bagian

Buat reservasi, kirim bagian file sesuai rencana dari API, lalu selesaikan unggahan. Tiap bagian berukuran sekitar 8 MiB. Jika terputus, lanjutkan bagian yang belum terkirim.

### Periksa juga durasi rekaman

Transkripsi AI menerima rekaman hingga 5 jam. Rekaman yang lebih panjang gagal dengan media_too_long dan tidak memakai kredit.

### File dan transkrip disimpan terpisah

Kami menghapus file unggahan 24 jam setelah transkripsi mencapai status akhir. Transkrip tetap tersimpan sampai Anda menghapusnya.

## Transkripsi audio lewat API dalam satu request

Masukkan file ke bagian multipart bernama file. Anda bisa menambahkan language, diarize, source dan webhook_url sebagai field form. Ikuti [contoh unggahan satu request](https://transcript1.com/id/docs/uploads#one-shot-upload), atau gunakan [webhook](https://transcript1.com/id/features/webhook-transkripsi) untuk menerima kabar saat proses berakhir.

Cara ini cocok jika file sudah ada di server dan ukurannya tidak melebihi 95 MB. Biarkan HTTP client membuat multipart boundary. Kirim isi file yang sebenarnya, bukan teks berisi path lokal dalam JSON. Perbaiki file kosong atau ekstensi yang tidak didukung sebelum mencoba lagi.

Ukuran dan durasi punya batas masing-masing. Audio terkompresi bisa lebih kecil dari 95 MB tetapi berdurasi lebih dari 5 jam. Sebaliknya, video singkat beresolusi tinggi bisa terlalu besar untuk satu request. Pilih cara unggah berdasarkan ukuran byte, lalu periksa durasinya secara terpisah.

### cURL

```
curl -X POST "https://api.transcript1.com/v1/transcriptions?wait=60" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -F file=@interview.m4a \
  -F language=auto
```

## Unggah hingga 2 GB tanpa mengulang dari awal

Mulai dengan reservasi berisi nama dan ukuran file. API mengembalikan daftar bagian yang harus dikirim serta X-Upload-Token khusus unggahan tersebut. [Panduan unggahan per bagian](https://transcript1.com/id/docs/uploads#chunked-upload) menjelaskan urutan request lengkapnya.

Ikuti daftar bagian dari API: setiap entri menentukan indeks, offset byte dan ukuran. Baca persis rentang byte tersebut. Bagian terakhir bisa lebih kecil. Gunakan X-Upload-Token untuk request PUT biner; token ini berlaku 1 jam dan bukan pengganti kunci API Anda.

Pertahankan Idempotency-Key yang sama jika request reservasi perlu diulang. Saat token kedaluwarsa, ulangi reservasi dengan key dan parameter yang sama untuk memperoleh token baru bagi unggahan yang sudah ada. Jangan membuat reservasi baru setiap kali koneksi terputus.

### Membuat reservasi unggahan

```
curl -X POST "https://api.transcript1.com/v1/transcriptions" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY" \
  -H "Idempotency-Key: interview-2026-10-13" \
  -H "Content-Type: application/json" \
  -d '{"upload":{"filename":"interview.m4a","size":48210334,"mime_type":"audio/mp4"}}'
```

## Kirim bagian yang kurang, lalu mulai transkripsi

Kirim setiap bagian dengan PUT dan token unggahan, lalu panggil endpoint penyelesaian. Kami memeriksa kelengkapan file sebelum memasukkannya ke antrean transkripsi. Lihat [endpoint unggahan](https://transcript1.com/id/docs/api-reference#uploads) untuk pemeriksaan progres dan penyelesaiannya.

Sebelum melanjutkan, baca GET /v1/transcriptions/:id/upload. Bandingkan received_chunks dengan rencana awal, lalu kirim bagian yang belum ada. Mengirim ulang satu bagian akan menggantinya; ukurannya tetap harus sesuai rencana. Jika mendapat 401, periksa apakah token sudah kedaluwarsa.

Respons 409 upload_incomplete menyebut indeks bagian yang belum diterima. Lengkapi bagian itu sebelum menyelesaikan unggahan. Setelah masuk antrean, periksa status transkripsi atau tunggu webhook. Di antarmuka aplikasi, bedakan progres pengiriman file dari progres transkripsi.

### Mengirim bagian file dan menyelesaikan unggahan

```
curl -X PUT "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/chunks/0" \
  -H "X-Upload-Token: t1u_..." \
  -H "Content-Type: application/octet-stream" \
  --data-binary @chunk-0.bin

curl -X POST "https://api.transcript1.com/v1/transcriptions/tr_8fK2Lm0PqRsTuVwXyZaBcD/upload/complete" \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"
```

## File terkirim belum berarti transkripsi dimulai

Status awaiting_upload berarti reservasi masih menunggu file. Transkripsi baru masuk antrean setelah penyelesaian unggahan berhasil. Tampilkan tahap pengiriman byte, pemeriksaan unggahan, lalu pemrosesan audio secara berurutan. Jika koneksi terputus setelah penyelesaian, baca statusnya dulu sebelum mengulang request.

Setiap tim bisa memiliki hingga 20 reservasi unggahan terbuka. Reservasi yang tidak selesai dalam 24 jam dibatalkan dan bagian filenya dihapus. Untuk unggahan yang sudah diproses, file dihapus 24 jam setelah status akhir. Simpan file asli sendiri jika aplikasi Anda menjanjikan pemutaran audio di kemudian hari.

Integrasi yang baik juga membantu pengguna menyiapkan rekaman dan memeriksa teks. Gunakan panduan [audio ke teks](https://transcript1.com/id/features/audio-ke-teks) untuk alur pengguna, atau [transkrip wawancara](https://transcript1.com/id/use-cases/transkrip-wawancara) untuk pemetaan peserta dan analisis yang tetap merujuk ke rekaman.

## Pertanyaan umum

### Format file apa saja yang bisa dikirim?

mp3, wav, m4a, flac, ogg, opus, mp4, mov, webm dan mkv. File harus memiliki trek audio. Ekstensi lain menghasilkan 422 unsupported_media.

### Berapa batas ukuran filenya?

Hingga 95 MB untuk satu request, atau 2 GB untuk unggahan per bagian. Paket Anda bisa menetapkan batas yang lebih rendah. File yang melewati batas menghasilkan 413 media_too_large.

### File saya disimpan berapa lama?

File dihapus 24 jam setelah transkripsi mencapai status akhir. Unggahan yang tidak selesai dalam 24 jam dibatalkan dan bagian filenya dihapus. Transkrip tetap tersimpan sampai Anda menghapusnya.

### Bisa sekalian memberi label pembicara?

Bisa. Kirim diarize=true untuk mendapatkan label Speaker 1, Speaker 2 dan seterusnya. File unggahan selalu diproses dengan transkripsi AI.

## Halaman terkait

- [Pengenalan pembicara](https://transcript1.com/id/features/pengenalan-pembicara-transkripsi)
- [Audio ke teks](https://transcript1.com/id/features/audio-ke-teks)
- [Mengunggah file (dokumentasi)](https://transcript1.com/id/docs/uploads)
- [Video ke teks](https://transcript1.com/id/features/transkrip-video)
