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

Pinterest视频media_id状态为succeeded,创建Pin却提示未上传的问题

Pinterest视频上传状态显示成功,但创建Pin时报media_id未上传的问题

问题重现

  1. 调用媒体状态查询接口返回成功:
const checkUploadStatusRes = await fetch(
  `https://api.pinterest.com/v5/media/${registerMediaUploadResponse.media_id}`,
  {
    method: "GET",
    headers: {
      Authorization: `Bearer ${input.accessToken}`,
    },
  },
);

返回结果:

{
    "media_id": "12345",
    "media_type": "video",
    "status": "succeeded"
}
  1. 创建Pin时使用以下media_source参数:
media_source: {
    source_type: "video_id",
    cover_image_url: input.imageUrls[0],
    media_id: mediaId,
}

收到错误:

{"code":1,"message":"The media_id you are trying to use has not been uploaded.","details":{"method":17,"param_name":"media_id"}}

可能的原因及解决办法

1. media_id变量传递错误

确认创建Pin时使用的mediaId和查询状态时的registerMediaUploadResponse.media_id是完全一致的字符串,避免变量赋值、拼写错误或异步逻辑导致的变量不匹配。建议直接使用状态查询返回的media_id,跳过中间变量传递:

// 获取状态后直接用返回的media_id
const statusData = await checkUploadStatusRes.json();
if (statusData.status === "succeeded") {
    // 创建Pin时用statusData.media_id
    media_source: {
        source_type: "video_id",
        cover_image_url: input.imageUrls[0],
        media_id: statusData.media_id,
    }
}

2. 视频后台处理延迟

虽然接口返回status: succeeded,Pinterest可能仍在后台完成视频的最终转码或校验,此时media_id尚未完全可用。可以在获取成功状态后增加一段等待时间再创建Pin:

const statusData = await checkUploadStatusRes.json();
if (statusData.status === "succeeded") {
    // 等待5-10秒,给后台处理留时间
    await new Promise(resolve => setTimeout(resolve, 5000));
    // 发起创建Pin请求
}

3. cover_image_url不可访问

Pinterest需要能公开访问封面图URL,确保input.imageUrls[0]是HTTPS协议、无权限限制的公开链接,否则可能触发media_id验证失败的错误(错误信息可能不准确)。

4. API权限不足

确认你的access_token已授予pins:write和media:write权限,权限缺失可能导致系统拒绝使用已上传的media_id创建Pin。可以在Pinterest开发者后台的应用权限设置中检查权限范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 02:34:54