跳转到主要内容

自定义受众群体

概述

合作伙伴有多种方式创建Custom Audiences 请注意,无法在定向时排除相似(lookalike)自定义受众。此外,不能在同一广告线项(广告组)中同时定向自定义受众及其相似受众。 受众管理 受众可通过受众合作伙伴和 X Ads API 合作伙伴进行管理。我们在 API 中提供了一系列 endpoint,用于访问和维护自定义受众。 关于自定义受众信息,我们提供 2 个 endpoint: 有关如何上传和管理受众的更多信息,请参阅Audience API 指南 处理时间 通常,受众更改以批处理方式每 6–8 小时运行一次。在更改处理期间,待更新的现有受众不受影响。我们不建议在该时间窗口内对同一受众进行超过一次的新增和一次的移除更新。 定向 仅当某个受众在过去 90 天内与在 X 自有及运营客户端上活跃的至少 100 名用户匹配时,才能进行定向。GET accounts/:account_id/custom_audiences/:custom_audience_id 会指示某个受众是否因匹配用户过少而不可定向。 Audience API(CRM)
image2
受众或 API 合作伙伴提供一份已进行 hash 的标识符列表,X 进行匹配并生成可用于在 X 上媒体投放的细分。合作伙伴可以使用 Audience API 创建这些受众。 工作原理
image3
Web 当与 MPP 受众合作伙伴合作以识别可用于在 X 上媒体投放的定向细分时,我们提供标准的 Cookie 匹配流程。此外,广告主可以设置 X Web Event Tag 来收集网站用户数据并创建相应的 Custom Audience。 设置步骤
image0
工作原理
image1
Mobile 有关详细信息,请参阅来自移动应用的 Custom Audiences 博文 Flexible Flexible audiences 使广告主能够基于现有自定义受众或其子集构建并保存受众组合。可根据交互的新近度和频率来定向自定义受众成员的子集。 Custom Audiences 的受限用例 阅读更多关于限制的内容

受众常见问题解答

问:我们推送了大量数据,为什么受众规模显示为 TOO_SMALL? 答:目前数据会实时加入受众,但用于计算受众规模的处理作业会在一段时间后才运行。正确的受众规模应在数小时后于 UI 中显示。 问:我们已完成发送受众数据,并等待了 24 小时或更久,但仍无法定向该受众——下一步该怎么做? 答:请确认以下事项:
  • 传递的用户 id 正确且未格式错误。
  • 传递的受众名称正确,并与先前的成员更新一致。
  • 请确认 POST 命令的响应。
  • 请确认 ID Sync 像素已正确实施,并且按照 ID Sync 流程,已有足够的用户访问相关站点以完成用户映射。未映射的用户在成员更新中将不会转化为可定向用户。
如果以上均已确认无误,请联系 X 的产品对接人,并尽可能提供详尽信息(首选信息示例参见Guide to Partner Inbounds)。 问:我们可以调用该 endpoint 的频率是多少,应采用什么算法? 答:我们强烈建议以增量差异方式调用我们的系统,切勿重新发送完整的受众成员列表。系统已通过测试,具备足以处理全球大型网站增量数据更新的吞吐能力。首次上传受众应谨慎限速,预计需要较长时间才能完成首次上传。 问:用于定向的受众最小规模是多少?
  • 受众的最小规模为 100 名用户(匹配后)。如果匹配的受众少于 500 名用户,则不会在 X Ads UI 中提供用于定向。
问:处理受众文件需要多长时间?受众文件在 X 用户界面中可用需要多久?
  • 通常处理受众文件需要 4–6 小时,但这取决于文件大小。文件处理完成后,受众会在 X Ads UI 中可用。
问:匹配率如何计算?
  • 匹配率 = 90 天内活跃的 X 用户数 / 提供的用户数量
问:如何测试受众文件是否正常工作?
  • 你可以提供一个测试受众文件,并使用“keltonlynn”作为广告主 handle。我们随后可以验证该文件是否能够被正确导入并加载到 X UI 中。
问:什么是合作伙伴用户标识符(p_user_id)?
  • 这是你公司用于唯一标识每位客户的标识符。
问:什么是标准 ID?
  • 可以是电子邮箱地址、设备 ID、X @handle 或 ID。
问:如何获取 HMAC Key?
  • 我们会通过加密电子邮件提供。请将你的公有 PGP 密钥发送至mpp-inquiry@x.com,我们会先向你发送测试邮件以验证一切正常。验证完成后,我们会发送 HMAC Key。
问:如何使用给定的 HMAC Key 验证哈希过程是否成功?
  • X 将提供一个测试文件(包含示例电子邮箱地址、设备 ID 等),以及一个用于对照验证结果的 hash 文件。
问:完整数据匹配文件是否有大小限制?
  • 没有,完整数据匹配文件没有大小限制。
问:处理完整数据匹配文件需要多长时间?
  • 一旦 X 收到文件,大约需要 1 天时间来处理该文件。

CRM

image0
本文档说明面向 Custom Audiences CRM 合作伙伴的集成细节,包括文件格式与数据交换流程。 摘要 Company 将代表客户向 X 提交一份经过哈希处理的常见用户标识符列表(如电子邮件地址)或合作伙伴用户 id,用于执行盲匹配并生成用于定向的 X 用户 id 列表。用于定向的细分将提供给在 ads.x.com 活动设置中通过文件名指定的广告主专属 @handle。 来自 Company 的所有文件将通过 IronBox(www.golockbox.com)上的安全包传输给 X,使用 X 为 Company 授权的专用账户。X 将提供 IronBox 访问权限。有关 IronBox API 的文档请参见 https://secure.goironcloud.com/Docs/Help/

合作伙伴 ID 匹配要求

如果公司使用自己的标准 ID 系统来跟踪用户(即不是常见的用户标识符,如电子邮件地址、设备 ID、X 用户 ID 等),那么建议采用以下流程。 1. 完整数据匹配 首先,公司需要提供一个包含所有用户记录的完整列表,其中包括与 X 共有的唯一通用用户标识符,以单个文件的形式执行完整数据匹配,并生成由 X 存储的合作伙伴 ID(p_user_id)到 X ID(tw_id)的映射关系。此操作将定期每 2-3 个月执行一次,以确保数据的及时更新。匹配完成后,X 将通过电子邮件向公司提供此文件的基准匹配率。 此文件的格式应为: 命名规范:FullDataMatch.[CompanyName].txt 哈希算法:HMAC_SHA-256 格式: 第 1 列:通用标识符的 HMAC 哈希值 第 2 列:合作伙伴用户 ID(每个用户唯一,在文件中可重复) 列分隔符(CSV):使用逗号分隔哈希后的通用用户标识符和合作伙伴 ID 行分隔值
  • 例如:如果用户记录 A 具有合作伙伴用户 ID 1 和通用标识符 1、2 和 3:
common user identifier 1p_user_1
common user identifier 2p_user_1
common user identifier 3p_user_1
*请参阅下方通用用户标识符哈希指导部分 2. 自定义细分列表 公司将以 p_user_id 的形式提供用户列表,为客户创建自定义受众,用于在 X 上进行精准投放。
  • 行分隔值
  • p_user_id
    • (与上述第 1 部分完整数据匹配中提供的相同。如果在完整数据匹配中提供的值已进行哈希处理,那么公司需在受众文件中提供相同的哈希值。如果提供的值未进行哈希处理,那么公司需提供未哈希的值。)

标准匹配要求

如果公司未使用标准 id 来映射所有客户的用户标识符,建议采用以下流程。 自定义分群列表 公司将代表客户直接向 X 提供已进行 hash 处理的常见用户标识符列表,以创建自定义受众。 该文件的格式应为:
  • 行分隔的值
  • 已进行 hash 处理的常见用户标识符(例如电子邮件地址)
  • 遵循下文列出的文件命名约定
  • 遵循下文“Hashing Directions”中对电子邮件地址进行 hash 处理的说明

自定义细分 List 文件命名与操作

文件的操作由其名称决定,可用操作与通用文件命名规范如下:audiencename_partnername.handle.operation.filetype
  • audiencename:自定义受众的名称。该字段是在 ads.x.com 广告系列设置界面中选择受众时显示的名称,例如 brand_loyalty_card_holders。
  • partnername:代表广告主传送 data 的公司名称,例如 company_name。
  • handle:将可访问自定义受众的 X 账号(@handle),例如 @pepsi、@dietpepsi
  • operation:new、add、remove、removeall、replace(详见下文)
  • timestamp:标准 Unix 纪元时间(秒),用于确保每个上传的受众文件都是唯一的
  • filetype:文件应为 *.txt 格式

创建和更新受众

