← 返回目录
📁 Marketing API › Campaign Management › Guides › Campaign › Reach & Frequency

创建覆盖和频次广告

本章将介绍如何创建覆盖和频次广告。创建流程如下:

  1. 创建覆盖和频次推广系列。
  2. 获取广告库存预估。
  3. [可选] 创建一个展示量&预算或覆盖量&预算图表。
  4. 创建广告组。
  5. 创建广告。

注意
覆盖和频次广告目前已全量发布。开发者可以使用本功能进行开发。但是广告账号需要在本功能的白名单内,才能正常使用相关应用。如需将广告账号加入该功能的白名单,请联系您的TikTok销售代表。

前提条件

您已申请白名单并签订品牌商务合同;

1. 创建覆盖和频次推广系列

使用/campaign/create/接口创建覆盖和频次推广系列。 - 推广目标:目前覆盖和频次广告仅支持RF_REACH推广目标。因此在设置objective_type时,请选择RF_REACH。

2. 获取广告库存预估

使用/rf/inventory/estimate/接口获取广告库存预估。广告库存是根据推广目标、版位、定向、排期、展示频次和预订方式预估生成的。

  1. 库存预估方法
  • 您可以按照固定预算、固定展示量或固定覆盖量进行预订。

  • 按照固定预算购买
    设置rf_purchased_type为FIXED_BUDGET,在budget字段中输入预算值。系统会根据固定预算预测展示量、覆盖量、展示频次和CPM。

  • 按照固定展示量购买
    设置rf_purchased_type为FIXED_SHOW,在purchased_impression字段中输入展示量。系统会根据固定展示量预测覆盖量、展示频次、CPM和预算。
  • 按照固定覆盖量购买
    设置rf_purchased_type为FIXED_REACH,在purchased_reach字段中输入您想要覆盖的受众数量。系统会根据固定覆盖量预测展示量、展示频次、CPM和预算。

根据您所指定的固定值,我们将在返回中的default_result对象中返回相应的预测值。例如,如果您将rf_purchased_type设置为FIXED_SHOW,并在purchased_impression中指定固定值,那么我们将根据您设置的展示量进行计算,并在default_result中返回budget、cpm、reach和average_frequency的预估值。

注意
您在budget、purchased_impression或purchased_reach中输入的金额必须在results中base_info对象返回的最小值和最大值范围内。否则,default_result将返回最大预估值,而不是使用固定金额预定的值。

示例: 下面是选择FIXED_SHOW作为预定方式的示例。

请求示例

(code)
{
    "advertiser_id": "123",
    "audience_info": {
        "location_ids": [
            "6252001"
        ],
        "network_types": ["5G"],
        "carrier_ids":["3100000", "3100001", "3100002", "3100003"],
        "operating_systems": ["IOS"],
        "brand_safety_type":"LIMITED_INVENTORY",
        "contextual_tag_ids":[18,19]
    },
    "schedule_start_time": "2022-09-28 05:00:00",
    "schedule_end_time": "2022-10-02 04:59:59",
    "frequency": 3,
    "frequency_schedule": 5,
    "objective_type": "RF_REACH",
    "rf_purchased_type": "FIXED_SHOW",
    "purchased_impression":800
}
(/code)

返回示例

