---
id: "f381f74dce5cd6c8cdbe"
url: "https://www.xmcsl.cn/project/ocean-engine-api/%E7%BC%96%E8%BE%91%E5%85%A8%E5%9F%9F%E6%8A%95%E6%94%BE%E9%A1%B9%E7%9B%AE-1854910852321354.html"
source_url: "https://open.oceanengine.com/labels/7/docs/1854910852321354"
source_date: null
checked_at: "2026-11-05T04:21:48.909937+00:00"
status: "ready"
check_scope: "structure_only; not a factual or human review"
body_sha256: "78dfc9f2b99d41c752fd2d215cab57e8c55ddac20d83115164ee985c205bec1b"
---

# 编辑全域投放项目 — 巨量引擎 API

# 编辑全域投放项目

 

<table><tr><th>关键信息</th><th>详情</th></tr><tr><th>文档 ID</th><td>1854910852321354</td></tr>&#10;<tr><th>标签 ID</th><td>7</td></tr>&#10;<tr><th>原始文档</th><td>&#91;https://open.oceanengine.com/labels/7/docs/1854910852321354&#93;(https://open.oceanengine.com/labels/7/docs/1854910852321354)</td></tr>&#10;<tr><th>接口标识</th><td>&#96;&#96;</td></tr>&#10;</table>

 

POST https://api.oceanengine.com/open\_api/v3.0/uni\_project/update/ <a href="https://open.oceanengine.com/tools/visual_debug.html?docId=1854910852321354">🔍 可视化调试</a> <a href="https://open.oceanengine.com/labels/7/docs/1773083358100557">📦 SDK下载</a>

 

## 请求地址

 

https://api.oceanengine.com/open\_api/v3.0/uni\_project/update/<a href="https://open.oceanengine.com/tools/visual_debug.html?docId=1854910852321354">可视化调试</a><a href="https://open.oceanengine.com/labels/7/docs/1773083358100557">SDK下载</a>

 

## 请求方法

 

POST

 

## Header

 

<table>&#10;<thead>&#10;<tr>&#10;<th>字段</th>&#10;<th>类型</th>&#10;<th>必填</th>&#10;<th>描述</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><code>Access-Token</code></td>&#10;<td>string</td>&#10;<td>必填</td>&#10;<td>授权access&#95;token，可以通过【<a href="https://open.oceanengine.com/labels/7/docs/1696710505596940">获取Access token</a>】接口获取</td>&#10;</tr>&#10;<tr>&#10;<td><code>Content-Type</code></td>&#10;<td>string</td>&#10;<td>必填</td>&#10;<td>请求消息类型<br>允许值: <code>application/json</code></td>&#10;</tr>&#10;</tbody>&#10;</table>

 

## 请求参数

 

<table>&#10;<thead>&#10;<tr>&#10;<th>字段</th>&#10;<th>类型</th>&#10;<th>必填</th>&#10;<th>描述</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><code>advertiser&#95;id</code></td>&#10;<td>number</td>&#10;<td>必填</td>&#10;<td>客户id</td>&#10;</tr>&#10;<tr>&#10;<td><code>project&#95;id</code></td>&#10;<td>number</td>&#10;<td>必填</td>&#10;<td>项目id</td>&#10;</tr>&#10;<tr>&#10;<td><code>name</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>项目名称，长度是1-50个字（两个英文字符占1个字）</td>&#10;</tr>&#10;<tr>&#10;<td><code>budget</code></td>&#10;<td>float</td>&#10;<td>否</td>&#10;<td>取值范围&#91;300，999999999.99&#93;，小数点后两位<br>填写限制：<br>项目预算，单位为元</td>&#10;</tr>&#10;<tr>&#10;<td><code>uni&#95;roi&#95;goal</code></td>&#10;<td>float</td>&#10;<td>否</td>&#10;<td>取值范围&#91;0，5&#93;<br>全域ROI系数</td>&#10;</tr>&#10;<tr>&#10;<td><code>monetization&#95;mode</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>可选值: <br>- <code>IAA&#95;AND&#95;IAP</code> 混合变现<br>- <code>IAP</code> 用户付费</td>&#10;</tr>&#10;<tr>&#10;<td><code>schedule&#95;type</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>- 投放时间类型，允许值：<br>- <code>SCHEDULE&#95;FROM&#95;NOW</code> 从今天起长期投放<br>- <code>SCHEDULE&#95;START&#95;END</code>设置开始和结束日期</td>&#10;</tr>&#10;<tr>&#10;<td><code>end&#95;time</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>投放结束时间，当schedule&#95;type = <code>SCHEDULE&#95;START&#95;END</code>时必填<br>如：2017-01-01 精确到天</td>&#10;</tr>&#10;<tr>&#10;<td><code>schedule&#95;time</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>投放时段，默认全时段投放，格式是48&#42;7位字符串，且都是0或1。也就是以半个小时为最小粒度，周一至周日每天分为48个区段，0为不投放，1为投放，不传、全传0、全传1均代表全时段投放。<br>例如：000000000000000000000001111000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000001111000000000000000000000000000000000000000000001111000000000000000000000，则投放时段为周一到周日的11:30&#126;13:30</td>&#10;</tr>&#10;<tr>&#10;<td><code>aigc&#95;dynamic&#95;creative&#95;switch</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>是否开启AIGC动态创意，枚举值：<br><code>ON</code> 开启<br><code>OFF</code> 关闭</td>&#10;</tr>&#10;</tbody>&#10;</table>

 