使用单个文件创建新受众,例如 loyalty_card_holders_partnername.pepsi.new.txt Add - 将某个列表中的匹配项添加到现有受众,例如 loyalty_card_holders_partnername.pepsi.add..txt Remove - 从现有受众中移除某个列表中的匹配项,例如 loyalty_card_holders_partnername.pepsi.remove..txt Remove All - 从该客户的所有受众中移除由定期更新的累积列表产生的匹配项(即客户的 Opt-Out 列表)。例如 partnername.pepsi.removeall.txt
  • 可用于维护从该广告主选择退出的用户的完整列表。
  • X 仅遵循此文件中提供的最新列表,并在所有现有和未来受众中对匹配生效。
在提供并处理该文件时的 X 用户。 Replace - 移除一个现有受众,并用新的受众列表替换。例如 loyalty_card_holders_partnername.pepsi.replace..txt 公司整体 Opt-Out - 公司将提供一个累积的 Opt-Out 文件,根据公司的 Opt-Out 政策移除已选择退出的用户。 X 仅遵循该公司 Opt-Out 文件中提供的最新列表,并在提供并处理该文件时对匹配的 X 用户在所有现有和未来受众中生效。公司 Opt-Out 文件的格式如下:例如 partnername.removeall.txt Delete - 从当前受众列表中删除一个现有受众,例如 loyalty_card_holders_partnername.pepsi.delete.txt

哈希说明

X 将通过 PGP 安全地共享一个 base64 编码的生产密钥,用于对常见用户标识符(如电子邮件地址)进行哈希。Company 将对该密钥进行 base64 解码,得到一个 32 字节的密钥,用于执行哈希。 示例 base64 编码密钥: BrQvOg+dACBUmKjRiNxZgJLh6zydjS0ZOv80FelTNzM= 示例 base64 解码密钥: /:� TшY 规范化:在进行哈希之前,Company 将对常见用户标识符进行基本规范化(设备 ID 除外,参见“设备 ID 规范化”部分)。

电子邮件规范化

即,去除首尾空格,并将电子邮件地址转换为小写。 示例:原始电子邮件地址:testemail_Organisational_baseball+884@It92I6Ev2B.Com 规范化后:testemail_organisational_baseball+884@it92i6ev2b.com hash 值:74d9584eded0ad1e5572a1c1849f3716751d371d6117a6155dad5363f4b4fbec 注意:编码后的 HMAC 和密钥的字符数可能会随输入和编码方式而变化,因此具体字符数并不固定。

设备 ID 规范化

我们对设备 ID 的哈希处理有相同要求:使用 SHA-256 哈希算法,以及我们提供给数据合作伙伴的通用盐值。我们会像处理电子邮件地址一样去除空格,但不会对 IDFA/Android ID 进行小写化规范,必须使用 IDFA/Android ID 的原始精确格式。 以下为哈希前 iOS 与 Android 设备 ID 的原始格式示例: iOS IDFA: DD99CFF7-6186-4602-9DF2-ED3FD0B2D431 Android ID: b5bf2122961b3595 哈希后的 iOS IDFA: 134fb8cd95c7fd42e2793f469a447198ca5f990968db2dbadad70e723ed9750b 哈希后的 Android ID: 130dddff1939f229476f50bc8adab8fcb7e3525b0e9604fe8effc15e68cee4a4

X 用户 ID 规范化

尽管这并非 PII,但由于作为 data 分组(例如包含 @handles 的 Customer List)对广告主而言是私有的,X 的 ID 仍需进行哈希处理。我们对 X ID 的哈希有相同要求:使用 SHA-256 哈希算法以及我们提供给数据合作伙伴的通用 salt。应从 X ID/@username 中去除空格,但 User ID 无需规范化。为实现规范化,@username 应转换为小写,且用户名中不应包含 @ 符号。 原始 ID 格式为:
  • User ID: 27674040
  • @username: testusername
Hashed User ID: bf6b57d4e861e83bea8bbed2b800b251a64c95468ee6e8cb07c3368c9ed45e85 Hashed @username: 12201ae78ad1afa907c7112d17f498154ffb0bf9ea523f5390e072a06d7d9812

ID 同步集成

合作伙伴在使用 p_id 发送 data 时,必须执行 ID 同步流程,以生成广告主或合作伙伴的用户 id 与 X 用户 id 的映射。这样,广告主即可在 X 上直接定向其自有用户分群。合作伙伴在发送成员更新时,还必须将参数 user_identifier_type 的值设置为 TALIST_PARTNER_USER_IDTAWEB_PARTNER_USER_ID
  • 仅限 Web:可按下述方式在广告主网站上放置像素来实现。
  • List:可使用 CRM 页面所述的任一方法来实现。

像素 URL

基础 URL
https://analytics.x.com/i/adsct

像素参数

参数说明
p_id由 X 分配的合作伙伴 id
p_user_id合作伙伴系统中的用户 id

ID 同步像素:

以合作伙伴示例 id 为 111、p_user_id 示例为 abc 为例,构建的像素如下:
    <pre class="brush: xml">
    <img height="1" width="1" src="https://analytics.x.com/i/adsct?p_id=111&p_user_id=abc" style="display:none" />
    </pre>
选择退出文件配置与发送 合作伙伴应向 X 提供一份用户列表,这些用户据合作伙伴所知已选择不接收定向广告。文件应按以下格式提交:
列号列名列类型说明
1Partner IDstring“partner id” 是 X 提供给合作伙伴,用于唯一标识每个合作伙伴的 ID。
2合作伙伴系统中的用户 idstringp_user_id 是合作伙伴用于标识用户的唯一 ID。包含这些选择退出用户的文件应通过 TON upload endpoint 上传,上传的 data 路径应发送至此处的 Global Opt Out endpoint:PUT accounts/:account_id/custom_audiences/global_opt_out
发送成员更新 如我们的 endpoint 文档所述,通过 POST custom_audience_memberships endpoint 传递用户时,应传递客户 ID 以启用基于 cookie 的匹配。使用 p_id 发送 data 的合作伙伴必须user_identifier_type 设置为 TALIST_PARTNER_USER_IDTAWEB_PARTNER_USER_ID 其他步骤与实时受众 API 集成指南中列出的内容相同。

自定义受众用户数据

本文档概述了 [Custom Audience]/x-ads-api/audiences 用户数据的格式。 数据规范化 设备 ID:
  • IDFA - 全小写并包含短横线;例如:4b61639e-47cc-4056-a16a-c8217e029462
  • AdID - 需使用设备上的原始格式,不要大写,且保留短横线;例如:2f5f5391-3e45-4d02-b645-4575a08f86e
  • Android id - 需使用设备上的原始格式,不要大写,且不含短横线或空格;例如:af3802a465767e36
电子邮件地址:
  • 全小写,去除首尾空格;例如:support@x.com
X 用户名:
  • 不含 @,全小写并去除首尾空格;例如:jack
X 用户 ID:
  • 标准整数;例如:143567
数据哈希 每一行数据必须使用 SHA256 进行哈希,且不使用盐。此外,最终输出的哈希必须为小写。例如:49e0be2aeccfb51a8dee4c945c8a70a9ac500cf6f5cb08112575f74db9b1470d,而不是49E0BE2AECCFB51A8DEE4C945C8A70A9AC500CF6F5CB08112575F74DB9B1470D
# 使用 python 对用户 @AdsAPI 进行 hash
import hashlib
hashlib.sha256("adsapi".encode()).hexdigest()

#输出
49e0be2aeccfb51a8dee4c945c8a70a9ac500cf6f5cb08112575f74db9b1470d
更多用于哈希的附加代码示例可在 github.com/xdevplatform/ads-platform-tools 查阅。

自定义受众:Web

info.png
信息 合作伙伴将代表广告主发送一个用于定向的 ID 列表(p_user_ids)。这通过 ID 同步流程实现,该流程在 p_user_ids 与 X 用户 ID 之间建立映射。随后使用此映射生成可用于定向的 X 用户 ID 列表。这些自定义受众将根据在 ads.x.com 的 Custom Audiences Web 广告系列设置中由标签指定的广告主特定 @handle 提供。 X 将提供可部署在合作伙伴标签和站点上的安全像素,以便将 ID(p_user_ids)匹配到 X 用户 ID。ID 同步流程完成后,合作伙伴将创建定向文件,并通过一个 HTTPS endpoint 提供给 X。X 会定期摄取这些定向文件,并在 X 的 UI 中提供。 X 安全像素 X 安全像素如下所示: https://analytics.x.com/i/adsct?p&#95;user&#95;id=xyz&amp;p&#95;id=123 p_user_id - xyz 表示由合作伙伴提供的合作伙伴用户 ID p_id - 123 表示该合作伙伴的唯一 ID(由 X 提供) 合作伙伴 HTTPS Endpoint 与定向用户文件 合作伙伴需要向 X 提供一个 HTTPS endpoint 和凭据(用户名/密码),用于定期摄取定向文件。示例 HTTPS endpoint 如下所示:
https://<partnerdomain>/twitter/partner_targeting_%Y-%M-%D.tsv.gz
%Y - 年份格式代码(YYYY) %M - 月份格式代码(MM) %D - 日期格式代码(DD) 传输的 data 将包含以下文件:
  1. Partner Targeting User File
  2. Targeting Conversion File
