关于Facebook Marketing API AdCreative添加方式的技术问询
解决Facebook Marketing API中通过AdCreative规格创建广告的问题
我来帮你搞定这个问题!你遇到的问题大概率是因为creative字段的嵌套格式不符合API要求——当你选择直接传入AdCreative规格(而非创意ID)时,API对格式有明确的规定,不是简单套一层"creative"字典就行的。
问题根源
你当前的写法多嵌套了一层不必要的"creative"键,Facebook API无法识别这种格式,正确的做法是用"creative_spec"来包裹你的创意参数。
错误示例(你的当前写法)
ad = Ad(parent_id=self.parent_id) ad[Ad.Field.name] = advert_name ad[Ad.Field.adset_id] = group_id ad[Ad.Field.creative] = { "creative": {"name": advert_name, ...} # 这里的嵌套层级错误 }
正确代码示例
from facebookads.objects import Ad, AdField # 1. 构造符合要求的AdCreative规格字典 creative_spec = { "name": advert_name, # 根据你的广告类型填写对应的object_story_spec,这里以链接广告为例 "object_story_spec": { "page_id": "你的Facebook页面ID", "link_data": { "link": "https://你的广告目标链接", "message": "你的广告文案内容", "image_hash": "如果用图片的话填图片哈希值" # 可选,根据需求添加 } } } # 2. 初始化Ad对象并设置字段 ad = Ad(parent_id=self.parent_id) ad[AdField.name] = advert_name ad[AdField.adset_id] = group_id # 关键:用"creative_spec"作为键来传入创意规格 ad[AdField.creative] = { "creative_spec": creative_spec } # 3. 执行广告创建操作(可选设置状态为ACTIVE) ad.remote_create(params={"status": Ad.Status.ACTIVE})
额外注意事项
- 如果你是使用已创建好的AdCreative ID,格式才是
{"creative_id": "你的创意ID"},和直接传规格的格式完全不同,别搞混。 object_story_spec的内容要和你的广告类型匹配:比如图片广告需要image_data,视频广告需要video_data,请根据你的广告目标调整字段。
内容的提问来源于stack exchange,提问作者Александр Яцков