<code>brand&#95;info</code>（object，否） — 品牌信息，仅关联云图的客户可以按需填写，以下参数可通过【获取关联云图的投放账户信息】获取

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`yuntu\_category\_id\` \| number \| 否 \| 品牌分类id \| \| \`cdp\_brand\_id\` \| number \| 否 \| cdp品牌id \| \| \`ecom\_brand\_id\` \| number \| 否 \| 电商品牌id，增量项目传入ecom\_brand\_id将不生效（可通过【\[获取全域投放项目列表\](https://open.oceanengine.com/labels/7/docs/1854926110406984)】获取，若接口应答r3\_brand\_merge\_oc字段则可判断为增量项目） \| \| \`brand\_name\_id\` \| number \| 否 \| 云图品牌id \| \| \`cdp\_brand\_name\` \| string \| 否 \| cdp品牌名称 \| \| \`sub\_brand\_names\` \| string\[\] \| 否 \| 子品牌名称 \| \| \`sub\_brand\_name\_ids\` \| string\[\] \| 否 \| 子品牌id \|

 

<table>&#10;<thead>&#10;<tr>&#10;<th>字段</th>&#10;<th>类型</th>&#10;<th>必填</th>&#10;<th>描述</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><code>source</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td></td>&#10;</tr>&#10;</tbody>&#10;</table>

 

<code>audience</code>（object，否） — 定向设置

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`district\` \| string \| 否 \| 地域类型，允许值:  
\`BUSINESS\_DISTRICT\`商圈  
\`REGION\` 行政区域  
\`NONE\` 不限 \| 

<code>geolocation</code>（object\[\]，否） — 从地图添加(地图位置)，district为"BUSINESS\_DISTRICT"时填写，最多允许添加1000个

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`name\` \| string \| 否 \| 地点名称 \| \| \`long\` \| float \| 否 \| 经度 \| \| \`lat\` \| float \| 否 \| 纬度 \| \| \`radius\` \| number \| 否 \| 半径，单位为m，允许值为：3000～30000 \|

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`region\_version\` \| string \| 否 \| \- 当前仅允许传入\`2.3.2\`枚举，否则接口会报错  
行政区域版本号，通过\[【获取行政信息】\](https://open.oceanengine.com/doc/index.html?key=ad&amp;type=api&amp;id=1709606596424718)接口获取district =\`REGION\`时必填 \| \| \`city\` \| number\[\] \| 否 \| 地域定向省市或者区县列表(当传递省份ID时,旗下市县ID可省略不传)，当district=\`REGION\`/\`OVERSEA\`时必填，通过\[【获取行政信息】\](https://open.oceanengine.com/doc/index.html?key=ad&amp;type=api&amp;id=1709606596424718)接口获取 \| \| \`location\_type\` \| string \| 否 \| 位置类型，允许值：\- \`CURRENT\`正在该地区的用户  
\- \`HOME\`居住在该地区的用户  
\- \`TRAVEL\`到该地区旅行的用户  
\- \`ALL\`该地区内的所有用户 \| \| \`gender\` \| string \| 否 \| 性别， 详见\[【附录\-受众性别】\](https://ad.oceanengine.com/openapi/doc/index.html?id=1696710760171535\#custom\-anchor\-受众性别)允许值： \`GENDER\_FEMALE\`、 \`GENDER\_MALE\`、 \`NONE\` \| \| \`age\` \| string\[\] \| 否 \| 两套枚举并存，但不支持同时传入  
\`AGE\_BETWEEN\_18\_19\`,\`AGE\_BETWEEN\_20\_23\`,\`AGE\_BETWEEN\_24\_30\`,\`AGE\_BETWEEN\_31\_35\`,\`AGE\_BETWEEN\_36\_40\`,\`AGE\_BETWEEN\_41\_45\`,\`AGE\_BETWEEN\_46\_50\`,\`AGE\_BETWEEN\_51\_55\`,\`AGE\_BETWEEN\_56\_59\`,\`AGE\_ABOVE\_60\`  
年龄， 详见\[【附录\-受众年龄区间】\](https://ad.oceanengine.com/openapi/doc/index.html?id=1696710760171535\#custom\-anchor\-受众年龄区间)允许值：\`AGE\_BETWEEN\_18\_23\`, \`AGE\_BETWEEN\_24\_30\`,\`AGE\_BETWEEN\_31\_40\`,\`AGE\_BETWEEN\_41\_49\`, \`AGE\_ABOVE\_50\`或： \| \| \`platform\` \| string\[\] \| 否 \| 允许值：\`ANDROID\`、\`IOS\`  
投放平台列表 \| \| \`hide\_if\_converted\` \| string \| 否 \| 过滤已转化用户，可以避免该单元再次投放给已转化过的用户。  
允许值：\- \`NO\_EXCLUDE\` 不限制  
\- \`PROJECT\` 项目  
\- \`ADVERTISER\` 投放账户  
\- \`CUSTOMER\` 客户  
\- \`ORGANIZATION\` 组织 \| \| \`converted\_time\_duration\` \| string \| 否 \| 当 hide\_if\_converted = \`CUSTOMER\` 公司帐户 或 \`ORGANIZATION\` 组织账户时传入有效  
过滤时间范围，详见 \[【附录\-过滤时间范围】\](https://ad.oceanengine.com/openapi/doc/index.html?id=1696710760171535\#custom\-anchor\-过滤时间范围) \| \| \`retargeting\_tags\_exclude\` \| number\[\] \| 否 \| 排除人群包列表（自定义人群），内容为人群包id。人群包id可通过【\[人群包列表\](https://open.oceanengine.com/labels/9/docs/1696710570721295)】获取 \|

 

<code>playlet&#95;series&#95;url&#95;info</code>（object\[\]，否） — 短剧专辑链接信息

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`playlet\_series\_url\_type\` \| string \| 否 \| 短剧专辑链接类型，允许值：\- \`IAA\`，当delivery\_product=ALBUM剧目，monetization\_mode=IAA\_AND\_IAP 时，支持传入  
\- \`IAP\`，当delivery\_product=ALBUM剧目，且monetization\_mode=IAP 或 monetization\_mode=IAA\_AND\_IAP 时，支持传入 \| \| \`playlet\_series\_url\` \| string \| 否 \| \- IAA链接，当playlet\_series\_url\_type=\`IAA\`时，支持传入，仅支持传入1个，超过1个时报错  
\- IAP链接，当playlet\_series\_url\_type=\`IAP\`时，支持传入，长度：\[1，10\]，超过10个时报错  
短剧专辑链接 \|

 

<code>product&#95;info</code>（object，否） — 产品信息

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`titles\` \| string\[\] \| 否 \| 产品名称，字数限制：\[1\-20\]，数组上限为1\- 本参数非必填，全域中所关联的产品会在此参数中，自动绑定一个与产品相关的title  
\- 用户可在默认绑定的titles外，额外填写1个产品名称 \| \| \`image\_ids\` \| string\[\] \| 否 \| 全域中所关联的产品会在此参数中，绑定一个与产品相关主图，除了自动绑定的主图外，还需手动上传至少1个主图，上限为10个  
产品主图，尺寸要求108\*108，上限10个  
可通过\[【获取图片素材】\](https://open.oceanengine.com/labels/7/docs/1696710601254912)接口获得 \| \| \`selling\_points\` \| string\[\] \| 否 \| 产品卖点，字数限制：\[6\-9\]，数组上限为10 \|

 

<table>&#10;<thead>&#10;<tr>&#10;<th>字段</th>&#10;<th>类型</th>&#10;<th>必填</th>&#10;<th>描述</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><code>call&#95;to&#95;action&#95;buttons</code></td>&#10;<td>string&#91;&#93;</td>&#10;<td>否</td>&#10;<td>行动号召</td>&#10;</tr>&#10;</tbody>&#10;</table>

 

<code>title&#95;material&#95;list</code>（object\[\]，否） — 标题素材信息，单剧目最多设置标题素材100个

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`title\` \| string \| 否 \| 创意标题 \|

 

## 请求示例

 

### python

 

```python
# coding=utf-8
import json
import requests