所有文件均为 TSV 格式,其中每一行的各个 fields 由制表符分隔。有效的字段值本身绝不会包含制表符。 允许的 X IP 范围: 以下是可授权访问 Partner endpoint 的 IP 范围。
  • 199.16.156.0/22
  • 199.59.148.0/22
Partner Targeting User File:
列号列名列类型描述
1partner idstring“partner id” 是 X 提供给合作方用于唯一标识每个合作方的 ID。
2advertiser idstring“advertiser id” 是该广告主的 @handle。
3p_user_idstring“p_user_id” 是合作方用于标识用户的唯一 ID。
3confidence scoreinteger“confidence score” 为可选项。建议取值范围为 0-100。若用例为再营销(retargeting),则分数为 “100” 表示被直接再营销的用户;0-99 的任何分数表示相似受众的置信度等级。
4segment labelstring“segment label” 为可选项。合作方可使用 “segment label” 指定产品类别等。建议使用该 “segment label”,因为它是在 ads.x.com 界面中自定义受众(Custom Audiences)的人类可读名称。
注意事项: 每次我们收到新的 Partner Targeting File 时,除非另有约定,我们期望这是合作方建议我们定向投放的完整用户列表,而非增量列表。我们将与每位合作方就该 Partner Targeting File 的投递频率达成一致。如果未按预期收到该文件,我们将使用上一版本,并设定预定义的过期时间。

受众 API 集成

概述

Audience API 作为 Ads API 的 v4 的一部分发布,并对旧版 Audiences endpoint 带来了多项改进。该新 endpoint 由全新的 Audience 处理后端提供支持,在稳定性、健壮性和可靠性方面均有所提升。本指南旨在强调 Audience API 与旧版 Audience 上传与管理流程之间的差异。  参考文档请参见 Audience API 参考页面。  注意:所有 Audience 用户数据在上传前必须进行 SHA-256 哈希处理。更多详情(包括可接受的用户标识符类型和数据规范化)请参见 user data 页面。 Audience 功能变更 自 v4 起对 Custom Audiences 引入以下变更;一旦 Ads API 的 v3 退役,任何已弃用的 endpoint 将不再可用:
  • 已弃用 TON Upload:
    • GET accounts/:account_id/custom_audience_changes
    • GET accounts/:account_id/custom_audience_changes/:custom_audience_change_id
    • POST accounts/:account_id/custom_audience_changes
    • PUT accounts/:account_id/custom_audiences/global_opt_out
  • 已弃用 Real Time Audiences:
    • POST custom_audience_memberships
  • Custom Audience:
    • 所有 Custom Audience endpoint 的请求与响应中将移除 list_type 参数。此前该参数用于标识 Audience 的用户标识符类型(例如 email、X User ID 等),但现在 Audiences 可以在同一 Audience 中接受多种用户标识符,因此该值不再适用。
  • 通用:
    • Audience 回溯时间窗口更新为匹配过去 90 天内活跃的用户(此前为 30 天)
    • 受众可用于定向所需的最低匹配用户数下调至 100 个(此前为 500 个)
先决条件
  • Ads API 访问权限
  • 如需访问 Audience endpoint,需加入 allowlist。请填写此表单;如果最初接受日期早于 2018-08-01,请接受新的 X Ads Products and Services Agreement
Audience 上传流程 下表列出了旧版与新版 Audience 创建流程的主要差异,更多详情见下文:
流程步骤Audience API(已弃用)TON Upload
创建空壳 Audience可通过 [POST custom_audience endpoint]/x-ads-api/audiences 创建可通过 [POST custom_audience endpoint]/x-ads-api/audiences 创建
添加新用户Audience endpoint 中使用 operation_type UpdatePOST custom_audience_changes endpoint 中使用 operation ADD
移除用户Audience endpoint 中使用 operation_type DeletePOST custom_audience_changes endpoint 中使用 operation REMOVE
用户选择退出Audience endpoint 中使用 operation_type Delete,并提供该用户所属的相应 custom_audience_id使用 Global opt-out endpoint
注意 通过 TON Upload 路径进行更新或选择退出的任何 audiences,必须先通过 TON Upload endpoint 上传相应列表,并使用 custom_audience_changes endpoint 将其关联到某个 Audience。 请求速率限制 Audience API endpoint 的请求速率限制为每个账户 1500/1min。对单个 payload 中可发送的用户数量不设上限。对 payload 的唯一约束如下:
  1. 操作总数:2500 次
  2. 最大 payload 大小:5,000,000 字节
Audience 用户管理 要创建新的 Audience,需要完成以下步骤

创建新的自定义受众

使用 [POST custom_audience]/x-ads-api/audiences endpoint 创建一个新的自定义受众“空壳”,并获取相应的自定义受众 id。如果是从头创建受众,此步骤必不可少。若要更新现有受众,请跳到下一节。

将用户添加到受众

使用 POST accounts/:account_id/custom_audiences/:custom_audience_id/users,提供自定义受众的 id,并使用如下示例负载发起请求: POST https://ads-api.x.com/11/accounts/18ce54d4x5t/custom&#95;audiences/1nmth/users
    # 所有值都必须经过 hash 处理,此示例中使用未 hash 的值仅用于说明目的
    [
      {
        "operation_type": "Update",
        "params": {
          "effective_at": "2018-05-15T00:00:00Z",
          "expires_at": "2019-01-01T07:00:00Z",
          "users": [
            {
              "email": [
                "abc@x.com"
              ],
              "handle": [
                "x",
                "adsapi"
              ]
            },
            {
              "email": [
                "edf@x.com"
              ],
              "twitter_id": [
                "121291606",
                "17874544"
              ]
            }
          ]
        }
      }
    ]
要将用户添加到 Audience,请使用 operation_typeUpdate。新的 Audience 接口支持为单个用户传入多个用户键。JSON 对象数组中的每个对象都对应一个用户。根据上面的示例负载,该请求会向 Audience 添加两个用户:一个包含 emailhandle,另一个包含 emailtwitter_id

从受众中移除用户

与前文添加用户的流程类似,可按如下方式将用户从受众中移除: POST https://ads-api.x.com/11/accounts/18ce54d4x5t/custom&#95;audiences/1nmth/users
    # 所有值都必须进行哈希处理,此示例中使用未哈希值仅用于演示目的
    [
      {
        "operation_type": "Delete",
        "params": {
          "effective_at": "2018-05-15T00:00:00Z",
          "expires_at": "2019-01-01T07:00:00Z",
          "users": [
            {
              "email": [
                "abc@x.com"
              ],
              "twitter_id": [
                "783214",
                "1225933934"
              ]
            },
            {
              "email": [
                "edf@x.com"
              ],
              "twitter_id": [
                "121291606",
                "17874544"
              ]
            }
          ]
        }
      }
    ]
必须将 operation_type 设置为 Delete,并且系统会使用将用户添加到受众时提供的任意键来匹配用户。例如,如果某个用户是通过 emailtwitter_id 添加到受众的,那么移除该用户时可使用这两个键中的任意一个,即使用 emailtwitter_id,也可以同时使用二者。 此外,可以在同一个请求中同时向 Audience 添加和移除用户。该 endpoint 支持在单个请求中包含多个 operation_type

选择退出的用户

随着全局选择退出 endpoint 的弃用,合作伙伴需要对选择退出任意 Audiences 的用户执行 DELETE 操作。可通过以下几种方式实现:
  1. 跟踪用户分别属于哪些 Audiences,并将这些用户从各自的 Audience 中逐一移除。
  2. 将该用户从与某个 Ads 账户关联的所有 Audiences 中全部移除。
通用最佳实践
  • 我们强烈建议以接近实时的批量方式调用此 endpoint,以避免出现处理时间更长的突发队列,并减少对系统的不必要负载。这也能让用户更快用于广告投放定向。
  • 成功的 API 调用会返回 success_counttotal_count,对应于请求中接收的 user 对象数量。
  • 此 endpoint 具备原子性,即要么整个请求成功,要么在出现任何错误时整个请求失败。若返回错误响应,建议 API 使用方先修复错误,再使用完整载荷重试该请求。
  • 发生失败时,建议合作伙伴采用带重试的指数退避策略。例如:第一次失败后立即重试;第二次失败后于 1 分钟后重试;第三次连续失败后于 5 分钟后重试,依此类推。

