Bir YouTube API anahtarı, kodunuzun herkese açık YouTube verilerini (video ayrıntıları, kanal istatistikleri, arama sonuçları, oynatma listesi içerikleri) okumasını sağlayan kimlik bilgisidir. Google'ın belgeleri bunu açıkça ifade eder: "OAuth 2.0 belirteci sağlamayan bir istek, bir API anahtarı göndermelidir. Anahtar, projenizi tanımlar ve API erişimi, kota ve raporlar sağlar." Anahtar yoksa, veri de yok.
Bu rehber, sizi boş bir Google Cloud projesinden yaklaşık on beş dakika içinde çalışan bir isteğe götürecektir. YouTube Data API v3'ü etkinleştirecek, bir anahtar oluşturacak, onu kilitleyecek, API'yi curl ve Python'dan çağıracak, ardından anahtarı Apidog'da depolayacak ve çağrıyı tekrarlanabilir bir test olarak kaydedeceksiniz. Önce genel bir bakış isterseniz, YouTube Data API genel bakışımız API'nin neler sunduğunu kapsar; bu gönderi ise pratik kısımdır.
Başlamadan önce ihtiyacınız olanlar
- Bir Google hesabı. Bu, Cloud Console'u açmak ve bir proje oluşturmak için yeterlidir.
- Kod örnekleri için curl (macOS ve çoğu Linux dağıtımı ile birlikte gelir) ve
requestspaketi yüklü Python 3. - Anahtarın gizli olarak saklanmasını ve isteğin test olarak kaydedilmesini istiyorsanız Apidog. Ücretsiz plan, buradaki her şeyi kapsar.
Adım 1: Bir Google Cloud projesi oluşturun
Google Cloud Console'u açın ve oturum açın. Sayfanın üst kısmındaki proje seçiciyi kullanarak yeni bir proje oluşturun, örneğin youtube-integration. Daha sonra göreceğiniz her API anahtarı, kota kovası ve kullanım raporu bu projeye özel olacaktır, bu nedenle ilgisiz araçlar arasında bir anahtarı paylaşmak yerine her uygulama için bir proje bulundurun. Uygulamanın zaten bir projesi varsa, onu kullanın.
Adım 2: YouTube Data API v3'ü etkinleştirin
API'ler yeni bir projede varsayılan olarak kapalıdır. Konsolda, API'ler ve Hizmetler'e gidin, API Kitaplığı'nı açın, "YouTube Data API v3" araması yapın ve etkinleştirin. Google'ın başlangıç rehberi aynı kontrolü diğer yönden açıklar: Etkin API'ler sayfasını ziyaret edin ve listelenmiyorsa API'yi etkinleştirin.
Bu adımı atlarsanız, ilk isteğiniz 403 hatasıyla başarısız olur ve API'nin projede kullanılmadığını veya devre dışı bırakıldığını belirtir. Yepyeni bir anahtarın "çalışmamasının" en yaygın nedenidir.
Adım 3: API anahtarını oluşturun
API'ler ve Hizmetler'e, ardından Kimlik Bilgileri'ne gidin. Kimlik bilgileri oluştur'a tıklayın ve API anahtarını seçin. Konsol anahtarı hemen oluşturur ve bir iletişim kutusunda gösterir; güvenli bir yere kopyalayın.
Anahtarı bir parola gibi değerlendirin. Bir Git deposuna, bir Slack konuşmasına veya istemci tarafı bir JavaScript paketine yapıştırmayın. Eğer bir commit'e zaten sızmışsa, açıkta kalan API anahtarlarını bulma ve düzeltme rehberimiz temizliği kapsar.
Adım 4: Anahtarı kısıtlayın
Google'ın kendi belgeleri "Kısıtlanmamış API anahtarları güvensizdir" der. Oluşturduktan hemen sonra, Anahtarı kısıtla'ya tıklayın. Cloud API anahtarları rehberinde belgelenen iki bağımsız kontrol elde edersiniz:
- Uygulama kısıtlamaları, anahtarı kimin sunabileceğine karar verir. Birini seçin: web siteleri (sınırlı joker karakter desteğiyle HTTP yönlendirenleri), IP adresleri (IPv4, IPv6 veya CIDR aralıkları), Android uygulamaları (paket adı artı SHA-1 sertifika parmak izi) veya iOS uygulamaları (paket kimlikleri). Bir arka uç hizmeti IP adreslerini kullanmalıdır. Yalnızca tarayıcı kullanan bir widget yönlendirenleri kullanmalıdır.
- API kısıtlamaları, anahtarın hangi API'leri çağırabileceğine karar verir. "Anahtarı kısıtla"yı seçin ve yalnızca YouTube Data API v3'ü seçin. Anahtar sızarsa, saldırgan YouTube kotası dışında hiçbir şeye erişemez.
Kaydedin ve test etmeden önce değişikliğin yürürlüğe girmesi için birkaç dakika bekleyin. Aynı rehberden iki alışkanlık daha: güvenliği ihlal edilmiş bir anahtarın vereceği zararı sınırlamak için anahtarları periyodik olarak döndürün ve her arayanın yeni anahtara geçmesinden sonra eski anahtarları silin. Bir sonraki adım için bir uyarı: IP'ye göre sunucunuza kısıtlama getirirseniz, dizüstü bilgisayarınızdan curl engellenir, bu yüzden izin verilen ana bilgisayardan test edin veya ayrı bir geliştirme anahtarı oluşturun.
Adım 5: curl ve Python ile ilk isteğinizi yapın
Her uç nokta https://www.googleapis.com/youtube/v3/ adresinden başlar. Anahtarı, Google'ın kendi örneklerinde yaptığı gibi key sorgu parametresi olarak veya URL'lerden ve erişim günlüklerinden uzak tutan x-goog-api-key başlığında geçirin. Her ikisi de canlı API'de çalışır.
En ucuz kullanışlı çağrı olan videos.list ile başlayın: bir veya daha fazla video kimliği için ayrıntıları döndürür ve 1 kota birimi maliyeti vardır. Aşağıdaki kimlik, Google'ın belgelerinde kullandığı kimliktir.
export YOUTUBE_API_KEY="AIza...your-key..."
curl -s "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=7lCDEYXw3mM" \
-H "x-goog-api-key: $YOUTUBE_API_KEY"
Kısaltılmış bir yanıt şöyle görünür:
{
"kind": "youtube#videoListResponse",
"items": [
{
"id": "7lCDEYXw3mM",
"snippet": { "title": "...", "channelTitle": "...", "publishedAt": "..." },
"statistics": { "viewCount": "...", "likeCount": "..." }
}
]
}
part parametresi zorunludur ve hangi bölümlerin geri döneceğini kontrol eder; snippet, statistics, contentDetails ve status en çok kullanacaklarınızdır.
Şimdi çoğu kişinin aradığı bir arama. requests ile Python'da:
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"])
search.list için part mutlaka snippet olmalıdır, maxResults varsayılan olarak 5'tir ve 0 ila 50 arasında değer kabul eder, type ise varsayılan olarak video,channel,playlist'tir, bu nedenle yalnızca video istiyorsanız onu video olarak ayarlayın. Arama sonuçları, üst düzeyde değil, id içinde videoId taşır, bu yüzden yukarıdaki döngü item["id"]["videoId"]'ı okur.
Adım 6: Anahtarı depolayın ve isteği Apidog'da çalıştırın
Bir kabuk değişkeni tek bir komut dosyası için çalışır. Bir ekip için çalışmaz ve kaydedilmiş, yeniden çalıştırılabilir bir kontrol sağlamaz. Anahtarın bulutta tutulmadığı Apidog'daki aynı istek şöyle:

- Bir ortam oluşturun. İki değişkenli
YouTubeadında bir ortam ekleyin:base_urldeğerinihttps://www.googleapis.com/youtube/v3olarak, veyoutube_api_key. Anahtar için, paylaşılan değeri bir yer tutucu olarak bırakın ve gerçek anahtarı yerel değer alanına yapıştırın. Yerel değerler istemcinizin önbelleğinde kalır ve takım arkadaşlarıyla asla senkronize olmaz; tam kurulum Apidog'daki ortamlar ve gizli değişkenler rehberimizde bulunmaktadır. - İsteği oluşturun. Yeni istek, GET
{{base_url}}/videos, sorgu parametreleripart=snippet,statisticsveid=7lCDEYXw3mM, ve{{youtube_api_key}}olarak ayarlanmış birx-goog-api-keybaşlığı.YouTubeortamını seçin ve gönderin. Curl çağrısı ile aynı JSON'u görmelisiniz. - Bunu bir teste dönüştürün. İsteğin işlem sonrası işleyicilerinde, iddialar ekleyin: durum 200'e eşit ve
$.items[0].id7lCDEYXw3mM'ye eşit. İsteği kaydedin ve bir test senaryosuna ekleyin. Kontrol artık isteğe bağlı olarak, programlanmış bir şekilde veya Apidog CLI aracılığıyla CI'da çalışır; burada--env-var "youtube_api_key=$YOUTUBE_API_KEY"anahtarı depolamak yerine çalışma zamanında enjekte eder.
Anahtarın döndürüldüğü veya bir kısıtlamanın değiştiği ilk anda karşılığını alırsınız: tek bir senaryoyu yeniden çalıştırın ve her YouTube çağrısının hala çalışıp çalışmadığını saniyeler içinde öğrenirsiniz. Takip etmek için Apidog'u indirin; dört kişiye kadar olan ekipler için ücretsizdir.
Kota ve sınırlar
YouTube Data API sizi dolar olarak faturalandırmaz; kota birimleri cinsinden faturalandırır ve sayılar Google'ın kota hesaplayıcı sayfasından gelir. API'yi etkinleştiren her proje şu varsayılan tahsisi alır:
| Kova | Günlük Varsayılan | Çağrı Başına Maliyet |
|---|---|---|
search.list |
100 çağrı | 1 birim (kendi kovası) |
videos.insert |
100 çağrı | 1 birim (kendi kovası) |
| Diğer tüm uç noktalar birleşik | 10.000 birim | değişir, aşağıya bakın |
Paylaşılan 10.000 birimlik havuzda, videos.list, channels.list, playlistItems.list ve commentThreads.list gibi liste yöntemleri her biri 1 birim maliyetindedir. Yazma işlemleri daha pahalıdır: videos.update ve videos.delete 50 birim, captions.insert ise 400 birimdir. Aynı sayfadaki dört kural, bunu nasıl tasarlamanız gerektiğini şekillendirir:
- Kotalar Pasifik Saatiyle gece yarısı sıfırlanır.
- Geçersiz bir istek de dahil olmak üzere her istek en az 1 birim maliyetindedir. Kötü bir çağrıyı yeniden deneyen bir döngü, boş yere kota yakar.
- Sayfalandırılmış bir sonucun her ek sayfası, ilk sayfa ile aynı maliyete sahiptir.
- Varsayılan tahsis "değişebilir". Kapasite planlamadan önce bir eğitim yerine sayfayı kontrol edin.
Eski rehberler, 10.000'lik havuzdan bir arama için 100 birim fiyat biçiyordu. Mevcut sayfa, search.list'i kendi kovasına koyuyor, bu nedenle tavan hala günde 100 arama, ancak aramalar artık diğer çağrılarınızın kotasını tüketmiyor.
Bu yeterli değilse, kota ve uyumluluk denetimleri sayfası sizi YouTube API Hizmetleri Denetim ve Kota Uzatma Formu'na yönlendirir. Bunu göndermeden önce yanıtları önbelleğe alın, yalnızca ihtiyacınız olan part değerlerini isteyin ve kimlikleri tek bir videos.list çağrısında gruplandırın (id parametresi virgülle ayrılmış bir liste alır). Kullanım, Cloud Console'daki Kotalar sayfasında görünür.
Yaygın hatalar ve nasıl düzeltileceği
Google'ın hata referansı, API'nin kendi neden kodlarını listeler. Aşağıdaki ilk iki satır, kötü bir anahtarla ve anahtarsız olarak canlı API'ye gerçek istekler göndermekten kaynaklanmaktadır.
| HTTP | Neden | Göreceğiniz mesaj | Düzeltme |
|---|---|---|---|
| 400 | badRequest (API_KEY_INVALID) |
"API anahtarı geçerli değil. Lütfen geçerli bir API anahtarı geçirin." | Yazım hatası, silinmiş anahtar veya YouTube Data API v3'ü dışlayan bir API kısıtlaması. Anahtarı yeniden oluşturun veya düzenleyin. |
| 403 | forbidden |
"Yöntem kayıtlı olmayan arayanlara izin vermiyor..." | Anahtar gönderilmedi. key parametresini veya x-goog-api-key başlığını ekleyin. |
| 403 | quotaExceeded |
"Kotanızı aştığınız için istek tamamlanamıyor." | PT gece yarısı sıfırlanmasını bekleyin, gereksiz çağrıları azaltın veya bir uzatma isteyin. |
| 400 | missingRequiredParameter |
"İstek gerekli bir parametreyi eksik." | Neredeyse her zaman eksik bir part. |
| 401 | authorizationRequired |
"İstek 'mine' parametresini kullanıyor ancak düzgün yetkilendirilmedi." | Bu çağrı bir anahtar değil, bir OAuth 2.0 belirteci gerektiriyor. SSS'ye bakın. |
Uygulamadan bir tane daha: eğer bir uygulama kısıtlaması arayanla eşleşmiyorsa, engellenen yönlendireni veya IP'yi belirten bir 403 hatası alırsınız. Kısıtlamayı düzeltin veya izin verilen ana bilgisayardan çağrı yapın. Ve eski forum konularının geçersiz anahtar hatasını keyInvalid olarak adlandırdığını unutmayın; canlı API, API_KEY_INVALID detayıyla badRequest döndürür, bu nedenle eski neden dizesine değil, mesaja veya detaya göre eşleştirme yapın.
SSS
YouTube API anahtarı ücretsiz mi?
Evet. Anahtar oluşturmak hiçbir şeye mal olmaz ve belgeler API'yi para değil, kota birimleri cinsinden fiyatlandırır. Yukarıdaki varsayılan tahsis, hiçbir şey istemeden elde ettiğiniz şeydir.
API anahtarı yerine OAuth'a ne zaman ihtiyacım olur?
Bir API anahtarı projenizi tanımlar ve herkese açık verilerin kilidini açar. Özel kullanıcı verilerine dokunduğunuz veya herhangi bir şeyi eklediğiniz, güncellediğiniz veya sildiğiniz anda, Google bu verilerin sahibi olan kullanıcıdan bir OAuth 2.0 belirteci ister. Bir videoyu derecelendirmek, kendi aboneliklerinizi listelemek veya mine=true filtresini kullanmak gibi tüm durumlar OAuth tarafına düşer. API anahtarları ve taşıyıcı belirteçlerinin karşılaştırmamız, iki kimlik bilgisinin neden farklı soruları yanıtladığını açıklar.
Bir yapay zeka ajanı YouTube API anahtarımı kullanabilir mi?
Evet, ajanın anahtarın kısıtlamalarının izin verdiği yerde çalıştığı sürece. Bir YouTube MCP sunucusu, video verilerini bir kodlama asistanına vermenin bir yoludur; ona Data API'ye ve üzerinde çalıştığı makineye kısıtlanmış bir anahtar verin ve bunu komut isteminin kendisinden uzak tutun.
Anahtar sızarsa ne yapmalıyım?
Kimlik Bilgileri sayfasında silin ve yerine yenisini oluşturun. Ardından kaynağı düzeltin: anahtarı Apidog'da yerel bir değere veya bir sır deposuna taşıyın ve eski anahtarın hala geçmişte durmadığından emin olmak için depoyu tarayın.
Sonraki adım
Artık bir projeniz, etkinleştirilmiş bir API'niz, kısıtlanmış bir anahtarınız ve curl, Python ve Apidog'dan çalışan bir isteğiniz var. Kaydedilmiş senaryoyu CI'ya bağlayın ve ne zaman optimize etmeniz gerektiğini Kotalar sayfasının size söylemesine izin verin.