from six import string_types
from six.moves.urllib.parse import urlencode, urlunparse  # noqa

ACCESS_TOKEN = "xxx"
PATH = "/open_api/v3.0/uni_project/update/"


def build_url(path, query=""):
    # type: (str, str) -> str
    """
    Build request URL
    :param path: Request path
    :param query: Querystring
    :return: Request URL
    """
    scheme, netloc = "https", "api.oceanengine.com"
    return urlunparse((scheme, netloc, path, "", query, ""))

def post(json_str):
    # type: (str) -> dict
    """
    Send POST request
    :param json_str: Args in JSON format
    :return: Response in JSON format
    """
    url = build_url(PATH)
    args = json.loads(json_str)
    headers = {
        "Access-Token": ACCESS_TOKEN,
        "Content-Type": "application/json",
    }
    rsp = requests.post(url, headers=headers, json=args)
    return rsp.json()


if __name__ == '__main__':
    advertiser_id = ADVERTISER_ID
    project_id = PROJECT_ID
    name = NAME
    budget = BUDGET
    uni_roi_goal = UNI_ROI_GOAL
    monetization_mode = MONETIZATION_MODE
    schedule_type = SCHEDULE_TYPE
    start_time = START_TIME
    end_time = END_TIME
    schedule_time = SCHEDULE_TIME
    aigc_dynamic_creative_switch = AIGC_DYNAMIC_CREATIVE_SWITCH
    yuntu_category_id = YUNTU_CATEGORY_ID
    cdp_brand_id = CDP_BRAND_ID
    ecom_brand_id = ECOM_BRAND_ID
    brand_name_id = BRAND_NAME_ID
    cdp_brand_name = CDP_BRAND_NAME
    sub_brand_names_list = SUB_BRAND_NAMES
    sub_brand_names = json.dumps(sub_brand_names_list)
    sub_brand_name_ids_list = SUB_BRAND_NAME_IDS
    sub_brand_name_ids = json.dumps(sub_brand_name_ids_list)
    district = DISTRICT
    name = NAME
    long = LONG
    lat = LAT
    radius = RADIUS
    region_version = REGION_VERSION
    city_list = CITY
    city = json.dumps(city_list)
    location_type = LOCATION_TYPE
    gender = GENDER
    age_list = AGE
    age = json.dumps(age_list)
    platform_list = PLATFORM
    platform = json.dumps(platform_list)
    hide_if_converted = HIDE_IF_CONVERTED
    converted_time_duration = CONVERTED_TIME_DURATION
    retargeting_tags_include_list = RETARGETING_TAGS_INCLUDE
    retargeting_tags_include = json.dumps(retargeting_tags_include_list)
    retargeting_tags_exclude_list = RETARGETING_TAGS_EXCLUDE
    retargeting_tags_exclude = json.dumps(retargeting_tags_exclude_list)
    playlet_series_url_type = PLAYLET_SERIES_URL_TYPE
    playlet_series_url = PLAYLET_SERIES_URL
    titles_list = TITLES
    titles = json.dumps(titles_list)
    image_ids_list = IMAGE_IDS
    image_ids = json.dumps(image_ids_list)
    selling_points_list = SELLING_POINTS
    selling_points = json.dumps(selling_points_list)
    call_to_action_buttons_list = CALL_TO_ACTION_BUTTONS
    call_to_action_buttons = json.dumps(call_to_action_buttons_list)
    title = TITLE

    # Args in JSON format
    my_args = "{\"advertiser_id\": \"%s\", \"project_id\": \"%s\", \"name\": \"%s\", \"budget\": \"%s\", \"uni_roi_goal\": \"%s\", \"monetization_mode\": \"%s\", \"schedule_type\": \"%s\", \"start_time\": \"%s\", \"end_time\": \"%s\", \"schedule_time\": \"%s\", \"aigc_dynamic_creative_switch\": \"%s\", \"brand_info\": {\"yuntu_category_id\": \"%s\", \"cdp_brand_id\": \"%s\", \"ecom_brand_id\": \"%s\", \"brand_name_id\": \"%s\", \"cdp_brand_name\": \"%s\", \"sub_brand_names\": %s, \"sub_brand_name_ids\": %s}, \"audience\": {\"district\": \"%s\", \"geolocation\": [{\"name\": \"%s\", \"long\": \"%s\", \"lat\": \"%s\", \"radius\": \"%s\"}], \"region_version\": \"%s\", \"city\": %s, \"location_type\": \"%s\", \"gender\": \"%s\", \"age\": %s, \"platform\": %s, \"hide_if_converted\": \"%s\", \"converted_time_duration\": \"%s\", \"retargeting_tags_include\": %s, \"retargeting_tags_exclude\": %s}, \"playlet_series_url_info\": [{\"playlet_series_url_type\": \"%s\", \"playlet_series_url\": \"%s\"}], \"product_info\": {\"titles\": %s, \"image_ids\": %s, \"selling_points\": %s}, \"call_to_action_buttons\": %s, \"title_material_list\": [{\"title\": \"%s\"}]}" % (advertiser_id, project_id, name, budget, uni_roi_goal, monetization_mode, schedule_type, start_time, end_time, schedule_time, aigc_dynamic_creative_switch, yuntu_category_id, cdp_brand_id, ecom_brand_id, brand_name_id, cdp_brand_name, sub_brand_names, sub_brand_name_ids, district, name, long, lat, radius, region_version, city, location_type, gender, age, platform, hide_if_converted, converted_time_duration, retargeting_tags_include, retargeting_tags_exclude, playlet_series_url_type, playlet_series_url, titles, image_ids, selling_points, call_to_action_buttons, title)
    print(post(my_args))