API 参考

关键词洞察

GET insights/keywords/search

给定一组关键词,返回与之关联的 Tweet 量以及最多 30 个相关关键词。Tweet 量仅对应输入的关键词,不包含相关关键词。 允许的最大时间范围(end_time - start_time)为 7 天。 请注意,结果限定在单一地理位置(国家)范围内。 Resource URL https://ads-api.x.com/12/insights/keywords/search Parameters
NameDescription
granularity
required
指定由 start_timeend_time 所表示的时间范围内返回数据的粒度。例如,当设置为 HOUR 时,将返回 start_timeend_time 之间每个小时的一个数据点。

Type: enum

Possible values: DAY, HOUR
keywords
required
以逗号分隔的关键词字符串,用于缩小搜索范围。所有关键词之间为 OR 逻辑关系。

Note: 最多可使用 10 个关键词(keywordsnegative_keywords 合计)。

Type: string

Example: developers
start_time
required
将检索结果限定为在 start_timeend_time 时间窗口内收集的数据。采用 ISO 8601 格式表示。

Type: string

Example: 2017-07-10T00:00:00Z
end_time
optional
将检索结果限定为在 start_timeend_time 时间窗口内收集的数据。采用 ISO 8601 格式表示。

Note: 默认为当前时间。

Type: string

Example: 2017-07-11T00:00:00Z
location
optional
可从 GET targeting_criteria/locations endpoint 获取的定向值,用于根据账户用户所在位置缩小结果范围。请注意,目前仅支持国家级位置。

Type: string

Example: 0ce8b9a7b2742f7e
negative_keywords
optional
以逗号分隔的需排除的关键词字符串。所有排除关键词之间为 OR 逻辑关系。

Note: 最多可使用 10 个关键词(keywordsnegative_keywords 合计)。

Type: string

Example: rain
Example Request
GET https://ads-api.x.com/12/insights/keywords/search?end_time=2018-02-02&granularity=DAY&keywords=developers&start_time=2018-02-01
示例响应*
    {
      "request": {
        "params": {
          "start_time": "2018-02-01T00:00:00Z",
          "end_time": "2018-02-02T00:00:00Z",
          "granularity": "DAY",
          "keywords": [
            "developers"
          ]
        }
      },
      "data": {
        "related_keywords": [
          "dev",
          "developer",
          "coders",
          "mysql",
          "devs",
          "#technology",
          "#developers",
          "security",
          "programmers",
          "#tech",
          "javascript",
          "#iot",
          "#bigdata",
          "cloud",
          "devops",
          "php",
          "developer",
          "programmer",
          "engineer",
          "big data",
          "agile",
          "app",
          "programming",
          "ios",
          "maker",
          "startups",
          "developer's",
          "java",
          "#devops",
          "startup"
        ],
        "tweet_volume": [
          15707
        ]
      }
    }

定向受众权限

GET accounts/:account_id/tailored_audiences/:tailored_audience_id/permissions

检索与指定定制受众关联的部分或全部权限详情。 Resource URL https://ads-api.x.com/5/accounts/:account_id/tailored_audiences/:tailored_audience_id/permissions Parameters
NameDescription
account_id
required
被使用的账户标识符。出现在资源路径中,通常是除 GET accounts 外所有 Advertiser API 请求的必填参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
tailored_audience_id
required
本次请求中所操作的定制受众的引用。

Type: string

Example: 1nmth
count
optional
指定每个请求尝试检索的记录数。

Type: int

Default: 200
Min, Max: 1, 1000
cursor
optional
指定用于获取下一页结果的游标。参见 Pagination 了解更多信息。

Type: string

Example: 8x7v00oow
granted_account_ids
optional
通过指定以逗号分隔的标识符列表,将响应限定为所需的账户。最多可提供 200 个 ID。

Type: string

Example: 18ce54aymz3
sort_by
optional
按受支持的属性进行升序或降序排序。参见 Sorting 了解更多信息。

Type: string

Example: created_at-asc
tailored_audience_permission_ids
optional
通过指定以逗号分隔的标识符列表,将响应限定为所需的定制受众权限。最多可提供 200 个 ID。

Type: string

Example: ri
with_total_count
optional
包含 total_count 响应属性。

Note: 此参数与 cursor 互斥。

Note: 包含 total_count 的请求将具有更低的请求速率限制,当前为每 15 分钟 200 次。

Type: boolean

Default: false
Possible values: true, false
Example Request GET https://ads-api.x.com/5/accounts/18ce54d4x5t/tailored_audiences/1nmth/permissions Example Response
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "tailored_audience_id": "1nmth"
        }
      },
      "next_cursor": null,
      "data": [
        {
          "tailored_audience_id": "1nmth",
          "permission_level": "READ_ONLY",
          "id": "ri",
          "created_at": "2017-06-08T23:17:59Z",
          "granted_account_id": "18ce54aymz3",
          "updated_at": "2017-06-08T23:17:59Z",
          "deleted": false
        }
      ]
    }

POST accounts/:account_id/tailored_audiences/:tailored_audience_id/permissions

创建新的权限对象,使指定受众可与给定账户共享。 注意:为定向受众创建或修改权限时,必须由尝试进行修改的账户拥有该受众。您可以在该受众的响应中查看 is_owner 属性以确认所有权。 注意:受众只能在同一业务主体下的广告账户之间共享;如果拥有该受众的广告账户启用了 SHARE_AUDIENCE_OUTSIDE_BUSINESS 账户功能,则可在业务主体之外进行共享。 Resource URL https://ads-api.x.com/5/accounts/:account_id/tailored_audiences/:tailored_audience_id/permissions Parameters
NameDescription
account_id
required
目标账户的标识符。出现在资源路径中,通常是除 GET accounts 外所有 Advertiser API 请求的必填参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
granted_account_id
required
您希望授予该定向受众访问权限的账户。

Type: string

Example: 18ce54aymz3
permission_level
required
要授予 granted_account_id 的该定向受众的访问级别。

Type: enum

Possible values: READ_ONLY, READ_WRITE
tailored_audience_id
required
您在本次请求中操作的定向受众的引用。

Type: string

Example: 2906h
Example Request POST https://ads-api.x.com/5/accounts/18ce54d4x5t/tailored_audiences/2906h/permissions?granted_account_id=18ce54aymz3&permission_level=READ_ONLY Example Response
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "granted_account_id": "18ce54aymz3",
          "permission_level": "READ_ONLY",
          "tailored_audience_id": "2906h"
        }
      },
      "data": {
        "tailored_audience_id": "2906h",
        "permission_level": "READ_ONLY",
        "id": "14m",
        "created_at": "2017-09-12T23:49:34Z",
        "granted_account_id": "18ce54aymz3",
        "updated_at": "2017-09-12T23:49:34Z",
        "deleted": false
      }
    }

DELETE accounts/:account_id/tailored_audiences/:tailored_audience_id/permissions/:tailored_audience_permission_id

撤销指定的 Tailored Audience 共享权限。 注意:创建或修改 Tailored Audience 的权限要求该受众归属于尝试修改权限的账户。您可以通过查看特定受众返回结果中的 is_owner 响应属性来检查 Tailored Audience 的所有权。 撤销后,我们保证被授予的账户(granted_account_id)将无法在后续广告系列中定向该受众。现有广告系列将继续使用共享受众运行;广告系列不会停止,且该受众不会从广告系列中移除。撤销受众共享权限后,将无法复制该广告系列。 Resource URL https://ads-api.x.com/5/accounts/:account_id/tailored_audiences/:tailored_audience_id/permissions/:tailored_audience_permission_id Parameters
NameDescription
account_id
required
被使用的账户标识符。出现在资源路径中,并且通常是除 GET accounts 之外所有 Advertiser API 请求的必需参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
tailored_audience_id
required
本次请求中所操作的 Tailored Audience 的引用。

Type: string

Example: 1nmth
tailored_audience_permission_id
required
本次请求中所操作的 Tailored Audience 权限的引用。

Type: string

Example: ri
Example Request DELETE https://ads-api.x.com/5/accounts/18ce54d4x5t/tailored_audiences/1nmth/permissions/ri Example Response
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "tailored_audience_permission_id": "ri",
          "tailored_audience_id": "1nmth"
        }
      },
      "data": {
        "tailored_audience_id": "1nmth",
        "permission_level": "READ_ONLY",
        "id": "ri",
        "created_at": "2017-06-08T23:17:59Z",
        "granted_account_id": "18ce54aymz3",
        "updated_at": "2017-08-30T18:29:35Z",
        "deleted": true
      }
    }

目标受众

