# Sumber dan pengaturan transkripsi

> Cek link video yang didukung, pilih subtitle atau transkripsi AI, lalu atur pengenalan pembicara dan bahasa.

Canonical: https://transcript1.com/id/docs/sources-and-options
Language: id
Last updated: 2026-10-20

Kirim link YouTube, X, TikTok, Instagram, Facebook, atau Bluesky, atau unggah file Anda sendiri. Platform lain dan format link rekaman publik yang diterima tercantum di tabel berikut. Untuk mengatur cara transkripsi, isi `source`, `diarize`, dan `language` pada body request `POST /v1/transcriptions`. Ketiganya opsional: pilih sumber transkrip, aktifkan pengenalan pembicara, atau tentukan bahasa sesuai kebutuhan.

## Platform yang didukung

Masukkan link ke field `url`. API otomatis mengenali platformnya, jadi Anda boleh melewatkan `platform`. Jika tetap diisi, nilainya harus sesuai dengan platform pada link.

| Platform | Link yang diterima |
|---|---|
| YouTube (`youtube`) | Gunakan salah satu format URL video pada tabel YouTube di bawah. |
| X (`x`) | Link postingan berisi video di `x.com` atau `twitter.com`, misalnya `https://x.com/user/status/1234567890`. |
| TikTok (`tiktok`) | Link postingan video di `tiktok.com` atau link pendek `vm.tiktok.com`, `vt.tiktok.com`, dan `www.tiktok.com/t/`. |
| Instagram (`instagram`) | Link Reels atau postingan video di `instagram.com` dengan path `/reel/`, `/reels/`, `/p/`, atau `/tv/`. Link reel dan postingan yang menyertakan nama pengguna di depan path juga diterima. |
| Facebook (`facebook`) | Link video, reel, dan watch di `facebook.com`. Link pendek `fb.watch`, `/share/v/`, dan `/share/r/` juga diterima. |
| Bluesky (`bluesky`) | Link postingan berisi video di `bsky.app`, misalnya `https://bsky.app/profile/user.example/post/3l3w4b5c6d7e2`. |
| [Twitch](https://transcript1.com/id/features/transkrip-twitch-vod) (`twitch`) | Rekaman VOD dari siaran yang sudah berakhir: `twitch.tv/videos/<id>` atau `/<channel>/v/<id>`; bentuk `video` juga diterima. Untuk klip, gunakan `clips.twitch.tv/<slug>`, `twitch.tv/<channel>/clip/<slug>`, atau `/clip/<slug>`. Host yang diterima: `twitch.tv`, `www`, `m`, `go`, dan `clips.twitch.tv`. |
| [Dailymotion](https://transcript1.com/id/features/transkrip-video-dailymotion) (`dailymotion`) | Link `dailymotion.com/video/<id>` boleh diikuti `_title`. Bisa juga memakai `/embed/video/<id>` atau `dai.ly/<id>`. Host `www.dailymotion.com` dan `touch.dailymotion.com` juga diterima. |
| [Pinterest](https://transcript1.com/id/features/transkrip-video-pinterest) (`pinterest`) | Pin dengan video yang diunggah langsung ke `pinterest.com` atau `www.pinterest.com`, memakai path `/pin/<id>/` atau `/pin/<slug>--<id>/`. Hanya blok video native pertama yang diproses. Embed eksternal, gambar, board, `pin.it`, dan domain regional tidak didukung. |
| [LinkedIn](https://transcript1.com/id/features/transkrip-video-linkedin) (`linkedin`) | Postingan video publik di `linkedin.com` atau `www.linkedin.com`, dengan path `/posts/<slug>-<activity-id>-<four-character-suffix>` atau `/feed/update/urn:li:activity:<id>/`. Link profil, Learning, acara, dan `lnkd.in` tidak didukung. |
| [Snapchat Spotlight](https://transcript1.com/id/features/transkrip-snapchat-spotlight) (`snapchat`) | Link video Spotlight di `snapchat.com` atau `www.snapchat.com` dengan path `/spotlight/<id>`. Link story dan profil tidak didukung. |

Untuk lima platform tambahan tersebut, link harus memakai HTTPS, tanpa kredensial atau port khusus. Kirim link ke satu rekaman publik, bukan profil, feed, atau koleksi. Postingan privat, konten yang meminta login, siaran langsung, dan siaran yang masih diproses tidak bisa diambil. transcript1 tidak mengirim cookie akun. Parameter waktu di URL juga tidak memotong rekaman. Pada klip Twitch dan Snapchat Spotlight, simpan string `media_id` persis seperti yang diterima; jangan mencoba menyusunnya dari URL.

Di X, TikTok, Instagram, Facebook, dan Bluesky, postingan harus bisa diakses publik. Jika ada beberapa video dalam satu postingan, hanya video pertama yang diproses. Jangan kirim link profil, story, halaman live, atau postingan foto TikTok. Jika platform meminta login, transkripsi gagal dengan `login_required`. Jika video tidak memiliki audio, kodenya `no_audio`. Anda tidak membayar untuk keduanya.

YouTube, X, TikTok, Bluesky, Dailymotion, dan LinkedIn bisa menyediakan subtitle dalam bahasa asli video, tetapi tidak semua video memiliki subtitle yang bisa dipakai. Instagram, Facebook, Twitch, Pinterest, dan Snapchat hanya memakai transkripsi AI dengan `auto` atau `stt`; platform tersebut menolak `captions`. Tarif per menit sama untuk semua platform dan unggahan. Biaya dihitung dari durasi yang terukur.

Hanya format link pendek dalam daftar di atas yang diterima. Jika share link belum memuat ID postingan saat dikirim, API tidak bisa mencocokkannya dengan transkripsi terdahulu. Gunakan link postingan lengkap jika Anda ingin memakai kembali transkripsi yang sudah ada.

| Sumber subtitle | Jenis subtitle dan timestamp |
|---|---|
| YouTube dan X | Memakai track subtitle yang tersedia. Timestamp per kata hanya ada pada subtitle otomatis YouTube. |
| TikTok | Memakai subtitle native VTT atau SRT yang tersedia, dengan timestamp per segmen saja. |
| Bluesky | Memakai subtitle video native di PDS tepercaya yang didukung. Tidak mengambil dari sembarang host federasi, video dalam kutipan postingan, atau video eksternal. Timestamp hanya per segmen. |
| Dailymotion | Mengambil file SRT langsung, bukan playlist subtitle. Timestamp hanya per segmen. Track en-auto/fr-auto yang dikenali memiliki nilai auto_generated. |
| LinkedIn | Memakai track VTT pada postingan video native yang publik, bukan LinkedIn Learning. Timestamp hanya per segmen. |

## Link YouTube yang bisa Anda kirim

Isi `url` dengan link video. Biarkan `platform` kosong atau isi dengan `youtube`. API menerima format berikut, baik dengan maupun tanpa `www.`:

| Format link | Contoh |
|---|---|
| Halaman video | `https://www.youtube.com/watch?v=dQw4w9WgXcQ` |
| Link pendek | `https://youtu.be/dQw4w9WgXcQ` |
| Shorts | `https://www.youtube.com/shorts/dQw4w9WgXcQ` |
| Embed | `https://www.youtube.com/embed/dQw4w9WgXcQ` |
| Live | `https://www.youtube.com/live/dQw4w9WgXcQ` |
| Versi seluler dan YouTube Music | `https://m.youtube.com/watch?v=dQw4w9WgXcQ`, `https://music.youtube.com/watch?v=dQw4w9WgXcQ` |

API mengabaikan parameter query tambahan seperti `t`, `list`, dan `si`. Berbagai format link yang mengarah ke video yang sama tetap dikenali sebagai satu video. Kirim URL lengkap, bukan hanya ID video 11 karakter. Link channel, link yang hanya mengarah ke playlist, dan format yang tidak didukung akan mendapat `422 invalid_url`. Jika nilai `platform` tidak dikenal, API mengirim `422 unsupported_platform` beserta daftar `supported_platforms`.

Video harus publik atau unlisted. Untuk video privat, transkripsi gagal dengan `media_private`; untuk video berbatas usia, `age_restricted`; untuk siaran langsung, `live_stream`. Jika Anda memiliki file rekamannya, [unggah file tersebut](https://transcript1.com/id/docs/uploads).

## source

Pilih `source` untuk menentukan apakah teks diambil dari subtitle atau dibuat dari audio.

| Nilai | Cara kerja |
|---|---|
| `auto` (bawaan) | Cari subtitle dalam bahasa asli video di YouTube, X, TikTok, Bluesky, Dailymotion, dan LinkedIn. Jika tidak ada yang bisa dipakai, lanjutkan dengan transkripsi AI dari audio. |
| `captions` | Mode `captions` (hanya subtitle) mengambil teks di platform yang mendukungnya, tanpa mengunduh audio atau menjalankan STT. Jika tidak ada track yang bisa dipakai, transkripsi gagal dengan `no_captions` tanpa biaya. Jika isi subtitle gagal diambil, kodenya `fetch_failed`. Platform lain menolak mode ini dengan `422 invalid_request`. |
| `stt` | Langsung mentranskripsi audio dengan AI, tanpa mencari subtitle. |

Untuk file unggahan, teks selalu dibuat dari audio. Nilai `source` yang diterima hanya `auto` dan `stt`. Jika Anda mengirim `captions`, API merespons dengan `422 invalid_request`.

Bahasa subtitle harus sesuai dengan `language` yang diminta. Jika nilainya `auto`, subtitle harus sesuai dengan bahasa asli video. Untuk YouTube, subtitle harus berasal dari unggahan kreator atau dibuat otomatis oleh YouTube dalam bahasa tersebut. Terjemahan otomatis tidak pernah dipakai. Urutan prioritasnya adalah subtitle yang diunggah kreator, track yang asalnya tidak diketahui, lalu subtitle otomatis. Jangan menganggap track tanpa informasi asal sebagai unggahan kreator.

X memakai track VTT yang tersedia. Timestamp hanya per segmen, termasuk pada subtitle otomatis; tidak ada timestamp per kata. Dalam mode auto, STT menjadi pengganti jika isi subtitle tidak tersedia atau tidak bisa diparse. Masalah routing, penyimpanan, atau bug program tidak memicu peralihan ke STT. Mode `stt` selalu langsung memakai audio.

## diarize

Aktifkan `diarize` untuk pengenalan pembicara. Nilai bawaannya `false`.

- Pengenalan pembicara memerlukan transkripsi dari audio. Saat `source` bernilai `auto`, opsi `diarize: true` membuat proses langsung memakai speech to text tanpa mengambil subtitle.
- Jangan gabungkan `source: "captions"` dengan `diarize: true`. Kombinasi ini mendapat `422 invalid_request`.
- Pembicara mendapat label seperti `Speaker 1` dan `Speaker 2`. Label tercantum di `transcript.speakers` dan field `speaker` pada setiap segmen. Format `text` dan `srt` memakai awalan `Speaker 1: `, sedangkan `vtt` memakai voice tag `<v Speaker 1>`.

```json
{ "platform": "youtube", "url": "https://youtu.be/dQw4w9WgXcQ", "source": "stt", "diarize": true }
```

## language

Biarkan `language` pada nilai bawaan `auto`, atau isi kode bahasa ISO 639-1 dua huruf, misalnya `en`, `de`, atau `es`.

- Saat mengambil subtitle, `language` menentukan bahasa track yang dipilih. Nilai `auto` memakai bahasa asli video.
- Saat mentranskripsi audio, kode bahasa diteruskan sebagai petunjuk ke penyedia speech to text. Dengan `auto`, bahasa dideteksi otomatis. Setiap segmen memiliki field `language` sendiri.

Field `language` pada objek transkripsi menunjukkan bahasa yang paling dominan.

## Isi transkrip menurut sumbernya

Periksa `transcript_source` untuk mengetahui asal teks: `youtube_captions`, `x_captions`, `tiktok_captions`, `bluesky_captions`, `dailymotion_captions`, `linkedin_captions`, atau `speech_to_text`. Pada subtitle, `caption_kind` bernilai `manual`, `auto_generated`, atau `null`. Nilai `null` berarti asalnya tidak diketahui, bukan bukti bahwa subtitle diunggah kreator.

| | `youtube_captions`, `caption_kind` `manual` | `youtube_captions`, `caption_kind` `auto_generated` | `speech_to_text` |
|---|---|---|---|
| Pembagian segmen | Mengikuti setiap cue subtitle | Mengikuti setiap cue subtitle | Segmen baru saat pembicara atau bahasa berubah, ada tanda baca akhir kalimat, atau durasinya mencapai 15 detik |
| Timestamp per kata dengan `include=words` | Tidak tersedia (`words` bernilai `null`) | Waktu mulai tiap kata; waktu akhirnya mengikuti awal kata berikutnya | Waktu mulai dan akhir tiap kata, disertai `confidence` |
| Pengenalan pembicara | Tidak tersedia | Tidak tersedia | Tersedia jika `diarize` bernilai `true` |
| Informasi bahasa | Sesuai bahasa track | Sesuai bahasa track | Dicatat untuk setiap segmen |

Teks subtitle YouTube tetap mengikuti versi yang dipublikasikan, termasuk tag seperti `[Music]`. Untuk speech to text, durasi maksimal rekaman adalah 5 jam. Jika lebih panjang, transkripsi gagal dengan `media_too_long`.

Subtitle X (`x_captions`), TikTok, Bluesky, Dailymotion, dan LinkedIn hanya memiliki timestamp per segmen. Meskipun memakai `include=words`, setiap segmen tetap berisi `words: null`, termasuk pada subtitle otomatis. Sumber ini juga tidak menyertakan pengenalan pembicara. Untuk timestamp per kata dari AI, pilih `source: "stt"`. Untuk pengenalan pembicara, gunakan `diarize: true` dengan mode `auto` atau `stt`.

## Biaya transkripsi

Mengambil subtitle dan mentranskripsi audio dengan speech to text memakai tarif yang sama. Setiap menit rekaman menghabiskan satu kredit, dengan pembulatan ke atas. Pilihan sumber tidak mengubah biaya. Rinciannya ada di [biaya dan batas penggunaan](https://transcript1.com/id/docs/billing-and-limits).