```

 

### java

 

```java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.*;
import org.apache.http.client.utils.URIBuilder;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Demo {
    private static final String ACCESS_TOKEN = "xxx";
    private static final String PATH = "/open_api/v3.0/uni_project/update/";
    private static final ObjectMapper mapper = new ObjectMapper();

    /**
     * Build request URL
     *
     * @param path Request path
     * @return Request URL
     */
    private static String buildUrl(String path) throws URISyntaxException {
        URI uri = new URI("https", "api.oceanengine.com", path, "", "");
        return uri.toString();
    }


    /**
     * Send POST request
     *
     * @param jsonStr Args in JSON format
     * @return Response in JSON format
     */
    private static String post(String jsonStr) throws IOException, URISyntaxException {
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        String url = buildUrl(PATH);

        RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonStr);
        Request request = new Request.Builder()
                .url(url)
                .method("POST", body)
                .addHeader("Content-Type", "application/json")
                .addHeader("Access-Token", ACCESS_TOKEN)
                .build();
        Response response = client.newCall(request).execute();
        return response.body().string();
    }


    public static void main(String[] args) throws IOException, URISyntaxException {
        Long advertiser_id = ADVERTISER_ID;
        Long project_id = PROJECT_ID;
        String name = NAME;
        Double budget = BUDGET;
        Double uni_roi_goal = UNI_ROI_GOAL;
        String monetization_mode = MONETIZATION_MODE;
        String schedule_type = SCHEDULE_TYPE;
        String start_time = START_TIME;
        String end_time = END_TIME;
        String schedule_time = SCHEDULE_TIME;
        String aigc_dynamic_creative_switch = AIGC_DYNAMIC_CREATIVE_SWITCH;
        Long yuntu_category_id = YUNTU_CATEGORY_ID;
        Long cdp_brand_id = CDP_BRAND_ID;
        Long ecom_brand_id = ECOM_BRAND_ID;
        Long brand_name_id = BRAND_NAME_ID;
        String cdp_brand_name = CDP_BRAND_NAME;
        List < String > sub_brand_names_list = SUB_BRAND_NAMES;
        String sub_brand_names = mapper.writeValueAsString(sub_brand_names_list);
        List < String > sub_brand_name_ids_list = SUB_BRAND_NAME_IDS;
        String sub_brand_name_ids = mapper.writeValueAsString(sub_brand_name_ids_list);
        String district = DISTRICT;
        String name = NAME;
        Double long = LONG;
        Double lat = LAT;
        Long radius = RADIUS;
        String region_version = REGION_VERSION;
        List < Long > city_list = CITY;
        String city = mapper.writeValueAsString(city_list);
        String location_type = LOCATION_TYPE;
        String gender = GENDER;
        List < String > age_list = AGE;
        String age = mapper.writeValueAsString(age_list);
        List < String > platform_list = PLATFORM;
        String platform = mapper.writeValueAsString(platform_list);
        String hide_if_converted = HIDE_IF_CONVERTED;
        String converted_time_duration = CONVERTED_TIME_DURATION;
        List < Long > retargeting_tags_include_list = RETARGETING_TAGS_INCLUDE;
        String retargeting_tags_include = mapper.writeValueAsString(retargeting_tags_include_list);
        List < Long > retargeting_tags_exclude_list = RETARGETING_TAGS_EXCLUDE;
        String retargeting_tags_exclude = mapper.writeValueAsString(retargeting_tags_exclude_list);
        String playlet_series_url_type = PLAYLET_SERIES_URL_TYPE;
        String playlet_series_url = PLAYLET_SERIES_URL;
        List < String > titles_list = TITLES;
        String titles = mapper.writeValueAsString(titles_list);
        List < String > image_ids_list = IMAGE_IDS;
        String image_ids = mapper.writeValueAsString(image_ids_list);
        List < String > selling_points_list = SELLING_POINTS;
        String selling_points = mapper.writeValueAsString(selling_points_list);
        List < String > call_to_action_buttons_list = CALL_TO_ACTION_BUTTONS;
        String call_to_action_buttons = mapper.writeValueAsString(call_to_action_buttons_list);
        String title = TITLE;

        // Args in JSON format
        String myArgs = String.format("{\"advertiser_id\": \"%s\", \"project_id\": \"%s\", \"name\": \"%s\", \"budget\": \"%s\", \"uni_roi_goal\": \"%s\", \"monetization_mode\": \"%s\", \"schedule_type\": \"%s\", \"start_time\": \"%s\", \"end_time\": \"%s\", \"schedule_time\": \"%s\", \"aigc_dynamic_creative_switch\": \"%s\", \"brand_info\": {\"yuntu_category_id\": \"%s\", \"cdp_brand_id\": \"%s\", \"ecom_brand_id\": \"%s\", \"brand_name_id\": \"%s\", \"cdp_brand_name\": \"%s\", \"sub_brand_names\": %s, \"sub_brand_name_ids\": %s}, \"audience\": {\"district\": \"%s\", \"geolocation\": [{\"name\": \"%s\", \"long\": \"%s\", \"lat\": \"%s\", \"radius\": \"%s\"}], \"region_version\": \"%s\", \"city\": %s, \"location_type\": \"%s\", \"gender\": \"%s\", \"age\": %s, \"platform\": %s, \"hide_if_converted\": \"%s\", \"converted_time_duration\": \"%s\", \"retargeting_tags_include\": %s, \"retargeting_tags_exclude\": %s}, \"playlet_series_url_info\": [{\"playlet_series_url_type\": \"%s\", \"playlet_series_url\": \"%s\"}], \"product_info\": {\"titles\": %s, \"image_ids\": %s, \"selling_points\": %s}, \"call_to_action_buttons\": %s, \"title_material_list\": [{\"title\": \"%s\"}]}",advertiser_id, project_id, name, budget, uni_roi_goal, monetization_mode, schedule_type, start_time, end_time, schedule_time, aigc_dynamic_creative_switch, yuntu_category_id, cdp_brand_id, ecom_brand_id, brand_name_id, cdp_brand_name, sub_brand_names, sub_brand_name_ids, district, name, long, lat, radius, region_version, city, location_type, gender, age, platform, hide_if_converted, converted_time_duration, retargeting_tags_include, retargeting_tags_exclude, playlet_series_url_type, playlet_series_url, titles, image_ids, selling_points, call_to_action_buttons, title);
        System.out.println(post(myArgs));
    }
}
```

 

### php

 

```php
$ACCESS_TOKEN = "xxx";
$PATH = "/open_api/v3.0/uni_project/update/";

