คีย์ API ของ YouTube คือข้อมูลรับรองที่ช่วยให้โค้ดของคุณสามารถอ่านข้อมูล YouTube สาธารณะได้: รายละเอียดวิดีโอ, สถิติช่อง, ผลการค้นหา, เนื้อหาเพลย์ลิสต์ เอกสารของ Google ระบุไว้อย่างชัดเจนว่า: “คำขอที่ไม่ได้ให้โทเค็น OAuth 2.0 จะต้องส่งคีย์ API คีย์จะระบุโปรเจกต์ของคุณและให้สิทธิ์เข้าถึง API, โควตา และรายงาน” ไม่มีคีย์ ก็ไม่มีข้อมูล
คู่มือนี้จะพาคุณจากโปรเจกต์ Google Cloud ที่ว่างเปล่าไปสู่คำขอที่ใช้งานได้จริงในเวลาประมาณสิบห้านาที คุณจะได้เปิดใช้งาน YouTube Data API v3, สร้างคีย์, ล็อกคีย์นั้นให้ปลอดภัย, เรียกใช้ API จาก curl และ Python จากนั้นเก็บคีย์ไว้ใน Apidog และบันทึกการเรียกใช้งานเป็นชุดทดสอบที่สามารถทำซ้ำได้ หากคุณต้องการภาพรวมก่อน หน้า ภาพรวม YouTube Data API ของเราจะครอบคลุมถึงสิ่งที่ API เปิดเผยไว้ โพสต์นี้เป็นส่วนของการลงมือปฏิบัติจริง
สิ่งที่คุณต้องมีก่อนเริ่มต้น
- บัญชี Google เพียงพอที่จะเปิด Cloud Console และสร้างโปรเจกต์
- curl (มาพร้อมกับ macOS และ Linux ส่วนใหญ่) และ Python 3 พร้อมแพ็คเกจ
requestsสำหรับตัวอย่างโค้ด - Apidog หากคุณต้องการเก็บคีย์เป็นความลับและบันทึกคำขอเป็นชุดทดสอบ แผนฟรีครอบคลุมทุกสิ่งในที่นี้
ขั้นตอนที่ 1: สร้างโปรเจกต์ Google Cloud
เปิด Google Cloud Console และลงชื่อเข้าใช้ ใช้ตัวเลือกโปรเจกต์ที่ด้านบนของหน้าเพื่อสร้างโปรเจกต์ใหม่ เช่น youtube-integration คีย์ API, โควตา และรายงานการใช้งานทั้งหมดที่คุณจะเห็นในภายหลังจะอยู่ในขอบเขตของโปรเจกต์นี้ ดังนั้นควรเก็บโปรเจกต์หนึ่งต่อแอปพลิเคชันหนึ่ง แทนที่จะแชร์คีย์ระหว่างเครื่องมือที่ไม่เกี่ยวข้องกัน หากแอปพลิเคชันมีโปรเจกต์อยู่แล้ว ให้ใช้โปรเจกต์นั้น
ขั้นตอนที่ 2: เปิดใช้งาน YouTube Data API v3
API จะถูกปิดใช้งานโดยค่าเริ่มต้นในโปรเจกต์ใหม่ ในคอนโซล ไปที่ APIs & Services, เปิด API Library, ค้นหา “YouTube Data API v3” และเปิดใช้งาน คู่มือเริ่มต้นใช้งานของ Google อธิบายการตรวจสอบเดียวกันจากอีกทิศทางหนึ่ง: เยี่ยมชมหน้า Enabled APIs และเปิดใช้งาน API หากยังไม่ได้แสดงรายการ
หากข้ามขั้นตอนนี้ คำขอแรกของคุณจะล้มเหลวพร้อมรหัส 403 ที่ระบุว่า API ยังไม่ถูกใช้งานในโปรเจกต์หรือถูกปิดใช้งาน นี่คือสาเหตุที่พบบ่อยที่สุดที่ทำให้คีย์ที่เพิ่งสร้างใหม่ “ไม่ทำงาน”
ขั้นตอนที่ 3: สร้างคีย์ API
ไปที่ APIs & Services จากนั้น Credentials คลิก Create credentials และเลือก API key คอนโซลจะสร้างคีย์ทันทีและแสดงในกล่องโต้ตอบ คัดลอกไปเก็บไว้ในที่ปลอดภัย
ปฏิบัติต่อคีย์เหมือนรหัสผ่าน อย่าแปะลงใน Git repo, เธรด Slack หรือชุด JavaScript ฝั่งไคลเอ็นต์ หากคีย์หลุดเข้าไปในการคอมมิตแล้ว คู่มือการ ค้นหาและแก้ไขคีย์ API ที่รั่วไหล ของเราจะครอบคลุมการแก้ไข
ขั้นตอนที่ 4: จำกัดสิทธิ์คีย์
เอกสารของ Google เองระบุว่า “คีย์ API ที่ไม่มีการจำกัดนั้นไม่ปลอดภัย” หลังจากสร้างแล้ว ให้คลิก Restrict key คุณจะได้รับการควบคุมสองส่วนที่เป็นอิสระจากกัน ซึ่งมีระบุไว้ใน คู่มือ Cloud API keys:
- การจำกัดแอปพลิเคชัน ตัดสินว่าใครสามารถนำเสนอคีย์ได้ เลือกอย่างใดอย่างหนึ่ง: เว็บไซต์ (HTTP referrers พร้อมการรองรับ wildcard แบบจำกัด), ที่อยู่ IP (IPv4, IPv6 หรือช่วง CIDR), แอป Android (ชื่อแพ็กเกจพร้อมลายนิ้วมือใบรับรอง SHA-1) หรือแอป iOS (รหัส Bundle IDs) บริการแบ็กเอนด์ควรใช้ที่อยู่ IP วิดเจ็ตที่ทำงานบนเบราว์เซอร์เท่านั้นควรใช้ referrers
- การจำกัด API ตัดสินว่าคีย์สามารถเรียกใช้ API ใดได้บ้าง เลือก “Restrict key” และเลือกเฉพาะ YouTube Data API v3 หากคีย์รั่วไหล ผู้โจมตีจะได้รับโควตา YouTube เท่านั้น
บันทึกและรอสักครู่เพื่อให้การเปลี่ยนแปลงมีผลก่อนที่คุณจะทดสอบ นิสัยอีกสองอย่างจากคู่มือเดียวกัน: หมุนเวียนคีย์เป็นระยะเพื่อจำกัดความเสียหายจากคีย์ที่ถูกบุกรุก และลบคีย์เก่าเมื่อผู้เรียกใช้ทั้งหมดเปลี่ยนไปใช้คีย์ใหม่แล้ว ข้อควรระวังสำหรับขั้นตอนต่อไป: หากคุณจำกัดสิทธิ์ตาม IP ไปยังเซิร์ฟเวอร์ของคุณ การเรียกใช้ curl จากแล็ปท็อปของคุณจะถูกบล็อก ดังนั้นให้ทดสอบจากโฮสต์ที่ได้รับอนุญาต หรือสร้างคีย์สำหรับการพัฒนาแยกต่างหาก
ขั้นตอนที่ 5: ทำคำขอแรกของคุณด้วย curl และ Python
ทุกปลายทางจะอยู่ภายใต้ https://www.googleapis.com/youtube/v3/ ส่งคีย์เป็นพารามิเตอร์คิวรี key ซึ่งเป็นวิธีที่ตัวอย่างของ Google ทำ หรือในเฮดเดอร์ x-goog-api-key ซึ่งจะทำให้คีย์ไม่อยู่ใน URL และล็อกการเข้าถึง ทั้งสองวิธีใช้งานได้กับ API จริง
เริ่มต้นด้วย videos.list ซึ่งเป็นการเรียกใช้ที่มีประโยชน์และประหยัดที่สุด: มันจะส่งคืนรายละเอียดสำหรับรหัสวิดีโอหนึ่งรายการหรือมากกว่า และมีค่าใช้จ่าย 1 หน่วยโควตา รหัสด้านล่างคือรหัสที่ Google ใช้ในเอกสารของตน
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"
การตอบสนองที่ตัดทอนแล้วจะมีลักษณะดังนี้:
{
"kind": "youtube#videoListResponse",
"items": [
{
"id": "7lCDEYXw3mM",
"snippet": { "title": "...", "channelTitle": "...", "publishedAt": "..." },
"statistics": { "viewCount": "...", "likeCount": "..." }
}
]
}
พารามิเตอร์ part เป็นสิ่งจำเป็นและควบคุมว่าส่วนใดบ้างจะถูกส่งกลับ snippet, statistics, contentDetails และ status เป็นส่วนที่คุณจะใช้บ่อยที่สุด
ตอนนี้เป็นการค้นหา ซึ่งเป็นฟังก์ชันที่คนส่วนใหญ่ต้องการ ใน Python ด้วย 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"])
สำหรับ search.list พารามิเตอร์ part ต้องเป็น snippet, maxResults มีค่าเริ่มต้นเป็น 5 และยอมรับได้ตั้งแต่ 0 ถึง 50 และ type มีค่าเริ่มต้นเป็น video,channel,playlist ดังนั้นให้ตั้งค่าเป็น video หากคุณต้องการเฉพาะวิดีโอ ผลการค้นหาจะมี videoId อยู่ภายใน id ไม่ใช่ที่ระดับบนสุด ซึ่งเป็นเหตุผลว่าทำไมลูปด้านบนจึงอ่าน item["id"]["videoId"]
ขั้นตอนที่ 6: จัดเก็บคีย์และเรียกใช้คำขอใน Apidog
ตัวแปรเชลล์ใช้ได้กับสคริปต์เดียว แต่มันไม่เหมาะสำหรับทีม และไม่ได้ให้การตรวจสอบที่บันทึกไว้และสามารถรันซ้ำได้ นี่คือคำขอเดียวกันใน Apidog โดยที่คีย์ถูกเก็บไว้นอกระบบคลาวด์