(code)
{
    "code": 0,
    "message": "OK",
    "request_id": "202209150956440102452480581B06C634",
    "data": {
        "default_result": {
            "base_info": {
                "impression": 800,
                "cpm": 5.78,
                "budget": 4624.12,
                "reach": 520,
                "average_frequency": 1.54
            },
            "frequency_per_person": [
                {
                    "percentage": 0.56,
                    "frequency": 1
                },
                {
                    "percentage": 0.26,
                    "frequency": 2
                },
                {
                    "percentage": 0.18,
                    "frequency": 3
                }
            ],
            "daily_cost": [
                {
                    "cost": 2357.82,
                    "date": "2022-09-28"
                },
                {
                    "cost": 2296.15,
                    "date": "2022-09-29"
                },
                {
                    "cost": 1728.11,
                    "date": "2022-09-30"
                },
                {
                    "cost": 1956.63,
                    "date": "2022-10-01"
                }
            ]
        },
        "results": [
            {
                "base_info": {
                    "impression": 131,
                    "cpm": 4.19,
                    "budget": 549.11,
                    "reach": 104,
                    "average_frequency": 1.26
                },
                "frequency_per_person": [
                    {
                        "percentage": 0.77,
                        "frequency": 1
                    },
                    {
                        "percentage": 0.21,
                        "frequency": 2
                    },
                    {
                        "percentage": 0.02,
                        "frequency": 3
                    }
                ],
                "daily_cost": [
                    {
                        "cost": 152.83,
                        "date": "2022-09-28"
                    },
                    {
                        "cost": 148.31,
                        "date": "2022-09-29"
                    },
                    {
                        "cost": 140.64,
                        "date": "2022-09-30"
                    },
                    {
                        "cost": 107.33,
                        "date": "2022-10-01"
                    }
                ]
            },
            {
                "base_info": {
                    "impression": 140,
                    "cpm": 4.21,
                    "budget": 589.73,
                    "reach": 111,
                    "average_frequency": 1.26
                },
                "frequency_per_person": [
                    {
                        "percentage": 0.76,
                        "frequency": 1
                    },
                    {
                        "percentage": 0.22,
                        "frequency": 2
                    },
                    {
                        "percentage": 0.02,
                        "frequency": 3
                    }
                ],
                "daily_cost": [
                    {
                        "cost": 172.76,
                        "date": "2022-09-28"
                    },
                    {
                        "cost": 154.3,
                        "date": "2022-09-29"
                    },
                    {
                        "cost": 141.89,
                        "date": "2022-09-30"
                    },
                    {
                        "cost": 120.77,
                        "date": "2022-10-01"
                    }
                ]
            },
            {
                "base_info": {
                    "impression": 150,
                    "cpm": 4.27,
                    "budget": 639.83,
                    "reach": 118,
                    "average_frequency": 1.27
                },
                "frequency_per_person": [
                    {
                        "percentage": 0.75,
                        "frequency": 1
                    },
                    {
                        "percentage": 0.23,
                        "frequency": 2
                    },
                    {
                        "percentage": 0.02,
                        "frequency": 3
                    }
                ],
                "daily_cost": [
                    {
                        "cost": 174.2,
                        "date": "2022-09-28"
                    },
                    {
                        "cost": 174.44,
                        "date": "2022-09-29"
                    },
                    {
                        "cost": 152.61,
                        "date": "2022-09-30"
                    },
                    {
                        "cost": 138.58,
                        "date": "2022-10-01"
                    }
                ]
            }
        ]
    }
}
(/code)
  • 或者您不设定固定预算、展示量或覆盖量预测广告库存, 那们可以在返回的results里选择和您期望值最近的预算、展示量或覆盖量预测值。
  1. 投放时间
    目前,系统目前支持的库存预估最小单位为天。因此您需要在请求中将schedule_start_time设置为投放地时区的YYYY-MM-DD HH:00:00,schedule_end_time需要是投放地时区的YYYY-MM-DD HH:59:59。

示例: 假设您是 UTC-5 时区的广告主,并希望创建一个排期为 2020-11-03 到 2020-11-10 的覆盖和频次广告组,需要填写的参数为:

(code)
{
  "schedule_start_time": "2020-11-03 05:00:00", # UTC+0 time
  "schedule_end_time": "2020-11-11 04:59:59"  # UTC+0 time
}
(/code)

注意
由于库存状态是实时变化的,库存预估结果的参考价值具有一定时效性。如果您的库存预定时间和查询时间间隔太久,可能由于系统库存不足/展示量&预算曲线变化而导致订单创建失败。

库存预估接口返回的展示量(impression)和覆盖量(reach)以1000为单位。若返回 impression = 200, reach=140,真实的预估展示量为 200*1000,覆盖人数为 140*1000。

3. [可选] 创建一个展示量&预算或覆盖量&预算图表

根据库存预估接口返回的预算、展示量和覆盖量,您可以生成一条展示量&预算或覆盖量&预算曲线。

以下代码示例从返回的results中提取了预算和展示量的数值,生成了一条曲线。

(code example python)
import json
import numpy as np
import matplotlib.pyplot as plt

f = open('result.json')
data = json.load(f)
results = data['data']['results']
budget = []
impression = []
for result in results:
    budget.append(result['base_info']['budget'])
    impression.append(result['base_info']['impression'])