/**
 * Build request URL
 * @param $path : Request path
 * @return string
 */
function build_url($path)
{
    return "https://api.oceanengine.com" . $path;
}


/**
 * Send POST request
 * @param $json_str : Args in JSON format
 * @return bool|string : Response in JSON format
 */
function post($json_str)
{
    global $ACCESS_TOKEN, $PATH;
    $curl = curl_init();

    $url = build_url($PATH);

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_POSTFIELDS => $json_str,
        CURLOPT_HTTPHEADER => array(
            "Content-Type: application/json",
            "Access-Token: " . $ACCESS_TOKEN,
        ),
    ));

    $response = curl_exec($curl);
    curl_close($curl);
    return $response;
}


$advertiser_id = ADVERTISER_ID;
$project_id = PROJECT_ID;
$name = NAME;
$budget = BUDGET;
$uni_roi_goal = UNI_ROI_GOAL;
$monetization_mode = MONETIZATION_MODE;
$schedule_type = SCHEDULE_TYPE;
$start_time = START_TIME;
$end_time = END_TIME;
$schedule_time = SCHEDULE_TIME;
$aigc_dynamic_creative_switch = AIGC_DYNAMIC_CREATIVE_SWITCH;
$yuntu_category_id = YUNTU_CATEGORY_ID;
$cdp_brand_id = CDP_BRAND_ID;
$ecom_brand_id = ECOM_BRAND_ID;
$brand_name_id = BRAND_NAME_ID;
$cdp_brand_name = CDP_BRAND_NAME;
$sub_brand_names_list = SUB_BRAND_NAMES;
$sub_brand_names = json_encode($sub_brand_names_list);
$sub_brand_name_ids_list = SUB_BRAND_NAME_IDS;
$sub_brand_name_ids = json_encode($sub_brand_name_ids_list);
$district = DISTRICT;
$name = NAME;
$long = LONG;
$lat = LAT;
$radius = RADIUS;
$region_version = REGION_VERSION;
$city_list = CITY;
$city = json_encode($city_list);
$location_type = LOCATION_TYPE;
$gender = GENDER;
$age_list = AGE;
$age = json_encode($age_list);
$platform_list = PLATFORM;
$platform = json_encode($platform_list);
$hide_if_converted = HIDE_IF_CONVERTED;
$converted_time_duration = CONVERTED_TIME_DURATION;
$retargeting_tags_include_list = RETARGETING_TAGS_INCLUDE;
$retargeting_tags_include = json_encode($retargeting_tags_include_list);
$retargeting_tags_exclude_list = RETARGETING_TAGS_EXCLUDE;
$retargeting_tags_exclude = json_encode($retargeting_tags_exclude_list);
$playlet_series_url_type = PLAYLET_SERIES_URL_TYPE;
$playlet_series_url = PLAYLET_SERIES_URL;
$titles_list = TITLES;
$titles = json_encode($titles_list);
$image_ids_list = IMAGE_IDS;
$image_ids = json_encode($image_ids_list);
$selling_points_list = SELLING_POINTS;
$selling_points = json_encode($selling_points_list);
$call_to_action_buttons_list = CALL_TO_ACTION_BUTTONS;
$call_to_action_buttons = json_encode($call_to_action_buttons_list);
$title = TITLE;

