Kunci API YouTube adalah kredensial yang memungkinkan kode Anda membaca data YouTube publik: detail video, statistik saluran, hasil pencarian, konten daftar putar. Dokumentasi Google menyatakan dengan jelas: "Permintaan yang tidak menyediakan token OAuth 2.0 harus mengirimkan kunci API. Kunci tersebut mengidentifikasi proyek Anda dan menyediakan akses API, kuota, dan laporan." Tanpa kunci, tidak ada data.
Panduan ini akan membawa Anda dari proyek Google Cloud kosong hingga permintaan yang berfungsi dalam waktu sekitar lima belas menit. Anda akan mengaktifkan YouTube Data API v3, membuat kunci, menguncinya, memanggil API dari curl dan Python, lalu menyimpan kunci di Apidog dan menyimpan panggilan sebagai tes yang dapat diulang. Jika Anda ingin gambaran umumnya terlebih dahulu, ikhtisar YouTube Data API kami mencakup apa yang diekspos oleh API; postingan ini adalah bagian praktisnya.
tombol
Apa yang Anda butuhkan sebelum memulai
- Akun Google. Itu sudah cukup untuk membuka Cloud Console dan membuat proyek.
- curl (termasuk dalam macOS dan sebagian besar distribusi Linux) dan Python 3 dengan paket
requestsuntuk contoh kode. - Apidog jika Anda ingin kunci disimpan sebagai rahasia dan permintaan disimpan sebagai tes. Paket gratis mencakup semua yang ada di sini.
Langkah 1: buat proyek Google Cloud
Buka Google Cloud Console dan masuk. Gunakan pemilih proyek di bagian atas halaman untuk membuat proyek baru, misalnya youtube-integration. Setiap kunci API, alokasi kuota, dan laporan penggunaan yang akan Anda lihat nanti terlingkup pada proyek ini, jadi simpan satu proyek per aplikasi daripada berbagi kunci di seluruh alat yang tidak terkait. Jika aplikasi sudah memiliki proyek, gunakan proyek tersebut.
Langkah 2: aktifkan YouTube Data API v3
API dinonaktifkan secara default dalam proyek baru. Di konsol, buka API & Layanan, buka Perpustakaan API, cari "YouTube Data API v3", dan aktifkan. Panduan memulai Google menjelaskan pemeriksaan yang sama dari arah lain: kunjungi halaman API yang Diaktifkan dan aktifkan API jika tidak terdaftar.
Lewati langkah ini dan permintaan pertama Anda akan gagal dengan kode 403 yang menyatakan bahwa API belum digunakan dalam proyek atau dinonaktifkan. Ini adalah alasan paling umum mengapa kunci yang baru dibuat "tidak berfungsi".
Langkah 3: buat kunci API
Buka API & Layanan, lalu Kredensial. Klik Buat kredensial dan pilih kunci API. Konsol akan segera membuat kunci dan menampilkannya dalam dialog; salin ke tempat yang aman.
Perlakukan kunci seperti kata sandi. Jangan menempelkannya ke repositori Git, utas Slack, atau bundel JavaScript sisi klien. Jika sudah bocor ke dalam sebuah commit, panduan kami tentang menemukan dan memperbaiki kunci API yang terpapar membahas pembersihannya.
Langkah 4: batasi kunci
Dokumentasi Google sendiri menyatakan "Kunci API yang tidak dibatasi tidak aman." Segera setelah pembuatan, klik Batasi kunci. Anda mendapatkan dua kontrol independen, yang didokumentasikan dalam panduan kunci API Cloud:
- Pembatasan aplikasi menentukan siapa yang dapat menampilkan kunci. Pilih salah satu: situs web (HTTP referrers, dengan dukungan wildcard terbatas), alamat IP (rentang IPv4, IPv6, atau CIDR), aplikasi Android (nama paket ditambah sidik jari sertifikat SHA-1), atau aplikasi iOS (ID bundel). Layanan backend harus menggunakan alamat IP. Widget khusus browser harus menggunakan referrers.
- Pembatasan API menentukan API mana yang dapat dipanggil oleh kunci. Pilih "Batasi kunci" dan pilih hanya YouTube Data API v3. Jika kunci bocor, penyerang hanya mendapatkan kuota YouTube dan tidak ada yang lain.
Simpan dan beri waktu beberapa menit agar perubahan berlaku sebelum Anda menguji. Dua kebiasaan lain dari panduan yang sama: rotasi kunci secara berkala untuk membatasi kerusakan dari kunci yang disusupi, dan hapus kunci lama setelah setiap pemanggil beralih ke pengganti. Satu hal yang perlu diperhatikan untuk langkah selanjutnya: jika Anda membatasi berdasarkan IP ke server Anda, curl dari laptop Anda akan diblokir, jadi uji dari host yang diizinkan atau buat kunci pengembangan terpisah.
Langkah 5: buat permintaan pertama Anda dengan curl dan Python
Setiap endpoint berasal dari https://www.googleapis.com/youtube/v3/. Lewatkan kunci sebagai parameter kueri key, seperti yang dilakukan oleh contoh Google sendiri, atau dalam header x-goog-api-key, yang menjauhkannya dari URL dan log akses. Keduanya berfungsi pada API live.
Mulai dengan videos.list, panggilan yang paling murah dan berguna: ia mengembalikan detail untuk satu atau lebih ID video dan berharga 1 unit kuota. ID di bawah ini adalah yang digunakan Google dalam dokumentasinya.
export YOUTUBE_API_KEY="AIza...kunci-Anda..."
curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=7lCDEYXw3mM" \
-H "x-goog-api-key: $YOUTUBE_API_KEY"
Respons yang dipersingkat terlihat seperti ini:
{
"kind": "youtube#videoListResponse",
"items": [
{
"id": "7lCDEYXw3mM",
"snippet": { "title": "...", "channelTitle": "...", "publishedAt": "..." },
"statistics": { "viewCount": "...", "likeCount": "..." }
}
]
}
Parameter part diperlukan dan mengontrol bagian mana yang dikembalikan; snippet, statistics, contentDetails, dan status adalah yang paling sering Anda gunakan.
Sekarang pencarian, yang merupakan panggilan yang paling dicari banyak orang. Dalam Python dengan requests:
import os
import requests
API_KEY = os.environ["YOUTUBE_API_KEY"]
BASE = "https://www.googleapis.com/youtube/v3"
resp = requests.get(
f"{BASE}/search",
params={"part": "snippet", "q": "api testing", "type": "video", "maxResults": 10},
headers={"x-goog-api-key": API_KEY},
timeout=10,
)
if resp.status_code != 200:
err = resp.json()["error"]
raise SystemExit(f"{err['code']} {err['errors'][0]['reason']}: {err['message']}")
for item in resp.json()["items"]:
print(item["id"]["videoId"], item["snippet"]["title"])
Untuk search.list, part harus snippet, maxResults defaultnya 5 dan menerima 0 hingga 50, dan type defaultnya video,channel,playlist, jadi atur ke video jika Anda hanya menginginkan video. Hasil pencarian membawa videoId di dalam id, bukan di tingkat atas, itulah sebabnya perulangan di atas membaca item["id"]["videoId"].
Langkah 6: simpan kunci dan jalankan permintaan di Apidog
Variabel shell berfungsi untuk satu skrip. Ini tidak berfungsi untuk tim, dan tidak memberi Anda pemeriksaan yang disimpan dan dapat dijalankan kembali. Berikut adalah permintaan yang sama di Apidog, dengan kunci tetap di luar cloud.