line = plt.plot(budget, impression)
plt.show()

f.close()
(/code);

4. 创建广告组

使用接口/adgroup/rf/create/创建覆盖和频次广告组。

  • 受众定向:支持年龄、性别、语言、地域和操作系统定向受众人群。
  • 版位:系统默认R&F版位为TikTok。您不需要在请求中指定这个字段。
  • 排期(schedule_start_time和schedule_end_time):
    • 覆盖和频次广告会在开始投放5分钟前锁定预算。若广告组创建时间距离投放地时间第二天 00:00 小于5分钟,您需要将开始日期选择范围设定为[后天, 今天+90 天],否则请设置为[明天, 今天+90 天]。
    • 系统目前支持的库存预估最小单位为天。因此您需要在请求中将schedule_start_time设置为投放地时区的YYYY-MM-DD HH:00:00,schedule_end_time需要是投放地时区的YYYY-MM-DD HH:59:59。
    • schedule_start_time和schedule_end_time之间的时间间隔不超过90天。

示例: 假设您是 UTC-5 时区的广告主,并希望创建一个排期为 2020-11-03 到 2020-11-10 的覆盖和频次广告组,需要填写的参数为:

(code)
{
  "schedule_start_time": "2020-11-03 05:00:00", # UTC+0 time
  "schedule_end_time": "2020-11-11 04:59:59"  # UTC+0 time
}
(/code)
  • 预定方式

    • 设置rf_purchased_type为FIXED_SHOW, FIXED_REACH或FIXED_BUDGET,作为您的预定和购买方式。
    • 根据/rf/inventory/estimate/返回的数据,指定budget, purchased_impression和purchased_reach的数值。

      • 如果您在/rf/inventory/estimate/中指定了rf_purchased_type,并传入了budget, purchased_impression或purchased_reach的固定值,那么您可以在base_info(位于default_result中)中查看对应的预估值。下一步是将这些值传入/adgroup/rf/create/中的budget、purchased_impression和purchased_reach字段。
    • 或者如果您没有在/rf/inventory/estimate/中指定budget, purchased_impression或purchased_reach的固定值,那么您可以在返回的base_info(位于default_result中)中选择您想要的预算、展示量和覆盖量。下一步是将这些值传入/adgroup/rf/create/中的budget、purchased_impression和purchased_reach字段。

    • 优化目标:广告组层级的优化目标(optimization_goal)必须和推广系列层级的推广目标(objective_type)一致。
    • 频次:使用frequency和frequency_schedule决定用户看到您广告的频次。

示例:

请求参数

(code)
{
    "comment_disabled": false,
    "share_disabled": false,
    "optimization_goal": "REACH",
    "rf_purchased_type": "FIXED_SHOW",
    "purchased_reach": 520,
    "purchased_impression": 800,
    "video_download_disabled": false,
    "age_groups": ["AGE_18_24"],
    "operating_systems": ["IOS"],
    "network_types": ["WIFI"],
    "brand_safety_type": "NO_BRAND_SAFETY",
    "external_action": "STANDARD_FEED",
    "advertiser_id":{{advertise_id}},
    "schedule_start_time":"2023-01-10 05:00:00",
    "schedule_end_time":"2023-02-12 04:59:59",
    "frequency":3,
    "frequency_schedule":7,
    "objective_type":"RF_REACH",
    "location_ids":["6252001"],
    "request_id":{{request_Id}},
    "campaign_id":{{campaign_id}},
    "rf_buy_type":"FIXED_SHOW",
    "optimize_goal":"REACH",
    "budget":4624.12,
    "adgroup_name":"xxx",
    "promotion_type":"APP_IOS",
    "display_mode":"STANDARD",
    "excluded_audience_ids": [
        {{excluded_audience_ids}}
    ]
}
(/code)

5. 创建广告

使用/ad/create/接口创建覆盖和频次广告。

注意
覆盖和频次广告只支持视频类广告。

内容来源:TikTok API for Business 官方文档 · 本地归档

在接这个接口时卡住了?
Stuck wiring this API into production? We build ad-delivery tooling on these platforms — campaign automation, reporting pipelines, error-handling and migration between API versions.
联系我们 · Talk to us 每日平台更新简报 →