GET accounts/:account_id/custom_audiences/:custom_audience_id/targeted

获取针对给定 custom_audience_id 的活动或全部投放单元与广告系列列表
NameDescription
account_id
required
目标账户的标识符。出现在资源路径中,通常是除 GET accounts 外所有 Advertiser API 请求所需的参数。指定的账户必须与已验证用户关联。

Type: string

Example: 18ce54d4x5t
custom_audience_id
required
本次请求中所操作的自定义受众的引用。

Type: string

Example: 2906h
with_active
optional
当为 false 时,包含 servable=false 状态的投放单元。

Type: boolean

Default: true
Possible values: true, false
cursor
optional
指定一个游标以获取下一页结果。更多信息参见 Pagination

Type: string

Example: 8x7v00oow
Example Request GET https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/2906h/targeted Example Response
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "custom_audience_id": "2906h",
        }
      },
      "next_cursor": null,
      "data": [
        {
          "campaign_id": "59hod",
          "campaign_name": "测试广告系列",
          "line_items": [
            {
              "id": "5gzog",
              "name": "测试广告组",
              "servable": true
            }
          ]
        },
        {
          "campaign_id": "arja7",
          "campaign_name": "未命名广告系列"
          "line_items": [
            {
              "id": "bjw1q",
              "name": null,
              "servable": true
            }
          ]
        }
      ]
    }

自定义受众用户

POST accounts/:account_id/custom_audiences/:custom_audience_id/users

此 endpoint 允许合作伙伴向指定的 custom_audience_id 添加、更新或移除用户。该 endpoint 也支持为每位用户同时提供多种用户标识符类型。 请求中 users 字段所提供的所有 data, partner_user_id 外,必须使用 SHA256 进行哈希并完成规范化 批量请求
  • 针对此 endpoint,当前最大批处理大小为 2500。批处理大小由每个请求中的操作数(Update/Delete)决定。例如,在一个数组中包含超过 2500 个操作对象({"operation_type": "Update/Delete", [..] })将导致错误。
  • 此 endpoint 可接受的最大 POST 请求正文大小为 5,000,000 字节。
  • 此 endpoint 的请求速率限制为每 1 分钟窗口 1500 次。
  • 所有参数通过请求正文发送,且必须将 Content-Type 设为 application/json
  • 批量请求以整体为单位成败一致;无论成功或失败,所有 API 响应都会保留初始请求的项目顺序。
批量响应 X Ads API 返回的响应包含两个字段:success_counttotal_count。这两个值必须始终相等,表示后端已处理的请求记录数量。若请求正文中发送的记录数与 success_counttotal_count 相等,应视为错误情况,需要重试。 批量错误
  • 请求级错误(例如超过最大批处理大小)会在响应的 errors 对象下显示。
  • 项目级错误(例如缺少必填参数)会在响应的 operation_errors 对象下显示。
  • operation_errors 中错误的索引对应输入项的索引,并包含相应的错误消息。

资源 URL

https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id/users

参数

名称说明
operation_type
必填
针对每个 users 组执行的操作类型。

Type: enum

Possible values: Update, Delete
params
必填
一个 JSON 对象,包含 users 数组以及 effective_atexpires_at 时间戳。

Type: JSON
users
必填
由 JSON 对象组成的数组,包含单个用户的全部参数。

Type: JSON
effective_at
可选
自定义受众关联生效的 UTC 时间。遵循 ISO 8601 格式。默认使用当前日期和时间。

Type: string

Example: 2017-07-05T07:00:00Z
expires_at
可选
自定义受众关联失效的 UTC 时间。必须晚于 effective_at。遵循 ISO 8601 格式。默认为自请求时间戳起 13 个月后。

Type: string

Example: 2017-07-05T07:00:00Z
考虑到对 users 对象采用多键方式,以下分别说明该对象中各元素:
名称说明
email
可选
用户的电子邮件地址。

Type: Array[String]
device_id
可选
IDFA/AdID/Android ID

Type: Array[String]
handle
可选
用户所属的 @handle。

Type: Array[String]
twitter_id
可选
用户所属的 X ID。

Type: Array[String]
phone_number
可选
用户的电话号码。

Type: Array[String]
partner_user_id
可选
该用户在合作伙伴系统中的 ID。

Type: Array[String]

示例请求

POST https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/1nmth/users
    [
      {
        "operation_type": "更新",
        "params": {
          "effective_at": "2018-05-15T00:00:00Z",
          "expires_at": "2019-01-01T07:00:00Z",
          "users": [
            {
              "email": [
                "4798b8bbdcf6f2a52e527f46a3d7a7c9aefb541afda03af79c74809ecc6376f3"
              ],
              "handle": [
                "7352f353c460e74c7ae226952d04f8aa307b12329c5512ec8cb6f1a0f8f9b2cb",
                "49e0be2aeccfb51a8dee4c945c8a70a9ac500cf6f5cb08112575f74db9b1470d"
              ]
            },
            {
              "email": [
                "5bf13d5ad4200407c5bc8b9bb578e425d05ef936fd488e3799a9d0806669223c"
              ],
              "twitter_id": [
                "34d56c7159a7eea941f359653029410f813f65a1d2d13ecc5ccbdd5a8cb755cf",
                "00e7b76c9739dec57f4c4a20ec021a20ffcf26bd00f519b17ea00f0ed6048f85"
              ]
            }
          ]
        }
      },
      {
        "operation_type": "删除",
        "params": {
          "effective_at": "2018-05-15T00:00:00Z",
          "expires_at": "2019-01-01T07:00:00Z",
          "users": [
            {
              "device_id": [
                "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"
              ],
              "email": [
                "4798b8bbdcf6f2a52e527f46a3d7a7c9aefb541afda03af79c74809ecc6376f3"
              ],
              "handle": [
                "461222f5dd690a20651c3d19848015cb0369db3f8e937571ffb775de70750847"
              ],
              "twitter_id": [
                "c623c7e163984493b46c547088542e95d0aaa529bc52bbecce3ff91eb6b7843b"
              ]
            },
            {
              "email": [
                "5bf13d5ad4200407c5bc8b9bb578e425d05ef936fd488e3799a9d0806669223c"
              ],
              "twitter_id": [
                "858cdc7f313f84a3f3c48e9a6323307c1ef1bb7439b8e3623e140454b0fd8fa5",
                "bb074e154657b91d99bd1bb3757409149670e8ae7a0fe9136fae29a26a7881c8"
              ]
            }
          ]
        }
      }
    ]

示例响应

    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "custom_audience_id": "1nmth"
        }
      },
      "data": {
        "success_count": 4,
        "total_count": 4
      }
    }

自定义受众权限

GET accounts/:account_id/custom_audiences/:custom_audience_id/permissions

检索与指定自定义受众相关的部分或全部权限的详细信息。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id/permissions Parameters
NameDescription
account_id
required
被使用账号的标识符。出现在资源路径中,通常是所有 Advertiser API 请求(不包括 GET accounts)的必需参数。指定的账号必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
custom_audience_id
required
你在请求中操作的自定义受众的引用。

Type: string

Example: 1nmth
count
optional
指定每个请求尝试检索的记录数。

Type: int

Default: 200
Min, Max: 1, 1000
cursor
optional
指定用于获取下一页结果的游标。更多信息参见 Pagination

Type: string

Example: 8x7v00oow
granted_account_ids
optional
通过指定以逗号分隔的标识符列表,将响应限定为所需账号。最多可提供 200 个 ID。

Type: string

Example: 18ce54aymz3
sort_by
optional
按受支持的属性进行升序或降序排序。更多信息参见 Sorting

Type: string

Example: created_at-asc
custom_audience_permission_ids
optional
通过指定以逗号分隔的标识符列表,将响应限定为所需的自定义受众权限。最多可提供 200 个 ID。

Type: string

Example: ri
with_total_count
optional
包含 total_count 响应属性。

Note: 此参数与 cursor 互斥。

Note: 包含 total_count 的请求将具有更低的请求速率限制,当前为每 15 分钟 200 次。

Type: boolean

Default: false
Possible values: true, false
Example Request GET https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/1nmth/permissions Example Response
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "custom_audience_id": "1nmth"
        }
      },
      "next_cursor": null,
      "data": [
        {
          "custom_audience_id": "1nmth",
          "permission_level": "READ_ONLY",
          "id": "ri",
          "created_at": "2017-06-08T23:17:59Z",
          "granted_account_id": "18ce54aymz3",
          "updated_at": "2017-06-08T23:17:59Z",
          "deleted": false
        }
      ]
    }

POST accounts/:account_id/custom_audiences/:custom_audience_id/permissions

