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

Python调用Etsy2模块createListing接口报错:无法使用非店铺主语言创建商品

报错说明

ValueError: Could not decode response from Etsy as JSON: status_code: 400, text: "Shops cannot create Listings in languages other than the Shop's primary language. (fr)", url 'https://openapi.etsy.com/v2/listings'

根因分析

这个400错误是Etsy V2 API的语言校验规则导致的:创建商品listing时的API请求语言上下文必须和店铺主语言一致,且V2版本的createListing接口不支持直接在请求体中传入language参数指定内容语言,默认会使用请求头的Accept-Language值或者平台默认的英语进行校验,和你的法语主店铺不匹配就会触发报错。

解决方案
  • 给API请求全局配置法语的Accept-Language请求头,etsy2模块初始化时可直接设置默认请求头,参考代码如下:
import etsy2

# 初始化认证客户端
api_client = etsy2.ApiClient(
    api_key="你的Etsy API Key",
    api_secret="你的Etsy API Secret",
    access_token="你的授权Access Token",
    access_token_secret="你的授权Access Token Secret"
)
# 设置全局请求头指定语言为法语
api_client.set_default_header("Accept-Language", "fr")
# 初始化商品接口实例即可正常发起创建请求
listings_api = etsy2.ListingsApi(api_client)
  • 确保你传入createListing接口的所有文本字段(商品标题、描述、标签、属性值等)均为法语内容,避免多语言内容混合触发额外校验报错。
  • 如果你使用的etsy2模块版本较低不支持自定义请求头,可直接修改模块底层的请求逻辑:找到模块中发起POST请求到/v2/listings的代码段,在requests.post方法的headers参数中新增"Accept-Language": "fr"即可。
验证规则

请求发起后如果返回201创建成功状态码,且返回的listing结构体中language字段值为fr,说明配置已经生效。

补充提示

如果后续有长期开发需求,建议迁移到Etsy V3版本API,V3的createListing接口已经支持直接在请求体中传入language参数指定内容语言,适配多语言店铺场景更加灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:05