- สร้างสภาพแวดล้อม เพิ่มสภาพแวดล้อมที่ชื่อว่า
YouTubeพร้อมตัวแปรสองตัว:base_urlตั้งค่าเป็นhttps://www.googleapis.com/youtube/v3และyoutube_api_keyสำหรับคีย์ ให้เว้นค่าที่แชร์ไว้เป็นตัวยึดตำแหน่ง และวางคีย์จริงลงในช่องค่าโลคัล ค่าโลคัลจะอยู่ในแคชของไคลเอ็นต์ของคุณและไม่เคยซิงค์กับเพื่อนร่วมทีม การตั้งค่าทั้งหมดอยู่ในคู่มือของเราเกี่ยวกับ สภาพแวดล้อมและตัวแปรลับใน Apidog - สร้างคำขอ คำขอใหม่, GET
{{base_url}}/videos, พารามิเตอร์คิวรีpart=snippet,statisticsและid=7lCDEYXw3mMและเฮดเดอร์x-goog-api-keyตั้งค่าเป็น{{youtube_api_key}}เลือกสภาพแวดล้อมYouTubeและส่ง คุณควรเห็น JSON เดียวกันกับการเรียกใช้ curl - เปลี่ยนให้เป็นชุดทดสอบ ใน post-processors ของคำขอ ให้เพิ่ม assertion: สถานะเท่ากับ 200 และ
$.items[0].idเท่ากับ7lCDEYXw3mMบันทึกคำขอและเพิ่มลงในสถานการณ์ทดสอบ การตรวจสอบตอนนี้สามารถรันได้ตามต้องการ, ตามกำหนดเวลา, หรือใน CI ผ่าน Apidog CLI ซึ่ง—env-var "youtube_api_key=$YOUTUBE_API_KEY"จะแทรกคีย์ในขณะรันไทม์แทนที่จะจัดเก็บ
ผลตอบแทนจะมาเมื่อมีการหมุนเวียนคีย์หรือมีการเปลี่ยนแปลงข้อจำกัดเป็นครั้งแรก: รันสถานการณ์เดียวซ้ำและคุณจะทราบได้ภายในไม่กี่วินาทีว่าการเรียกใช้ YouTube ทั้งหมดยังคงทำงานได้หรือไม่ ดาวน์โหลด Apidog เพื่อทำตาม; ฟรีสำหรับทีมสูงสุดสี่คน
โควตาและข้อจำกัด
YouTube Data API ไม่ได้เรียกเก็บเงินคุณเป็นดอลลาร์ แต่จะเรียกเก็บเงินคุณเป็นหน่วยโควตา และตัวเลขมาจาก หน้าคำนวณโควตาของ Google ทุกโปรเจกต์ที่เปิดใช้งาน API จะได้รับการจัดสรรเริ่มต้นนี้:
| ถัง | ค่าเริ่มต้นต่อวัน | ค่าใช้จ่ายต่อการเรียกใช้ |
|---|---|---|
search.list |
100 การเรียกใช้ | 1 หน่วย (ถังของตนเอง) |
videos.insert |
100 การเรียกใช้ | 1 หน่วย (ถังของตนเอง) |
| ปลายทางอื่นๆ ทั้งหมดรวมกัน | 10,000 หน่วย | แตกต่างกันไป ดูด้านล่าง |
ภายในแหล่งรวม 10,000 หน่วยที่แชร์กัน เมธอดรายการต่างๆ เช่น videos.list, channels.list, playlistItems.list และ commentThreads.list มีค่าใช้จ่าย 1 หน่วยต่อรายการ การเขียนมีค่าใช้จ่ายมากกว่า: videos.update และ videos.delete มีค่าใช้จ่าย 50 หน่วย และ captions.insert มีค่าใช้จ่าย 400 หน่วย กฎสี่ข้อจากหน้าเดียวกันนี้จะกำหนดวิธีที่คุณควรออกแบบโดยคำนึงถึงสิ่งนี้:
- โควตาจะรีเซ็ตในเวลาเที่ยงคืนตามเวลาแปซิฟิก
- ทุกคำขอ รวมถึงคำขอที่ไม่ถูกต้อง มีค่าใช้จ่ายอย่างน้อย 1 หน่วย ลูปที่พยายามเรียกใช้ซ้ำเมื่อเกิดข้อผิดพลาดจะเผาผลาญโควตาไปโดยเปล่าประโยชน์
- แต่ละหน้าเพิ่มเติมของผลลัพธ์แบบแบ่งหน้ามีค่าใช้จ่ายเท่ากับหน้าแรก
- การจัดสรรเริ่มต้น “อาจมีการเปลี่ยนแปลง” ตรวจสอบหน้าเว็บ ไม่ใช่บทช่วยสอน ก่อนที่คุณจะวางแผนกำลังการผลิต
คู่มือเก่าๆ กำหนดราคาการค้นหาไว้ที่ 100 หน่วยจากโควตา 10,000 หน่วย หน้าปัจจุบันระบุว่า search.list อยู่ในถังของตัวเอง ดังนั้นขีดจำกัดยังคงอยู่ที่ 100 การค้นหาต่อวัน แต่การค้นหาจะไม่กินโควตาสำหรับการเรียกใช้อื่นๆ ของคุณอีกต่อไป
หากยังไม่พอ หน้า การตรวจสอบโควตาและการปฏิบัติตามข้อกำหนด จะนำคุณไปยังแบบฟอร์ม YouTube API Services Audit and Quota Extension Form ก่อนที่คุณจะยื่นแบบฟอร์ม ให้แคชการตอบกลับ ขอเฉพาะค่า part ที่คุณต้องการ และรวม ID หลายรายการเข้าในการเรียก videos.list ครั้งเดียว (พารามิเตอร์ id รับรายการที่คั่นด้วยเครื่องหมายจุลภาค) การใช้งานจะแสดงบนหน้า Quotas ใน Cloud Console
ข้อผิดพลาดทั่วไปและวิธีแก้ไข
ข้อมูลอ้างอิงข้อผิดพลาด ของ Google ระบุรหัสเหตุผลเฉพาะของ API สองแถวแรกด้านล่างมาจากการส่งคำขอจริงไปยัง API ที่ใช้งานได้จริงโดยใช้คีย์ที่ไม่ถูกต้องและไม่มีคีย์
| HTTP | เหตุผล | ข้อความที่คุณจะเห็น | การแก้ไข |
|---|---|---|---|
| 400 | badRequest (API_KEY_INVALID) |
“API key ไม่ถูกต้อง โปรดส่ง API key ที่ถูกต้อง” | พิมพ์ผิด, คีย์ถูกลบ, หรือข้อจำกัด API ที่ไม่รวม YouTube Data API v3 สร้างใหม่หรือแก้ไขคีย์ |
| 403 | forbidden |
“เมธอดไม่อนุญาตให้ผู้เรียกใช้ที่ไม่ได้ลงทะเบียน...” | ไม่ได้ส่งคีย์ เพิ่มพารามิเตอร์ key หรือเฮดเดอร์ x-goog-api-key |
| 403 | quotaExceeded |
“คำขอไม่สามารถดำเนินการได้เนื่องจากคุณใช้โควตาเกินกำหนดแล้ว” | รอจนถึงเวลาเที่ยงคืนตามเวลา PT เพื่อรีเซ็ต, ลดการเรียกใช้ที่ไม่จำเป็น, หรือขอขยายโควตา |
| 400 | missingRequiredParameter |
“คำขอขาดพารามิเตอร์ที่จำเป็น” | ส่วนใหญ่เกิดจากการขาด part |
| 401 | authorizationRequired |
“คำขอใช้พารามิเตอร์ mine แต่ไม่ได้รับการอนุญาตอย่างถูกต้อง” | การเรียกใช้นี้ต้องการโทเค็น OAuth 2.0 ไม่ใช่คีย์ ดูคำถามที่พบบ่อย |
อีกหนึ่งจากประสบการณ์: หากข้อจำกัดของแอปพลิเคชันไม่ตรงกับผู้เรียกใช้ คุณจะได้รับรหัส 403 ที่ระบุ referrer หรือ IP ที่ถูกบล็อก แก้ไขข้อจำกัดหรือเรียกใช้จากโฮสต์ที่ได้รับอนุญาต และโปรดทราบว่ากระทู้เก่าๆ จะเรียกข้อผิดพลาดคีย์ไม่ถูกต้องว่า keyInvalid แต่ API จริงจะส่งคืน badRequest พร้อมรายละเอียด API_KEY_INVALID ดังนั้นให้จับคู่กับข้อความหรือรายละเอียด ไม่ใช่สตริงเหตุผลแบบเก่า
คำถามที่พบบ่อย
คีย์ API ของ YouTube ฟรีหรือไม่?
ใช่ การสร้างคีย์ไม่มีค่าใช้จ่าย และเอกสารระบุราคา API เป็นหน่วยโควตา ไม่ใช่เงิน การจัดสรรเริ่มต้นข้างต้นคือสิ่งที่คุณได้รับโดยไม่ต้องร้องขออะไร
ฉันต้องใช้ OAuth แทนคีย์ API เมื่อใด?
คีย์ API จะระบุโปรเจกต์ของคุณและปลดล็อกข้อมูลสาธารณะ ทันทีที่คุณแตะข้อมูลส่วนตัวของผู้ใช้ หรือแทรก, อัปเดต หรือลบข้อมูลใดๆ Google จะต้องใช้โทเค็น OAuth 2.0 จากผู้ใช้ที่เป็นเจ้าของข้อมูลนั้น การให้คะแนนวิดีโอ, การแสดงรายการการสมัครสมาชิกของคุณเอง หรือการใช้ฟิลเตอร์ mine=true ล้วนอยู่ในฝั่งของ OAuth การเปรียบเทียบระหว่าง คีย์ API และ bearer token ของเราจะอธิบายว่าทำไมข้อมูลรับรองทั้งสองจึงตอบคำถามที่แตกต่างกัน
เอเจนต์ AI สามารถใช้คีย์ API ของ YouTube ของฉันได้หรือไม่?
ได้ ตราบใดที่เอเจนต์ทำงานในที่ที่ข้อจำกัดของคีย์อนุญาต เซิร์ฟเวอร์ YouTube MCP เป็นวิธีหนึ่งในการส่งข้อมูลวิดีโอไปยังผู้ช่วยการเขียนโค้ด ให้คีย์ที่จำกัดเฉพาะ Data API และเครื่องที่ใช้งาน และเก็บคีย์นั้นไว้นอกพรอมต์
ฉันควรทำอย่างไรหากคีย์รั่วไหล?
ลบคีย์นั้นในหน้า Credentials และสร้างคีย์ใหม่ จากนั้นแก้ไขที่มา: ย้ายคีย์ไปยังค่าโลคัลใน Apidog หรือที่เก็บความลับ และสแกน repository เพื่อให้แน่ใจว่าคีย์เก่าไม่ได้ยังคงอยู่ในประวัติ
ขั้นตอนต่อไป
ตอนนี้คุณมีโปรเจกต์, API ที่เปิดใช้งาน, คีย์ที่ถูกจำกัดสิทธิ์, และคำขอที่ทำงานได้จาก curl, Python, และ Apidog แล้ว เชื่อมต่อสถานการณ์ที่บันทึกไว้เข้ากับ CI และให้หน้า Quotas บอกคุณเมื่อถึงเวลาที่ต้องปรับปรุงประสิทธิภาพ