创建一个新的权限对象,允许将指定受众共享给某个账户。 注意:创建或修改自定义受众的权限,必须由拥有该受众的账户执行。你可以在相应受众的响应中查看 is_owner 属性以确认所有权。 注意:受众只能在同一业务主体下的广告账户之间共享;或当拥有该受众的广告账户启用了 SHARE_AUDIENCE_OUTSIDE_BUSINESS 账户功能时,方可跨业务共享。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id/permissions Parameters
名称说明
account_id
必填
被使用的账户标识符。出现在资源路径中,并且通常是所有 Advertiser API 请求(GET accounts 除外)的必填参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
granted_account_id
必填
你希望授予自定义受众权限的账户。

Type: string

Example: 18ce54aymz3
permission_level
必填
granted_account_id 对该自定义受众应具有的访问级别。

Type: enum

Possible values: READ_ONLY, READ_WRITE
custom_audience_id
必填
本次请求中所操作的自定义受众的引用。

Type: string

Example: 2906h
Example Request
POST https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/2906h/permissions?granted_account_id=18ce54aymz3&permission_level=READ_ONLY
示例响应
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "granted_account_id": "18ce54aymz3",
          "permission_level": "READ_ONLY",
          "custom_audience_id": "2906h"
        }
      },
      "data": {
        "custom_audience_id": "2906h",
        "permission_level": "READ_ONLY",
        "id": "14m",
        "created_at": "2017-09-12T23:49:34Z",
        "granted_account_id": "18ce54aymz3",
        "updated_at": "2017-09-12T23:49:34Z",
        "deleted": false
      }
    }

DELETE accounts/:account_id/custom_audiences/:custom_audience_id/permissions/:custom_audience_permission_id

撤销指定的自定义受众(Custom Audience)共享权限。 注意:创建或修改自定义受众的权限,要求该受众由尝试修改权限的账户拥有。您可以通过查看特定受众响应中的 is_owner 属性来检查该自定义受众的所有权。 撤销后,我们保证被授予的账户(granted_account_id)将无法在未来的广告系列中定向该受众。现有广告系列将继续使用共享受众运行;广告系列不会停止,且该受众不会从广告系列中移除。撤销受众共享权限后,无法复制该广告系列。 资源 URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id/permissions/:custom_audience_permission_id 参数
名称描述
account_id
必填
目标账户的标识符。出现在资源路径中,通常是除 GET accounts 外所有 Advertiser API 请求所需的参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
custom_audience_id
必填
请求中所操作的自定义受众引用。

Type: string

Example: 1nmth
custom_audience_permission_id
必填
请求中所操作的自定义受众权限引用。

Type: string

Example: ri
示例请求 DELETE https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/1nmth/permissions/ri 示例响应
    {
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "custom_audience_permission_id": "ri",
          "custom_audience_id": "1nmth"
        }
      },
      "data": {
        "custom_audience_id": "1nmth",
        "permission_level": "READ_ONLY",
        "id": "ri",
        "created_at": "2017-06-08T23:17:59Z",
        "granted_account_id": "18ce54aymz3",
        "updated_at": "2017-08-30T18:29:35Z",
        "deleted": true
      }
    }

自定义受众

GET accounts/:account_id/custom_audiences

获取与当前账户关联的部分或全部自定义受众的详细信息。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences Parameters
NameDescription
account_id
required
被利用账户的标识符。该值出现在资源路径中,且通常是除 GET accounts 之外所有 Advertiser API 请求的必填参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
count
optional
指定每个请求尝试检索的记录数。

Type: int

Default: 200
Min, Max: 1, 1000
cursor
optional
指定用于获取下一页结果的游标。更多信息参见 Pagination

Type: string

Example: 8x7v00oow
permission_scope
optional
允许将响应过滤为你拥有的列表或与你共享的列表。默认情况下,未指定此参数时,你仅能看到自己拥有的受众。

Type: enum

Default: OWNER
Possible values: OWNER, SHARED
q
optional
可选的 query(查询),用于按 name 限定资源范围。

Note: 执行不区分大小写的前缀匹配。

Type: string

Min, Max length: 1, 255
sort_by
optional
按支持的属性进行升序或降序排序。更多信息参见 Sorting

Type: string

Example: created_at-asc
custom_audience_ids
optional
通过指定以逗号分隔的标识符列表,将响应限定为所需的自定义受众。最多可提供 200 个 ID。

Type: string

Example: 1nmth
with_deleted
optional
在请求中包含已删除的结果。

Type: boolean

Default: false
Possible values: true, false
with_total_count
optional
在响应中包含 total_count 属性。

Note: 此参数与 cursor 互斥。

Note: 包含 total_count 的请求将适用更低的请求速率限制,目前为每 15 分钟 200 次。

Type: boolean

Default: false
Possible values: true, false
Example Request GET https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences?custom_audience_ids=1nmth Example Response
    {
      "request": {
        "params": {
          "custom_audience_ids": [
            "1nmth"
          ],
          "account_id": "18ce54d4x5t"
        }
      },
      "next_cursor": null,
      "data": [
        {
          "targetable": true,
          "name": "twurl-using-subshell-for-file",
          "targetable_types": [
            "CRM",
            "EXCLUDED_CRM",
          ],
          "audience_type": "CRM",
          "description": null,
          "permission_level": "READ_WRITE",
          "owner_account_id": "18ce54d4x5t",
          "id": "1nmth",
          "reasons_not_targetable": [],
          "created_at": "2017-01-08T08:19:58Z",
          "updated_at": "2017-01-08T16:21:13Z",
          "partner_source": "OTHER",
          "deleted": false,
          "audience_size": 1470
        }
      ]
    }

GET accounts/:account_id/custom_audiences/:custom_audience_id

检索与当前账户关联的指定自定义受众。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id Parameters
NameDescription
account_id
required
目标账户的标识符。出现在资源路径中,通常是除 GET accounts 外所有 Advertiser API 请求的必填参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
custom_audience_id
required
本次请求中要操作的自定义受众的标识。

Type: string

Example: 2906h
with_deleted
optional
是否在结果中包含已删除项。

Type: boolean

Default: false
Possible values: true, false
Example Request GET https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/2906h Example Response
    {
      "request": {
        "params": {
          "custom_audience_id": "2906h",
          "account_id": "18ce54d4x5t"
        }
      },
      "data": {
        "targetable": false,
        "name": "developers",
        "targetable_types": [
          "CRM",
          "EXCLUDED_CRM",
        ],
        "audience_type": "CRM",
        "description": null,
        "permission_level": "READ_WRITE",
        "owner_account_id": "18ce54d4x5t",
        "id": "2906h",
        "reasons_not_targetable": [],
        "created_at": "2017-08-22T23:34:26Z",
        "updated_at": "2017-08-22T23:34:26Z",
        "partner_source": "OTHER"
        "deleted": false,
        "audience_size": 140321
      }
    }

POST accounts/:account_id/custom_audiences

为当前账户创建一个新的占位符自定义受众(Custom Audience)。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences Parameters
NameDescription
account_id
required
被调用账户的标识符。该参数出现在资源路径中,且通常是除 GET accounts 以外所有 Advertiser API 请求的必填项。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
name
required
此受众的显示名称。必须使用唯一的名称值,否则会返回错误。

Type: string

Example: ads api users
description
optional
此受众的描述。

Type: string

Example: Collection of all users of the Ads API
Example Request POST https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences?name=developers Example Response
    {
      "data": {
        "targetable": false,
        "name": "developers",
        "targetable_types": [
          "CRM",
          "EXCLUDED_CRM",
        ],
        "audience_type": "CRM",
        "description": null,
        "permission_level": "READ_WRITE",
        "owner_account_id": "18ce54d4x5t",
        "id": "2906h",
        "reasons_not_targetable": [
          "PROCESSING",
          "TOO_SMALL",
        ],
        "created_at": "2017-08-22T23:34:26Z",
        "updated_at": "2017-08-22T23:34:26Z",
        "partner_source": "OTHER",
        "deleted": false,
        "audience_size": null
      },
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "name": "developers"
        }
      }
    }

PUT accounts/:account_id/custom_audiences/:custom_audience_id

更新与当前账户关联的特定自定义受众(Custom Audience)。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id Parameters
NameDescription
account_id
required
被使用账户的标识符。该值出现在资源路径中,且通常是所有广告主 API 请求的必填参数(GET accounts 除外)。指定的账户必须与已认证的用户关联。

Type: string

Example: 18ce54d4x5t
custom_audience_id
required
本次请求中所操作的自定义受众引用。

Type: string

Example: 2906h
name
optional
此受众的显示名称。必须使用唯一的名称,否则将返回错误。

Type: string

Example: ads api users
description
optional
此受众的描述。

Type: string