- Buat lingkungan. Tambahkan lingkungan bernama
YouTubedengan dua variabel:base_urldiatur kehttps://www.googleapis.com/youtube/v3, danyoutube_api_key. Untuk kunci, biarkan nilai bersama sebagai placeholder dan tempel kunci sebenarnya ke bidang nilai lokal. Nilai lokal tetap ada di cache klien Anda dan tidak pernah disinkronkan ke rekan tim; pengaturan lengkapnya ada dalam panduan kami tentang lingkungan dan variabel rahasia di Apidog. - Bangun permintaan. Permintaan baru, GET
{{base_url}}/videos, parameter kueripart=snippet,statisticsdanid=7lCDEYXw3mM, serta headerx-goog-api-keydiatur ke{{youtube_api_key}}. Pilih lingkunganYouTubedan kirim. Anda akan melihat JSON yang sama dengan panggilan curl. - Ubah menjadi tes. Dalam post-processor permintaan, tambahkan pernyataan: status sama dengan 200, dan
$.items[0].idsama dengan7lCDEYXw3mM. Simpan permintaan dan tambahkan ke skenario pengujian. Pemeriksaan sekarang berjalan sesuai permintaan, sesuai jadwal, atau dalam CI melalui Apidog CLI, di mana--env-var "youtube_api_key=$YOUTUBE_API_KEY"menyuntikkan kunci saat runtime alih-alih menyimpannya.
Manfaatnya datang pertama kali kunci dirotasi atau pembatasan berubah: jalankan kembali satu skenario dan Anda akan tahu dalam hitungan detik apakah setiap panggilan YouTube masih berfungsi. Unduh Apidog untuk mengikuti; ini gratis untuk tim hingga empat orang.
Kuota dan batasan
YouTube Data API tidak menagih Anda dalam dolar; ia menagih Anda dalam unit kuota, dan angka-angka berasal dari halaman kalkulator kuota Google. Setiap proyek yang mengaktifkan API mendapatkan alokasi default ini:
| Bucket | Default per hari | Biaya per panggilan |
|---|---|---|
search.list | 100 panggilan | 1 unit (bucket sendiri) |
videos.insert | 100 panggilan | 1 unit (bucket sendiri) |
| Semua endpoint lainnya digabungkan | 10.000 unit | bervariasi, lihat di bawah |
Dalam kumpulan 10.000 unit bersama, metode daftar seperti videos.list, channels.list, playlistItems.list, dan commentThreads.list masing-masing berharga 1 unit. Penulisan lebih mahal: videos.update dan videos.delete adalah 50 unit, dan captions.insert adalah 400. Empat aturan dari halaman yang sama membentuk cara Anda harus merancang seputar ini:
- Kuota direset pada tengah malam Waktu Pasifik.
- Setiap permintaan, termasuk yang tidak valid, berharga setidaknya 1 unit. Perulangan yang mencoba kembali panggilan yang buruk akan menghabiskan kuota tanpa hasil.
- Setiap halaman tambahan dari hasil berpaginasi berharga sama dengan halaman pertama.
- Alokasi default "dapat berubah". Periksa halaman, bukan tutorial, sebelum Anda merencanakan kapasitas.
Panduan lama menetapkan harga pencarian 100 unit dari kumpulan 10.000. Halaman saat ini menempatkan search.list dalam bucketnya sendiri, jadi batasnya masih 100 pencarian sehari, tetapi pencarian tidak lagi mengurangi kuota untuk panggilan Anda yang lain.
Jika itu tidak cukup, halaman audit kuota dan kepatuhan mengarahkan Anda ke Formulir Ekstensi Kuota dan Audit Layanan API YouTube. Sebelum Anda mengajukannya, cache respons, minta hanya nilai part yang Anda butuhkan, dan gabungkan ID ke dalam satu panggilan videos.list (parameter id menerima daftar yang dipisahkan koma). Penggunaan ditampilkan di halaman Kuota di Cloud Console.
Kesalahan umum dan cara memperbaikinya
Referensi kesalahan Google mencantumkan kode alasan API-nya sendiri. Dua baris pertama di bawah ini berasal dari pengiriman permintaan nyata ke API live dengan kunci yang buruk dan tanpa kunci.
| HTTP | Alasan | Pesan yang akan Anda lihat | Perbaikan |
|---|---|---|---|
| 400 | badRequest (API_KEY_INVALID) | “Kunci API tidak valid. Harap berikan kunci API yang valid.” | Kesalahan pengetikan, kunci yang dihapus, atau pembatasan API yang mengecualikan YouTube Data API v3. Buat ulang atau edit kunci. |
| 403 | forbidden | “Metode tidak mengizinkan pemanggil yang tidak terdaftar…” | Tidak ada kunci yang dikirim. Tambahkan parameter key atau header x-goog-api-key. |
| 403 | quotaExceeded | “Permintaan tidak dapat diselesaikan karena Anda telah melampaui kuota Anda.” | Tunggu reset tengah malam PT, kurangi panggilan yang tidak perlu, atau minta perpanjangan. |
| 400 | missingRequiredParameter | “Permintaan kehilangan parameter yang diperlukan.” | Hampir selalu adalah part yang hilang. |
| 401 | authorizationRequired | “Permintaan menggunakan parameter mine tetapi tidak diotorisasi dengan benar.” | Panggilan ini memerlukan token OAuth 2.0, bukan kunci. Lihat FAQ. |
Satu lagi dari praktik: jika pembatasan aplikasi tidak cocok dengan pemanggil, Anda akan mendapatkan kode 403 yang menyebutkan perujuk atau IP yang diblokir. Perbaiki pembatasan tersebut atau panggil dari host yang diizinkan. Dan perhatikan bahwa utas forum lama menyebut kesalahan kunci tidak valid keyInvalid; API live mengembalikan badRequest dengan detail API_KEY_INVALID, jadi cocokkan berdasarkan pesan atau detailnya, bukan string alasan lama.
FAQ
Apakah kunci API YouTube gratis?
Ya. Membuat kunci tidak dikenakan biaya, dan dokumen memberi harga API dalam unit kuota, bukan uang. Alokasi default di atas adalah yang Anda dapatkan tanpa meminta apa pun.
Kapan saya membutuhkan OAuth alih-alih kunci API?
Kunci API mengidentifikasi proyek Anda dan membuka data publik. Saat Anda menyentuh data pengguna pribadi, atau menyisipkan, memperbarui, atau menghapus apa pun, Google memerlukan token OAuth 2.0 dari pengguna yang memiliki data tersebut. Memberi peringkat video, mencantumkan langganan Anda sendiri, atau menggunakan filter mine=true semuanya termasuk dalam sisi OAuth. Perbandingan kami antara kunci API dan token bearer menjelaskan mengapa kedua kredensial tersebut menjawab pertanyaan yang berbeda.
Bisakah agen AI menggunakan kunci API YouTube saya?
Ya, selama agen berjalan di mana pembatasan kunci mengizinkan. Server MCP YouTube adalah salah satu cara untuk menyerahkan data video kepada asisten pengodean; berikan kunci yang dibatasi untuk Data API dan untuk mesin tempat ia berjalan, dan jauhkan dari prompt itu sendiri.
Apa yang harus saya lakukan jika kunci bocor?
Hapus di halaman Kredensial dan buat pengganti. Kemudian perbaiki sumbernya: pindahkan kunci ke nilai lokal di Apidog atau penyimpanan rahasia, dan pindai repositori agar kunci lama tidak masih ada di riwayat.
Langkah selanjutnya
Anda sekarang memiliki proyek, API yang diaktifkan, kunci yang dibatasi, dan permintaan yang berfungsi dari curl, Python, dan Apidog. Sambungkan skenario yang disimpan ke CI dan biarkan halaman Kuota memberi tahu Anda kapan saatnya untuk mengoptimalkan.
