SurveyMonkey API调用时status参数无法筛选联系人状态如何解决
问题原因分析
- 核心问题是
status参数的取值不符合SurveyMonkey V3 API的规范:你当前使用的参数值是optout,但官方要求的已退订状态枚举值为opted_out,退信状态对应的枚举值为bounced。枚举值不匹配时接口会触发默认的active(活跃联系人)筛选规则,所以你只能拿到活跃联系人数据。 - 第二个潜在问题是手动拼接URL参数容易出现编码错误,虽然当前
per_page可以正常生效,但如果后续参数包含特殊字符很容易出现异常,更推荐使用requests库原生的params参数传递查询条件。
修正后的代码示例
import requests token = "<your_token>" # 替换为实际的接口密钥 client = requests.session() headers = { "Authorization": "Bearer %s" % token, "Content-Type": "application/json" } HOST = "https://api.surveymonkey.com" EMAIL_ENDPOINT = "/v3/contacts" # 获取已退订联系人 optout_params = { "status": "opted_out", "per_page": 1000 } optout_url = f"{HOST}{EMAIL_ENDPOINT}" optout_api = client.get(optout_url, headers=headers, params=optout_params).json() # 获取已退信联系人只需替换status参数值即可 bounced_params = { "status": "bounced", "per_page": 1000 } bounced_url = f"{HOST}{EMAIL_ENDPOINT}" bounced_api = client.get(bounced_url, headers=headers, params=bounced_params).json()
额外注意事项
- 如果你的联系人总量超过1000条,需要处理分页逻辑,通过返回结果里的
links.next字段拉取下一页数据,避免遗漏数据。 - 调用时如果出现权限报错,先确认你的API密钥具备联系人的只读权限,对应SurveyMonkey后台的应用权限配置要勾选联系人相关的读权限。
内容的提问来源于stack exchange,提问作者wilmy
相关产品推荐
相关产品推荐