Example: Collection of all users of the Ads API
Example Request PUT https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/2906h?name=developers_changed Example Response
    {
      "data": {
        "targetable": false,
        "name": "developers_changed",
        "targetable_types": [
          "CRM",
          "EXCLUDED_CRM"
        ],
        "audience_type": "CRM",
        "description": null,
        "permission_level": "READ_WRITE",
        "is_owner": true,
        "id": "2906h",
        "reasons_not_targetable": [
          "PROCESSING",
          "TOO_SMALL"
        ],
        "created_at": "2017-08-22T23:34:26Z",
        "updated_at": "2017-08-22T23:34:26Z",
        "partner_source": "OTHER",
        "deleted": false,
        "audience_size": null
      },
      "request": {
        "params": {
          "account_id": "18ce54d4x5t",
          "name": "developers_changed"
        }
      }
    }

POST batch/accounts/:account_id/custom_audiences

允许批量创建 Custom Audiences。有关受众的说明,请参阅Custom Audiences 概览页面。 注意:此批量 endpoint 目前处于封闭测试阶段,仅向部分广告主开放。在此测试期间,仅支持基于移动端自定义受众的 Flexible Audiences。 批量请求
  • 当前最大批量大小为 10。
  • 所有参数通过请求正文发送,且必须将 Content-Type 设置为 application/json
  • 批量请求作为一个整体同时失败或成功;无论成功还是失败,所有 API 响应都会保留与初始请求一致的项目顺序。
批量响应 批量 API 响应返回一个按顺序排列的项目集合。除此之外,其结构与对应的单项目 endpoint 相同。 批量错误
  • 请求级错误(例如超过最大批量大小)会在响应中的 errors 对象下显示。
  • 项目级错误(例如缺少必填参数)会在响应中的 operation_errors 对象下显示。
Flexible Audiences
  • Flexible Audiences 创建后不可变更。
  • 以树形结构传入 Custom Audiences,并通过布尔逻辑组合来创建 Flexible Audiences。
  • 创建一个 Flexible Audience 最多可使用 10 个 Custom Audiences 的叶子节点。
资源 URL https://ads-api.x.com/12/batch/accounts/:account_id/custom_audiences 参数
名称描述
account_id
必填
被使用账户的标识符。出现在资源路径中,通常是除 GET accounts 之外所有 Advertiser API 请求的必需参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
audience_type
必填
要创建的受众类型。

Type: enum

Possible values: FLEXIBLE, MOBILE_AUDIENCE
child_segments
必填
一个数组,包含用于定义你希望触达的 Custom Audience 成员子集的对象。每个对象应包含 custom_audience_idfrequencyfrequency_comparatorlookback_windownegate,并在某些情况下包含额外的 child_segments

Type: array
name
必填
受众的显示名称。必须使用唯一名称,否则将导致错误。

Type: string

Example: my_flexible_audience_name
operation_type
必填
针对每个条目执行的操作类型。

Type: enum

Possible values: Create, Update, Delete
boolean_operator
有时必填
在其父(包含)对象中子分段之间的逻辑关系。如果父对象的 child_segments 非空,则为必填。

Type: enum

Possible values: AND, OR
lookback_window
有时必填
一个整数值,指定用户在多少天范围内执行了特定操作并由此符合给定自定义受众条件。

Type: int

Possible values: 1, 7, 14, 30
segments
有时必填
一个对象,包含 boolean_operatorchild_segments,用于定义你希望触达的 Custom Audience 成员子集。

Type: object
custom_audience_id
有时必填
作为子分段使用的自定义受众的 id。

Type: string

Example: tyfo
frequency
可选
一个整数值,指定在回溯窗口内用户执行特定操作并符合给定自定义受众条件的发生次数。

Type: int

Default value: 1
frequency_comparator
可选
与请求中提供的 frequency 进行比较的比较符。

注意:下列取值中,GTE 表示大于等于,LT 表示小于,依此类推。

Type: string

Possible values: NUM_GTE, NUM_GT, NUM_EQ, NUM_LTE, NUM_LT Default value: NUM_GTE
negate
可选
对该分段取反,从而在组合中将其排除。

Type: boolean

Default value: true
Possible values: true, false
示例请求 POST https://ads-api.x.com/12/batch/accounts/18ce54d4x5t/custom_audiences
    [
      {
        "operation_type":"Create",
        "params":{
          "name":"my_flexible_audience_name",
          "audience_type":"FLEXIBLE",
          "segments":{
            "boolean_operator":"AND",
            "child_segments":[
              {
                "custom_audience_id":"TYIF",
                "frequency":1,
                "frequency_comparator":"NUM_GT",
                "lookback_window":30,
                "negate":true,
                "child_segments":[

                ]
              },
              {
                "boolean_operator":"OR",
                "child_segments":[
                  {
                    "custom_audience_id":"TXR1",
                    "lookback_window":30,
                    "child_segments":[

                    ]
                  },
                  {
                    "custom_audience_id":"TYFO",
                    "frequency":1,
                    "frequency_comparator":"NUM_GT",
                    "lookback_window":30,
                    "negate":true,
                    "child_segments":[

                    ]
                  }
                ]
              }
            ]
          }
        }
      }
    ]
示例响应
    {
      "data": {
        "targetable": false,
        "name": "我的灵活受众名称",
        "targetable_types": [
          "FLEXIBLE",
          "EXCLUDED_FLEXIBLE"
        ],
        "audience_type": "FLEXIBLE",
        "id": "13ld7",
        "reasons_not_targetable": [
          "PROCESSING",
          "TOO_SMALL"
        ],
        "metadata": [
          {
            "custom_audience_id": "13ld7",
            "account_id": "qsx3w2",
            "name": "我的灵活受众名称",
            "audience_source": "FLEXIBLE_AUDIENCE",
            "upload_status": "UPLOADED",
            "segments": {
              "boolean_operator": "AND",
              "frequency": 1,
              "frequency_comparator": "NUM_GTE",
              "negate": false,
              "child_segments": [
                {
                  "custom_audience_id": "tyif",
                  "lookback_window": 30,
                  "frequency": 1,
                  "frequency_comparator": "NUM_GT",
                  "negate": true,
                  "child_segments": [

                  ]
                },
                {
                  "boolean_operator": "OR",
                  "frequency": 1,
                  "frequency_comparator": "NUM_GTE",
                  "negate": false,
                  "child_segments": [
                    {
                      "custom_audience_id": "txr1",
                      "lookback_window": 30,
                      "frequency": 1,
                      "frequency_comparator": "NUM_GTE",
                      "negate": false,
                      "child_segments": [

                      ]
                    },
                    {
                      "custom_audience_id": "tyfo",
                      "lookback_window": 30,
                      "frequency": 1,
                      "frequency_comparator": "NUM_GT",
                      "negate": true,
                      "child_segments": [

                      ]
                    }
                  ]
                }
              ]
            }
          }
        ],
        "created_at": "2015-11-10T21:26:43Z",
        "updated_at": "2015-11-11T01:11:47Z",
        "partner_source": "OTHER",
        "deleted": false,
        "audience_size": null
      },
      "request": [
        {
          "params": {
            "name": "我的灵活受众名称",
            "audience_type": "FLEXIBLE",
            "segments": {
              "boolean_operator": "AND",
              "child_segments": [
                {
                  "custom_audience_id": "TYIF",
                  "lookback_window": 30,
                  "frequency": 1,
                  "frequency_comparator": "NUM_GT",
                  "negate": true,
                  "child_segments": [

                  ]
                },
                {
                  "boolean_operator": "OR",
                  "child_segments": [
                    {
                      "custom_audience_id": "TXR1",
                      "lookback_window": 30,
                      "child_segments": [

                      ]
                    },
                    {
                      "custom_audience_id": "TYFO",
                      "lookback_window": 30,
                      "frequency": 1,
                      "frequency_comparator": "NUM_GT",
                      "negate": true,
                      "child_segments": [

                      ]
                    }
                  ]
                }
              ]
            },
            "account_id": "qsx3w2"
          },
          "operation_type": "Create"
        }
      ]
    }

DELETE accounts/:account_id/custom_audiences/:custom_audience_id

删除当前账户下的指定自定义受众(Custom Audience)。 Resource URL https://ads-api.x.com/12/accounts/:account_id/custom_audiences/:custom_audience_id Parameters
NameDescription
account_id
required
被使用的账户标识符。该值出现在资源路径中,通常是所有 Advertiser API 请求的必需参数(GET accounts 除外)。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
custom_audience_id
required
请求中所操作的自定义受众的标识引用。

Type: string

