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

调用WhatsApp Business API标记消息已读返回2500错误如何解决

错误原因

你遇到2500错误码、未知路径组件报错,是多重问题叠加导致的:

  • 接口路径结构完全不符合API规范:标记消息已读的接口不支持把消息ID(wamid)作为路径参数拼在/messages/后面,wamid需要放在请求体中传递,路径中需要传入的是你的WhatsApp商业账号对应的手机号ID(Phone Number ID)。
  • 请求方法错误:该接口要求使用POST方法发起请求,你当前用的PUT方法不符合要求。
  • 代码参数拼写错误:调用requests时传请求头的参数写为header,requests库要求的参数名是headers(末尾带s),该问题会引发鉴权失败。
  • 请求体缺少必填字段:WhatsApp Cloud API所有消息类接口都要求传messaging_product字段,固定值为whatsapp,你当前的请求体没有这个字段。
修复方法
  1. 登录Meta开发者后台,进入对应WhatsApp应用的「API配置」板块,复制分配给你的Phone Number ID(注意这不是你的真实手机号,是系统生成的数字ID)。
  2. 调整请求URL格式,把Phone Number ID放到路径中,移除原本拼在URL里的wamid。
  3. 把请求方法从PUT改为POST。
  4. 修正requests的请求头参数名拼写,在请求体中补充必填的messaging_product字段,同时把wamid放到message_id字段中。

修正后的可运行代码如下:

import requests
import json

# 替换为你自己的配置信息
PHONE_NUMBER_ID = "你的WhatsApp手机号ID"
AUTH_TOKEN = "my-auth-token"
TARGET_WAMID = "wamid.HBgMOTE4NzgwNDk1ODA0FQIAEhggQkU2OURGQUYyMzdCNDlBRkQ1QUI4RERBNDdENDBBOEIA"

res = requests.post(
    url=f'https://graph.facebook.com/v13.0/{PHONE_NUMBER_ID}/messages',
    headers={
        "Authorization": f"Bearer {AUTH_TOKEN}",
        "Content-Type": "application/json"
    },
    data=json.dumps({
        "messaging_product": "whatsapp",
        "status": "read",
        "message_id": TARGET_WAMID
    })
)

print(res.json())

调用成功后接口会返回{"success": true}的响应。

注意事项
  • 只有用户主动发送给你的、处于24小时客服窗口期内的消息支持标记已读,超过窗口期的消息调用接口会返回权限类错误。
  • 你当前使用的v13.0版本Graph API已经结束生命周期维护,如果后续遇到版本兼容问题,可以替换为当前官方稳定版版本号,接口传参规则保持不变。
  • 确保你使用的Auth Token拥有对应WhatsApp账号的whatsapp_business_messaging权限,否则也会返回鉴权失败错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:15:43