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

使用X(Twitter) API上传MP4视频失败:媒体ID无效问题求助

解决X API视频发布时「媒体ID无效」问题

核心问题分析

你遇到的「Your media IDs are invalid」错误,主要和API权限限制、接口版本不兼容有关,关键结论如下:

  1. 当前X免费API账号无法通过v2 API发布带媒体的推文,必须升级到Basic付费账号(每月$10);
  2. 若不想付费,可改用v1.1的statuses/update接口发布带媒体的推文;
  3. 你的视频上传流程(INIT/APPEND/FINALIZE)是正确的,媒体ID本身有效,问题出在发布环节的权限或接口版本匹配上。

具体解决方案

方案1:升级到Basic付费账号

在X开发者平台将项目升级到Basic付费版后,即可直接使用现有代码通过v2 API关联媒体发布推文,无需修改代码。

方案2:改用v1.1接口发布推文(免费可用)

修改代码中发布推文的逻辑,替换为v1.1的statuses/update接口,免费账号即可实现带媒体的推文发布:

# 替换原代码中Step5的所有内容
# Step 5 — Post tweet with v1.1 API
tweet_text = title if title else "Video tweet"

# v1.1接口要求media_ids为单个字符串(无需数组)
payload = {
    "status": tweet_text,
    "media_ids": media_id
}

print(f"   📤 Payload: {payload}")

tweet_resp = requests.post(
    "https://api.twitter.com/1.1/statuses/update.json",
    auth=self.oauth,
    data=payload  # v1.1接口使用form-data格式,而非JSON
)

if tweet_resp.ok:
    tweet_data = tweet_resp.json()
    tweet_id = tweet_data.get("id_str")
    print(f"✅ Tweet posted successfully! ID: {tweet_id}")
    return tweet_data
else:
    error_detail = tweet_resp.text
    raise Exception(f"Failed to post tweet with media: {error_detail}")

额外检查项

  1. 权限验证:在X开发者平台确认API密钥已启用以下权限:
    • v1.1:upload-media、statuses/update
    • v2(若使用):tweet.write、media.write
  2. 视频格式检查:确保MP4符合X要求:
    • 编码:H.264视频 + AAC音频
    • 分辨率≤1920x1080
    • 时长≤140秒
  3. 媒体状态确认:在_wait_for_processing方法结束后,打印完整的status_data,确认media_url字段存在且processing_info.state为succeeded。

内容的提问来源于stack exchange,提问作者john houses

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 02:24:54