You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用YouTube Reporting API创建任务时遭遇400参数错误的求助

调用YouTube Reporting API创建任务时遭遇400参数错误的求助

我看了你的代码和遇到的错误信息,问题根源在于请求格式不符合API的要求。YouTube Reporting API的jobs.create接口期望接收的是JSON格式的请求体,但你目前的请求要么是把参数放在表单数据里(用data=data),要么是放在URL查询参数里(用params=data),这两种方式都不被API认可,所以才会出现“找不到reportTypeId、name字段”的错误。

修正方案

你需要做这两个关键调整:

  1. 把请求的内容类型改为application/json(其实用requests的json参数时会自动设置这个Header,也可以手动加上确保万无一失)
  2. 使用json=data替代data=data或params=data,让requests自动把你的数据序列化为JSON格式发送

下面是修正后的完整代码:

import requests
access_token = 'MY_ACCESS_TOKEN'

headers = {
    "Authorization": f"Bearer {access_token}",
    # 可选:手动指定Content-Type,用json参数时requests会自动添加
    "content-type": "application/json",
}
url = "https://youtubereporting.googleapis.com/v1/jobs"
data = {
    "reportTypeId": "channel_basic_a2",
    "name": "my_job",
}
# 关键:用json参数传递数据,而不是data或params
response = requests.post(url, headers=headers, json=data)

assert response.status_code == 200, f"{response.status_code} {response.text}"
print(response.text)

为什么之前的尝试不行?

  • 用data=data:会把参数编码为表单格式(application/x-www-form-urlencoded),但API只接受JSON格式的请求体,所以无法识别这些参数
  • 用params=data:会把参数拼在URL的查询字符串里,而API的jobs.create接口是从JSON请求体中读取参数的,自然也找不到这些字段

备注:内容来源于stack exchange,提问作者Arthur Beyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:33:01