/* Args in JSON format */
$my_args = sprintf("{\"advertiser_id\": \"%s\", \"project_id\": \"%s\", \"name\": \"%s\", \"budget\": \"%s\", \"uni_roi_goal\": \"%s\", \"monetization_mode\": \"%s\", \"schedule_type\": \"%s\", \"start_time\": \"%s\", \"end_time\": \"%s\", \"schedule_time\": \"%s\", \"aigc_dynamic_creative_switch\": \"%s\", \"brand_info\": {\"yuntu_category_id\": \"%s\", \"cdp_brand_id\": \"%s\", \"ecom_brand_id\": \"%s\", \"brand_name_id\": \"%s\", \"cdp_brand_name\": \"%s\", \"sub_brand_names\": %s, \"sub_brand_name_ids\": %s}, \"audience\": {\"district\": \"%s\", \"geolocation\": [{\"name\": \"%s\", \"long\": \"%s\", \"lat\": \"%s\", \"radius\": \"%s\"}], \"region_version\": \"%s\", \"city\": %s, \"location_type\": \"%s\", \"gender\": \"%s\", \"age\": %s, \"platform\": %s, \"hide_if_converted\": \"%s\", \"converted_time_duration\": \"%s\", \"retargeting_tags_include\": %s, \"retargeting_tags_exclude\": %s}, \"playlet_series_url_info\": [{\"playlet_series_url_type\": \"%s\", \"playlet_series_url\": \"%s\"}], \"product_info\": {\"titles\": %s, \"image_ids\": %s, \"selling_points\": %s}, \"call_to_action_buttons\": %s, \"title_material_list\": [{\"title\": \"%s\"}]}", $advertiser_id, $project_id, $name, $budget, $uni_roi_goal, $monetization_mode, $schedule_type, $start_time, $end_time, $schedule_time, $aigc_dynamic_creative_switch, $yuntu_category_id, $cdp_brand_id, $ecom_brand_id, $brand_name_id, $cdp_brand_name, $sub_brand_names, $sub_brand_name_ids, $district, $name, $long, $lat, $radius, $region_version, $city, $location_type, $gender, $age, $platform, $hide_if_converted, $converted_time_duration, $retargeting_tags_include, $retargeting_tags_exclude, $playlet_series_url_type, $playlet_series_url, $titles, $image_ids, $selling_points, $call_to_action_buttons, $title);
echo post($my_args);
```

 

### curl

 

```curl
curl -H "Access-Token:xxx" -H "Content-Type:application/json" -X POST \
-d '{
    "advertiser_id": "ADVERTISER_ID",
    "project_id": "PROJECT_ID",
    "name": "NAME",
    "budget": "BUDGET",
    "uni_roi_goal": "UNI_ROI_GOAL",
    "monetization_mode": "MONETIZATION_MODE",
    "schedule_type": "SCHEDULE_TYPE",
    "start_time": "START_TIME",
    "end_time": "END_TIME",
    "schedule_time": "SCHEDULE_TIME",
    "aigc_dynamic_creative_switch": "AIGC_DYNAMIC_CREATIVE_SWITCH",
    "brand_info": {
        "yuntu_category_id": "YUNTU_CATEGORY_ID",
        "cdp_brand_id": "CDP_BRAND_ID",
        "ecom_brand_id": "ECOM_BRAND_ID",
        "brand_name_id": "BRAND_NAME_ID",
        "cdp_brand_name": "CDP_BRAND_NAME",
        "sub_brand_names": [
            "SUB_BRAND_NAMES"
        ],
        "sub_brand_name_ids": [
            "SUB_BRAND_NAME_IDS"
        ]
    },
    "audience": {
        "district": "DISTRICT",
        "geolocation": [
            {
                "name": "NAME",
                "long": "LONG",
                "lat": "LAT",
                "radius": "RADIUS"
            }
        ],
        "region_version": "REGION_VERSION",
        "city": [
            "CITY"
        ],
        "location_type": "LOCATION_TYPE",
        "gender": "GENDER",
        "age": [
            "AGE"
        ],
        "platform": [
            "PLATFORM"
        ],
        "hide_if_converted": "HIDE_IF_CONVERTED",
        "converted_time_duration": "CONVERTED_TIME_DURATION",
        "retargeting_tags_include": [
            "RETARGETING_TAGS_INCLUDE"
        ],
        "retargeting_tags_exclude": [
            "RETARGETING_TAGS_EXCLUDE"
        ]
    },
    "playlet_series_url_info": [
        {
            "playlet_series_url_type": "PLAYLET_SERIES_URL_TYPE",
            "playlet_series_url": "PLAYLET_SERIES_URL"
        }
    ],
    "product_info": {
        "titles": [
            "TITLES"
        ],
        "image_ids": [
            "IMAGE_IDS"
        ],
        "selling_points": [
            "SELLING_POINTS"
        ]
    },
    "call_to_action_buttons": [
        "CALL_TO_ACTION_BUTTONS"
    ],
    "title_material_list": [
        {
            "title": "TITLE"
        }
    ]
}' \
https://api.oceanengine.com/open_api/v3.0/uni_project/update/
```

 

## 应答字段

 

<table>&#10;<thead>&#10;<tr>&#10;<th>字段</th>&#10;<th>类型</th>&#10;<th>必填</th>&#10;<th>描述</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><code>code</code></td>&#10;<td>number</td>&#10;<td>否</td>&#10;<td>返回码,详见 <a href="https://open.oceanengine.com/labels/7/docs/1696710760866831">【附录-返回码】</a></td>&#10;</tr>&#10;<tr>&#10;<td><code>message</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>返回信息,详见 <a href="https://open.oceanengine.com/labels/7/docs/1696710760866831">【附录-返回码】</a></td>&#10;</tr>&#10;</tbody>&#10;</table>

 

<code>data</code>（json，否） — json返回值&lt;br&gt;

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`project\_id\` \| number \| 否 \| 项目id \| 

<code>error&#95;list</code>（object\[\]，否） — 错误list，项目为分块更新，存在部分内容更新失败，部分内容更新成功\- 若更新成功，ErrorList为空数组&lt;br&gt;\- 若更新失败，ErrorList包含错误的模块和失败原因

 \| 字段 \| 类型 \| 必填 \| 描述 \| \| \-\-\- \| \-\-\- \| \-\-\- \| \-\-\- \| \| \`object\_type\` \| string \| 否 \| \| \| \`error\_code\` \| number \| 否 \| 错误码 \| \| \`error\_message\` \| string \| 否 \| 错误信息 \|

 

<table>&#10;<thead>&#10;<tr>&#10;<th>字段</th>&#10;<th>类型</th>&#10;<th>必填</th>&#10;<th>描述</th>&#10;</tr>&#10;</thead>&#10;<tbody>&#10;<tr>&#10;<td><code>request&#95;id</code></td>&#10;<td>string</td>&#10;<td>否</td>&#10;<td>请求日志id<br></td>&#10;</tr>&#10;</tbody>&#10;</table>

 

## 应答示例

 

```json
HTTPS/1.1 200 OK
{
    "message": "OK",
    "code": 0,
    "data": {}
}
```

 

## 业务错误码

 

仅披露当前接口高频的参数校验报错，更多常见报错详见<a href="https://open.oceanengine.com/labels/34/docs/1696710760866831">「返回码」</a>文档

 

品牌信息，仅关联云图的客户可以按需填写，以下参数可通过【<a href="https://open.oceanengine.com/labels/7/docs/1768100113310735?origin=left_nav">获取关联云图的投放账户信息</a>】获取电商品牌id
