主题
创建 offer 链路
创建一个可投放的 offer 需要按顺序完成三步:上传素材 → 创建 offer → 设置 tracking。
前置条件
- 已选择建单账号(adv_user 或 sub_adv_account),见建单能力。
- 已有
campaign_id(offer 需关联到某个 campaign)。 - 已准备好待上传的素材文件。
- 链路中所有请求使用同一套所选账号凭证签名。
链路总览
| 步骤 | 接口 | 方法 | 产出 |
|---|---|---|---|
| 1. 上传素材 | /api/open/v3/creatives/upload | POST | creative_md5 / creative_name |
| 2. 创建 offer | /api/open/v3/offer | POST | offer_id |
| 3. 设置 tracking | /api/open/v3/tracking | PUT | tracking 配置生效 |
Step 1:上传素材
- 请求地址:
https://{BASE_URL}/api/open/v3/creatives/upload - 请求方法:
POST(multipart/form-data,文件字段名file) - 关键返回:
data.creative_md5、data.creative_name
逐个上传素材文件,收集每个素材的 creative_md5 与 creative_name,供 Step 2 组装 creative_sets。
素材已存在的兼容处理:若上传返回提示素材已存在(msg 含
already existed,并携带fmd5与name),可直接复用其creative_md5/creative_name,无需中断链路。
Step 2:创建 offer
- 请求地址:
https://{BASE_URL}/api/open/v3/offer - 请求方法:
POST - 关键返回:
data.offer_id
关键入参:
| 字段 | 说明 |
|---|---|
campaign_id | 关联的 campaign(前置条件) |
offer_name | offer 名称 |
billing_type | 结算方式,如 CPI |
bid_rate | 出价 |
target_geo | 投放地区,如 US |
daily_cap_type / daily_cap | 预算类型与额度 |
target_ad_type | 展示类型,如 BANNER,REWARDED_VIDEO 等 |
creative_sets | 创意组数组,每项含 creative_set_name、geos、ad_outputs、creatives(来自 Step 1) |
请求示例(节选):
json
POST /api/open/v3/offer
{
"campaign_id": "12345",
"offer_name": "mock_offer",
"billing_type": "CPI",
"bid_rate": 1.0,
"target_geo": "US",
"daily_cap_type": "BUDGET",
"daily_cap": "100",
"target_ad_type": "BANNER,REWARDED_VIDEO",
"creative_sets": [
{
"creative_set_name": "mock_api_creative_1700000000",
"geos": ["ALL"],
"ad_outputs": [121, 131, 211, 213, 221],
"creatives": [
{ "creative_md5": "<来自 Step 1>", "creative_name": "<来自 Step 1>" }
]
}
]
}Step 3:设置 tracking
- 请求地址:
https://{BASE_URL}/api/open/v3/tracking - 请求方法:
PUT
关键入参:
| 字段 | 说明 |
|---|---|
offer_id | 来自 Step 2 |
tracking_method | 追踪方式,如 APPSFLYER |
click_url | 点击追踪链接 |
support_server_click | 是否支持服务端点击,如 NO |
请求示例:
json
PUT /api/open/v3/tracking
{
"offer_id": "67890",
"tracking_method": "APPSFLYER",
"click_url": "https://example.com/click?...",
"support_server_click": "NO"
}完成以上三步后,offer 即创建并配置了 tracking。