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

如何通过Instagram API从帖子永久链接获取对应media_id?

从Instagram永久链接获取单帖media_id及media_url的实现方法

你之前用的business_discovery接口只能拉取授权绑定账号下的全量帖子列表,没法直接匹配单条permalink,以下是两种可直接落地的方案:

方案1:官方oEmbed接口直取(推荐,官方支持无兼容风险)

  • 直接调用Meta官方提供的Instagram oEmbed接口,传入帖子永久链接即可直接返回对应media_id,不需要提前查询帖子所属用户名,接口请求格式:
GET https://graph.facebook.com/{对应API版本,比如v19.0}/instagram_oembed
    ?url={需要查询的Instagram帖子完整permalink}
    &access_token={你的应用有效access_token}
  • 接口返回的JSON结构中会直接携带media_id字段,拿到ID后请求媒体详情接口即可获取media_url:
GET https://graph.facebook.com/{API版本}/{拿到的media_id}
    ?fields=media_url
    &access_token={和上面一致的有效access_token}
  • 前置要求:
    • 你的Meta应用需要开通oEmbed、instagram_basic权限
    • 目标帖子必须是公开状态,私密账号发布的内容无法通过该接口拉取
    • access_token可使用应用绑定的Instagram商业账号/创作者账号生成的长期令牌

方案2:短链转码(备用,适合已知短链格式的场景)

  • Instagram公开帖子的permalink固定格式为https://www.instagram.com/p/{短码}/,其中{短码}部分是经过自定义Base64编码的media_id,可直接转码得到数字格式的media_id,不需要提前调用接口查ID
  • 转码逻辑:使用Instagram的自定义编码字符表ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_,把短码逐字符按64进制转十进制即可得到对应media_id
  • Python转码参考代码:
def shortcode_to_media_id(shortcode: str) -> int:
    charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
    mid = 0
    for c in shortcode:
        mid = mid * 64 + charset.index(c)
    return mid

# 示例:提取permalink中/p/后的短码传入即可
# 比如链接为https://www.instagram.com/p/Cz123AbcXyZ/,短码就是Cz123AbcXyZ
print(shortcode_to_media_id("Cz123AbcXyZ"))

提示:转码得到的media_id仍然需要配合有效access_token调用详情接口才能拿到media_url,无法绕过平台权限校验。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:48:18