Example: 2906h
Example Request DELETE https://ads-api.x.com/12/accounts/18ce54d4x5t/custom_audiences/2906h Example Response
    {
      "data": {
        "targetable": false,
        "name": "developers",
        "targetable_types": [
          "CRM",
          "EXCLUDED_CRM",
        ],
        "audience_type": "CRM",
        "description": null,
        "permission_level": "READ_WRITE",
        "owner_account_id": "18ce54d4x5t",
        "id": "2906h",
        "reasons_not_targetable": [
          "TOO_SMALL"
        ],
        "created_at": "2017-08-22T23:34:26Z",
        "updated_at": "2017-08-30T18:09:00Z",
        "partner_source": "OTHER",
        "deleted": true,
        "audience_size": null
      },
      "request": {
        "params": {
          "custom_audience_id": "2906h",
          "account_id": "18ce54d4x5t"
        }
      }
    }

禁止触达的 List

GET accounts/:account_id/do_not_reach_lists

检索与当前账户关联的部分或全部 Do Not Reach List 的详细信息。 注意:每个 account_id 至多只能拥有一个 Do Not Reach List Resource URL https://ads-api.x.com/12/accounts/:account_id/do_not_reach_lists Parameters
NameDescription
account_id
required
目标账户的标识符。该值出现在资源路径中,通常是所有 Advertiser API 请求(不包括 GET accounts)的必需参数。指定的账户必须与已通过身份验证的用户关联。

Type: string

Example: 18ce54d4x5t
with_deleted
optional
在请求中包含已删除的结果。

Type: boolean

Default: false
Possible values: true, false
Example Request GET https://ads-api.x.com/12/accounts/18ce54bgxky/do_not_reach_lists Example Response
    {
      "request": {
        "params": {
          "account_id": "18ce54bgxky"
        }
      },
      "next_cursor": null,
      "data": [
        {
          "targetable": false,
          "name": "不触达名单",
          "description": "DNRL 测试",
          "id": "4kzrq",
          "reasons_not_targetable": [
            "TOO_SMALL"
          ],
          "created_at": "2021-10-28T22:09:29Z",
          "list_size": null,
          "updated_at": "2021-11-04T03:33:06Z",
          "deleted": false
        }
      ]
    }

POST accounts/:account_id/do_not_reach_lists

为当前账户创建一个新的 Do Not Reach List。 注意:一个 account_id 最多只能拥有一个 Do Not Reach List Resource URL https://ads-api.x.com/12/accounts/:account_id/do_not_reach_lists Parameters
名称说明
account_id
必填
目标账户的标识符。出现在资源路径中,并且通常是除 GET accounts 外所有 Advertiser API 请求所必需的参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
description
可选
此受众的说明。

Type: string

Example: A list of users to exclude
Example Request POST https://ads-api.x.com/12/accounts/18ce54bgxky/do_not_reach_lists?description=A list of users to exclude Example Response
    {
      "request": {
        "params": {
          "description": "需排除的用户列表",
          "account_id": "18ce54bgxky"
        }
      },
      "data": {
        "targetable": false,
        "name": "不触达列表",
        "description": "需排除的用户列表"
        "id": "4ofrq",
        "reasons_not_targetable": [
          "PROCESSING",
          "TOO_SMALL"
        ],
        "created_at": "2022-02-08T23:02:48Z",
        "list_size": null,
        "updated_at": "2022-02-08T23:02:48Z",
        "deleted": false
      }
    }

POST batch/accounts/:account_id/do_not_reach_lists/:do_not_reach_list_id/users

此 endpoint 允许将用户添加到指定的 do_not_reach_list_id、对其进行更新或移除。此 endpoint 仅接受电子邮箱作为有效的用户标识符类型。 请求中 emails 字段提供的所有数据必须先进行规范化,并使用 SHA256 进行哈希。 注意
  • 一个 account_id 至多只能拥有一个 Do Not Reach List
  • 添加到此列表的用户必须设置 expires_at 时间戳,且该时间必须早于当前时间戳起算的 13 个月之后
  • Do Not Reach List API 不接受 effective_at 时间戳,并默认使用当前时间戳
  • Do Not Reach List 不会将用户从该账户的任何或全部自定义受众中移除,而是对该账户所投放的所有广告活动充当排除定向
批量请求
  • 当前最大批量大小为 2500(仅限此 endpoint)。批量大小由每个请求中的操作数(Update/Delete)决定。例如,在一个数组中包含超过 2500 个操作对象({"operation_type": "Update/Delete", [..] })将导致错误。
  • 此 endpoint 可接受的最大请求 POST 正文大小为 5,000,000 字节。
  • 此 endpoint 的请求速率限制为每 1 分钟窗口 1500 次
  • 所有参数通过请求正文发送,并且必须设置 Content-Typeapplication/json
  • 批量请求作为一个整体共同成功或失败,且所有 API 响应(无论错误或成功)都会保留初始请求的项目顺序。
批量响应 X Ads API 返回的响应包含两个字段:success_counttotal_count。这两个值必须始终相等,它们表示后端已处理的请求记录数量。当请求正文中发送的记录数与 success_counttotal_count 相等时,应视为错误情况,需要重试。 批量错误
  • 请求级错误(例如超过最大批量大小)会在响应的 errors 对象下显示。
  • 项目级错误(例如缺少必需参数)会在响应的 operation_errors 对象下显示。
  • operation_errors 中错误的索引对应输入项中的索引,并附有相应的错误信息
资源 URL https://ads-api.x.com/12/batch/accounts/:account_id/do_not_reach_lists/:do_not_reach_list_id/users 参数
NameDescription
account_id
required
被使用的账户标识符。出现在资源路径中,并且通常是除 GET accounts 之外所有 Advertiser API 请求的必需参数。指定的账户必须与已认证用户关联。

Type: string

Example: 18ce54d4x5t
do_not_reach_list_id
required
在该请求中所操作的 Do Not Reach List 的引用。

Type: string

Example: 2906h
operation_type
required
针对每个 users 分组执行的操作类型。

Type: enum

Possible values: Update, Delete
params
required
包含 emails 数组和 expires_at 时间戳的 JSON 对象。

Type: JSON
users
required
由 JSON 对象组成的数组,包含单个用户的全部参数。

Type: JSON
expires_at
optional
用户关联关系应过期的 UTC 时间。指定时间必须晚于当前时间戳。以 ISO 8601 表示。默认值为从当前时间戳起的 13 个月后。

Type: string

Example: 2017-07-05T07:00:00Z
鉴于对 users 对象采用多键方式,下面对该对象的每个元素进行说明:
名称说明
email
可选
用户的电子邮件地址。

Type: Array[String]
phone_number
可选
用户的电话号码。

Type: Array[String]
示例请求
`POST https://ads-api.x.com/12/batch/accounts/18ce54bgxky/do_not_reach_lists/4kzro/users`

    [
      {
        "operation_type": "Update",
        "params": {
          "expires_at": "2023-01-22T00:00:00Z",
          "users": [
            {
              "email": [
                "FEAD76F6ADF99FFFB997AA4E3C8AD38FF531BC4C956DBD03CD0163F744D8AABC"
              ],
              "phone_number": [
                "CCABF1B62A202E0FE28BC6C014983C89A65451DD4482BD66A0ADB65366F38A9A"
              ]
            },
            {
              "email": [
                "FEAD76F6ADF99FFFB997AA4E3C8AD38FF531BC4C956DBD03CD0163F744D8AABA"
              ],
              "phone_number": [
                "CCABF1B62A202E0FE28BC6C014983C89A65451DD4482BD66A0ADB65366F38A9E"
              ]
            }
          ]
        }
      }
    ]
示例响应
    {
      "data": [
        {
          "success_count": 2,
          "total_count": 2
        }
      ],
      "request": [
        {
          "params": {
            "do_not_reach_list_id": "4ofrq",
            "expires_at": "2023-01-22T00:00:00Z",
            "account_id": "18ce54bgxky"
          },
          "operation_type": "Update"
        }
      ]
    }

DELETE accounts/:account_id/do_not_reach_lists/:do_not_reach_list_id

删除当前账户下指定的 Do Not Reach List。 资源 URL https://ads-api.x.com/12/accounts/:account_id/do_not_reach_lists/:do_not_reach_list_id 参数 示例请求 DELETE https://ads-api.x.com/12/accounts/18ce54bgxky/do_not_reach_lists/4ofrp 示例响应
    {
      "request": {
        "params": {
          "do_not_reach_list_id": "4ofrp",
          "account_id": "18ce54bgxky"
        }
      },
      "data": {
        "targetable": false,
        "name": "禁止触达名单",
        "description": null,
        "id": "4ofrp",
        "reasons_not_targetable": [
          "PROCESSING",
          "TOO_SMALL"
        ],
        "created_at": "2022-02-08T23:02:07Z",
        "list_size": null,
        "updated_at": "2022-02-08T23:02:21Z",
        "deleted": true
      }
    }
I